~ruther/guix-local

28de8d258b30f887053d43b2d75a7ed5e2fa2adc — Ludovic Courtès 10 years ago 50500f7
environment: Define 'GUIX_ENVIRONMENT'.

* guix/scripts/environment.scm (create-environment): Define 'GUIX_ENVIRONMENT'.
* doc/guix.texi (Invoking guix environment): Document it.
* gnu/system/shadow.scm (default-skeletons): Adjust 'PS1' depending on whether
  'GUIX_ENVIRONMENT' is defined.
3 files changed, 25 insertions(+), 2 deletions(-)

M doc/guix.texi
M gnu/system/shadow.scm
M guix/scripts/environment.scm
M doc/guix.texi => doc/guix.texi +13 -0
@@ 4146,6 4146,19 @@ variables in @file{.bashrc}; instead, they should be defined in
@xref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}, for
details on Bash start-up files.}.

@vindex GUIX_ENVIRONMENT
@command{guix environment} defines the @code{GUIX_ENVIRONMENT}
variable in the shell it spaws.  This allows users to, say, define a
specific prompt for development environments in their @file{.bashrc}
(@pxref{Bash Startup Files,,, bash, The GNU Bash Reference Manual}):

@example
if [ -n "$GUIX_ENVIRONMENT" ]
then
    export PS1="\u@@\h \w [dev]\$ "
fi
@end example

Additionally, more than one package may be specified, in which case the
union of the inputs for the given packages are used.  For example, the
command below spawns a shell where all of the dependencies of both Guile

M gnu/system/shadow.scm => gnu/system/shadow.scm +7 -1
@@ 153,7 153,13 @@ then
    source /etc/profile
fi

PS1='\\u@\\h \\w\\$ '
# Adjust the prompt depending on whether we're in 'guix environment'.
if [ -n \"$GUIX_ENVIRONMENT\" ]
then
    export PS1='\\u@\\h \\w\\ [env]$ '
else
    export PS1='\\u@\\h \\w\\$ '
fi
alias ls='ls -p --color'
alias ll='ls -l'\n"))
                      (zlogin (text-file "zlogin" "\

M guix/scripts/environment.scm => guix/scripts/environment.scm +5 -1
@@ 78,7 78,11 @@ search paths."
                         (if (and current (not pure?))
                             (string-append value separator current)
                             value)))))
            (evaluate-input-search-paths inputs paths)))
            (evaluate-input-search-paths inputs paths))

  ;; Give users a way to know that they're in 'guix environment', so they can
  ;; adjust 'PS1' accordingly, for instance.
  (setenv "GUIX_ENVIRONMENT" "t"))

(define (show-search-paths inputs search-paths pure?)
  "Display SEARCH-PATHS applied to the packages specified by INPUTS, a list of