Files
nix/modules/homelab/default.nix
2025-11-04 23:43:29 -06:00

83 lines
1.7 KiB
Nix

{ pkgs, config, lib, ... }:
let
cfg = config.homelab;
in
{
options.homelab = {
enable = lib.mkEnableOption "enable homelab services and configuration";
media_user = lib.mkOption {
default = "media";
type = lib.types.str;
description = "user for media file permissions";
};
media_group = lib.mkOption {
default = "media";
type = lib.types.str;
description = "group for media file permissions";
};
tz = lib.mkOption {
default = "America/Chicago";
type = lib.types.str;
description = "set timezone";
};
base_domain = lib.mkOption {
default = "snowbelle.lan";
type = lib.types.str;
description = "base domain used for reverse proxy";
};
public_domain = lib.mkOption {
default = "blakedheld.xyz";
type = lib.types.str;
description = "base domain used for reverse proxy";
};
host_ip = lib.mkOption {
default = "10.10.0.10";
type = lib.types.str;
description = "base domain used for reverse proxy";
};
};
# the order determines the order in glance :3
imports = [
./motd
./dnsmasq
./backups
./glance
./postfix
./caddy
./home/zigbee2mqtt
./vaultwarden
./gitea
./home/homeassistant
./immich
./arr/bazarr
./arr/prowlarr
./arr/radarr
./qbittorrent
./arr/sonarr
./yacreader
./audiobookshelf
./jellyfin
./arr/flaresolverr
./home/mosquitto
./uptime-kuma
./tailscale
];
config = lib.mkIf cfg.enable {
users = {
groups.${cfg.media_group} = {
gid = 700;
};
users.${cfg.media_user} = {
uid = 700;
isSystemUser = true;
group = cfg.media_group;
};
};
};
}