summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2015-07-01 14:39:14 +0200
committerLudovic Courtès <ludo@gnu.org>2015-07-01 23:29:49 +0200
commit28de8d258b30f887053d43b2d75a7ed5e2fa2adc (patch)
treeed0cb7f5c487d7d93bfc5e11472eac0ea81f2443
parent50500f7cf0786cccb8211ddac75a56c3c82859f6 (diff)
downloadpatches-28de8d258b30f887053d43b2d75a7ed5e2fa2adc.tar
patches-28de8d258b30f887053d43b2d75a7ed5e2fa2adc.tar.gz
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.
-rw-r--r--doc/guix.texi13
-rw-r--r--gnu/system/shadow.scm8
-rw-r--r--guix/scripts/environment.scm6
3 files changed, 25 insertions, 2 deletions
diff --git a/doc/guix.texi b/doc/guix.texi
index a35ea2fd9d..fdd8fdf9ae 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -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
diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm
index aa97652678..ae6229229b 100644
--- a/gnu/system/shadow.scm
+++ b/gnu/system/shadow.scm
@@ -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" "\
diff --git a/guix/scripts/environment.scm b/guix/scripts/environment.scm
index 00c4df7a3e..c6cac469e4 100644
--- a/guix/scripts/environment.scm
+++ b/guix/scripts/environment.scm
@@ -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