Compare commits

..

No commits in common. "e7972bf1e8b10b41f63627b2b70c30996158a57b" and "8741b320219185af2bc7b5cf89e59d297e0bb074" have entirely different histories.

11 changed files with 21 additions and 142 deletions

View file

@ -3,18 +3,8 @@
doctrine, doctrine,
pkgs, pkgs,
}: let }: let
close = vars: f: args: close = f: args: f (args // {inherit lib pkgs doctrine;});
(
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 { in {
inherit close; importAll = pkgs.callPackage ./importAll.nix {};
importAll = closeLib ./import-all.nix; mkModule = close (import ./mk-module.nix);
mkModule = closeFull ./mk-module.nix;
} }

View file

@ -1,7 +1,6 @@
{ {lib}: {
lib,
root, root,
exclude ? ["default"], exclude ? [],
}: }:
with builtins; with builtins;
with lib; with lib;
@ -11,7 +10,7 @@ with lib;
isMatch = name: type: isMatch = name: type:
(hasSuffix ".nix" name || type == "directory") (hasSuffix ".nix" name || type == "directory")
&& ! elem (basename name) exclude; && ! elem name (map basename exclude);
entry = name: _: { entry = name: _: {
name = basename name; name = basename name;

View file

@ -1,22 +1,18 @@
{ {
# 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,
requires ? [], lib,
prefix ? doctrine.prefix, config,
namespace ? doctrine.namespace, pkgs,
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.${namespace} { configSet = import configFiles.${doctrine.namespace} {
inherit config lib pkgs doctrine cfg; inherit config lib pkgs doctrine cfg;
}; };
@ -24,27 +20,17 @@
inherit sys hm; inherit sys hm;
}; };
cfg = config.${prefix}.${name}; cfg = config.${doctrine.prefix}.${name};
in { in {
config = config =
lib.optionalAttrs (configFiles ? ${namespace}) lib.optionalAttrs (configFiles ? ${doctrine.namespace})
(lib.mkIf cfg.enable (lib.mkMerge [ (lib.mkIf cfg.enable configSet);
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 = lib.optionalAttrs (options
!= null != null
&& optionsSet ? ${namespace}) { && optionsSet ? ${doctrine.namespace}) {
${prefix}.${name} = ${doctrine.prefix}.${name} =
optionsSet.${namespace} optionsSet.${doctrine.namespace}
// { // {
enable = lib.mkEnableOption name; enable = lib.mkEnableOption name;
}; };

View file

@ -1,3 +1,5 @@
{doctrine, ...}: { {
imports = builtins.attrValues (doctrine.lib.importAll {root = ./.;}); imports = [
./sway
];
} }

View file

@ -1,10 +0,0 @@
{
config,
doctrine,
...
}:
doctrine.lib.mkModule {
inherit config;
name = "laptop";
sys = ./sys.nix;
}

View file

@ -1,11 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
services = {
tlp.enable = lib.mkDefault true;
upower.enable = lib.mkDefault true;
};
}

View file

@ -1,11 +0,0 @@
{
config,
doctrine,
...
}:
doctrine.lib.mkModule {
inherit config;
name = "thinkpad";
sys = ./sys.nix;
requires = ["laptop"];
}

View file

@ -1,30 +0,0 @@
{
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;
};
}

View file

@ -1,13 +0,0 @@
{
config,
lib,
pkgs,
doctrine,
...
}:
doctrine.lib.mkModule {
inherit config;
name = "yubico";
hm = ./hm.nix;
sys = ./sys.nix;
}

View file

@ -1,9 +0,0 @@
{
pkgs,
lib,
...
}: {
home.packages = [
pkgs.yubikey-manager
];
}

View file

@ -1,14 +0,0 @@
{
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];
};
}