diff --git a/config/stylix.nix b/config/stylix.nix index 0027134..3fd1c15 100644 --- a/config/stylix.nix +++ b/config/stylix.nix @@ -10,7 +10,7 @@ let cfg = config.my.stylix; in { - options.my.stylix.enable = lib.mkEnableOption "enable"; + options.my.stylix.enable = lib.mkEnableOption "system-wide theming with Stylix"; config = { stylix = { inherit (scheme) image polarity; diff --git a/modules/apps/art.nix b/modules/apps/art.nix index 22c2714..c92ef8f 100644 --- a/modules/apps/art.nix +++ b/modules/apps/art.nix @@ -37,8 +37,8 @@ let in { options.my = { - apps.art.enable = lib.mkEnableOption "enable"; - dev.gameDev.enable = lib.mkEnableOption "enable"; + apps.art.enable = lib.mkEnableOption "digital art and creative applications"; + dev.gameDev.enable = lib.mkEnableOption "game development tools and engines"; }; config.users.users.jawz.packages = artPackages ++ gameDevPackages; } diff --git a/modules/apps/dictionaries.nix b/modules/apps/dictionaries.nix index 3742df4..be742f4 100644 --- a/modules/apps/dictionaries.nix +++ b/modules/apps/dictionaries.nix @@ -5,7 +5,7 @@ ... }: { - options.my.apps.dictionaries.enable = lib.mkEnableOption "enable"; + options.my.apps.dictionaries.enable = lib.mkEnableOption "dictionaries and language tools"; config = lib.mkIf config.my.apps.dictionaries.enable { users.users.jawz.packages = builtins.attrValues { inherit (pkgs) diff --git a/modules/apps/fonts.nix b/modules/apps/fonts.nix index 07982a3..7fc0c18 100644 --- a/modules/apps/fonts.nix +++ b/modules/apps/fonts.nix @@ -5,7 +5,7 @@ ... }: { - options.my.apps.fonts.enable = lib.mkEnableOption "enable"; + options.my.apps.fonts.enable = lib.mkEnableOption "additional fonts and typography"; config = lib.mkIf config.my.apps.fonts.enable { nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (lib.getName pkg) [ "corefonts" ]; fonts.packages = builtins.attrValues { diff --git a/modules/apps/gaming.nix b/modules/apps/gaming.nix index 5f3da61..02177b6 100644 --- a/modules/apps/gaming.nix +++ b/modules/apps/gaming.nix @@ -8,8 +8,8 @@ { imports = [ inputs.nix-gaming.nixosModules.platformOptimizations ]; options.my.apps = { - gaming.enable = lib.mkEnableOption "enable"; - switch.enable = lib.mkEnableOption "enable"; + gaming.enable = lib.mkEnableOption "gaming applications and emulators"; + switch.enable = lib.mkEnableOption "Nintendo Switch homebrew tools"; }; config = lib.mkIf config.my.apps.gaming.enable { # sops.secrets.switch-presence = lib.mkIf config.my.apps.gaming.switch.enable { diff --git a/modules/apps/internet.nix b/modules/apps/internet.nix index 1a18d85..850e104 100644 --- a/modules/apps/internet.nix +++ b/modules/apps/internet.nix @@ -30,7 +30,7 @@ let ); in { - options.my.apps.internet.enable = lib.mkEnableOption "enable"; + options.my.apps.internet.enable = lib.mkEnableOption "internet browsers and communication apps"; config = lib.mkIf config.my.apps.internet.enable { home-manager.users.jawz.programs.librewolf = import ./librewolf.nix; programs.geary.enable = true; diff --git a/modules/apps/misc.nix b/modules/apps/misc.nix index 175801c..ae63fc9 100644 --- a/modules/apps/misc.nix +++ b/modules/apps/misc.nix @@ -5,7 +5,7 @@ ... }: { - options.my.apps.misc.enable = lib.mkEnableOption "enable"; + options.my.apps.misc.enable = lib.mkEnableOption "miscellaneous desktop applications"; config = lib.mkIf config.my.apps.misc.enable { users.users.jawz.packages = builtins.attrValues { inherit (pkgs) diff --git a/modules/apps/multimedia.nix b/modules/apps/multimedia.nix index 3291037..b347d31 100644 --- a/modules/apps/multimedia.nix +++ b/modules/apps/multimedia.nix @@ -5,7 +5,7 @@ ... }: { - options.my.apps.multimedia.enable = lib.mkEnableOption "enable"; + options.my.apps.multimedia.enable = lib.mkEnableOption "multimedia applications and media players"; config = lib.mkIf config.my.apps.multimedia.enable { users.users.jawz.packages = builtins.attrValues { inherit (pkgs) diff --git a/modules/apps/music.nix b/modules/apps/music.nix index 378d4f9..da20162 100644 --- a/modules/apps/music.nix +++ b/modules/apps/music.nix @@ -5,7 +5,7 @@ ... }: { - options.my.apps.piano.enable = lib.mkEnableOption "enable"; + options.my.apps.piano.enable = lib.mkEnableOption "piano learning and music theory apps"; config = lib.mkIf config.my.apps.piano.enable { users.users.jawz.packages = builtins.attrValues { inherit (pkgs) diff --git a/modules/apps/office.nix b/modules/apps/office.nix index 2e8f947..d258284 100644 --- a/modules/apps/office.nix +++ b/modules/apps/office.nix @@ -5,7 +5,7 @@ ... }: { - options.my.apps.office.enable = lib.mkEnableOption "enable"; + options.my.apps.office.enable = lib.mkEnableOption "office applications and productivity tools"; config = lib.mkIf config.my.apps.office.enable { environment.variables.CALIBRE_USE_SYSTEM_THEME = "1"; users.users.jawz.packages = builtins.attrValues { diff --git a/modules/dev/emacs.nix b/modules/dev/emacs.nix index 2a61511..b91a1f5 100644 --- a/modules/dev/emacs.nix +++ b/modules/dev/emacs.nix @@ -5,7 +5,7 @@ ... }: { - options.my.emacs.enable = lib.mkEnableOption "enable"; + options.my.emacs.enable = lib.mkEnableOption "Doom Emacs configuration"; config = lib.mkIf config.my.emacs.enable { home-manager.users.jawz = { xdg.dataFile = { diff --git a/modules/factories/mkserver.nix b/modules/factories/mkserver.nix index f223dc2..38f348d 100644 --- a/modules/factories/mkserver.nix +++ b/modules/factories/mkserver.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let mkOptions = name: subdomain: port: { - enable = lib.mkEnableOption "enable"; + enable = lib.mkEnableOption "this server service"; enableCron = lib.mkEnableOption "enable cronjob"; enableProxy = lib.mkEnableOption "enable reverse proxy"; port = lib.mkOption { diff --git a/modules/modules.nix b/modules/modules.nix index ca873d3..099ca45 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -116,10 +116,69 @@ in default = "America/Mexico_City"; description = "Timezone"; }; - enableContainers = lib.mkEnableOption "enable"; - enableProxy = lib.mkEnableOption "enable"; + enableContainers = lib.mkEnableOption "container services (Docker/Podman)"; + enableProxy = lib.mkEnableOption "nginx reverse proxy for services"; }; config = { + assertions = [ + { + assertion = config.my.servers.nextcloud.enable -> config.my.servers.postgres.enable; + message = "Nextcloud requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.vaultwarden.enable -> config.my.servers.postgres.enable; + message = "Vaultwarden requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.firefly-iii.enable -> config.my.servers.postgres.enable; + message = "Firefly III requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.mealie.enable -> config.my.servers.postgres.enable; + message = "Mealie requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.shiori.enable -> config.my.servers.postgres.enable; + message = "Shiori requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.ryot.enable -> config.my.servers.postgres.enable; + message = "Ryot requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.synapse.enable -> config.my.servers.postgres.enable; + message = "Matrix Synapse requires PostgreSQL to be enabled"; + } + { + assertion = config.my.servers.gitea.enable -> config.my.servers.postgres.enable; + message = "Gitea requires PostgreSQL to be enabled"; + } + { + assertion = + config.my.enableProxy + -> (builtins.any (s: s.enableProxy or false) (builtins.attrValues config.my.servers)); + message = "enableProxy is true but no services have enableProxy enabled"; + } + { + assertion = + config.my.enableContainers + || !(builtins.any (opt: opt) [ + config.my.servers.ryot.enable + config.my.servers.lidarr.enable + config.my.servers.prowlarr.enable + config.my.servers.maloja.enable + config.my.servers.multi-scrobbler.enable + config.my.servers.flame.enable + config.my.servers.flameSecret.enable + config.my.servers.metube.enable + config.my.servers.go-vod.enable + config.my.servers.tranga.enable + config.my.servers.drpp.enable + config.my.servers.plex-discord-bot.enable + ]); + message = "Container services are enabled but enableContainers is false"; + } + ]; virtualisation = { containers.enable = true; oci-containers.backend = "podman"; diff --git a/modules/scripts/download.nix b/modules/scripts/download.nix index b435047..62f79ac 100644 --- a/modules/scripts/download.nix +++ b/modules/scripts/download.nix @@ -8,8 +8,8 @@ { imports = [ ../factories/mkscript.nix ]; options.my.units = { - download.enable = lib.mkEnableOption "enable"; - downloadManga.enable = lib.mkEnableOption "enable"; + download.enable = lib.mkEnableOption "media download automation scripts"; + downloadManga.enable = lib.mkEnableOption "manga download automation"; }; config = let diff --git a/modules/scripts/stream-dl.nix b/modules/scripts/stream-dl.nix index 677c7e1..c9ef465 100644 --- a/modules/scripts/stream-dl.nix +++ b/modules/scripts/stream-dl.nix @@ -7,7 +7,7 @@ }: { imports = [ ../factories/mkscript.nix ]; - options.my.units.stream-dl.enable = lib.mkEnableOption "enable"; + options.my.units.stream-dl.enable = lib.mkEnableOption "streaming media download service"; config = let inherit (inputs.jawz-scripts.packages.x86_64-linux) stream-dl; diff --git a/modules/servers/adguardhome.nix b/modules/servers/adguardhome.nix index f5fdc0a..16506c2 100644 --- a/modules/servers/adguardhome.nix +++ b/modules/servers/adguardhome.nix @@ -3,7 +3,7 @@ let cfg = config.my.servers.adguardhome; in { - options.my.servers.adguardhome.enable = lib.mkEnableOption "enable"; + options.my.servers.adguardhome.enable = lib.mkEnableOption "AdGuard Home DNS ad blocker"; config = lib.mkIf (cfg.enable && config.my.secureHost) { services.adguardhome = { inherit (cfg) enable; diff --git a/modules/servers/firefly-iii.nix b/modules/servers/firefly-iii.nix index d4280de..960d8e2 100644 --- a/modules/servers/firefly-iii.nix +++ b/modules/servers/firefly-iii.nix @@ -4,7 +4,7 @@ let in { options.my.servers.firefly-iii = { - enable = lib.mkEnableOption "enable"; + enable = lib.mkEnableOption "Firefly III personal finance manager"; enableProxy = lib.mkEnableOption "enableProxy"; }; config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable && config.my.secureHost) { diff --git a/modules/servers/nextcloud.nix b/modules/servers/nextcloud.nix index 2eb5a53..9a59d27 100644 --- a/modules/servers/nextcloud.nix +++ b/modules/servers/nextcloud.nix @@ -37,7 +37,7 @@ in options.my.servers = { nextcloud = setup.mkOptions "nextcloud" "cloud" 80; collabora = setup.mkOptions "collabora" "collabora" 9980; - go-vod.enable = lib.mkEnableOption "enable"; + go-vod.enable = lib.mkEnableOption "Go-VOD video transcoding service"; }; config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable && config.my.secureHost) { sops.secrets.nextcloud-adminpass = { diff --git a/modules/servers/paperless.nix b/modules/servers/paperless.nix index 9439715..5763677 100644 --- a/modules/servers/paperless.nix +++ b/modules/servers/paperless.nix @@ -3,7 +3,7 @@ let cfg = config.my.servers.paperless; in { - options.my.servers.paperless.enable = lib.mkEnableOption "enable"; + options.my.servers.paperless.enable = lib.mkEnableOption "Paperless-ngx document management system"; config = lib.mkIf (cfg.enable && config.my.servers.postgres.enable) { networking.firewall.allowedTCPPorts = [ config.services.paperless.port ]; services.paperless = { diff --git a/modules/servers/postgres.nix b/modules/servers/postgres.nix index 67eb666..32dba40 100644 --- a/modules/servers/postgres.nix +++ b/modules/servers/postgres.nix @@ -42,7 +42,7 @@ let ]; in { - options.my.servers.postgres.enable = lib.mkEnableOption "enable"; + options.my.servers.postgres.enable = lib.mkEnableOption "PostgreSQL database server"; config = lib.mkIf cfg.enable { environment.systemPackages = [ upgrade-pg-cluster ]; services.postgresql = { diff --git a/modules/servers/qbittorrent.nix b/modules/servers/qbittorrent.nix index f636ca4..4b8f0e7 100644 --- a/modules/servers/qbittorrent.nix +++ b/modules/servers/qbittorrent.nix @@ -38,9 +38,9 @@ let in { options.my.servers = { - unpackerr.enable = lib.mkEnableOption "enable"; + unpackerr.enable = lib.mkEnableOption "automatic archive extraction service"; qbittorrent = { - enable = lib.mkEnableOption "enable"; + enable = lib.mkEnableOption "qBittorrent torrent client"; port = lib.mkOption { type = lib.types.int; default = 9091; diff --git a/modules/servers/sabnzbd.nix b/modules/servers/sabnzbd.nix index 2e3743c..c33fd0e 100644 --- a/modules/servers/sabnzbd.nix +++ b/modules/servers/sabnzbd.nix @@ -4,7 +4,7 @@ let in { options.my.servers.sabnzbd = { - enable = lib.mkEnableOption "enable"; + enable = lib.mkEnableOption "SABnzbd Usenet downloader"; port = lib.mkOption { type = lib.types.int; default = 3399; diff --git a/modules/services/network.nix b/modules/services/network.nix index d7892e4..46ce3a0 100644 --- a/modules/services/network.nix +++ b/modules/services/network.nix @@ -1,6 +1,6 @@ { config, lib, ... }: { - options.my.services.network.enable = lib.mkEnableOption "enable"; + options.my.services.network.enable = lib.mkEnableOption "network configuration and services"; config = lib.mkIf config.my.services.network.enable { networking = { enableIPv6 = true; diff --git a/modules/services/nvidia.nix b/modules/services/nvidia.nix index 859da81..0c1a112 100644 --- a/modules/services/nvidia.nix +++ b/modules/services/nvidia.nix @@ -5,7 +5,7 @@ ... }: { - options.my.services.nvidia.enable = lib.mkEnableOption "enable"; + options.my.services.nvidia.enable = lib.mkEnableOption "NVIDIA GPU drivers and CUDA"; config = lib.mkIf config.my.services.nvidia.enable { environment.variables.CUDA_CACHE_PATH = "\${XDG_CACHE_HOME}/nv"; boot.kernelParams = lib.mkIf (config.networking.hostName == "workstation") [ "nvidia-drm.fbdev=1" ]; diff --git a/modules/services/printing.nix b/modules/services/printing.nix index a13deb5..abecb8f 100644 --- a/modules/services/printing.nix +++ b/modules/services/printing.nix @@ -11,7 +11,7 @@ let ]; in { - options.my.services.printing.enable = lib.mkEnableOption "enable"; + options.my.services.printing.enable = lib.mkEnableOption "printing services and drivers"; config = lib.mkIf config.my.services.printing.enable { users.users.jawz.packages = [ pkgs.simple-scan ]; services.printing = { diff --git a/modules/services/sound.nix b/modules/services/sound.nix index b179059..0e2608b 100644 --- a/modules/services/sound.nix +++ b/modules/services/sound.nix @@ -6,7 +6,7 @@ }: { imports = [ inputs.nix-gaming.nixosModules.pipewireLowLatency ]; - options.my.services.sound.enable = lib.mkEnableOption "enable"; + options.my.services.sound.enable = lib.mkEnableOption "audio system and PipeWire"; config = lib.mkIf config.my.services.sound.enable { services.pulseaudio.enable = false; security.rtkit.enable = true; # make pipewire realtime-capable diff --git a/modules/services/wireguard.nix b/modules/services/wireguard.nix index bb33c0b..505f829 100644 --- a/modules/services/wireguard.nix +++ b/modules/services/wireguard.nix @@ -9,7 +9,7 @@ let interface = config.my.interfaces.${config.networking.hostName}; in { - options.my.services.wireguard.enable = lib.mkEnableOption "enable"; + options.my.services.wireguard.enable = lib.mkEnableOption "WireGuard VPN configuration"; config = lib.mkIf (config.my.services.wireguard.enable && config.my.secureHost) { sops.secrets."wireguard/private".sopsFile = ../../secrets/wireguard.yaml; networking = { diff --git a/modules/shell/exercism.nix b/modules/shell/exercism.nix index d447a66..158f80b 100644 --- a/modules/shell/exercism.nix +++ b/modules/shell/exercism.nix @@ -5,7 +5,7 @@ ... }: { - options.my.shell.exercism.enable = lib.mkEnableOption "enable"; + options.my.shell.exercism.enable = lib.mkEnableOption "Exercism coding practice platform"; config = lib.mkIf config.my.shell.exercism.enable { users.users.jawz.packages = builtins.attrValues { inherit (pkgs) diff --git a/modules/shell/multimedia.nix b/modules/shell/multimedia.nix index 8155fa6..ec1d29e 100644 --- a/modules/shell/multimedia.nix +++ b/modules/shell/multimedia.nix @@ -5,7 +5,7 @@ ... }: { - options.my.shell.multimedia.enable = lib.mkEnableOption "enable"; + options.my.shell.multimedia.enable = lib.mkEnableOption "multimedia CLI tools and codecs"; config = lib.mkIf config.my.shell.multimedia.enable { home-manager.users.jawz.programs = { yt-dlp = { diff --git a/modules/shell/tools.nix b/modules/shell/tools.nix index 22622e6..f0bf982 100644 --- a/modules/shell/tools.nix +++ b/modules/shell/tools.nix @@ -6,7 +6,7 @@ ... }: { - options.my.shell.tools.enable = lib.mkEnableOption "enable"; + options.my.shell.tools.enable = lib.mkEnableOption "shell tools and utilities"; config = lib.mkIf config.my.shell.tools.enable { home-manager.users.jawz.programs = { hstr.enable = true;