Nix configurations for my homelab
0

Configure Feed

Select the types of activity you want to include in your feed.

Update netbird IPs and change netbird-ip -> netbird-ipv4

Netbird can assign IPv6 addresses which I will likely use over the v4
addresses.

+22 -22
+11 -11
hidden/network.json
··· 3 3 "ipv4": "ENC[AES256_GCM,data:jcwJrszZXcjUiszn,iv:CYd3rQb01pSn3as1Fbnh7CJfIBCJ42fDzKF6YIOw5ic=,tag:vZE7ZmIkwbNQ5S7nis2gUQ==,type:str]", 4 4 "ipv4-local": "ENC[AES256_GCM,data:19k/8bA6AoqrW1s0,iv:Mqpifh7/26ZjgtnJQO7dUf7/XpVicq2j6IdwlRlXei0=,tag:7jRfp/sDrNB4DBE/sfJOwQ==,type:str]", 5 5 "ipv6": "ENC[AES256_GCM,data:hnr3gURfnlSIodjF2xd4B5Xq/OdObqsPQ+KilekSNF6IcvsAmHaO,iv:Ko2O/K/yaCMRgqewuNlVAwxcW7OlnsLmw3VxQyyVE5A=,tag:Q8ge7q5qCbVzPnWwGwK5VQ==,type:str]", 6 - "netbird-ip": "ENC[AES256_GCM,data:BqWz9GvjWIvn+1fCog==,iv:6nsF0il62SjC6+qIWWsgdA4ihpQv1gmdK8ZraQ3K5JY=,tag:Us6BRZnoZydh3qIZKRdbvw==,type:str]" 6 + "netbird-ipv4": "ENC[AES256_GCM,data:NMkeyDU5YZlD8qTUTFU=,iv:PpqyCpCm8YXjrdFRBx2asQSBIJ83On7usAA2reNTpDQ=,tag:JxHs3yi3od0RfMjoVlibDg==,type:str]" 7 7 }, 8 8 "lutea": { 9 9 "ipv4": "ENC[AES256_GCM,data:vmMB5z1tIIYm7ED2,iv:yixtkhAGbWhkVy4bhj+kdotlpsfZOty0ZM2keTPrdFk=,tag:SHhYXhFEIAVUxmQvgnqq0Q==,type:str]", 10 10 "ipv4-local": "ENC[AES256_GCM,data:9aCrhOqCq9k7k8P8Cw==,iv:7lR2Iy54an6sP+opBoYZWr/ghbiIEZi39Wt56XHFwTQ=,tag:BYoovYuZhL33aqcxUHc/og==,type:str]", 11 11 "ipv6": "ENC[AES256_GCM,data:4fWV/Js+9GVmGuiP6zuDrf/f2BuY487tbDEULQqoRlaT6teJLRUJ,iv:lmIgLIHTdI/B50/bCpYum1FInIFv/g6AcPA6Zw5Xf4o=,tag:PpZ7m5NvOMiITqxOtC3ZUA==,type:str]", 12 - "netbird-ip": "ENC[AES256_GCM,data:nnD509LlXnAEBJEibAo=,iv:fv+Onoy1wLaAqw+FXjAJyZIMywsbWvQ8/FlHN9YOwuw=,tag:hWQ5ZMGsDDxivRlYkgwmUA==,type:str]" 12 + "netbird-ipv4": "ENC[AES256_GCM,data:90IHvOCPZQHKBHUq2Vw=,iv:cD/anquFFXh6ZmCABnPPO/66QMOxAyyGXS9mdz6Qkxs=,tag:oKhPNPlUWFz9PrYFXT7Y6A==,type:str]" 13 13 }, 14 14 "sops": { 15 15 "age": [ 16 16 { 17 - "recipient": "age1p5y7px4qnlgxgxd6j5vg4wtpzs24fnh4808ws7gah3x89j66muasxz7ck2", 18 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSUh6YlhESkYyRW14NDVX\nMXN4ZlRaZG1tMGlvWkR4bmV6SDcxbkE2bFRZCitTalkvY0xQT1lpNEJSa0k3eDQ3\nTmZzU3RzSFZZTU9xbGtRbE1TSSsyZlkKLS0tIGwzUkRXZGk5VytvQ3Buby9jRDR3\nWU9FZEhEeGdQZ0VqWk9JMjlnWW42bHcKsMrFHGJzu91BEplTFrltKfHOWKPWcDRZ\nG2g0R0ADBuZJGj/dmsGE8b1GbPhgR7pl6QbkEEt9V9xpWUfniRl6BA==\n-----END AGE ENCRYPTED FILE-----\n" 17 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBaSUh6YlhESkYyRW14NDVX\nMXN4ZlRaZG1tMGlvWkR4bmV6SDcxbkE2bFRZCitTalkvY0xQT1lpNEJSa0k3eDQ3\nTmZzU3RzSFZZTU9xbGtRbE1TSSsyZlkKLS0tIGwzUkRXZGk5VytvQ3Buby9jRDR3\nWU9FZEhEeGdQZ0VqWk9JMjlnWW42bHcKsMrFHGJzu91BEplTFrltKfHOWKPWcDRZ\nG2g0R0ADBuZJGj/dmsGE8b1GbPhgR7pl6QbkEEt9V9xpWUfniRl6BA==\n-----END AGE ENCRYPTED FILE-----\n", 18 + "recipient": "age1p5y7px4qnlgxgxd6j5vg4wtpzs24fnh4808ws7gah3x89j66muasxz7ck2" 19 19 }, 20 20 { 21 - "recipient": "age1amaa55e7nusv904a9ucfvtnjlw4srtet42suehey6u3yc4t2xc5sdldepj", 22 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5M01Zb1drcXYyRUJqWkVM\nYzB1UmlmTnNER01WMVNCN1NrcnNIaTVJWUR3CkVSRXpLVFVWS3g4Ykh2RlBRa2FP\nNUVId25BOHRkTFhaczQ1NjlIN1N3cHMKLS0tIGdNYlZlWlBPN21sb0JGWmcwendx\nNWc2VVJzVCt5S2NFdTFucE0xRGJ4T3MKy1sfk8Xc7Lv2VYCTUHkAyNLKN6j76HbX\nxO6u7r2s7D9iaoKlWDZEuR5tWaM/Rcn0dWpt/4LuHck+6uEvlZi6/A==\n-----END AGE ENCRYPTED FILE-----\n" 21 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA5M01Zb1drcXYyRUJqWkVM\nYzB1UmlmTnNER01WMVNCN1NrcnNIaTVJWUR3CkVSRXpLVFVWS3g4Ykh2RlBRa2FP\nNUVId25BOHRkTFhaczQ1NjlIN1N3cHMKLS0tIGdNYlZlWlBPN21sb0JGWmcwendx\nNWc2VVJzVCt5S2NFdTFucE0xRGJ4T3MKy1sfk8Xc7Lv2VYCTUHkAyNLKN6j76HbX\nxO6u7r2s7D9iaoKlWDZEuR5tWaM/Rcn0dWpt/4LuHck+6uEvlZi6/A==\n-----END AGE ENCRYPTED FILE-----\n", 22 + "recipient": "age1amaa55e7nusv904a9ucfvtnjlw4srtet42suehey6u3yc4t2xc5sdldepj" 23 23 }, 24 24 { 25 - "recipient": "age1p55em5e3uk3fprj2mpum7ulrslcqgly63pjsyw2yv6hx99trdsnsvvv9ex", 26 - "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRTERzaDRwK2hoVmJ1OGEy\nakVReWF0N3hNZWx4RUYwSmhOYzNCOXNxUEhFCkFtdWw3NzU1QXFDYXZ3clI0SVg5\nNHQrRjl4RHJ4cHZaSlFqS21SWEhHN00KLS0tIDFPZWJDOUdYbUxxQ2FhMGJ6T0xW\nT1pnblJXMHBaUEpQdTRXT1A1QTB4T1kKutihXIcitNESH57xnBUADl4kzYyWDrSG\nylakRRVBr+y2DsndV8UUkUnCXr5OCN5bpPpb82w3UTOV+yZ8s3wMMQ==\n-----END AGE ENCRYPTED FILE-----\n" 25 + "enc": "-----BEGIN AGE ENCRYPTED FILE-----\nYWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBRTERzaDRwK2hoVmJ1OGEy\nakVReWF0N3hNZWx4RUYwSmhOYzNCOXNxUEhFCkFtdWw3NzU1QXFDYXZ3clI0SVg5\nNHQrRjl4RHJ4cHZaSlFqS21SWEhHN00KLS0tIDFPZWJDOUdYbUxxQ2FhMGJ6T0xW\nT1pnblJXMHBaUEpQdTRXT1A1QTB4T1kKutihXIcitNESH57xnBUADl4kzYyWDrSG\nylakRRVBr+y2DsndV8UUkUnCXr5OCN5bpPpb82w3UTOV+yZ8s3wMMQ==\n-----END AGE ENCRYPTED FILE-----\n", 26 + "recipient": "age1p55em5e3uk3fprj2mpum7ulrslcqgly63pjsyw2yv6hx99trdsnsvvv9ex" 27 27 } 28 28 ], 29 - "lastmodified": "2026-04-23T19:37:57Z", 30 - "mac": "ENC[AES256_GCM,data:6z07n2GIucsqA3x8zFFZsM6w5Mi8B1w3ArH2sn0jjBnZjjhp07MdU9oMc1cygcT0unnrcJZ84telI0e1p1hJGuq+MaGwzYERBw7Q2FKw6GKRjuX6BUfxaz0vhSxt2fE4f8QLU+u2iWOgC5t4cNE+nH2hmTDTtXZGL+zRrT6LLdk=,iv:v/5bZhMS9hyTkOypZTYwUTthJtJkVIC+5mYFgjWhqrU=,tag:qcrBBJe0XQxeFoEMaWw4Jg==,type:str]", 29 + "lastmodified": "2026-05-28T04:07:15Z", 30 + "mac": "ENC[AES256_GCM,data:aWJrknA4Ju1mmOck6RpgPO8CfI5Y39lMOrvUX7EU14P1xQ4jbSvl/Z5R/AaU4HZ8L6IXw9YeO8O4bM1WM291nmsVkM5AwBVHLZKtNlUN+XgL9WTATsi4jTysku7pHFE+VYTzasEb5I+pb8vqEgmsA/NplHsrkQAAURrBYSVPWpE=,iv:4aXURkfTsXD8Log+m20SZ2DDfbfz+03PI94+lySpGpw=,tag:/AGYRy/hSaqXjRhEwj8zXA==,type:str]", 31 31 "unencrypted_suffix": "_unencrypted", 32 - "version": "3.12.2" 32 + "version": "3.13.1" 33 33 } 34 34 }
+2 -2
modules/fail2ban.nix
··· 12 12 rndtime = "1h"; 13 13 }; 14 14 ignoreIP = [ 15 - (lib.mkIf (config.networking.hostName != "lily") config.cafe.info.network.lily.netbird-ip) 16 - (lib.mkIf (config.networking.hostName != "lutea") config.cafe.info.network.lutea.netbird-ip) 15 + (lib.mkIf (config.networking.hostName != "lily") config.cafe.info.network.lily.netbird-ipv4) 16 + (lib.mkIf (config.networking.hostName != "lutea") config.cafe.info.network.lutea.netbird-ipv4) 17 17 ]; 18 18 maxretry = 1; 19 19 };
+2 -2
modules/network-info.nix
··· 28 28 default = null; 29 29 description = "IPv6 address of the host"; 30 30 }; 31 - netbird-ip = lib.mkOption { 31 + netbird-ipv4 = lib.mkOption { 32 32 type = nullOr str; 33 33 default = null; 34 - description = "NetBird IP address of the host"; 34 + description = "NetBird IPv4 address of the host"; 35 35 }; 36 36 }; 37 37
+1 -1
modules/qbittorrent.nix
··· 115 115 AuthSubnetWhitelistEnabled = true; 116 116 AuthSubnetWhitelist = lib.strings.join ", " [ 117 117 "192.168.2.1/32" 118 - (lib.optionalString (config.networking.hostName == "lily") "${config.cafe.info.network.lutea.netbird-ip}/32") 118 + (lib.optionalString (config.networking.hostName == "lily") "${config.cafe.info.network.lutea.netbird-ipv4}/32") 119 119 ]; 120 120 }; 121 121 };
+4 -4
modules/remote-build-machines.nix
··· 35 35 programs.ssh = { 36 36 knownHosts = { 37 37 nixremote-lily = { 38 - hostNames = [ config.cafe.info.network.lily.netbird-ip ]; 38 + hostNames = [ config.cafe.info.network.lily.netbird-ipv4 ]; 39 39 publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINaReNM+eSIzbZvqahaAlanf0z89rJQIYWx/rlaS4f1Y"; 40 40 }; 41 41 nixremote-lutea = { 42 - hostNames = [ config.cafe.info.network.lutea.netbird-ip ]; 42 + hostNames = [ config.cafe.info.network.lutea.netbird-ipv4 ]; 43 43 publicKey = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICNMTxa2zRmHIXt3ARlCplboWRdCsAmDlN8gDLik4vNs"; 44 44 }; 45 45 }; ··· 58 58 ''; 59 59 in 60 60 '' 61 - ${mkSshConfig "lily" config.cafe.info.network.lily.netbird-ip} 62 - ${mkSshConfig "lutea" config.cafe.info.network.lutea.netbird-ip} 61 + ${mkSshConfig "lily" config.cafe.info.network.lily.netbird-ipv4} 62 + ${mkSshConfig "lutea" config.cafe.info.network.lutea.netbird-ipv4} 63 63 ''; 64 64 }; 65 65 }
+1 -1
modules/remote-builder.nix
··· 25 25 nix.settings.trusted-users = [ "nixremote" ]; 26 26 27 27 services.openssh.settings.AllowUsers = [ 28 - (lib.mkIf (config.networking.hostName != "lily") "nixremote@${config.cafe.info.network.lily.netbird-ip}") 28 + (lib.mkIf (config.networking.hostName != "lily") "nixremote@${config.cafe.info.network.lily.netbird-ipv4}") 29 29 ]; 30 30 }
+1 -1
modules/services/openssh.nix
··· 7 7 ]; 8 8 9 9 services.openssh.settings.AllowUsers = [ 10 - "mou@${config.cafe.info.network.lutea.netbird-ip}" 10 + "mou@${config.cafe.info.network.lutea.netbird-ipv4}" 11 11 (lib.mkIf (config.networking.hostName == "lily") "mou@${config.cafe.info.network.lutea.ipv6}") 12 12 (lib.mkIf (config.networking.hostName == "lily") "mou@${config.cafe.info.network.lutea.ipv4-local}") 13 13 ];