Split shared host config into dedicated modules
- Add shared modules for boot, hardware, networking, input, and host defaults - Move host-specific TOML flags to new option namespaces - Update SSH and service defaults for the new layout
This commit is contained in:
@@ -35,6 +35,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
networking.firewall = rec {
|
networking.firewall = rec {
|
||||||
|
allowedTCPPorts = [8080];
|
||||||
allowedTCPPortRanges = [
|
allowedTCPPortRanges = [
|
||||||
{
|
{
|
||||||
from = 1714;
|
from = 1714;
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ id = "c7f6c4a1"
|
|||||||
type = "workstation"
|
type = "workstation"
|
||||||
stateVersion = "24.11"
|
stateVersion = "24.11"
|
||||||
|
|
||||||
|
[boot.secureBoot]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
[boot.tpmDiskUnlock]
|
||||||
|
enable = true
|
||||||
|
|
||||||
[config]
|
[config]
|
||||||
locale = "uk_UA.UTF-8"
|
locale = "uk_UA.UTF-8"
|
||||||
timeZone = "Europe/Kyiv"
|
timeZone = "Europe/Kyiv"
|
||||||
secureBoot = true
|
|
||||||
tpmDiskUnlock = true
|
|
||||||
|
|
||||||
|
|||||||
@@ -42,12 +42,15 @@
|
|||||||
stateVersion = "25.11";
|
stateVersion = "25.11";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
boot.secureBoot.enable = true;
|
||||||
|
hardware = {
|
||||||
|
graphics.vaapi = "intel-media-driver";
|
||||||
|
powerSave.enable = true;
|
||||||
|
};
|
||||||
|
input.homeRowMods.enable = true;
|
||||||
|
networking.iwd.enable = true;
|
||||||
|
|
||||||
config = {
|
config = {
|
||||||
laptop.homeRowMods = true;
|
|
||||||
powerSave = true;
|
|
||||||
secureBoot = true;
|
|
||||||
useIwd = true;
|
|
||||||
vaapi = "intel-media-driver";
|
|
||||||
locale = "uk_UA.UTF-8";
|
locale = "uk_UA.UTF-8";
|
||||||
timeZone = "Europe/Kyiv";
|
timeZone = "Europe/Kyiv";
|
||||||
};
|
};
|
||||||
|
|||||||
+15
-5
@@ -4,11 +4,21 @@ id = "45b00123"
|
|||||||
type = "laptop"
|
type = "laptop"
|
||||||
stateVersion = "25.11"
|
stateVersion = "25.11"
|
||||||
|
|
||||||
|
[boot.secureBoot]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
[boot.tpmDiskUnlock]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
[hardware.graphics]
|
||||||
|
vaapi = "nvidia"
|
||||||
|
|
||||||
|
[hardware.powerSave]
|
||||||
|
enable = true
|
||||||
|
|
||||||
|
#[input.homeRowMods]
|
||||||
|
#enable = true
|
||||||
|
|
||||||
[config]
|
[config]
|
||||||
locale = "uk_UA.UTF-8"
|
locale = "uk_UA.UTF-8"
|
||||||
timeZone = "Europe/Kyiv"
|
timeZone = "Europe/Kyiv"
|
||||||
secureBoot = true
|
|
||||||
tpmDiskUnlock = true
|
|
||||||
vaapi = "nvidia"
|
|
||||||
# laptop.homeRowMods = true
|
|
||||||
powerSave = true
|
|
||||||
|
|||||||
@@ -56,11 +56,11 @@ in {
|
|||||||
layout = "us,ua";
|
layout = "us,ua";
|
||||||
variant =
|
variant =
|
||||||
"colemak_dh"
|
"colemak_dh"
|
||||||
+ (
|
# + (
|
||||||
if osConfig.unexplrd.host.name == "dunamis"
|
# if osConfig.unexplrd.host.name == "dunamis"
|
||||||
then "_ortho"
|
# then "_ortho"
|
||||||
else ""
|
# else ""
|
||||||
)
|
# )
|
||||||
+ ",";
|
+ ",";
|
||||||
};
|
};
|
||||||
repeat-delay = 200;
|
repeat-delay = 200;
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./secure-boot.nix
|
||||||
|
./tpm-disk-unlock.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkDefault mkEnableOption;
|
||||||
|
cfg = config.unexplrd.boot.secureBoot;
|
||||||
|
in {
|
||||||
|
options.unexplrd.boot.secureBoot.enable =
|
||||||
|
mkEnableOption "secure boot support";
|
||||||
|
|
||||||
|
config = {
|
||||||
|
boot.loader.systemd-boot.enable = mkDefault (!cfg.enable);
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkDefault mkEnableOption;
|
||||||
|
cfg = config.unexplrd.boot.tpmDiskUnlock;
|
||||||
|
in {
|
||||||
|
options.unexplrd.boot.tpmDiskUnlock.enable =
|
||||||
|
mkEnableOption "TPM2 disk unlock support";
|
||||||
|
|
||||||
|
config = {
|
||||||
|
boot.initrd.systemd.tpm2.enable = mkDefault cfg.enable;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,16 +1,15 @@
|
|||||||
{
|
{lib, ...}: {
|
||||||
config,
|
|
||||||
# inputs,
|
|
||||||
lib,
|
|
||||||
pkgs,
|
|
||||||
...
|
|
||||||
}: let
|
|
||||||
inherit (lib) mkDefault mkOption mkEnableOption mkIf;
|
|
||||||
cfg = config.unexplrd.config;
|
|
||||||
cfgHost = config.unexplrd.host;
|
|
||||||
in {
|
|
||||||
imports = [
|
imports = [
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "laptop" "homeRowMods"] ["unexplrd" "input" "homeRowMods" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "powerSave"] ["unexplrd" "hardware" "powerSave" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "secureBoot"] ["unexplrd" "boot" "secureBoot" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "tpmDiskUnlock"] ["unexplrd" "boot" "tpmDiskUnlock" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "useIwd"] ["unexplrd" "networking" "iwd" "enable"])
|
||||||
|
(lib.mkRenamedOptionModule ["unexplrd" "config" "vaapi"] ["unexplrd" "hardware" "graphics" "vaapi"])
|
||||||
|
./boot
|
||||||
./hardware
|
./hardware
|
||||||
|
./host.nix
|
||||||
|
./input/home-row-mods.nix
|
||||||
./misc
|
./misc
|
||||||
./module/lanzaboote.nix
|
./module/lanzaboote.nix
|
||||||
./module/locale.nix
|
./module/locale.nix
|
||||||
@@ -24,79 +23,4 @@ in {
|
|||||||
./sops.nix
|
./sops.nix
|
||||||
./users.nix
|
./users.nix
|
||||||
];
|
];
|
||||||
options = {
|
|
||||||
unexplrd.host = {
|
|
||||||
name = mkOption {
|
|
||||||
type = lib.types.str;
|
|
||||||
};
|
|
||||||
id = mkOption {
|
|
||||||
type = lib.types.strMatching "[a-z0-9]{8}";
|
|
||||||
};
|
|
||||||
stateVersion = mkOption {
|
|
||||||
type = lib.types.strMatching ''[0-9]{2}\.[0-9]{2}'';
|
|
||||||
};
|
|
||||||
type = mkOption {
|
|
||||||
type = lib.types.enum ["laptop" "server" "workstation"];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
unexplrd.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 [
|
|
||||||
{
|
|
||||||
system.stateVersion = cfgHost.stateVersion;
|
|
||||||
networking.hostName = cfgHost.name;
|
|
||||||
networking.hostId = cfgHost.id;
|
|
||||||
}
|
|
||||||
{
|
|
||||||
boot.initrd.systemd.tpm2.enable = mkDefault cfg.tpmDiskUnlock;
|
|
||||||
boot.loader.systemd-boot.enable = mkDefault (!cfg.secureBoot);
|
|
||||||
}
|
|
||||||
(mkIf (cfg.laptop.homeRowMods)
|
|
||||||
# lib.asserts.assertMsg (config.services.kanata.enable != config.services.keyd.enable) "Kanata and keyd create soft lock when both enabled"
|
|
||||||
{
|
|
||||||
services.kanata.enable = true;
|
|
||||||
services.kanata.keyboards.internal = {
|
|
||||||
extraDefCfg = ''
|
|
||||||
process-unmapped-keys no
|
|
||||||
'';
|
|
||||||
configFile = ./kanata/internal.kbd;
|
|
||||||
};
|
|
||||||
})
|
|
||||||
(mkIf (cfg.powerSave) {
|
|
||||||
powerManagement.enable = true;
|
|
||||||
powerManagement.powertop.enable = true;
|
|
||||||
services.power-profiles-daemon.enable = true;
|
|
||||||
services.thermald.enable = true;
|
|
||||||
services.upower.enable = true;
|
|
||||||
hardware.bluetooth.settings.Policy.AutoEnable = false;
|
|
||||||
})
|
|
||||||
(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
|
|
||||||
];
|
|
||||||
})
|
|
||||||
];
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./facter.nix
|
./facter.nix
|
||||||
|
./graphics/vaapi.nix
|
||||||
|
./power-save.nix
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkIf mkOption types;
|
||||||
|
cfg = config.unexplrd.hardware.graphics.vaapi;
|
||||||
|
in {
|
||||||
|
options.unexplrd.hardware.graphics.vaapi = mkOption {
|
||||||
|
type = types.nullOr (types.enum ["intel-media-driver" "nvidia"]);
|
||||||
|
default = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
(mkIf (cfg == "intel-media-driver") {
|
||||||
|
hardware.graphics.extraPackages = with pkgs; [
|
||||||
|
intel-compute-runtime
|
||||||
|
intel-media-driver
|
||||||
|
vpl-gpu-rt
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(mkIf (cfg == "nvidia") {
|
||||||
|
hardware.graphics.extraPackages = with pkgs; [
|
||||||
|
nvidia-vaapi-driver
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
|
}
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.unexplrd.hardware.powerSave;
|
||||||
|
in {
|
||||||
|
options.unexplrd.hardware.powerSave.enable =
|
||||||
|
mkEnableOption "power saving defaults";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
powerManagement.enable = true;
|
||||||
|
powerManagement.powertop.enable = true;
|
||||||
|
services.power-profiles-daemon.enable = true;
|
||||||
|
services.thermald.enable = true;
|
||||||
|
services.upower.enable = true;
|
||||||
|
hardware.bluetooth.settings.Policy.AutoEnable = false;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkOption types;
|
||||||
|
cfg = config.unexplrd.host;
|
||||||
|
in {
|
||||||
|
options.unexplrd.host = {
|
||||||
|
name = mkOption {
|
||||||
|
type = types.str;
|
||||||
|
};
|
||||||
|
id = mkOption {
|
||||||
|
type = types.strMatching "[a-z0-9]{8}";
|
||||||
|
};
|
||||||
|
stateVersion = mkOption {
|
||||||
|
type = types.strMatching ''[0-9]{2}\.[0-9]{2}'';
|
||||||
|
};
|
||||||
|
type = mkOption {
|
||||||
|
type = types.enum ["laptop" "server" "workstation"];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = {
|
||||||
|
system.stateVersion = cfg.stateVersion;
|
||||||
|
networking.hostName = cfg.name;
|
||||||
|
networking.hostId = cfg.id;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.unexplrd.input.homeRowMods;
|
||||||
|
in {
|
||||||
|
options.unexplrd.input.homeRowMods.enable =
|
||||||
|
mkEnableOption "home row mods for the internal keyboard";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
services.kanata.enable = true;
|
||||||
|
services.kanata.keyboards.internal = {
|
||||||
|
extraDefCfg = ''
|
||||||
|
process-unmapped-keys no
|
||||||
|
'';
|
||||||
|
configFile = ../kanata/internal.kbd;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -57,7 +57,7 @@
|
|||||||
'';
|
'';
|
||||||
|
|
||||||
zramSwap = {
|
zramSwap = {
|
||||||
enable = true;
|
enable = false;
|
||||||
algorithm = "zstd";
|
algorithm = "zstd";
|
||||||
memoryPercent = 25;
|
memoryPercent = 25;
|
||||||
priority = 5;
|
priority = 5;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
];
|
];
|
||||||
boot = {
|
boot = {
|
||||||
lanzaboote = {
|
lanzaboote = {
|
||||||
enable = config.unexplrd.config.secureBoot;
|
enable = config.unexplrd.boot.secureBoot.enable;
|
||||||
pkiBundle = "/var/lib/sbctl";
|
pkiBundle = "/var/lib/sbctl";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
{
|
{
|
||||||
imports = [./hosts.nix];
|
imports = [
|
||||||
|
./hosts.nix
|
||||||
|
./iwd.nix
|
||||||
|
];
|
||||||
networking.networkmanager = {
|
networking.networkmanager = {
|
||||||
ethernet.macAddress = "stable";
|
ethernet.macAddress = "stable";
|
||||||
wifi.macAddress = "random";
|
wifi.macAddress = "random";
|
||||||
|
|||||||
@@ -0,0 +1,18 @@
|
|||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib) mkEnableOption mkIf;
|
||||||
|
cfg = config.unexplrd.networking.iwd;
|
||||||
|
in {
|
||||||
|
options.unexplrd.networking.iwd.enable =
|
||||||
|
mkEnableOption "iwd as the NetworkManager Wi-Fi backend";
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
networking = {
|
||||||
|
networkmanager.wifi.backend = "iwd";
|
||||||
|
wireless.iwd.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
settings = {
|
settings = {
|
||||||
PasswordAuthentication = false;
|
PasswordAuthentication = false;
|
||||||
PermitEmptyPasswords = false;
|
PermitEmptyPasswords = false;
|
||||||
PermitTunnel = false;
|
PermitTunnel = true;
|
||||||
UseDns = false;
|
UseDns = false;
|
||||||
KbdInteractiveAuthentication = false;
|
KbdInteractiveAuthentication = false;
|
||||||
X11Forwarding = config.services.xserver.enable;
|
X11Forwarding = config.services.xserver.enable;
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
ClientAliveCountMax = 0;
|
ClientAliveCountMax = 0;
|
||||||
# AllowUsers = ["user"];
|
# AllowUsers = ["user"];
|
||||||
TCPKeepAlive = false;
|
TCPKeepAlive = false;
|
||||||
AllowTcpForwarding = false;
|
AllowTcpForwarding = "yes";
|
||||||
AllowAgentForwarding = false;
|
AllowAgentForwarding = false;
|
||||||
LogLevel = "VERBOSE";
|
LogLevel = "VERBOSE";
|
||||||
PermitRootLogin = "no";
|
PermitRootLogin = "no";
|
||||||
|
|||||||
@@ -33,6 +33,6 @@
|
|||||||
InterceptUnknown = true;
|
InterceptUnknown = true;
|
||||||
ProcMonitorMethod = "ebpf";
|
ProcMonitorMethod = "ebpf";
|
||||||
};
|
};
|
||||||
scx.scheduler = "scx_rustland";
|
# scx.scheduler = "scx_rustland";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,8 @@
|
|||||||
# services.pueue.enable = true; # process queue in rust
|
# services.pueue.enable = true; # process queue in rust
|
||||||
services.ssh-agent.enable = true;
|
services.ssh-agent.enable = true;
|
||||||
|
|
||||||
|
services.kdeconnect.enable = true;
|
||||||
|
|
||||||
services.vicinae = {
|
services.vicinae = {
|
||||||
enable = true;
|
enable = true;
|
||||||
systemd.enable = true;
|
systemd.enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user