restructure homelab nixfiles
This commit is contained in:
@@ -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 : )
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,9 +11,6 @@
|
|||||||
./gitea
|
./gitea
|
||||||
./immich
|
./immich
|
||||||
./searxng
|
./searxng
|
||||||
./home/homeassistant
|
./home
|
||||||
./home/zigbee2mqtt
|
|
||||||
./home/mosquitto
|
|
||||||
./home/wyoming
|
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user