aboutsummaryrefslogtreecommitdiff
path: root/lib/mk-dev-shell.nix
blob: 8078f355aa64611de588b39ab2a8c12a137f0593 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
{ pkgs
, tools ? []
, envVars ? {}
}:

let
  exportEnvVar = k: v: with pkgs.lib; ''
    export ${escapeShellArg k}=${escapeShellArg v}
    echo ${escapeShellArg k}=${escapeShellArg v}
  '';
  exportedEnvVars = pkgs.lib.mapAttrsToList exportEnvVar envVars;

in pkgs.mkShell {
  buildInputs = tools;

  # TODO: handle case with no env variable set
  # TODO: handle case with no package in tools
  # TODO: allow custom shell
  shellHook = ''
    echo -e "\nDEVSHELL ENVIRONMENT VARIABLES:"
    ${pkgs.lib.concatStringsSep "\n" exportedEnvVars}

    echo -e "\nDEVSHELL COMMANDS:"
    ls "${pkgs.symlinkJoin { name = "env"; paths = tools; }}/bin"

    # Use the default user shell instead of Bash
    $(${pkgs.finger_bsd}/bin/finger $USER \
      | ${pkgs.gnugrep}/bin/grep -oP 'Shell: \K.*')

    exit $?
  '';
}