Compare commits
8 commits
8741b32021
...
e7972bf1e8
Author | SHA1 | Date | |
---|---|---|---|
![]() |
e7972bf1e8 | ||
![]() |
0d37194fab | ||
![]() |
7c1071e396 | ||
![]() |
026da8a6d1 | ||
![]() |
64ba64b857 | ||
![]() |
4d7cf46c34 | ||
![]() |
a8ef8e43b9 | ||
![]() |
5d375d1d93 |
|
@ -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 // {inherit lib pkgs doctrine;});
|
||||
|
||||
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,6 +1,7 @@
|
|||
{lib}: {
|
||||
{
|
||||
lib,
|
||||
root,
|
||||
exclude ? [],
|
||||
exclude ? ["default"],
|
||||
}:
|
||||
with builtins;
|
||||
with lib;
|
||||
|
@ -10,7 +11,7 @@ with lib;
|
|||
|
||||
isMatch = name: type:
|
||||
(hasSuffix ".nix" name || type == "directory")
|
||||
&& ! elem name (map basename exclude);
|
||||
&& ! elem (basename name) exclude;
|
||||
|
||||
entry = name: _: {
|
||||
name = basename name;
|
|
@ -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,17 +24,27 @@
|
|||
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}
|
||||
&& optionsSet ? ${namespace}) {
|
||||
${prefix}.${name} =
|
||||
optionsSet.${namespace}
|
||||
// {
|
||||
enable = lib.mkEnableOption name;
|
||||
};
|
||||
|
|
|
@ -1,5 +1,3 @@
|
|||
{
|
||||
imports = [
|
||||
./sway
|
||||
];
|
||||
{doctrine, ...}: {
|
||||
imports = builtins.attrValues (doctrine.lib.importAll {root = ./.;});
|
||||
}
|
||||
|
|
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;
|
||||
};
|
||||
}
|
13
modules/yubico/default.nix
Normal file
13
modules/yubico/default.nix
Normal file
|
@ -0,0 +1,13 @@
|
|||
{
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
doctrine,
|
||||
...
|
||||
}:
|
||||
doctrine.lib.mkModule {
|
||||
inherit config;
|
||||
name = "yubico";
|
||||
hm = ./hm.nix;
|
||||
sys = ./sys.nix;
|
||||
}
|
9
modules/yubico/hm.nix
Normal file
9
modules/yubico/hm.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
home.packages = [
|
||||
pkgs.yubikey-manager
|
||||
];
|
||||
}
|
14
modules/yubico/sys.nix
Normal file
14
modules/yubico/sys.nix
Normal file
|
@ -0,0 +1,14 @@
|
|||
{
|
||||
pkgs,
|
||||
lib,
|
||||
...
|
||||
}: {
|
||||
environment.etc."pkcs11/modules/ykcs11".text = ''
|
||||
module: ${pkgs.yubico-piv-tool}/lib/libykcs11.so
|
||||
'';
|
||||
|
||||
services = {
|
||||
pcscd.enable = true;
|
||||
udev.packages = [pkgs.yubikey-personalization];
|
||||
};
|
||||
}
|
Loading…
Reference in a new issue