Compare commits
6 commits
c1d742a383
...
a69723cf87
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a69723cf87 | ||
![]() |
4a7e6f545c | ||
![]() |
3121013376 | ||
![]() |
3152a0f626 | ||
![]() |
8cc6c13cf5 | ||
![]() |
2fe1f36eb9 |
|
@ -3,8 +3,18 @@
|
||||||
doctrine,
|
doctrine,
|
||||||
pkgs,
|
pkgs,
|
||||||
}: let
|
}: let
|
||||||
close = f: args: f (args // {inherit lib pkgs doctrine;});
|
close = vars: f: args:
|
||||||
|
(
|
||||||
|
if builtins.isPath f
|
||||||
|
then import f
|
||||||
|
else f
|
||||||
|
)
|
||||||
|
(args // vars);
|
||||||
|
|
||||||
|
closeLib = close {inherit lib;};
|
||||||
|
closeFull = close {inherit lib pkgs doctrine;};
|
||||||
in {
|
in {
|
||||||
importAll = pkgs.callPackage ./importAll.nix {};
|
inherit close;
|
||||||
mkModule = close (import ./mk-module.nix);
|
importAll = closeLib ./import-all.nix;
|
||||||
|
mkModule = closeFull ./mk-module.nix;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
{lib}: {
|
{
|
||||||
|
lib,
|
||||||
root,
|
root,
|
||||||
exclude ? ["default"],
|
exclude ? ["default"],
|
||||||
}:
|
}:
|
|
@ -1,18 +1,22 @@
|
||||||
{
|
{
|
||||||
|
# The first few arguments are implicitly passed by the 'close' helper
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
doctrine,
|
||||||
name,
|
name,
|
||||||
|
config,
|
||||||
hm ? null,
|
hm ? null,
|
||||||
sys ? null,
|
sys ? null,
|
||||||
options ? null,
|
options ? null,
|
||||||
lib,
|
requires ? [],
|
||||||
config,
|
prefix ? doctrine.prefix,
|
||||||
pkgs,
|
namespace ? doctrine.namespace,
|
||||||
doctrine,
|
|
||||||
}: let
|
}: let
|
||||||
optionsSet = import options {
|
optionsSet = import options {
|
||||||
inherit config lib pkgs cfg name doctrine;
|
inherit config lib pkgs cfg name doctrine;
|
||||||
};
|
};
|
||||||
|
|
||||||
configSet = import configFiles.${doctrine.namespace} {
|
configSet = import configFiles.${namespace} {
|
||||||
inherit config lib pkgs doctrine cfg;
|
inherit config lib pkgs doctrine cfg;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -20,19 +24,25 @@
|
||||||
inherit sys hm;
|
inherit sys hm;
|
||||||
};
|
};
|
||||||
|
|
||||||
cfg = config.${doctrine.prefix}.${name};
|
cfg = config.${prefix}.${name};
|
||||||
in {
|
in {
|
||||||
config =
|
config =
|
||||||
lib.optionalAttrs (configFiles ? ${doctrine.namespace})
|
lib.optionalAttrs (configFiles ? ${namespace})
|
||||||
(lib.mkIf cfg.enable configSet);
|
(lib.mkIf cfg.enable (lib.mkMerge [
|
||||||
|
configSet
|
||||||
|
{
|
||||||
|
assertions =
|
||||||
|
map (dependency: {
|
||||||
|
assertion = cfg.enable -> config.${prefix}.${dependency}.enable;
|
||||||
|
message = "${prefix}.${name}.enable requires ${prefix}.${dependency}.enable";
|
||||||
|
})
|
||||||
|
requires;
|
||||||
|
}
|
||||||
|
]));
|
||||||
|
|
||||||
options = lib.optionalAttrs (options
|
options.${prefix}.${name} =
|
||||||
!= null
|
lib.optionalAttrs (options != null && optionsSet ? ${namespace}) optionsSet.${namespace}
|
||||||
&& optionsSet ? ${doctrine.namespace}) {
|
|
||||||
${doctrine.prefix}.${name} =
|
|
||||||
optionsSet.${doctrine.namespace}
|
|
||||||
// {
|
// {
|
||||||
enable = lib.mkEnableOption name;
|
enable = lib.mkEnableOption name;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
10
modules/laptop/default.nix
Normal file
10
modules/laptop/default.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
doctrine,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
doctrine.lib.mkModule {
|
||||||
|
inherit config;
|
||||||
|
name = "laptop";
|
||||||
|
sys = ./sys.nix;
|
||||||
|
}
|
11
modules/laptop/sys.nix
Normal file
11
modules/laptop/sys.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
services = {
|
||||||
|
tlp.enable = lib.mkDefault true;
|
||||||
|
upower.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
11
modules/thinkpad/default.nix
Normal file
11
modules/thinkpad/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
doctrine,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
doctrine.lib.mkModule {
|
||||||
|
inherit config;
|
||||||
|
name = "thinkpad";
|
||||||
|
sys = ./sys.nix;
|
||||||
|
requires = ["laptop"];
|
||||||
|
}
|
30
modules/thinkpad/sys.nix
Normal file
30
modules/thinkpad/sys.nix
Normal file
|
@ -0,0 +1,30 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
# For suspending to RAM to work, set Config -> Power -> Sleep State to "Linux" in EFI.
|
||||||
|
# See https://wiki.archlinux.org/index.php/Lenovo_ThinkPad_X1_Carbon_(Gen_6)#Suspend_issues
|
||||||
|
# Fingerprint sensor requires a firmware-update to work.
|
||||||
|
|
||||||
|
boot = {
|
||||||
|
extraModulePackages = with config.boot.kernelPackages; [acpi_call];
|
||||||
|
extraModprobeConfig = "options iwlwifi 11n_disable=1 wd_disable=1";
|
||||||
|
|
||||||
|
# acpi_call makes tlp work for newer thinkpads
|
||||||
|
kernelModules = ["acpi_call"];
|
||||||
|
|
||||||
|
# Force use of the thinkpad_acpi driver for backlight control.
|
||||||
|
# This allows the backlight save/load systemd service to work.
|
||||||
|
kernelParams = ["acpi_backlight=native"];
|
||||||
|
};
|
||||||
|
|
||||||
|
hardware.firmware = [pkgs.sof-firmware];
|
||||||
|
|
||||||
|
services = {
|
||||||
|
fprintd.enable = lib.mkDefault true;
|
||||||
|
thinkfan.enable = lib.mkDefault true;
|
||||||
|
tp-auto-kbbl.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
Loading…
Reference in a new issue