{ 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 ]; }) ]; }