t14_legacy_config/pkgs/default.nix
Fabián Montero 9f72d24109 hotifx
2022-03-28 23:35:32 -06:00

33 lines
891 B
Nix

pkgs:
with pkgs.lib; let
inherit (pkgs) buildEnv callPackage writeTextDir;
importAll = { root, exclude ? [] }:
# adapted from http://chriswarbo.net/projects/nixos/useful_hacks.html
let
basename = removeSuffix ".nix";
isMatch = name: type: (hasSuffix ".nix" name || type == "directory")
&& ! elem name (map basename exclude);
entry = name: _: {
name = basename name;
value = import (root + "/${name}");
};
in
mapAttrs' entry (filterAttrs isMatch (readDir root));
in {
shenvs = let
build = name: { paths, enter ? null }: buildEnv {
name = "shenv-${name}";
paths = (optional (enter != null) (writeTextDir "lib/shenv/enter" enter))
++ paths;
};
in mapAttrs (name: shenv: build name (shenv pkgs)) (importAll {
root = ../shenvs;
exclude = [ "config" ];
});
}