aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-24 14:59:29 +0200
committerBenedikt Peetz <benedikt.peetz@b-peetz.de>2024-10-24 14:59:29 +0200
commit0cc353f49f9c5d0e0bd203a6854b488a58daaa96 (patch)
tree48d4a821a842f94e3614f7c310423d9d2c98cc21 /modules
parentrefactor(modules/unison): Migrate to `by-name` and parameterize (diff)
downloadnixos-config-0cc353f49f9c5d0e0bd203a6854b488a58daaa96.zip
refactor({modules,pkgs}/by-name-overlay): De-duplicate in a `nixLib`
Diffstat (limited to 'modules')
-rw-r--r--modules/by-name-overlay.nix48
-rw-r--r--modules/default.nix13
2 files changed, 9 insertions, 52 deletions
diff --git a/modules/by-name-overlay.nix b/modules/by-name-overlay.nix
deleted file mode 100644
index 4349e112..00000000
--- a/modules/by-name-overlay.nix
+++ /dev/null
@@ -1,48 +0,0 @@
-# Adapted from this: https://github.com/NixOS/nixpkgs/blob/1814b56453c91192f6d5a6276079948f9fe96c18/pkgs/top-level/by-name-overlay.nix
-{baseDirectory}: let
- # Taken straight out of the `nixpkgs/lib/lists.nix` file.
- # We can't depended on `pkgs` (and thus on `lib`), because the `pkgs` module argument
- # is only defined in modules we import.
- flatten = x:
- if builtins.isList x
- then builtins.concatMap flatten x
- else [x];
- # Same thing as flatten.
- warn =
- # Since Nix 2.23, https://github.com/NixOS/nix/pull/10592
- builtins.warn
- or (
- # Do not eta reduce v, so that we have the same strictness as `builtins.warn`.
- msg: v:
- # `builtins.warn` requires a string message, so we enforce that in our implementation, so that callers aren't accidentally incompatible with newer Nix versions.
- assert builtins.isString msg;
- builtins.trace "evaluation warning: ${msg}" v
- );
- # Same thing as flatten.
- mapAttrsToList = f: attrs:
- builtins.map (name: f name attrs.${name}) (builtins.attrNames attrs);
-
- # Module files for a single shard
- # Type: String -> String -> ListOf Path
- namesForShard = shard: type:
- if type != "directory"
- then warn "Ignored non-directory, whilst importing by-name modules: '${shard}'" []
- else let
- mkPath = name: _type: let
- path = baseDirectory + "/${shard}/${name}/module.nix";
- in
- if builtins.pathExists path
- then path
- else warn "'${builtins.toString path}' does not exist. Skipped" null;
- in
- flatten
- (builtins.filter (it: it != null)
- (mapAttrsToList
- mkPath
- (builtins.readDir (baseDirectory + "/${shard}"))));
-
- # A list of all module paths.
- # These can the be simply injected into `import`
- moduleFiles = flatten (mapAttrsToList namesForShard (builtins.readDir baseDirectory));
-in
- moduleFiles
diff --git a/modules/default.nix b/modules/default.nix
index a3bc1735..3364c3db 100644
--- a/modules/default.nix
+++ b/modules/default.nix
@@ -1,10 +1,15 @@
# NOTE: This file **must** not depend on `pkgs`. This is because `pkgs` is defined in a
# module imported by it, and thus would require infinite recursion. <2024-10-18>
{...}: let
- files = import ./by-name-overlay.nix {
- baseDirectory =
- ./by-name;
- };
+ nixLib = import ../lib {};
+
+ files =
+ builtins.attrValues
+ (nixLib.mkByName {
+ baseDirectory = ./by-name;
+ fileName = "module.nix";
+ finalizeFunction = name: value: value;
+ });
in {
imports = files;
}