pub-solar-os/lib/utils.nix

25 lines
715 B
Nix
Raw Normal View History

{ lib, ... }:
let
2020-01-04 05:06:31 +00:00
inherit (builtins) attrNames isAttrs readDir;
2020-01-04 05:06:31 +00:00
inherit (lib) filterAttrs hasSuffix mapAttrs' nameValuePair removeSuffix;
2020-01-04 05:06:31 +00:00
in rec {
# mapFilterAttrs ::
# (name -> value -> bool )
# (name -> value -> { name = any; value = any; })
# attrs
2020-01-04 05:06:31 +00:00
mapFilterAttrs = seive: f: attrs: filterAttrs seive (mapAttrs' f attrs);
2020-01-05 10:45:59 +00:00
# used in hosts/default.nix
2020-01-04 05:06:31 +00:00
recImport = { dir, _import ? base: import "${dir}/${base}.nix" }:
mapFilterAttrs (_: v: v != null) (n: v:
if n != "default.nix" && hasSuffix ".nix" n && v == "regular"
2020-01-04 05:06:31 +00:00
then
let name = removeSuffix ".nix" n; in nameValuePair (name) (_import name)
2020-01-04 05:06:31 +00:00
else
nameValuePair ("") (null)) (readDir dir);
}