{ 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 ./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 ]; config = lib.mkIf cfg.enable { users = { groups.${cfg.media_group} = { gid = 700; }; users.${cfg.media_user} = { uid = 700; isSystemUser = true; group = cfg.media_group; }; }; }; }