# NAS host configuration { config, lib, pkgs, ... }: let impermanence = builtins.fetchTarball "https://github.com/nix-community/impermanence/archive/master.tar.gz"; in { nixpkgs.config.allowUnfree = true; imports = [ "${impermanence}/nixos.nix" ./utils/bento.nix ./utils/modules/sops.nix ./utils/modules/victoriametrics/default.nix ./modules/pyload.nix ./modules/jellyfin.nix ./modules/power-management.nix ./modules/disk-monitoring.nix ./modules/ugreen-leds.nix ./hardware-configuration.nix ]; nixpkgs.overlays = [ (import ./utils/overlays/packages.nix) ]; # Hostname networking.hostName = "nas"; # Timezone time.timeZone = "Europe/Vienna"; console.keyMap = "de"; # SSH server services.openssh.enable = true; users.users.root.openssh.authorizedKeys.keys = [ "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDN/2SAFm50kraB1fepAizox/QRXxB7WbqVbH+5OPalDT47VIJGNKOKhixQoqhABHxEoLxdf/C83wxlCVlPV9poLfDgVkA3Lyt5r3tSFQ6QjjOJAgchWamMsxxyGBedhKvhiEzcr/Lxytnoz3kjDG8fqQJwEpdqMmJoMUfyL2Rqp16u+FQ7d5aJtwO8EUqovhMaNO7rggjPpV/uMOg+tBxxmscliN7DLuP4EMTA/FwXVzcFNbOx3K9BdpMRAaSJt4SWcJO2cS2KHA5n/H+PQI7nz5KN3Yr/upJN5fROhi/SHvK39QOx12Pv7FCuWlc+oR68vLaoCKYhnkl3DnCfc7A7" "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIRQuPqH5fdX3KEw7DXzWEdO3AlUn1oSmtJtHB71ICoH Generated By Termius" ]; # Firewall networking.firewall.enable = true; networking.firewall.allowedTCPPorts = [ 22 ]; # SOPS configuration sops.age.sshKeyPaths = [ "/etc/ssh/ssh_host_ed25519_key" ]; sops.defaultSopsFile = ./secrets.yaml; # Btrfs maintenance services.btrfs.autoScrub = { enable = true; interval = "monthly"; fileSystems = [ "/nix" ]; }; # Impermanence - persist important directories # Note: /var/lib/downloads and /var/lib/multimedia are mounted from LVM on RAID environment.persistence."/nix/persist/system" = { hideMounts = true; directories = [ "/var/lib/pyload" "/var/lib/jellyfin" "/var/log" "/var/lib/nixos" "/var/bento" "/root/.ssh" ]; files = [ "/etc/machine-id" { file = "/etc/ssh/ssh_host_ed25519_key"; parentDirectory = { mode = "u=rwx,g=,o="; }; } { file = "/etc/ssh/ssh_host_ed25519_key.pub"; parentDirectory = { mode = "u=rwx,g=,o="; }; } { file = "/etc/ssh/ssh_host_rsa_key"; parentDirectory = { mode = "u=rwx,g=,o="; }; } { file = "/etc/ssh/ssh_host_rsa_key.pub"; parentDirectory = { mode = "u=rwx,g=,o="; }; } ]; }; # Nix settings nix = { settings = { auto-optimise-store = true; experimental-features = [ "nix-command" "flakes" ]; }; gc = { automatic = true; dates = "weekly"; options = "--delete-older-than 14d"; }; }; system.stateVersion = "24.05"; }