···
# hosts/valefar/configuration.nix (or default.nix)
{ config, lib, pkgs, modulesPath, inputs, ... }:
4
+
# =============================================================================
6
+
# =============================================================================
9
-
#../../common/nvidia.nix
# Common modules shared across hosts
···
21
+
# Hardware-specific (commented out)
22
+
# ../../common/nvidia.nix
22
-
modules.garage.enable = true;
23
-
modules.forgejo.enable = true;
24
-
modules.immich.enable = true;
25
+
# =============================================================================
26
+
# SYSTEM CONFIGURATION
27
+
# =============================================================================
system.stateVersion = "24.11";
28
-
# pin host platform & microcorre
29
-
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
29
+
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
31
+
# Intel microcode updates
hardware.cpu.intel.updateMicrocode = lib.mkDefault
config.hardware.enableRedistributableFirmware;
33
-
networking.hostName = "valefar";
34
-
networking.hostId = "2a07da90";
35
+
# =============================================================================
37
+
# =============================================================================
38
+
modules.garage.enable = true;
39
+
modules.forgejo.enable = true;
40
+
modules.immich.enable = true;
42
+
# =============================================================================
44
+
# =============================================================================
46
+
hostName = "valefar";
47
+
hostId = "2a07da90";
38
-
firewall.trustedInterfaces = [
41
-
nameservers = [ "10.0.0.210" "1.1.1.1" ];
43
-
firewall.allowedTCPPorts = [22 80 443 2456 2457 9000 9001 9002];
49
+
firewall.trustedInterfaces = [ "tailscale0" ];
50
+
nameservers = [ "10.0.0.210" "1.1.1.1" ];
52
+
firewall.allowedTCPPorts = [ 22 80 443 2049 2456 2457 9000 9001 9002 ];
53
+
firewall.allowedUDPPorts = [ 2049 ];
fallbackDns = [ "10.0.0.210" "1.1.1.1" ];
51
-
dnsovertls = "false";
62
+
dnsovertls = "false";
54
-
boot.supportedFilesystems = [ "zfs" ];
55
-
boot.kernelModules = [ "nct6775" "coretemp" ];
57
-
boot.zfs.extraPools = [ "garage" "storage" ];
58
-
boot.zfs.devNodes = "/dev/disk/by-id";
59
-
boot.zfs.forceImportAll = true;
61
-
services.nfs.server = {
64
-
/storage *(rw,sync,no_subtree_check,no_root_squash)
68
-
/*boot.kernelParams = [ "ip=dhcp" ];
70
-
availableKernelModules = [ "r8169" ];
76
-
authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ0pU82lV9dSjkgYbdh9utZ5CDM2dPN70S5fBqN1m3Pb" ];
77
-
hostKeys = [ "/etc/secrets/initrd/ssh_host_rsa_key" ];
78
-
shell = "/bin/cryptsetup-askpass";
65
+
# =============================================================================
66
+
# BOOT & FILESYSTEMS
67
+
# =============================================================================
69
+
supportedFilesystems = [ "zfs" ];
70
+
kernelModules = [ "nct6775" "coretemp" ];
73
+
extraPools = [ "garage" "storage" ];
74
+
devNodes = "/dev/disk/by-id";
75
+
forceImportAll = true;
79
+
# =============================================================================
81
+
# =============================================================================
82
+
# ZFS import services
systemd.services.zfs-import-cache.enable = false;
84
-
systemd.services.zfs-import-scan.enable = true;
systemd.services.zfs-import-scan = {
after = [ "systemd-udev-settle.service" ];
wants = [ "systemd-udev-settle.service" ];
95
-
after = [ "zfs-import-scan.service" ];
96
-
wants = [ "zfs-import-scan.service" ];
101
-
after = [ "zfs-import-scan.service" ];
102
-
wants = [ "zfs-import-scan.service" ];
96
+
after = [ "zfs-import-scan.service" ];
97
+
wants = [ "zfs-import-scan.service" ];
101
+
where = "/storage";
103
+
after = [ "zfs-import-scan.service" ];
104
+
wants = [ "zfs-import-scan.service" ];
110
+
autoScrub.enable = true;
111
+
trim.enable = true;
114
+
# =============================================================================
115
+
# DIRECTORY STRUCTURE
116
+
# =============================================================================
systemd.tmpfiles.rules = [
"d /storage/immich 0755 immich immich -"
119
+
"d /storage/immich/photos 0755 immich immich -"
120
+
"Z /storage/immich 0755 immich immich -" # Recursively fix ownership of existing files
109
-
services.zfs.autoScrub.enable = true;
110
-
services.zfs.trim.enable = true;
112
-
services.vscode-server.enable = true;
113
-
services.vscode-server.nodejsPackage = pkgs.nodejs_20;
123
+
# =============================================================================
125
+
# =============================================================================
126
+
services.nfs.server = {
129
+
/storage *(rw,sync,no_subtree_check,no_root_squash)
115
-
environment.systemPackages = with pkgs; [
118
-
inputs.agenix.packages.x86_64-linux.default
133
+
# =============================================================================
135
+
# =============================================================================
136
+
services.vscode-server = {
138
+
nodejsPackage = pkgs.nodejs_20;
141
+
# =============================================================================
143
+
# =============================================================================
virtualisation.docker = {
···
buildGoModule = pkgs.buildGo123Module;
152
+
# =============================================================================
154
+
# =============================================================================
155
+
environment.systemPackages = with pkgs; [
158
+
inputs.agenix.packages.x86_64-linux.default
161
+
# =============================================================================
162
+
# COMMENTED OUT / DISABLED
163
+
# =============================================================================
164
+
# Remote unlock via SSH (commented out)
165
+
# boot.kernelParams = [ "ip=dhcp" ];
167
+
# availableKernelModules = [ "r8169" ];
173
+
# authorizedKeys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJ0pU82lV9dSjkgYbdh9utZ5CDM2dPN70S5fBqN1m3Pb" ];
174
+
# hostKeys = [ "/etc/secrets/initrd/ssh_host_rsa_key" ];
175
+
# shell = "/bin/cryptsetup-askpass";