nixos/modules/base-system.nix

191 lines
6.1 KiB
Nix
Raw Normal View History

# Settings that most of my hosts can agree on, but
# some of these settings are overriden on a per-host basis.
{
pkgs,
lib,
config,
2023-08-27 13:52:40 +02:00
inputs,
...
}: let
cfg = config.settings;
2022-05-30 18:35:52 +02:00
inherit (lib) mkDefault;
highSSHPort = 38611;
vpnInterface = config.services.tailscale.interfaceName;
enableHydraMinion = config.services.openssh.enable;
in {
imports = [
./7-days-to-die.nix
./hdparm.nix
./malte.nix
./marie.nix
2023-08-16 23:11:56 +02:00
./deck.nix
./radicale.nix
./restic.nix
./taskserver.nix
./wakeup.nix
./darkman.nix
2023-10-30 00:31:58 +01:00
./state.nix
];
options.settings = with lib; {
nvidiaUsed = mkEnableOption "NVIDIA graphic card usage";
minimalGnome.enable = mkEnableOption "basic gnome stuff";
ssh.openOutsideVPN = mkEnableOption "an additional ssh port outside the VPN";
batteryStuff.enable = mkEnableOption "battery-related things";
hiDPI.enable = mkEnableOption "High-DPI display";
};
config = {
# Allow joypixels' license and unfree licenses in general
nixpkgs.config = {
# TODO: Fix once allowUnfree works for home-manager again
allowUnfreePredicate = _: true;
joypixels.acceptLicense = true;
};
2023-10-30 00:31:58 +01:00
# Some overlays
nixpkgs.overlays = [
(_: super: {
darkman = super.callPackage ../pkgs/darkman.nix {};
"2i-emulator" = super.callPackage ../pkgs/2i-emulator.nix {};
boilr = super.callPackage ../pkgs/boilr.nix {};
2023-10-30 00:31:58 +01:00
# Add fonts
hackNerdLigatures = super.callPackage ../pkgs/hack.nix {};
2023-10-30 00:31:58 +01:00
})
];
# This includes the firmware, oc
hardware.enableRedistributableFirmware = true;
# Add certificate authority used for my servers
security.pki.certificates = [
(builtins.readFile ../secrets/ca.crt)
];
2023-09-10 21:33:56 +02:00
system.nixos.label = let
rev =
if builtins.hasAttr "dirtyShortRev" inputs.self
then inputs.self.dirtyShortRev
else inputs.self.shortRev;
in
(builtins.concatStringsSep "-" (builtins.sort (x: y: x < y) config.system.nixos.tags)) + config.system.nixos.version + "-SHA:${rev}";
2023-08-27 13:52:40 +02:00
# Use some binary caches
nix.settings = {
# add binary caches
trusted-public-keys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
"colmena.cachix.org-1:7BzpDnjjH8ki2CT3f6GdOk7QAzPOl+1t3LvTLXqYcSg="
"cache.home:/ioV+oXpVgxDOZJvXIWmnyL83ERT4W6eW4SDEpnRbxU="
2022-12-22 12:33:49 +01:00
"hyprland.cachix.org-1:a7pgxzMz7+chwVL3/pzj6jIBMioiJM7ypFP8PwtkuGc="
];
substituters = [
"https://cache.nixos.org"
"https://nixpkgs-wayland.cachix.org"
"https://colmena.cachix.org"
2022-12-22 12:33:49 +01:00
"https://hyprland.cachix.org"
];
trusted-users =
[
# Hand the wheel group extra nix daemon rights
"@wheel"
# The hydra-minion is trusted aswell
]
++ lib.optional enableHydraMinion config.users.users.hydra-minion.name;
};
users.users.hydra-minion = lib.mkIf enableHydraMinion {
description = "Hydra Minion for remote building";
isSystemUser = true;
home = "/home/hydra-minion";
createHome = true;
useDefaultShell = true;
group = config.users.groups.hydra-minion.name;
openssh.authorizedKeys.keyFiles = [
../users/malte/yubikey.pub
../secrets/hydra-overseer.pub
];
};
users.groups.hydra-minion = lib.mkIf enableHydraMinion {};
# Make sure that I can login over the tailscale infrastructure while increasing security
services.openssh = {
enable = pkgs.lib.mkDefault true;
2022-05-23 15:52:27 +02:00
ports = [22 highSSHPort];
openFirewall = false;
};
2022-06-12 08:32:56 +02:00
networking.firewall.interfaces.${vpnInterface} = {
# Allow default port over VPN
allowedTCPPorts = [22 highSSHPort];
};
# Add extra high port if requested for those outside the VPN
networking.firewall.allowedTCPPorts = lib.optional cfg.ssh.openOutsideVPN highSSHPort;
# Tailscale exit node seem to have a problem with strict checking
networking.firewall.checkReversePath = "loose";
# Add yubikey for root authentication
users.users.root.openssh.authorizedKeys.keyFiles = [../users/malte/yubikey.pub];
# Enable mosh for some SSH superpower
programs.mosh.enable = pkgs.lib.mkDefault true;
# Basic packages
environment.systemPackages = with pkgs; [
# I might need git for rebuilding this flake on the remote machine
git
# Sops is for security
sops
# top is lacking pizzazz
2022-05-27 20:26:11 +02:00
btop
# An initial `tailscale up` is necessary to get the network going
tailscale
2022-09-12 16:35:17 +02:00
# I will need to have access to helix
helix
2022-02-15 13:24:57 +01:00
# I much rather use some tools other than the default
2022-02-15 14:58:39 +01:00
fd
du-dust
ripgrep
];
# Language and timezone defaults
time.timeZone = "Europe/Berlin";
Update lockfile • Updated input 'cataclysm-dda': 'github:CleverRaven/Cataclysm-DDA/f6be61e24299d493f714b4b1fe5189deeb5a4c06' (2022-06-16) → 'github:CleverRaven/Cataclysm-DDA/a15650196c127cc29d1d4326aa6d0a9f75adbc2b' (2022-08-15) • Updated input 'colmena': 'github:zhaofengli/colmena/1b3c272b5873f809c18434924d99967c73d4e2cf' (2022-06-10) → 'github:zhaofengli/colmena/34bb2e46747e69c9a34f94583330ad9a9f5ad20a' (2022-07-30) • Updated input 'colmena/stable': 'github:NixOS/nixpkgs/ec6eaba9dfcfdd11547d75a193e91e26701bf7e3' (2022-05-31) → 'github:NixOS/nixpkgs/babb041b7167008af3faca4c78f9dd8c6e83ef3a' (2022-06-28) • Updated input 'emulator-2a': 'github:MalteT/2a-emulator/71d8a765dc243ffe313cbbd45245830f7819b49f' (2022-03-30) → 'github:MalteT/2a-emulator/60052c33ce7ddccefa9b16d492c717afe356d205' (2022-06-26) • Updated input 'emulator-2a/nixCargoIntegration/nixpkgs': 'github:NixOS/nixpkgs/6fc5211eddddc02c50ca7f98d6cc377726417fa9' (2021-08-13) → 'github:NixOS/nixpkgs/6141b8932a5cf376fe18fcd368cecd9ad946cb68' (2022-06-23) • Updated input 'emulator-2a/nixCargoIntegration/rustOverlay': 'github:oxalica/rust-overlay/ad311f5bb5c5ef475985f1e0f264e831470a8510' (2021-08-15) → 'github:oxalica/rust-overlay/37ab3d00e8caaad1d1d3f78c9282d3d5435fc2ba' (2022-06-26) • Updated input 'fenix': 'github:nix-community/fenix/720b54260dee864d2a21745bd2bb55223f58e297' (2022-06-16) → 'github:nix-community/fenix/54253fb23a5871466ada5c0334b6e39a0bcdb4db' (2022-08-14) • Updated input 'fenix/rust-analyzer-src': 'github:rust-lang/rust-analyzer/519d7484f3b1beb25dec9f2249adeaaa21033433' (2022-06-15) → 'github:rust-lang/rust-analyzer/010f68cacfdddcc50234b54965e1326d7ad925ab' (2022-08-13) • Updated input 'home-manager': 'github:nix-community/home-manager/504d6de6a061993c3f585f9a86c6a9f68927b1c0' (2022-06-15) → 'github:nix-community/home-manager/ff5133843c26979f8abb5dd801b32f40287692fa' (2022-08-14) • Removed input 'home-manager/flake-compat' • Removed input 'home-manager/nmd' • Removed input 'home-manager/nmt' • Updated input 'hydra': 'github:NixOS/hydra/cf9f38e43fd81f9298e3f2ff50c8a6ee0acc3af0' (2022-05-31) → 'github:NixOS/hydra/2b1c1e65d5fbbe25625a31ee93cb14c9a9edf969' (2022-08-08) • Updated input 'mensa': 'github:MalteT/mensa/5b2b41d1db5d5f4e113aed499dc07bf3170e32ad' (2022-03-30) → 'github:MalteT/mensa/f1aba13e86f6c6697b8d575d18def9c32ce212a6' (2022-06-26) • Updated input 'mensa/nixCargoIntegration/nixpkgs': 'github:NixOS/nixpkgs/6fc5211eddddc02c50ca7f98d6cc377726417fa9' (2021-08-13) → 'github:NixOS/nixpkgs/6141b8932a5cf376fe18fcd368cecd9ad946cb68' (2022-06-23) • Updated input 'mensa/nixCargoIntegration/rustOverlay': 'github:oxalica/rust-overlay/ad311f5bb5c5ef475985f1e0f264e831470a8510' (2021-08-15) → 'github:oxalica/rust-overlay/37ab3d00e8caaad1d1d3f78c9282d3d5435fc2ba' (2022-06-26) • Updated input 'nickel': 'github:tweag/nickel/24bdbde6bc34d99c046a01744413f1152d3a9b4c' (2022-06-14) → 'github:tweag/nickel/397247109ef103c882161da4177dd684deca59e0' (2022-08-09) • Updated input 'nickel/flake-utils': 'github:numtide/flake-utils/04c1b180862888302ddfb2e3ad9eaa63afc60cf8' (2022-05-17) → 'github:numtide/flake-utils/bee6a7250dd1b01844a2de7e02e4df7d8a0a206c' (2022-06-24) • Updated input 'nickel/pre-commit-hooks': 'github:cachix/pre-commit-hooks.nix/521a524771a8e93caddaa0ac1d67d03766a8b0b3' (2022-05-16) → 'github:cachix/pre-commit-hooks.nix/db3bd555d3a3ceab208bed48f983ccaa6a71a25e' (2022-06-25) • Updated input 'nickel/rust-overlay': 'github:oxalica/rust-overlay/3bc2619665745f5e6f2efc3d0664edad4f62201b' (2022-05-21) → 'github:oxalica/rust-overlay/59a3a304c987dc65d2a33de0a77a1ae6ae777cd4' (2022-06-25) • Updated input 'nix-colors': 'github:Misterio77/nix-colors/2c2e107765b7b2e54b10d3fc2ffe5ed2ca2c7731' (2022-06-12) → 'github:Misterio77/nix-colors/17d4c968ae3b202a71326b59ae89727d1c21f018' (2022-07-25) • Added input 'nix-colors/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/5fb55578aa2f1a502d636a8ac71aece57cb730bb' (2022-06-19) • Updated input 'nixos-hardware': 'github:NixOS/nixos-hardware/0cab18a48de7914ef8cad35dca0bb36868f3e1af' (2022-06-01) → 'github:NixOS/nixos-hardware/12620020f76b1b5d2b0e6fbbda831ed4f5fe56e1' (2022-08-13) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6616de389ed55fba6eeba60377fc04732d5a207c' (2022-06-14) → 'github:NixOS/nixpkgs/e105167e98817ba9fe079c6c3c544c6ef188e276' (2022-08-13) • Updated input 'nixpkgs-wayland': 'github:nix-community/nixpkgs-wayland/7846b63c3524cabd82778c308d6b3d3fa79211b8' (2022-06-16) → 'github:nix-community/nixpkgs-wayland/68fac59e0e0ae87d351b6a08bb45713a55ef1eb8' (2022-08-14) • Updated input 'nixpkgs-wayland/cachix': 'github:nixos/nixpkgs/9227bbe43157225414e990b87587ccb1665225d9' (2022-06-14) → 'github:nixos/nixpkgs/eabc38219184cc3e04a974fe31857d8e0eac098d' (2022-08-02) • Updated input 'nixpkgs-wayland/lib-aggregate': 'github:nix-community/lib-aggregate/e0059f35f3727b94ea833489fd40d9e666f8da79' (2022-06-12) → 'github:nix-community/lib-aggregate/fb6e102dcf215dcf6879e7be4a5a3942207512aa' (2022-08-14) • Updated input 'nixpkgs-wayland/lib-aggregate/flake-utils': 'github:numtide/flake-utils/1ed9fb1935d260de5fe1c2f7ee0ebaae17ed2fa1' (2022-05-30) → 'github:numtide/flake-utils/c0e246b9b83f637f4681389ecabcb2681b4f3af0' (2022-08-07) • Updated input 'nixpkgs-wayland/lib-aggregate/nixpkgs-lib': 'github:nix-community/nixpkgs.lib/8f09bff20b363b80213186156168126674990368' (2022-06-12) → 'github:nix-community/nixpkgs.lib/bbd8f7cd87d0b29294ef3072ffdbd61d60f05da4' (2022-08-14) • Updated input 'qmk-udev-rules': 'github:qmk/qmk_firmware/8e128452db4a5c93f0214a1f6ea38e213445235c' (2022-06-16) → 'github:qmk/qmk_firmware/51d5aad25b92a34bc051849616fcd93e3ae407fc' (2022-08-15) • Updated input 'sops-nix': 'github:Mic92/sops-nix/f075361ecbde21535b38e41dfaa28a28f160855c' (2022-06-05) → 'github:Mic92/sops-nix/773365016f5202a199f5aff72cac75c64add4528' (2022-08-15) • Removed input 'sops-nix/nixpkgs-21_11' • Updated input 'sops-nix/nixpkgs-22_05': 'github:NixOS/nixpkgs/d6cb04299ce8964290ae7fdcb87aa50da0500b5c' (2022-06-04) → 'github:NixOS/nixpkgs/70b6236f3cbc815f2cae8d597418c714cf83d1c8' (2022-08-13) • Updated input 'utils': 'github:gytis-ivaskevicius/flake-utils-plus/f8d6d1f87b6177e3bc674c29f247bdbf897ba274' (2022-05-16) → 'github:gytis-ivaskevicius/flake-utils-plus/2bf0f91643c2e5ae38c1b26893ac2927ac9bd82a' (2022-07-07)
2022-08-15 09:47:37 +02:00
i18n.supportedLocales = [
"en_US.UTF-8/UTF-8"
"de_DE.UTF-8/UTF-8"
];
# Use the latest kernel, this is altered on some hosts with zfs requirements
boot.kernelPackages = pkgs.lib.mkOverride 2000 pkgs.linuxPackages_latest;
boot.loader.timeout = pkgs.lib.mkDefault 1;
# This setting is fine, on hosts with x/wayland, I'll want to increase this
boot.loader.systemd-boot.configurationLimit = 10;
# Network configuration with tailscale
networking.useDHCP = false;
# Enable tailscale!
services.tailscale = {
enable = true;
interfaceName = "looking-glas";
};
networking.firewall.allowedUDPPorts = [config.services.tailscale.port];
# Regularly clear the store
nix.gc = {
automatic = true;
dates = lib.mkDefault "weekly";
};
# Enable store optimiser
nix.optimise = {
automatic = true;
dates = ["04:00"];
};
# GNOME
# Don't forget to import DISPLAY into dbus variables
programs.dconf.enable = mkDefault cfg.minimalGnome.enable;
programs.seahorse.enable = mkDefault cfg.minimalGnome.enable;
services.gnome.at-spi2-core.enable = mkDefault cfg.minimalGnome.enable;
services.gnome.gnome-keyring.enable = mkDefault cfg.minimalGnome.enable;
services.dbus.packages = lib.optional cfg.minimalGnome.enable pkgs.gcr;
};
}