Skip to content
Snippets Groups Projects
Commit e81d38c0 authored by Eelco Dolstra's avatar Eelco Dolstra
Browse files

nix-shell: Execute shellHook if it exists

Since normal builds don't execute shellHook, this allows nix-shell
specific customisation.  Suggested by Domen.
parent 832377bb
No related branches found
No related tags found
Loading
...@@ -51,6 +51,22 @@ derivation for development.</para> ...@@ -51,6 +51,22 @@ derivation for development.</para>
<filename>shell.nix</filename> if it exists, and <filename>shell.nix</filename> if it exists, and
<filename>default.nix</filename> otherwise.</para> <filename>default.nix</filename> otherwise.</para>
<para>If the derivation defines the variable
<varname>shellHook</varname>, it will be evaluated after
<literal>$stdenv/setup</literal> has been sourced. Since this hook is
not executed by regular Nix builds, it allows you to perform
initialisation specific to <command>nix-shell</command>. For example,
the derivation attribute
<programlisting>
shellHook =
''
echo "Hello shell!"
'';
</programlisting>
will cause <command>nix-shell</command> to print <literal>Hello shell!</literal>.</para>
</refsection> </refsection>
......
...@@ -207,6 +207,7 @@ foreach my $expr (@exprs) { ...@@ -207,6 +207,7 @@ foreach my $expr (@exprs) {
($pure ? '' : 'p=$PATH; ' ) . ($pure ? '' : 'p=$PATH; ' ) .
'dontAddDisableDepTrack=1; ' . 'dontAddDisableDepTrack=1; ' .
'[ -e $stdenv/setup ] && source $stdenv/setup; ' . '[ -e $stdenv/setup ] && source $stdenv/setup; ' .
'if [ "$(type -t runHook)" = function ]; then runHook shellHook; fi; ' .
($pure ? '' : 'PATH=$PATH:$p; unset p; ') . ($pure ? '' : 'PATH=$PATH:$p; unset p; ') .
'set +e; ' . 'set +e; ' .
'[ -n "$PS1" ] && PS1="\n\[\033[1;32m\][nix-shell:\w]$\[\033[0m\] "; ' . '[ -n "$PS1" ] && PS1="\n\[\033[1;32m\][nix-shell:\w]$\[\033[0m\] "; ' .
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment