Compare commits
6 commits
c1d742a383
...
a69723cf87
Author | SHA1 | Date | |
---|---|---|---|
![]() |
a69723cf87 | ||
![]() |
4a7e6f545c | ||
![]() |
3121013376 | ||
![]() |
3152a0f626 | ||
![]() |
8cc6c13cf5 | ||
![]() |
2fe1f36eb9 |
|
@ -3,8 +3,18 @@
|
|||
doctrine,
|
||||
pkgs,
|
||||
}: 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 {
|
||||
importAll = pkgs.callPackage ./importAll.nix {};
|
||||
mkModule = close (import ./mk-module.nix);
|
||||
inherit close;
|
||||
importAll = closeLib ./import-all.nix;
|
||||
mkModule = closeFull ./mk-module.nix;
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
{lib}: {
|
||||
{
|
||||
lib,
|
||||
root,
|
||||
exclude ? ["default"],
|
||||
}:
|
|
@ -1,18 +1,22 @@
|
|||
{
|
||||
# The first few arguments are implicitly passed by the 'close' helper
|
||||
lib,
|
||||
pkgs,
|
||||
doctrine,
|
||||
name,
|
||||
config,
|
||||
hm ? null,
|
||||
sys ? null,
|
||||
options ? null,
|
||||
lib,
|
||||
config,
|
||||
pkgs,
|
||||
doctrine,
|
||||
requires ? [],
|
||||
prefix ? doctrine.prefix,
|
||||
namespace ? doctrine.namespace,
|
||||
}: let
|
||||
optionsSet = import options {
|
||||
inherit config lib pkgs cfg name doctrine;
|
||||
};
|
||||
|
||||
configSet = import configFiles.${doctrine.namespace} {
|
||||
configSet = import configFiles.${namespace} {
|
||||
inherit config lib pkgs doctrine cfg;
|
||||
};
|
||||
|
||||
|
@ -20,19 +24,25 @@
|
|||
inherit sys hm;
|
||||
};
|
||||
|
||||
cfg = config.${doctrine.prefix}.${name};
|
||||
cfg = config.${prefix}.${name};
|
||||
in {
|
||||
config =
|
||||
lib.optionalAttrs (configFiles ? ${doctrine.namespace})
|
||||
(lib.mkIf cfg.enable configSet);
|
||||
lib.optionalAttrs (configFiles ? ${namespace})
|
||||
(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
|
||||
!= null
|
||||
&& optionsSet ? ${doctrine.namespace}) {
|
||||
${doctrine.prefix}.${name} =
|
||||
optionsSet.${doctrine.namespace}
|
||||
// {
|
||||
enable = lib.mkEnableOption name;
|
||||
};
|
||||
};
|
||||
options.${prefix}.${name} =
|
||||
lib.optionalAttrs (options != null && optionsSet ? ${namespace}) optionsSet.${namespace}
|
||||
// {
|
||||
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