Compare commits

..
2 Commits
Author SHA1 Message Date
hektor 21e5b62dfa feat(hecuba): switch to UEFI (and modularize)
check / lint (push) Successful in 9s
2026-11-08 13:41:38 +01:00
hektor e794e6c0e2 feat(hardening): declare hardening module using 'nix-mineral' 2026-11-08 13:41:38 +01:00
3 changed files with 27 additions and 12 deletions

No files matched your search

+1
View File
@@ -40,6 +40,7 @@ in
model = "arc-140t"; model = "arc-140t";
}; };
}; };
hardening.enable = true;
keyboard.enable = true; keyboard.enable = true;
localization.enable = true; localization.enable = true;
memory = { memory = {
+1 -4
View File
@@ -31,10 +31,7 @@ in
firmware = "uefi"; firmware = "uefi";
}; };
docker.enable = true; docker.enable = true;
hardening = { hardening.enable = true;
enable = true;
profile = "server";
};
secrets.enable = true; secrets.enable = true;
ssh.enable = true; ssh.enable = true;
tailscale.enable = true; tailscale.enable = true;
+25 -8
View File
@@ -8,8 +8,7 @@
let let
wakeOnLan = lib.any (iface: iface.wakeOnLan.enable) (lib.attrValues config.networking.interfaces); wakeOnLan = lib.any (iface: iface.wakeOnLan.enable) (lib.attrValues config.networking.interfaces);
randomMac = config.host.role == "laptop" && !wakeOnLan; randomMac = config.host.role == "laptop" && !wakeOnLan;
profiles = { desktop = {
workstation = {
preset = [ preset = [
"compatibility" "compatibility"
] ]
@@ -19,6 +18,16 @@ let
etc.harden-bluetooth = false; etc.harden-bluetooth = false;
}; };
}; };
profiles = {
inherit desktop;
laptop = lib.recursiveUpdate desktop {
preset = [
"compatibility"
"performance"
];
settings.kernel.iommu-passthrough = false;
};
server = { server = {
preset = [ preset = [
@@ -58,21 +67,29 @@ in
type = lib.types.bool; type = lib.types.bool;
}; };
profile = lib.mkOption { profile = lib.mkOption {
default = "workstation"; default = if profiles ? ${config.host.role} then config.host.role else null;
type = lib.types.enum [ type = lib.types.nullOr (lib.types.enum (lib.attrNames profiles));
"workstation"
"server"
];
}; };
}; };
config = lib.mkIf config.hardening.enable { config = lib.mkIf config.hardening.enable {
assertions = [
{
assertion = config.hardening.profile != null;
message = "no 'hardening.profile' for `${config.host.role}` host role";
}
];
boot.blacklistedKernelModules = [ boot.blacklistedKernelModules = [
"dccp" "dccp"
"sctp" "sctp"
"rds" "rds"
"tipc" "tipc"
]; ];
hardware.bluetooth.settings.General = lib.mkIf config.hardware.bluetooth.enable {
PairableTimeout = 30;
DiscoverableTimeout = 30;
TemporaryTimeout = 0;
};
networking.wireless.iwd.settings.General.AddressRandomization = lib.mkIf randomMac "network"; networking.wireless.iwd.settings.General.AddressRandomization = lib.mkIf randomMac "network";
nix-mineral = lib.mkMerge [ nix-mineral = lib.mkMerge [
{ {
@@ -99,7 +116,7 @@ in
}; };
}; };
} }
profiles.${config.hardening.profile} (lib.optionalAttrs (config.hardening.profile != null) profiles.${config.hardening.profile})
]; ];
}; };
} }