restructure homelab nixfiles

This commit is contained in:
2026-05-03 12:36:43 -05:00
parent e34a41ee7d
commit 24eccf83e2
5 changed files with 147 additions and 101 deletions
+95 -81
View File
@@ -1,20 +1,25 @@
{ config, lib, inputs, stable_pkgs, unstable_pkgs, ... }:
{ {
imports = config,
[ # Include the results of the hardware scan. lib,
./hardware-configuration.nix inputs,
../../nixos stable_pkgs,
../../../users/blake unstable_pkgs,
../../../modules/system ...
../../../modules/homelab }: {
../../../modules/fileshares/holocron imports = [
../../../modules/gameservers/minecraft_recpro # Include the results of the hardware scan.
../../../modules/gameservers/minecraft_modded ./hardware-configuration.nix
]; ../../nixos
../../../users/blake
../../../modules/system
../../../modules/homelab
../../../modules/fileshares/holocron
../../../modules/gameservers/minecraft_recpro
../../../modules/gameservers/minecraft_modded
];
home-manager.users.blake.imports = [ home-manager.users.blake.imports = [
../../../users/blake/hosts/snowbelle.nix ../../../users/blake/hosts/snowbelle.nix
]; ];
system = { system = {
@@ -41,63 +46,78 @@
}; };
homelab = { homelab = {
enable = true; enable = true;
tailscale.enable = true;
dnsmasq.enable = true; # services
backups.enable = true;
motd.enable = true;
postfix.enable = true;
gitea.enable = true; gitea.enable = true;
glance.enable = true; glance.enable = true;
immich.enable = true; immich.enable = true;
hass.enable = true;
jellyfin.enable = true;
audiobookshelf.enable = true;
yacreader.enable = true;
qbittorrent.enable = true;
sonarr.enable = true;
radarr.enable = true;
bazarr.enable = true;
prowlarr.enable = true;
flaresolverr.enable = true;
zigbee2mqtt.enable = true;
mosquitto.enable = true;
wyoming.enable = true;
caddy.enable = true;
uptime-kuma.enable = true;
vaultwarden.enable = true; vaultwarden.enable = true;
searx.enable = true;
# home assistant
home.enable = true;
# hass.enable = true;
# mosquitto.enable = true;
# zigbee2mqtt.enable = true;
# network
tailscale.enable = true;
caddy.enable = true;
dnsmasq.enable = true;
# mediastack
mediastack.enable = true; mediastack.enable = true;
ollama.enable = true; # jellyfin.enable = true;
# audiobookshelf.enable = true;
# yacreader.enable = true;
# qbittorrent.enable = true;
# sonarr.enable = true;
# radarr.enable = true;
# bazarr.enable = true;
# prowlarr.enable = true;
# flaresolverr.enable = true;
# system
backups.enable = true;
motd.enable = true;
postfix.enable = true;
uptime-kuma.enable = true;
# ai
open-webui.enable = true; open-webui.enable = true;
ollama.enable = true;
wyoming.enable = true;
}; };
gameservers = { gameservers = {
minecraft_recpro.enable = true; minecraft_recpro.enable = true;
minecraft_modded.enable = true; minecraft_modded.enable = true;
}; };
# boot (systemd is going on me) # boot (systemd is going on me)
boot.loader.systemd-boot.enable = true; # systemd your pretty cool ya know boot.loader.systemd-boot.enable = true; # systemd your pretty cool ya know
boot.loader.efi.canTouchEfiVariables = true; boot.loader.efi.canTouchEfiVariables = true;
boot.initrd.systemd.enable = true; # better logging boot.initrd.systemd.enable = true; # better logging
# setup hostname and networking stack # setup hostname and networking stack
services.resolved = { services.resolved = {
enable = true; enable = true;
fallbackDns = [ "1.1.1.1" "9.9.9.9" ]; fallbackDns = ["1.1.1.1" "9.9.9.9"];
dnsovertls = "opportunistic"; dnsovertls = "opportunistic";
}; };
networking = { networking = {
hostName = "snowbelle"; # hostname hostName = "snowbelle"; # hostname
hostId = "3e6e7055"; # zfs wants this hostId = "3e6e7055"; # zfs wants this
networkmanager = { networkmanager = {
enable = true; # the goat enable = true; # the goat
dns = "systemd-resolved"; # the backup dancer! dns = "systemd-resolved"; # the backup dancer!
ensureProfiles.profiles = { ensureProfiles.profiles = {
vpn = { vpn = {
ethernet.mac-address = "7a:e4:07:8d:22:76"; ethernet.mac-address = "7a:e4:07:8d:22:76";
connection.type = "vlan"; connection.type = "vlan";
connection.id = "vpn"; connection.id = "vpn";
connection.interface-name = "enp89s0.69"; # or just "vpn-vlan" connection.interface-name = "enp89s0.69"; # or just "vpn-vlan"
vlan.interface-name = "enp89s0.69"; # or just "vpn-vlan" vlan.interface-name = "enp89s0.69"; # or just "vpn-vlan"
vlan.parent = "enp89s0"; vlan.parent = "enp89s0";
vlan.id = 69; vlan.id = 69;
#ipv4.dns = "9.9.9.9"; #ipv4.dns = "9.9.9.9";
@@ -106,54 +126,48 @@
}; };
}; };
hardware.bluetooth.enable = true; hardware.bluetooth.enable = true;
# Open ports in the firewall. # Open ports in the firewall.
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
80 # set - http 80 # set - http
111 # set - portmapper for nfs 111 # set - portmapper for nfs
139 # set - smb 139 # set - smb
443 # set - https 443 # set - https
445 # set - cifs 445 # set - cifs
1198 1198
1883 # set - mqtt 1883 # set - mqtt
2049 # set - nfs 2049 # set - nfs
2222 # srv - syncthing 2222 # srv - syncthing
7100 # srv - jellyfin 7100 # srv - jellyfin
7101 # srv - audiobookshelf 7101 # srv - audiobookshelf
7102 # srv - yacreader 7102 # srv - yacreader
7103 # srv - qbittorrent 7103 # srv - qbittorrent
7104 # srv - prowlarr 7104 # srv - prowlarr
7105 # srv - bazarr 7105 # srv - bazarr
7106 # srv - sonarr 7106 # srv - sonarr
7107 # srv - radarr 7107 # srv - radarr
7120 # srv - flaresolverr 7120 # srv - flaresolverr
5701 # srv - archivebox 5701 # srv - archivebox
7502 # srv - kiwix 7502 # srv - kiwix
7567 # srv - gitea ssh 7567 # srv - gitea ssh
7700 # srv - glance 7700 # srv - glance
7701 # srv - vaultwarden 7701 # srv - vaultwarden
7702 # srv - immich 7702 # srv - immich
7703 # srv - gitea 7703 # srv - gitea
7704 # srv - hass 7704 # srv - hass
7705 # srv - zigbee2mqtt 7705 # srv - zigbee2mqtt
7901 # srv - uptime kuma 7901 # srv - uptime kuma
7902 # srv - copyparty 7902 # srv - copyparty
25777 # srv - minecraft 25777 # srv - minecraft
25565 # ^ ^ ^ 25565 # ^ ^ ^
25566 # | | | 25566 # | | |
25567 # | | | 25567 # | | |
]; ];
networking.firewall.allowedUDPPorts = [ 51820 ]; networking.firewall.allowedUDPPorts = [51820];
# Or disable the firewall altogether. # Or disable the firewall altogether.
networking.firewall.enable = true; networking.firewall.enable = true;
system.stateVersion = "25.05"; # stays here : ) system.stateVersion = "25.05"; # stays here : )
} }
+16 -15
View File
@@ -1,8 +1,11 @@
{ pkgs, config, lib, ... }:
let
cfg = config.homelab.mediastack;
in
{ {
pkgs,
config,
lib,
...
}: let
cfg = config.homelab.mediastack;
in {
options.homelab.mediastack = { options.homelab.mediastack = {
enable = lib.mkEnableOption "enable the mediastack"; enable = lib.mkEnableOption "enable the mediastack";
media_user = lib.mkOption { media_user = lib.mkOption {
@@ -22,7 +25,6 @@ in
}; };
}; };
# the order determines the order in glance :3 # the order determines the order in glance :3
imports = [ imports = [
./bazarr ./bazarr
@@ -47,15 +49,14 @@ in
group = cfg.media_group; group = cfg.media_group;
}; };
}; };
homelab.bazarr.enable = lib.mkDefault true; homelab.jellyfin.enable = lib.mkDefault true;
homelab.prowlarr.enable = lib.mkDefault true; homelab.yacreader.enable = lib.mkDefault true;
homelab.radarr.enable = lib.mkDefault true; homelab.qbittorrent.enable = lib.mkDefault true;
homelab.qbittorrent.enable = lib.mkDefault true; homelab.bazarr.enable = lib.mkDefault true;
homelab.sonarr.enable = lib.mkDefault true; homelab.prowlarr.enable = lib.mkDefault true;
homelab.yacreader.enable = lib.mkDefault true; homelab.radarr.enable = lib.mkDefault true;
homelab.audiobookshelf.enable = lib.mkDefault true; homelab.sonarr.enable = lib.mkDefault true;
homelab.jellyfin.enable = lib.mkDefault true; homelab.audiobookshelf.enable = lib.mkDefault true;
homelab.flaresolverr.enable = lib.mkDefault true; homelab.flaresolverr.enable = lib.mkDefault true;
}; };
} }
+1 -4
View File
@@ -11,9 +11,6 @@
./gitea ./gitea
./immich ./immich
./searxng ./searxng
./home/homeassistant ./home
./home/zigbee2mqtt
./home/mosquitto
./home/wyoming
]; ];
} }
+27
View File
@@ -0,0 +1,27 @@
{
pkgs,
config,
lib,
...
}: let
cfg = config.homelab.home;
in {
options.homelab.home = {
enable = lib.mkEnableOption "enable the smarthome stack";
};
# the order determines the order in glance :3
imports = [
./homeassistant
./zigbee2mqtt
./mosquitto
./wyoming
];
config = lib.mkIf cfg.enable {
homelab.hass.enable = lib.mkDefault true;
homelab.mosquitto.enable = lib.mkDefault true;
homelab.zigbee2mqtt.enable = lib.mkDefault true;
homelab.wyoming.enable = lib.mkDefault true;
};
}
+8 -1
View File
@@ -5,7 +5,7 @@
lib, lib,
... ...
}: let }: let
service = "searxng"; service = "searx";
cfg = config.homelab.${service}; cfg = config.homelab.${service};
sec = config.sops.secrets; sec = config.sops.secrets;
homelab = config.homelab; homelab = config.homelab;
@@ -68,6 +68,13 @@ in {
# declare the gitea service # declare the gitea service
services.${service} = { services.${service} = {
enable = true; enable = true;
settings = {
server.port = cfg.port;
server.bind_address = "0.0.0.0";
#server.secret_key = "$SEARX_SECRET_KEY";
engines = [
];
};
}; };
# override umask to make permissions work out # override umask to make permissions work out