summaryrefslogtreecommitdiff
path: root/gnu/system/images/wsl2.scm
diff options
context:
space:
mode:
authorMarius Bakke <marius@gnu.org>2022-12-28 01:02:47 +0100
committerMarius Bakke <marius@gnu.org>2022-12-28 01:02:47 +0100
commitec0fbb471dfc6f72796da9ebafbb0630daa91267 (patch)
tree3b42f3d0a6470d85fbb8421179634bb278883e4e /gnu/system/images/wsl2.scm
parentf5ef7d34e4deecb80aff585c108b0a2ab1f33ce4 (diff)
parent0cb8f7125b19264b01962c1249c3df4c5ce85aa9 (diff)
Merge branch 'master' into staging
Diffstat (limited to 'gnu/system/images/wsl2.scm')
-rw-r--r--gnu/system/images/wsl2.scm15
1 files changed, 13 insertions, 2 deletions
diff --git a/gnu/system/images/wsl2.scm b/gnu/system/images/wsl2.scm
index 80c2e775b4..d9aaa1a271 100644
--- a/gnu/system/images/wsl2.scm
+++ b/gnu/system/images/wsl2.scm
@@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
+;;; Copyright © 2022 dan <i@dan.games>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -75,7 +76,11 @@ USER."
(let* ((pw (getpw #$user))
(shell (passwd:shell pw))
(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
;; Windows binaries to run with WSL's binfmt interop.
(setenv "WSLPATH" (getenv "PATH"))
@@ -88,9 +93,15 @@ USER."
MS_REMOUNT
#: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.
(apply execl sudo "sudo"
- "--preserve-env=WSLPATH"
+ "--preserve-env=WSLPATH,XDG_RUNTIME_DIR"
"-u" #$user
"--"
shell "-l" args))))))