add host smrk (spruce)
1 file changed, 179 insertions(+), 0 deletions(-)
changed files
A system/hosts/smrk.nix
@@ -0,0 +1,179 @@ +{ + config, + lib, + pkgs, + ... +}: +let + hostname = "smrk"; + domain = "alin.ovh"; +in +{ + imports = [ + ../settings/configuration/nix-linux.nix + ]; + system.stateVersion = "25.11"; + + time.timeZone = "Europe/Berlin"; + i18n.defaultLocale = "en_GB.UTF-8"; + + environment.homeBinInPath = true; + environment.localBinInPath = true; + environment.systemPackages = with pkgs; [ + cifs-utils + lsof + pdns + litecli + knot-dns + + nixpkgs-review + nix-output-monitor + ]; + + services.openssh = { + enable = true; + settings = { + AcceptEnv = [ + "LANG" + "LC_*" + "TERM_PROGRAM" + ]; + }; + }; + services.sshguard = { + enable = true; + }; + + programs.htop = { + enable = true; + settings = { + header_margin = 0; + tree_view = true; + hide_userland_threads = true; + hide_kernel_threads = true; + }; + }; + + programs.vim.defaultEditor = false; + programs.neovim = { + enable = true; + defaultEditor = true; + viAlias = true; + vimAlias = true; + }; + + networking = { + hostName = hostname; + domain = domain; + + nameservers = [ + "2606:4700:4700::1111" + "2606:4700:4700::1001" + "1.1.1.1" + "1.0.0.1" + ]; + + firewall = { + enable = true; + allowPing = true; + pingLimit = "--limit 60/minute --limit-burst 30"; + logRefusedConnections = false; + allowedTCPPorts = [ + 22 + 80 + 443 + ]; + allowedUDPPorts = [ + 443 + ]; + trustedInterfaces = [ + "tailscale0" + ]; + }; + }; + + nix = { + settings = { + max-jobs = 4; + }; + gc = { + dates = "08:15"; + }; + optimise = { + automatic = true; + dates = [ "02:30" ]; + }; + }; + + services.tailscale = { + enable = true; + openFirewall = true; + extraUpFlags = [ "--accept-routes" ]; + extraSetFlags = [ + "--advertise-exit-node" + ]; + useRoutingFeatures = "both"; + }; + users.defaultUserShell = config.programs.fish.package; + programs.fish = { + enable = true; + package = pkgs.fishMinimal; + interactiveShellInit = '' + set --universal fish_greeting "" + ''; + }; + users.users.root = { + openssh.authorizedKeys.keys = [ + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBHYUyDdw92TNXguAxcmcmZmn/7ECGdRp6ckjxU+5zCw3BCnsS5+xEvHBVnnFdJRoH2XpfMeJjE+fi67zFVhlbn4= root@secretive.marvin" + ]; + }; + users.users.alin = { + extraGroups = [ + "wheel" + "caddy" + "docker" + "podman" + "laminar" + ]; + isNormalUser = true; + home = "/home/alin"; + createHome = true; + + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFp1R7ls50vzyCx8pZAwGepQUuos0ogewkIioiW1uMup alin@prefect" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAII8VIII+598QOBxi/52O1Kb19RdUdX0aZmS1/dNoyqc5 alan@hetzner.strongbox" + "ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBENXbdPPOq0mA+9bPklpUkikvIXjCEKE5IRwNPNMr5/Ta1J/ND737fexCjEb7YPoAJtaf0gD/JThQQi/RxDTvy4= alin@alin.ovh" + ]; + }; + users.users.nixremote = { + shell = "/bin/sh"; + isNormalUser = true; + home = "/var/lib/nixremote/"; + createHome = true; + openssh.authorizedKeys.keys = [ + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIPKGzXGgFm/4Da2KNl1wb7TC2YOu/baP/2eFVBaJY0Wq root@marvin" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIy9jFioBvV0JA0lc+De2N+vDOABGHgCECW6vkD33CE4 sourcehut" + "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIII7sWEwsm8JZiJ0LUnjSt0Kg1RXypG6p5AzP/R2n5ca actions@github.com" + ]; + }; + programs.git = { + enable = true; + package = pkgs.gitMinimal; + config = { + advice = { + detachedHead = false; + mergeConflict = false; + }; + }; + }; + + services.syncthing = { + enable = true; + dataDir = "/var/lib/syncthing"; + configDir = "/var/lib/syncthing"; + guiAddress = "[::]:8384"; + openDefaultPorts = true; + overrideDevices = false; + overrideFolders = false; + }; +}