mirror of
https://github.com/CHN-beta/nixos.git
synced 2024-10-23 04:58:44 +08:00
use findModules
This commit is contained in:
parent
9e31283c30
commit
7daf2a0a19
@ -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)));
|
||||
}
|
||||
|
@ -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; };
|
||||
|
@ -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;
|
||||
|
@ -1,6 +1,6 @@
|
||||
inputs:
|
||||
{
|
||||
imports = inputs.localLib.mkModules [ ./steam.nix ];
|
||||
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
|
||||
config =
|
||||
let
|
||||
inherit (inputs.lib) mkIf;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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 = []; };
|
||||
|
@ -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 ./.);
|
||||
}
|
||||
|
@ -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; };
|
||||
|
@ -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; };
|
||||
|
@ -1,6 +1,6 @@
|
||||
inputs:
|
||||
{
|
||||
imports = inputs.localLib.mkModules [ ./plasma ];
|
||||
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
|
||||
config =
|
||||
let
|
||||
inherit (inputs.lib) mkIf;
|
||||
|
@ -1,4 +1,4 @@
|
||||
inputs:
|
||||
{
|
||||
imports = inputs.localLib.mkModules [ ./autostart.nix ./wallpaper ./shortcuts.nix ./theme.nix ];
|
||||
imports = inputs.localLib.mkModules (inputs.localLib.findModules ./.);
|
||||
}
|
||||
|
@ -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" ]; };
|
||||
|
Loading…
Reference in New Issue
Block a user