me
/
guix
Archived
1
0
Fork 0

images: wsl2: Create XDG_RUNTIME_DIR on first login.

* gnu/system/images/wsl2.scm (wsl-boot-program): Create XDG_RUNTIME_DIR on
first login and set it.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
master
dan 2022-11-09 04:05:53 +08:00 committed by Mathieu Othacehe
parent 9369c1ccf4
commit c50cd1bbec
No known key found for this signature in database
GPG Key ID: 8354763531769CA6
1 changed files with 13 additions and 2 deletions

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2022 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org> ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
;;; Copyright © 2022 dan <i@dan.games>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -75,7 +76,11 @@ USER."
(let* ((pw (getpw #$user)) (let* ((pw (getpw #$user))
(shell (passwd:shell pw)) (shell (passwd:shell pw))
(sudo #+(file-append sudo "/bin/sudo")) (sudo #+(file-append sudo "/bin/sudo"))
(args (cdr (command-line)))) (args (cdr (command-line)))
(uid (passwd:uid pw))
(gid (passwd:gid pw))
(runtime-dir (string-append "/run/user/"
(number->string uid))))
;; Save the value of $PATH set by WSL. Useful for finding ;; Save the value of $PATH set by WSL. Useful for finding
;; Windows binaries to run with WSL's binfmt interop. ;; Windows binaries to run with WSL's binfmt interop.
(setenv "WSLPATH" (getenv "PATH")) (setenv "WSLPATH" (getenv "PATH"))
@ -88,9 +93,15 @@ USER."
MS_REMOUNT MS_REMOUNT
#:update-mtab? #f) #:update-mtab? #f)
;; Create XDG_RUNTIME_DIR for the login user.
(unless (file-exists? runtime-dir)
(mkdir runtime-dir)
(chown runtime-dir uid gid))
(setenv "XDG_RUNTIME_DIR" runtime-dir)
;; Start login shell as user. ;; Start login shell as user.
(apply execl sudo "sudo" (apply execl sudo "sudo"
"--preserve-env=WSLPATH" "--preserve-env=WSLPATH,XDG_RUNTIME_DIR"
"-u" #$user "-u" #$user
"--" "--"
shell "-l" args)))))) shell "-l" args))))))