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 17 additions and 32 deletions

No files matched your search

-1
View File
@@ -40,7 +40,6 @@ in
model = "arc-140t";
};
};
hardening.enable = true;
keyboard.enable = true;
localization.enable = true;
memory = {
+4 -1
View File
@@ -31,7 +31,10 @@ in
firmware = "uefi";
};
docker.enable = true;
hardening.enable = true;
hardening = {
enable = true;
profile = "server";
};
secrets.enable = true;
ssh.enable = true;
tailscale.enable = true;
+13 -30
View File
@@ -8,25 +8,16 @@
let
wakeOnLan = lib.any (iface: iface.wakeOnLan.enable) (lib.attrValues config.networking.interfaces);
randomMac = config.host.role == "laptop" && !wakeOnLan;
desktop = {
preset = [
"compatibility"
]
++ lib.optional config.gaming.enable "performance"; # prioritized (order matters) <https://github.com/cynicsketch/nix-mineral#configuring-options>
settings = {
debug.debugfs = true;
etc.harden-bluetooth = false;
};
};
profiles = {
inherit desktop;
laptop = lib.recursiveUpdate desktop {
workstation = {
preset = [
"compatibility"
"performance"
];
settings.kernel.iommu-passthrough = false;
]
++ lib.optional config.gaming.enable "performance"; # prioritized (order matters) <https://github.com/cynicsketch/nix-mineral#configuring-options>
settings = {
debug.debugfs = true;
etc.harden-bluetooth = false;
};
};
server = {
@@ -67,29 +58,21 @@ in
type = lib.types.bool;
};
profile = lib.mkOption {
default = if profiles ? ${config.host.role} then config.host.role else null;
type = lib.types.nullOr (lib.types.enum (lib.attrNames profiles));
default = "workstation";
type = lib.types.enum [
"workstation"
"server"
];
};
};
config = lib.mkIf config.hardening.enable {
assertions = [
{
assertion = config.hardening.profile != null;
message = "no 'hardening.profile' for `${config.host.role}` host role";
}
];
boot.blacklistedKernelModules = [
"dccp"
"sctp"
"rds"
"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";
nix-mineral = lib.mkMerge [
{
@@ -116,7 +99,7 @@ in
};
};
}
(lib.optionalAttrs (config.hardening.profile != null) profiles.${config.hardening.profile})
profiles.${config.hardening.profile}
];
};
}