···
# hosts/valefar/configuration.nix (or default.nix)
{ config, lib, pkgs, modulesPath, inputs, ... }:
+
# =============================================================================
+
# =============================================================================
# Common modules shared across hosts
···
+
# Hardware-specific (commented out)
+
# ../../common/nvidia.nix
+
# =============================================================================
+
# =============================================================================
system.stateVersion = "24.11";
+
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
+
# Intel microcode updates
hardware.cpu.intel.updateMicrocode = lib.mkDefault
config.hardware.enableRedistributableFirmware;
+
# =============================================================================
+
# =============================================================================
+
modules.garage.enable = true;
+
modules.forgejo.enable = true;
+
modules.immich.enable = true;
+
# =============================================================================
+
# =============================================================================
+
firewall.trustedInterfaces = [ "tailscale0" ];
+
nameservers = [ "10.0.0.210" "1.1.1.1" ];
+
firewall.allowedTCPPorts = [ 22 80 443 2049 2456 2457 9000 9001 9002 ];
+
firewall.allowedUDPPorts = [ 2049 ];
fallbackDns = [ "10.0.0.210" "1.1.1.1" ];
+
# =============================================================================
+
# =============================================================================
+
supportedFilesystems = [ "zfs" ];
+
kernelModules = [ "nct6775" "coretemp" ];
+
extraPools = [ "garage" "storage" ];
+
devNodes = "/dev/disk/by-id";
+
# =============================================================================
+
# =============================================================================
systemd.services.zfs-import-cache.enable = false;
systemd.services.zfs-import-scan = {
after = [ "systemd-udev-settle.service" ];
wants = [ "systemd-udev-settle.service" ];
+
after = [ "zfs-import-scan.service" ];
+
wants = [ "zfs-import-scan.service" ];
+
after = [ "zfs-import-scan.service" ];
+
wants = [ "zfs-import-scan.service" ];
+
autoScrub.enable = true;
+
# =============================================================================
+
# =============================================================================
systemd.tmpfiles.rules = [
"d /storage/immich 0755 immich immich -"
+
"d /storage/immich/photos 0755 immich immich -"
+
"Z /storage/immich 0755 immich immich -" # Recursively fix ownership of existing files
+
# =============================================================================
+
# =============================================================================
+
services.nfs.server = {
+
/storage *(rw,sync,no_subtree_check,no_root_squash)
+
# =============================================================================
+
# =============================================================================
+
services.vscode-server = {
+
nodejsPackage = pkgs.nodejs_20;
+
# =============================================================================
+
# =============================================================================
virtualisation.docker = {
···
buildGoModule = pkgs.buildGo123Module;
+
# =============================================================================
+
# =============================================================================
+
environment.systemPackages = with pkgs; [
+
inputs.agenix.packages.x86_64-linux.default
+
# =============================================================================
+
# COMMENTED OUT / DISABLED
+
# =============================================================================
+
# Remote unlock via SSH (commented out)
+
# boot.kernelParams = [ "ip=dhcp" ];
+
# availableKernelModules = [ "r8169" ];
+
# authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ0pU82lV9dSjkgYbdh9utZ5CDM2dPN70S5fBqN1m3Pb" ];
+
# hostKeys = [ "/etc/secrets/initrd/ssh_host_rsa_key" ];
+
# shell = "/bin/cryptsetup-askpass";