summary refs log tree commit diff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2019-04-26 10:19:56 +0200
committerLudovic Courtès <ludo@gnu.org>2019-04-26 14:19:36 +0200
commit504a0fc636ec591e65b4a229a37e522e425d8a0c (patch)
tree5e3574db4155c66a4245447d48c9bdfe9ad10faf
parent9ca5ff882e2ac4eaab02eb0fde545bd784af478b (diff)
downloadguix-504a0fc636ec591e65b4a229a37e522e425d8a0c.tar.gz
accounts: Always honor the configured user account shell.
Starting from commit 0ae735bcc8ff7fdc89d67b492bdee9091ee19e86, Guix
System would preserve the user shell across reconfigure and reboot.
This was done so as to allow for the use of 'chsh'.

This proved to be a misguided decision.  This commit goes back to
considering user shells as config and not "state."

* gnu/build/accounts.scm (allocate-passwd): Do not use shell from
PREVIOUS.
-rw-r--r--gnu/build/accounts.scm9
1 files changed, 6 insertions, 3 deletions
diff --git a/gnu/build/accounts.scm b/gnu/build/accounts.scm
index 6b44ab610b..c43ce85b60 100644
--- a/gnu/build/accounts.scm
+++ b/gnu/build/accounts.scm
@@ -483,9 +483,12 @@ new UIDs."
                                (real-name (if previous
                                               (password-entry-real-name previous)
                                               real-name))
-                               (shell (if previous
-                                          (password-entry-shell previous)
-                                          shell)))
+
+                               ;; Do not reuse the shell of PREVIOUS since (1)
+                               ;; that could lead to confusion, and (2) the
+                               ;; shell might have been GC'd.  See
+                               ;; <https://lists.gnu.org/archive/html/guix-devel/2019-04/msg00478.html>.
+                               (shell shell))
                               result)
                         allocation))))
           '()