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
+47 -33
View File
@@ -1,8 +1,13 @@
{ config, lib, inputs, stable_pkgs, unstable_pkgs, ... }:
{
imports =
[ # Include the results of the hardware scan.
config,
lib,
inputs,
stable_pkgs,
unstable_pkgs,
...
}: {
imports = [
# Include the results of the hardware scan.
./hardware-configuration.nix
../../nixos
../../../users/blake
@@ -41,34 +46,49 @@
};
homelab = {
enable = true;
tailscale.enable = true;
dnsmasq.enable = true;
backups.enable = true;
motd.enable = true;
postfix.enable = true;
# services
gitea.enable = true;
glance.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;
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;
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;
ollama.enable = true;
wyoming.enable = true;
};
gameservers = {
minecraft_recpro.enable = true;
minecraft_modded.enable = true;
@@ -82,7 +102,7 @@
# setup hostname and networking stack
services.resolved = {
enable = true;
fallbackDns = [ "1.1.1.1" "9.9.9.9" ];
fallbackDns = ["1.1.1.1" "9.9.9.9"];
dnsovertls = "opportunistic";
};
networking = {
@@ -106,12 +126,8 @@
};
};
hardware.bluetooth.enable = true;
# Open ports in the firewall.
networking.firewall.allowedTCPPorts = [
80 # set - http
@@ -149,11 +165,9 @@
25567 # | | |
];
networking.firewall.allowedUDPPorts = [ 51820 ];
networking.firewall.allowedUDPPorts = [51820];
# Or disable the firewall altogether.
networking.firewall.enable = true;
system.stateVersion = "25.05"; # stays here : )
}
+10 -9
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 = {
enable = lib.mkEnableOption "enable the mediastack";
media_user = lib.mkOption {
@@ -22,7 +25,6 @@ in
};
};
# the order determines the order in glance :3
imports = [
./bazarr
@@ -47,15 +49,14 @@ in
group = cfg.media_group;
};
};
homelab.jellyfin.enable = lib.mkDefault true;
homelab.yacreader.enable = lib.mkDefault true;
homelab.qbittorrent.enable = lib.mkDefault true;
homelab.bazarr.enable = lib.mkDefault true;
homelab.prowlarr.enable = lib.mkDefault true;
homelab.radarr.enable = lib.mkDefault true;
homelab.qbittorrent.enable = lib.mkDefault true;
homelab.sonarr.enable = lib.mkDefault true;
homelab.yacreader.enable = lib.mkDefault true;
homelab.audiobookshelf.enable = lib.mkDefault true;
homelab.jellyfin.enable = lib.mkDefault true;
homelab.flaresolverr.enable = lib.mkDefault true;
};
}
+1 -4
View File
@@ -11,9 +11,6 @@
./gitea
./immich
./searxng
./home/homeassistant
./home/zigbee2mqtt
./home/mosquitto
./home/wyoming
./home
];
}
+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,
...
}: let
service = "searxng";
service = "searx";
cfg = config.homelab.${service};
sec = config.sops.secrets;
homelab = config.homelab;
@@ -68,6 +68,13 @@ in {
# declare the gitea service
services.${service} = {
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