t14_legacy_config/pkgs/default.nix
2022-06-15 23:27:56 -06:00

35 lines
957 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 (builtins.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" ];
});
vscode-extensions = pkgs.callPackage ./vscode.nix {};
}