91 lines
2.7 KiB
Nix
91 lines
2.7 KiB
Nix
# 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
|
|
|
|
./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";
|
|
}
|