Files
nixos-blueprint/modules/shared/nixos/default.nix
2025-06-17 14:10:55 +03:00

91 lines
2.6 KiB
Nix

{
config,
# inputs,
lib,
pkgs,
...
}: let
inherit (lib) mkDefault mkEnableOption mkIf;
cfg = config.module.config;
in {
imports = [
./boot
./hardware
./misc
./networking
./nix
./security
./programs.nix
./services.nix
./users.nix
./sops.nix
];
options = {
module.config = {
laptop.homeRowMods = mkEnableOption "set to have mods on asdfjkl;";
powerSave = mkEnableOption "set to use various power saving daemons";
secureBoot = mkEnableOption "set if secure boot is configured";
tpmDiskUnlock = mkEnableOption "set if luks enrolled in tpm2";
useIwd = mkEnableOption "set to use iwd instead of wpa-supplicant";
vaapi = lib.mkOption {
type = lib.types.nullOr (lib.types.enum ["intel-media-driver" "nvidia"]);
default = null;
};
};
};
config = lib.mkMerge [
{
boot.initrd.systemd.tpm2.enable = mkDefault cfg.tpmDiskUnlock;
boot.loader.systemd-boot.enable = mkDefault (!cfg.secureBoot);
}
(mkIf (cfg.laptop.homeRowMods) {
services.keyd = {
enable = true;
keyboards = {
internal = {
ids = ["0001:0001" "048d:c101"];
settings.main = let
idleTimeout = toString 200;
holdTimeout = toString 150;
in {
a = "lettermod(alt, a, ${idleTimeout}, ${holdTimeout})";
s = "lettermod(meta, s, ${idleTimeout}, ${holdTimeout})";
d = "lettermod(control, d, ${idleTimeout}, ${holdTimeout})";
f = "lettermod(shift, f, ${idleTimeout}, ${holdTimeout})";
j = "lettermod(shift, j, ${idleTimeout}, ${holdTimeout})";
k = "lettermod(control, k, ${idleTimeout}, ${holdTimeout})";
l = "lettermod(meta, l, ${idleTimeout}, ${holdTimeout})";
";" = "lettermod(alt, ;, ${idleTimeout}, ${holdTimeout})";
};
};
};
};
})
(mkIf (cfg.powerSave) {
powerManagement.enable = true;
powerManagement.powertop.enable = true;
services.power-profiles-daemon.enable = true;
services.thermald.enable = true;
services.upower.enable = true;
})
(mkIf cfg.useIwd {
networking = {
networkmanager.wifi.backend = "iwd";
wireless.iwd.enable = true;
};
})
(mkIf (cfg.vaapi == "intel-media-driver") {
hardware.graphics.extraPackages = with pkgs; [
intel-compute-runtime
intel-media-driver
vpl-gpu-rt
];
})
(mkIf (cfg.vaapi == "nvidia") {
hardware.graphics.extraPackages = with pkgs; [
nvidia-vaapi-driver
];
})
];
}