use findModules

This commit is contained in:
陈浩南 2024-03-17 00:17:04 +08:00
parent 9e31283c30
commit 7daf2a0a19
14 changed files with 34 additions and 103 deletions

View File

@ -1,4 +1,4 @@
lib:
lib: rec
{
attrsToList = attrs: builtins.map (name: { inherit name; value = attrs.${name}; }) (builtins.attrNames attrs);
mkConditional = condition: trueResult: falseResult: let inherit (lib) mkMerge mkIf; in
@ -12,9 +12,9 @@ lib:
mkModules = moduleList:
(builtins.map
(
let handle = module:
if ( builtins.typeOf module ) == "path" then (handle (import module))
else if ( builtins.typeOf module ) == "lambda" then ({ pkgs, utils, ... }@inputs: (module inputs))
let handle = module: let type = builtins.typeOf module; in
if type == "path" || type == "string" then (handle (import module))
else if type == "lambda" then ({ pkgs, utils, ... }@inputs: (module inputs))
else module;
in handle
)
@ -37,4 +37,21 @@ lib:
findIndex = e: list:
let findIndex_ = i: list: if (builtins.elemAt list i) == e then i else findIndex_ (i + 1) list;
in findIndex_ 0 list;
# return a list of path, including:
# - all .nix file in the directory except for default.nix
# - all directories containing a default.nix
findModules = path:
builtins.filter (path: path != null) (builtins.map
(subPath:
if subPath.value == "regular" && subPath.name != "default.nix"
then if lib.strings.hasSuffix ".nix" subPath.name
then "${path}/${subPath.name}"
else null
else if subPath.value == "directory"
then if (builtins.readDir "${path}/${subPath.name}")."default.nix" or null == "regular"
then "${path}/${subPath.name}"
else null
else null)
(attrsToList (builtins.readDir path)));
}

View File

@ -1,6 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./gpu.nix ./legion.nix ];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
options.nixos.hardware = let inherit (inputs.lib) mkOption types; in
{
bluetooth.enable = mkOption { type = types.bool; default = false; };

View File

@ -1,13 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules
[
./server
./desktop
./desktop-fat
./workstation
./flatpak.nix
];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
options.nixos.packages =
let
inherit (inputs.lib) mkOption types;

View File

@ -1,6 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./steam.nix ];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
config =
let
inherit (inputs.lib) mkIf;

View File

@ -1,6 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./vscode.nix ./firefox.nix ./chromium.nix ./plasma ];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
config =
let
inherit (inputs.lib) mkIf;

View File

@ -1,6 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./konsole.nix ];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
config.nixos.users.sharedModules = inputs.lib.mkIf inputs.config.nixos.system.gui.enable
[{
config.programs.plasma = inputs.lib.mkMerge

View File

@ -1,11 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules
[
./ssh
./zsh
./gpg.nix
];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
config =
let
inherit (inputs.lib) mkIf;

View File

@ -1,49 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules
[
./postgresql.nix
./redis.nix
./rsshub.nix
./misskey.nix
./nginx
./meilisearch.nix
./xray.nix
./coturn.nix
./synapse.nix
./phpfpm.nix
./xrdp.nix
./groupshare.nix
./acme.nix
./samba.nix
./sshd.nix
./vaultwarden.nix
./frp.nix
./beesd.nix
./snapper.nix
./mariadb.nix
./photoprism.nix
./nextcloud.nix
./freshrss.nix
./kmscon.nix
./fontconfig.nix
./nix-serve.nix
./send.nix
./huginn.nix
./httpua
./fz-new-order
./httpapi.nix
./mirism.nix
./mastodon.nix
./gitea.nix
./grafana.nix
./fail2ban.nix
./wireguard.nix
./akkoma.nix
./gamemode.nix
./vikunja.nix
./slurm.nix
];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
options.nixos.services = let inherit (inputs.lib) mkOption types; in
{
firewall.trustedInterfaces = mkOption { type = types.listOf types.nonEmptyStr; default = []; };

View File

@ -1,13 +1,4 @@
inputs:
{
imports = inputs.localLib.mkModules
[
./element.nix
./synapse-admin.nix
./kkmeeting.nix
./webdav.nix
./blog.nix
./catalog.nix
./main.nix
];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
}

View File

@ -1,9 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules
[
./applications
];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
options.nixos.services.nginx = let inherit (inputs.lib) mkOption types; in
{
enable = mkOption { type = types.bool; default = false; };

View File

@ -1,24 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules
[
./nix.nix
./fileSystems
./grub.nix
./initrd.nix
./kernel
./impermanence.nix
./gui.nix
./nixpkgs.nix
./networking.nix
./systemd.nix
./security.nix
./sops.nix
./user.nix
./sysctl.nix
./envfs.nix
./binfmt.nix
];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
config =
{
services = { dbus.implementation = "broker"; fstrim.enable = true; acpid.enable = true; };

View File

@ -1,6 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./plasma ];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
config =
let
inherit (inputs.lib) mkIf;

View File

@ -1,4 +1,4 @@
inputs:
{
imports = inputs.localLib.mkModules [ ./autostart.nix ./wallpaper ./shortcuts.nix ./theme.nix ];
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
}

View File

@ -1,7 +1,6 @@
inputs:
{
imports = inputs.localLib.mkModules (builtins.map (dir: ././${dir.name})
(builtins.filter (dir: dir.value == "directory") (inputs.localLib.attrsToList (builtins.readDir ./.))));
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
options.nixos.users = let inherit (inputs.lib) mkOption types; in
{
users = mkOption { type = types.listOf types.nonEmptyStr; default = [ "chn" ]; };