2026-02-03 09:52:52 +02:00
|
|
|
{
|
|
|
|
|
config,
|
|
|
|
|
lib,
|
|
|
|
|
pkgs,
|
|
|
|
|
...
|
|
|
|
|
}:
|
2026-02-01 19:43:03 +02:00
|
|
|
|
|
|
|
|
{
|
|
|
|
|
time.timeZone = "UTC";
|
|
|
|
|
|
|
|
|
|
i18n.defaultLocale = "en_US.UTF-8";
|
|
|
|
|
console.keyMap = "us";
|
|
|
|
|
|
2026-02-03 09:52:52 +02:00
|
|
|
boot.supportedFilesystems = [
|
|
|
|
|
"btrfs"
|
|
|
|
|
"ext4"
|
|
|
|
|
"vfat"
|
|
|
|
|
"xfs"
|
|
|
|
|
];
|
|
|
|
|
boot.loader = {
|
|
|
|
|
systemd-boot = {
|
|
|
|
|
enable = true;
|
|
|
|
|
# Only keep 10 generations maximum
|
|
|
|
|
configurationLimit = lib.mkDefault 10;
|
|
|
|
|
};
|
|
|
|
|
efi.canTouchEfiVariables = true;
|
|
|
|
|
};
|
2026-02-03 07:41:19 +02:00
|
|
|
|
2026-02-01 19:43:03 +02:00
|
|
|
nix.settings = {
|
2026-02-03 09:52:52 +02:00
|
|
|
|
|
|
|
|
experimental-features = [
|
|
|
|
|
"nix-command"
|
|
|
|
|
"flakes"
|
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
# Only allow root and sudoers to run Nix commands
|
|
|
|
|
allowed-users = [
|
|
|
|
|
"root"
|
|
|
|
|
"@wheel"
|
|
|
|
|
];
|
|
|
|
|
|
2026-02-01 19:43:03 +02:00
|
|
|
substituters = lib.mkBefore [
|
|
|
|
|
"https://cache.lix.systems"
|
|
|
|
|
];
|
|
|
|
|
trusted-public-keys = lib.mkBefore [
|
|
|
|
|
"cache.lix.systems:aBnZUw8zA7H35Cz2RyKFVs3H4PlGTLawyY5KRbvJR8o="
|
|
|
|
|
];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
services.openssh.enable = true;
|
|
|
|
|
|
|
|
|
|
networking.useDHCP = lib.mkDefault true;
|
|
|
|
|
|
2026-02-02 21:30:08 +02:00
|
|
|
nixpkgs.config.allowUnfree = true;
|
|
|
|
|
|
2026-02-03 09:52:52 +02:00
|
|
|
programs = {
|
|
|
|
|
nix-index = {
|
|
|
|
|
enable = lib.mkDefault true;
|
|
|
|
|
enableBashIntegration = lib.mkDefault true;
|
|
|
|
|
};
|
|
|
|
|
nix-index-database.comma.enable = lib.mkDefault true;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Optimise the Nix store once a day
|
|
|
|
|
nix.optimise = lib.mkDefault {
|
|
|
|
|
automatic = true;
|
|
|
|
|
dates = [ "daily" ];
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Clean the Nix store once a day
|
|
|
|
|
nix.gc = lib.mkDefault {
|
|
|
|
|
automatic = true;
|
|
|
|
|
dates = "daily";
|
|
|
|
|
options = "--delete-older-than 30d";
|
|
|
|
|
};
|
|
|
|
|
|
2026-02-01 19:43:03 +02:00
|
|
|
system.stateVersion = "25.11";
|
2026-02-03 07:41:19 +02:00
|
|
|
|
|
|
|
|
virtualisation = {
|
|
|
|
|
containers.enable = true;
|
|
|
|
|
# docker.enable = true;
|
|
|
|
|
podman = {
|
|
|
|
|
enable = true;
|
|
|
|
|
dockerCompat = true;
|
|
|
|
|
# Required for containers under podman-compose to be able to talk to each other.
|
|
|
|
|
defaultNetwork.settings.dns_enabled = true;
|
|
|
|
|
};
|
|
|
|
|
};
|
2026-02-03 09:52:52 +02:00
|
|
|
|
|
|
|
|
security.sudo = {
|
|
|
|
|
enable = lib.mkDefault true;
|
|
|
|
|
wheelNeedsPassword = lib.mkForce false;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
# Locked down root user as a default
|
|
|
|
|
users.users.root = lib.mkDefault {
|
|
|
|
|
shell = pkgs.zsh;
|
|
|
|
|
extraGroups = [
|
|
|
|
|
"networkmanager"
|
|
|
|
|
"wheel"
|
|
|
|
|
];
|
|
|
|
|
hashedPassword = lib.mkDefault "!";
|
|
|
|
|
initialHashedPassword = lib.mkDefault "!";
|
|
|
|
|
};
|
2026-02-01 19:43:03 +02:00
|
|
|
}
|