{ 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.kanata.keyboards.internal.config = '' ;; Kanata Configuration File for Graphite Anglemod Layout ;; Add a default configuration section to define unmapped key behavior. (defcfg process-unmapped-keys no ;; Ensure unmapped keys are passed to the OS unchanged. ) ;; Define the source keys Kanata will intercept. (defsrc grv 1 2 3 4 5 6 7 8 9 0 - = bspc tab q w e r t y u i o p [ ] \ caps a s d f g h j k l ; ' ret lsft z x c v b n m , . / rsft lctl lmet lalt spc ralt rmet rctl ) (defvar tap-time 150 hold-time 200 ) ;; Default QWERTY Layout (deflayer qwerty grv 1 2 3 4 5 6 7 8 9 0 - = bspc tab q w e r t y u i o p [ ] \ caps a s d f g h j k l ; ' ret lsft z x c v b n m , . / rsft lctl lmet lalt spc ralt rmet rctl ) (defalias escctrl (tap-hold 100 100 esc lctl) a (multi f24 (tap-hold $tap-time $hold-time a lalt)) s (multi f24 (tap-hold $tap-time $hold-time s lmet)) d (multi f24 (tap-hold $tap-time $hold-time d lctl)) f (multi f24 (tap-hold $tap-time $hold-time f lsft)) x (multi f24 (tap-hold $tap-time $hold-time x ralt)) j (multi f24 (tap-hold $tap-time $hold-time j lsft)) k (multi f24 (tap-hold $tap-time $hold-time k lctl)) l (multi f24 (tap-hold $tap-time $hold-time l lmet)) ; (multi f24 (tap-hold $tap-time $hold-time ; lalt)) . (multi f24 (tap-hold $tap-time $hold-time . ralt)) ) ;; QWERTY Layout with home row mods (deflayer qwerty-home-mod @grl 1 2 3 4 5 6 7 8 9 0 - = bspc tab q w e r t y u i o p [ ] \ @esscctrl @a @s @d @f g h @j @k @l @; ' ret lsft z @x c v b n m , @. / rsft lctl lmet lalt spc ralt rmet rctl ) (defalias quote (fork ' S-- (lsft rsft)) ;; ' -> _ comma (fork , S-/ (lsft rsft)) ;; , -> ? hyphen (fork - S-' (lsft rsft)) ;; - -> " slash (fork / S-, (lsft rsft)) ;; / -> < ) (defalias n (multi f24 (tap-hold $tap-time $hold-time n lalt)) r (multi f24 (tap-hold $tap-time $hold-time r lmet)) t (multi f24 (tap-hold $tap-time $hold-time t lctl)) gs (multi f24 (tap-hold $tap-time $hold-time s lsft)) m (multi f24 (tap-hold $tap-time $hold-time m ralt)) h (multi f24 (tap-hold $tap-time $hold-time h lsft)) ga (multi f24 (tap-hold $tap-time $hold-time a lctl)) e (multi f24 (tap-hold $tap-time $hold-time e lmet)) i (multi f24 (tap-hold $tap-time $hold-time i lalt)) hyph (multi f24 (tap-hold $tap-time $hold-time @hyphen ralt)) ) ;; Graphite Anglemod Layout (deflayer graphite-anglemod @grl 1 2 3 4 5 6 7 8 9 0 [ ] bspc tab b l d w z @quote f o u j ; = \ @cap @n @r @t @gs g y @h @ga @e @i @comma ret lsft x @m c v q p k . @hyph @slash rsft lctl lmet lalt spc ralt rmet rctl ) ;; Define layer-switching aliases for clean deflayer declarations (defalias ;; Tap: backtick (grave), Hold: toggles 'layers' for layer switching. grl (tap-hold 200 200 grv (layer-toggle layers)) ;; Layer-switch aliases gar (layer-switch graphite-anglemod) qwr (layer-switch qwerty) qwm (layer-switch qwerty-home-mod) ;; Tap for Caps Lock, Hold for Ctrl cap (tap-hold 200 200 caps lctl) ) ;; Layer-Switching Layer ;; Keys 1 and 2 switch between QWERTY and Graphite Anglemod layouts ;; The _ (underscore) indicates transparent behavior (passes through base layer). (deflayer layers _ @qwm @gar @qwr _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ) ''; }) (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 ]; }) ]; }