From 46f6fc626f6b685f4e5dd50306cc5dff81249d55 Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Wed, 2 Oct 2024 19:22:53 -0600 Subject: [PATCH] lambda to import recursive files on all modules --- base.nix | 21 +++++++++++---------- modules/apps.nix | 17 +++++++---------- modules/dev.nix | 16 +++++++--------- modules/{ => dev}/emacs.nix | 0 modules/scripts.nix | 20 +++++++------------- modules/servers/audiobookshelf.nix | 2 +- modules/servers/bazarr.nix | 2 +- modules/servers/flame.nix | 2 +- modules/servers/homepage.nix | 21 ++++++++------------- modules/servers/jellyfin.nix | 2 +- modules/servers/kavita.nix | 2 +- modules/servers/lidarr.nix | 2 +- modules/servers/maloja.nix | 2 +- modules/servers/mealie.nix | 2 +- modules/servers/metube.nix | 2 +- modules/servers/microbin.nix | 2 +- modules/servers/multi-scrobbler.nix | 2 +- modules/servers/nextcloud.nix | 2 +- modules/servers/prowlarr.nix | 2 +- modules/servers/radarr.nix | 2 +- modules/servers/ryot.nix | 2 +- modules/{ => servers}/setup.nix | 0 modules/servers/shiori.nix | 2 +- modules/servers/sonarr.nix | 2 +- modules/servers/vaultwarden.nix | 2 +- modules/services.nix | 14 +++++++------- modules/shell.nix | 12 +++++++----- 27 files changed, 72 insertions(+), 85 deletions(-) rename modules/{ => dev}/emacs.nix (100%) rename modules/{ => servers}/setup.nix (100%) diff --git a/base.nix b/base.nix index c6bc949..25bd21c 100644 --- a/base.nix +++ b/base.nix @@ -6,16 +6,17 @@ ... }: { - imports = [ - inputs.home-manager.nixosModules.home-manager - ./modules/apps.nix - ./modules/dev.nix - ./modules/shell.nix - ./modules/services.nix - ./modules/servers.nix - ./modules/scripts.nix - ./jawz.nix - ]; + imports = + let + moduleFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null) ( + builtins.attrNames (builtins.readDir ./modules) + ); + in + [ + inputs.home-manager.nixosModules.home-manager + ./jawz.nix + ] + ++ (map (file: ./modules/${file}) moduleFiles); system.stateVersion = "24.05"; sops = { defaultSopsFormat = "yaml"; diff --git a/modules/apps.nix b/modules/apps.nix index 92f80c1..617a79a 100644 --- a/modules/apps.nix +++ b/modules/apps.nix @@ -1,15 +1,12 @@ { lib, ... }: { - imports = [ - ./apps/art.nix - ./apps/dictionaries.nix - ./apps/fonts.nix - ./apps/gaming.nix - ./apps/internet.nix - ./apps/multimedia.nix - ./apps/office.nix - ./apps/misc.nix - ]; + imports = + let + appFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null) ( + builtins.attrNames (builtins.readDir ./apps) + ); + in + map (file: ./apps/${file}) appFiles; my = { dev.gameDev.enable = lib.mkDefault false; apps = { diff --git a/modules/dev.nix b/modules/dev.nix index 634dfbf..1a53bee 100644 --- a/modules/dev.nix +++ b/modules/dev.nix @@ -1,14 +1,12 @@ { lib, ... }: { - imports = [ - ./dev/sh.nix - ./dev/nix.nix - ./dev/docker.nix - ./dev/python.nix - ./dev/haskell.nix - ./dev/javascript.nix - ./emacs.nix - ]; + imports = + let + devFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null) ( + builtins.attrNames (builtins.readDir ./dev) + ); + in + map (file: ./dev/${file}) devFiles; my.emacs.enable = lib.mkDefault false; my.dev = { sh.enable = lib.mkDefault false; diff --git a/modules/emacs.nix b/modules/dev/emacs.nix similarity index 100% rename from modules/emacs.nix rename to modules/dev/emacs.nix diff --git a/modules/scripts.nix b/modules/scripts.nix index dafcbc4..b2c3884 100644 --- a/modules/scripts.nix +++ b/modules/scripts.nix @@ -1,18 +1,12 @@ { lib, ... }: { - imports = [ - ./scripts/download.nix - ./scripts/ffmpeg4discord.nix - ./scripts/ffmpreg.nix - ./scripts/find-dup-episode.nix - ./scripts/manage-library.nix - ./scripts/pika-list.nix - ./scripts/run.nix - ./scripts/split-dir.nix - ./scripts/tasks.nix - ./scripts/update-dns.nix - ./scripts/stream-dl.nix - ]; + imports = + let + scriptFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null && file != "base.nix") ( + builtins.attrNames (builtins.readDir ./scripts) + ); + in + map (file: ./scripts/${file}) scriptFiles; my.units.download.enable = lib.mkDefault false; my.units.stream-dl.enable = lib.mkDefault false; } diff --git a/modules/servers/audiobookshelf.nix b/modules/servers/audiobookshelf.nix index 73cf891..b60bdd5 100644 --- a/modules/servers/audiobookshelf.nix +++ b/modules/servers/audiobookshelf.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.audiobookshelf; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.audiobookshelf = setup.mkOptions "audiobookshelf" "audiobooks" 5687; diff --git a/modules/servers/bazarr.nix b/modules/servers/bazarr.nix index 16e7d6a..d5ed403 100644 --- a/modules/servers/bazarr.nix +++ b/modules/servers/bazarr.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.bazarr; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.bazarr = setup.mkOptions "bazarr" "subs" config.services.bazarr.listenPort; diff --git a/modules/servers/flame.nix b/modules/servers/flame.nix index f0fa7dc..541d7d1 100644 --- a/modules/servers/flame.nix +++ b/modules/servers/flame.nix @@ -3,7 +3,7 @@ let cfg = config.my.servers.flame; cfgS = config.my.servers.flameSecret; enable = (cfg.enable || cfgS.enable); - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers = { diff --git a/modules/servers/homepage.nix b/modules/servers/homepage.nix index fdc46a8..c6595e9 100644 --- a/modules/servers/homepage.nix +++ b/modules/servers/homepage.nix @@ -2,7 +2,7 @@ let services = import ./homepage/services.nix { inherit config lib; }; cfg = config.my.servers.homepage; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.homepage = setup.mkOptions "homepage" "home" 8082; @@ -108,18 +108,13 @@ in ]; } ]; - bookmarks = [ - (import ./homepage/bookmarks/servers.nix) - (import ./homepage/bookmarks/art.nix) - (import ./homepage/bookmarks/entertainment.nix) - (import ./homepage/bookmarks/torrents.nix) - (import ./homepage/bookmarks/shopping.nix) - (import ./homepage/bookmarks/social.nix) - (import ./homepage/bookmarks/development.nix) - (import ./homepage/bookmarks/secret-art.nix) - (import ./homepage/bookmarks/secret-media.nix) - (import ./homepage/bookmarks/secret-social.nix) - ]; + bookmarks = + let + bookmarkFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null) ( + builtins.attrNames (builtins.readDir ./homepage/bookmarks) + ); + in + map (file: import ./homepage/bookmarks/${file}) bookmarkFiles; }; nginx.virtualHosts."${cfg.host}" = lib.mkIf cfg.enableProxy ( setup.proxyReverse cfg.hostName cfg.port // { } diff --git a/modules/servers/jellyfin.nix b/modules/servers/jellyfin.nix index 609868c..3b979e0 100644 --- a/modules/servers/jellyfin.nix +++ b/modules/servers/jellyfin.nix @@ -18,7 +18,7 @@ let pkgs.gum sub-sync ]; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.jellyfin = setup.mkOptions "jellyfin" "flix" 8096; diff --git a/modules/servers/kavita.nix b/modules/servers/kavita.nix index 0fba96c..f99c754 100644 --- a/modules/servers/kavita.nix +++ b/modules/servers/kavita.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.kavita; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.kavita = setup.mkOptions "kavita" "library" config.services.kavita.settings.Port; diff --git a/modules/servers/lidarr.nix b/modules/servers/lidarr.nix index d2b825f..f3538a4 100644 --- a/modules/servers/lidarr.nix +++ b/modules/servers/lidarr.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.lidarr; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.lidarr = setup.mkOptions "lidarr" "music" 8686; diff --git a/modules/servers/maloja.nix b/modules/servers/maloja.nix index 4c0b1eb..e9b4f60 100644 --- a/modules/servers/maloja.nix +++ b/modules/servers/maloja.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.maloja; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.maloja = setup.mkOptions "maloja" "maloja" 42010; diff --git a/modules/servers/mealie.nix b/modules/servers/mealie.nix index d786d16..204e95f 100644 --- a/modules/servers/mealie.nix +++ b/modules/servers/mealie.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.mealie; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { disabledModules = [ "services/web-apps/mealie.nix" ]; diff --git a/modules/servers/metube.nix b/modules/servers/metube.nix index 74a6b21..cdfdf8e 100644 --- a/modules/servers/metube.nix +++ b/modules/servers/metube.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.metube; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.metube = setup.mkOptions "metube" "bajameesta" 8881; diff --git a/modules/servers/microbin.nix b/modules/servers/microbin.nix index dfb438f..fb9e18f 100644 --- a/modules/servers/microbin.nix +++ b/modules/servers/microbin.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.microbin; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.microbin = setup.mkOptions "microbin" "copy" 8080; diff --git a/modules/servers/multi-scrobbler.nix b/modules/servers/multi-scrobbler.nix index e7c96c0..1d7e339 100644 --- a/modules/servers/multi-scrobbler.nix +++ b/modules/servers/multi-scrobbler.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.multi-scrobbler; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.multi-scrobbler = setup.mkOptions "multi-scrobbler" "scrobble" 9078; diff --git a/modules/servers/nextcloud.nix b/modules/servers/nextcloud.nix index 95417bc..19e5c0b 100644 --- a/modules/servers/nextcloud.nix +++ b/modules/servers/nextcloud.nix @@ -16,7 +16,7 @@ let ''; cfg = config.my.servers.nextcloud; cfgC = config.my.servers.collabora; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers = { diff --git a/modules/servers/prowlarr.nix b/modules/servers/prowlarr.nix index 3355382..49fd097 100644 --- a/modules/servers/prowlarr.nix +++ b/modules/servers/prowlarr.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.prowlarr; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.prowlarr = setup.mkOptions "prowlarr" "indexer" 9696; diff --git a/modules/servers/radarr.nix b/modules/servers/radarr.nix index ce74a99..a3d1a14 100644 --- a/modules/servers/radarr.nix +++ b/modules/servers/radarr.nix @@ -6,7 +6,7 @@ }: let cfg = config.my.servers.radarr; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.radarr = setup.mkOptions "radarr" "movies" 7878; diff --git a/modules/servers/ryot.nix b/modules/servers/ryot.nix index 43e9177..12b47bf 100644 --- a/modules/servers/ryot.nix +++ b/modules/servers/ryot.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.ryot; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.ryot = setup.mkOptions "ryot" "tracker" 8765; diff --git a/modules/setup.nix b/modules/servers/setup.nix similarity index 100% rename from modules/setup.nix rename to modules/servers/setup.nix diff --git a/modules/servers/shiori.nix b/modules/servers/shiori.nix index 4cf8826..32508d4 100644 --- a/modules/servers/shiori.nix +++ b/modules/servers/shiori.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.shiori; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { disabledModules = [ "services/web-apps/shiori.nix" ]; diff --git a/modules/servers/sonarr.nix b/modules/servers/sonarr.nix index 6717d26..7fb368d 100644 --- a/modules/servers/sonarr.nix +++ b/modules/servers/sonarr.nix @@ -1,7 +1,7 @@ { lib, config, ... }: let cfg = config.my.servers.sonarr; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.sonarr = setup.mkOptions "sonarr" "series" 8989; diff --git a/modules/servers/vaultwarden.nix b/modules/servers/vaultwarden.nix index c290a0d..48bf795 100644 --- a/modules/servers/vaultwarden.nix +++ b/modules/servers/vaultwarden.nix @@ -6,7 +6,7 @@ }: let cfg = config.my.servers.vaultwarden; - setup = import ../setup.nix { inherit lib config; }; + setup = import ./setup.nix { inherit lib config; }; in { options.my.servers.vaultwarden = setup.mkOptions "vaultwarden" "vault" 8222; diff --git a/modules/services.nix b/modules/services.nix index a6e7b21..728faeb 100644 --- a/modules/services.nix +++ b/modules/services.nix @@ -1,12 +1,12 @@ { lib, ... }: { - imports = [ - ./services/network.nix - ./services/nvidia.nix - ./services/printing.nix - ./services/sound.nix - ./services/wireguard.nix - ]; + imports = + let + serviceFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null) ( + builtins.attrNames (builtins.readDir ./services) + ); + in + map (file: ./services/${file}) serviceFiles; my.services = { network.enable = lib.mkDefault false; nvidia.enable = lib.mkDefault false; diff --git a/modules/shell.nix b/modules/shell.nix index 2b682ba..bd3528f 100644 --- a/modules/shell.nix +++ b/modules/shell.nix @@ -1,10 +1,12 @@ { lib, ... }: { - imports = [ - ./shell/exercism.nix - ./shell/multimedia.nix - ./shell/tools.nix - ]; + imports = + let + shellFiles = builtins.filter (file: builtins.match ".*\\.nix" file != null) ( + builtins.attrNames (builtins.readDir ./shell) + ); + in + map (file: ./shell/${file}) shellFiles; my.shell = { exercism.enable = lib.mkDefault false; multimedia.enable = lib.mkDefault false;