os/lib/utils.nix
2019-12-21 19:02:22 -07:00

50 lines
889 B
Nix

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