add host smrk (spruce)
4 files changed, 215 insertions(+), 1 deletion(-)
M flake.lock → flake.lock
@@ -867,7 +867,8 @@ "nur": "nur", "scriptura": "scriptura", "searchix": "searchix", "srvos": "srvos", - "stylix": "stylix" + "stylix": "stylix", + "vpsadminos": "vpsadminos" } }, "scriptura": {@@ -1235,6 +1236,22 @@ }, "original": { "owner": "pyproject-nix", "repo": "uv2nix", + "type": "github" + } + }, + "vpsadminos": { + "locked": { + "lastModified": 1771632757, + "narHash": "sha256-Eb0v0imSKZDuZ6rCR7CX3PcGfPhdwsA6VFEQhQQQ+R8=", + "owner": "vpsfreecz", + "repo": "vpsadminos", + "rev": "0000b3483cf507cb34c66ac3dcefc20228c85963", + "type": "github" + }, + "original": { + "owner": "vpsfreecz", + "ref": "staging", + "repo": "vpsadminos", "type": "github" } }
M flake.nix → flake.nix
@@ -6,6 +6,7 @@ }; nixos-hardware = { url = "github:NixOS/nixos-hardware"; }; + vpsadminos.url = "github:vpsfreecz/vpsadminos/staging"; nanopi = { url = "github:bdew/nixos-nanopi"; inputs.nixpkgs.follows = "nixpkgs";@@ -154,6 +155,22 @@ ./packages/modules/nixos/laminar.nix ./packages/modules/nixos/git-pr.nix ./system/hosts/linde.nix ./private/calendar.nix + ]; + }; + nixosConfigurations.smrk = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + { + nixpkgs.overlays = [ + nur.overlays.default + elgit.overlays.default + searchix.overlays.default + ]; + } + srvos.nixosModules.server + vpsadminos.nixosConfigurations.containerUnstable + agenix.nixosModules.default + ./system/hosts/smrk.nix ]; }; darwinConfigurations.marvin = darwin.lib.darwinSystem {
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; + }; +}