Compare commits

..
2 Commits
Author SHA1 Message Date
hektor 91ab0f9902 feat(hecuba): switch to UEFI (and modularize)
check / lint (push) Successful in 6s
2026-11-07 21:56:25 +01:00
hektor d44463b235 feat(hardening): declare hardening module using 'nix-mineral'
check / lint (push) Successful in 6s
2026-11-07 21:19:54 +01:00
3 changed files with 12 additions and 27 deletions

No files matched your search

-1
View File
@@ -40,7 +40,6 @@ in
model = "arc-140t"; model = "arc-140t";
}; };
}; };
hardening.enable = true;
keyboard.enable = true; keyboard.enable = true;
localization.enable = true; localization.enable = true;
memory = { memory = {
+4 -1
View File
@@ -31,7 +31,10 @@ in
firmware = "uefi"; firmware = "uefi";
}; };
docker.enable = true; docker.enable = true;
hardening.enable = true; hardening = {
enable = true;
profile = "server";
};
secrets.enable = true; secrets.enable = true;
ssh.enable = true; ssh.enable = true;
tailscale.enable = true; tailscale.enable = true;
+8 -25
View File
@@ -8,7 +8,8 @@
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;
desktop = { profiles = {
workstation = {
preset = [ preset = [
"compatibility" "compatibility"
] ]
@@ -18,16 +19,6 @@ 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 = [
@@ -67,29 +58,21 @@ in
type = lib.types.bool; type = lib.types.bool;
}; };
profile = lib.mkOption { profile = lib.mkOption {
default = if profiles ? ${config.host.role} then config.host.role else null; default = "workstation";
type = lib.types.nullOr (lib.types.enum (lib.attrNames profiles)); type = lib.types.enum [
"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 [
{ {
@@ -116,7 +99,7 @@ in
}; };
}; };
} }
(lib.optionalAttrs (config.hardening.profile != null) profiles.${config.hardening.profile}) profiles.${config.hardening.profile}
]; ];
}; };
} }