diff options
-rw-r--r-- | lib/mk-dev-shell.nix | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/lib/mk-dev-shell.nix b/lib/mk-dev-shell.nix index e6e916a..0e2a265 100644 --- a/lib/mk-dev-shell.nix +++ b/lib/mk-dev-shell.nix | |||
@@ -9,17 +9,26 @@ with pkgs.lib; | |||
9 | let | 9 | let |
10 | exportEnvVar = k: v: '' | 10 | exportEnvVar = k: v: '' |
11 | export ${escapeShellArg k}="${v}" | 11 | export ${escapeShellArg k}="${v}" |
12 | ''; | ||
13 | |||
14 | exportEnvVarsHook = envVars: '' | ||
15 | ${pkgs.lib.concatStringsSep "\n" ( | ||
16 | pkgs.lib.mapAttrsToList exportEnvVar envVars | ||
17 | )} | ||
18 | ''; | ||
19 | |||
20 | printEnvVar = k: v: '' | ||
12 | echo ${escapeShellArg k}=${escapeShellArg v} | 21 | echo ${escapeShellArg k}=${escapeShellArg v} |
13 | ''; | 22 | ''; |
14 | 23 | ||
15 | envVarsHook = envVars: '' | 24 | printEnvVarsHook = envVars: '' |
16 | echo -e "\nDEVSHELL ENVIRONMENT VARIABLES:" | 25 | echo -e "\nDEVSHELL ENVIRONMENT VARIABLES:" |
17 | ${pkgs.lib.concatStringsSep "\n" ( | 26 | ${pkgs.lib.concatStringsSep "\n" ( |
18 | pkgs.lib.mapAttrsToList exportEnvVar envVars | 27 | pkgs.lib.mapAttrsToList printEnvVar envVars |
19 | )} | 28 | )} |
20 | ''; | 29 | ''; |
21 | 30 | ||
22 | listToolsHook = tools: '' | 31 | printToolsHook = tools: '' |
23 | echo -e "\nDEVSHELL COMMANDS:" | 32 | echo -e "\nDEVSHELL COMMANDS:" |
24 | ls "${pkgs.symlinkJoin { name = "env"; paths = tools; }}/bin" | 33 | ls "${pkgs.symlinkJoin { name = "env"; paths = tools; }}/bin" |
25 | ''; | 34 | ''; |
@@ -33,8 +42,11 @@ let | |||
33 | in pkgs.mkShell { | 42 | in pkgs.mkShell { |
34 | packages = tools; | 43 | packages = tools; |
35 | shellHook = '' | 44 | shellHook = '' |
36 | ${optionalString (envVars != {}) (envVarsHook envVars)} | 45 | ${exportEnvVarsHook envVars} |
37 | ${optionalString (tools != []) (listToolsHook tools)} | 46 | |
47 | ${optionalString (envVars != {}) (printEnvVarsHook envVars)} | ||
48 | ${optionalString (tools != []) (printToolsHook tools)} | ||
49 | |||
38 | ${if (shell != null) then shell else startUserShellHook} | 50 | ${if (shell != null) then shell else startUserShellHook} |
39 | exit $? | 51 | exit $? |
40 | ''; | 52 | ''; |