* bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" @ 2021-10-01 15:46 Jan Nieuwenhuizen 2021-10-01 17:05 ` Xinglu Chen 2021-10-07 5:21 ` Andrew Tropin 0 siblings, 2 replies; 6+ messages in thread From: Jan Nieuwenhuizen @ 2021-10-01 15:46 UTC (permalink / raw) To: 50945 [-- Attachment #1: Type: text/plain, Size: 4361 bytes --] Hi, When using su or sudo to enter an account managed by guix home, I get this error --8<---------------cut here---------------start------------->8--- Backtrace: 2 (primitive-load "/home/guix/.guix-home/on-first-login") In ice-9/ports.scm: 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) In unknown file: 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) ERROR: In procedure open-file: In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" --8<---------------cut here---------------end--------------->8--- Upon a console login or ssh login, /var/run/1003 is created and all is fine. See below for the scenario, home-minimal.scm is attached. Greetings, Janneke $ ssh guix@localhost -p 2222 guix@localhost's password: Last login: Tue Jun 23 11:45:08 2020 from 2001:980:1b4f:1:216:d3ff:fe29:7cdb guix@dundal ~$ guix home reconfigure home-minimal.scm /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home Cleaning up symlinks from previous home-environment. Skipping /home/guix/.config/fontconfig (not an empty directory)... done Skipping /home/guix/.config (not an empty directory)... done Cleanup finished. New symlinks to home-environment will be created soon. All conflicting files will go to /home/guix/1633101995-guix-home-legacy-configs-backup. Skipping /home/guix/.config (directory already exists)... done Creating /home/guix/.config/fontconfig... done Symlinking /home/guix/.config/fontconfig/fonts.conf -> /gnu/store/phj2z2iiqdhryfy7mqral0b9qz3hlva6-fonts.conf... done Symlinking /home/guix/.config/test.conf -> /gnu/store/bdixb09v30bvhpgi2f6ndiq25wzb9l74-tmp-file.txt... done Symlinking /home/guix/.bash_profile -> /gnu/store/j3vhlswj46psxicapnq8c9p1jrwd55rk-bash_profile... done Symlinking /home/guix/.profile -> /gnu/store/fxbppk3pqzdi3zzy0xl5vg1ir6c5jzq5-shell-profile... done Symlinking /home/guix/.bashrc -> /gnu/store/513j2xkszmcmv7fiawh59mr0i1fmin55-bashrc... done done Finished updating symlinks. Comparing /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home/profile/share/fonts and /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home/profile/share/fonts... done (same) Evaling on-change gexps. On-change gexps evaluation finished. guix@dundal ~$ guix home list-generations ]8;;file://dundal/var/guix/profiles/per-user/guix/guix-home-1-link\Generation 1 Oct 01 2021 12:19:16]8;;\ (current) file name: /var/guix/profiles/per-user/guix/guix-home-1-link canonical file name: /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home channels: guix: repository URL: https://git.savannah.gnu.org/git/guix.git branch: master commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=56b10709efc4eb35df66f52a20ce3cb7fab4fee6\56b10709efc4eb35df66f52a20ce3cb7fab4fee6]8;;\ configuration file: ]8;;file://dundal/gnu/store/kjha5z8mck0pa9jrgx2266rq1lvlb3ji-configuration.scm\/gnu/store/kjha5z8mck0pa9jrgx2266rq1lvlb3ji-configuration.scm]8;;\ guix@dundal ~$ logout Connection to localhost closed. 17:26:49 janneke@dundal:~ $ sudo -i -u guix Password: Backtrace: 2 (primitive-load "/home/guix/.guix-home/on-first-login") In ice-9/ports.scm: 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) In unknown file: 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) ERROR: In procedure open-file: In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" guix@dundal ~$ ls -ltrF /run/user total 0 drwx------ 7 gdm gdm 160 Oct 1 12:16 971/ drwx------ 13 janneke janneke 260 Oct 1 13:07 1000/ guix@dundal ~$ logout 17:29:34 janneke@dundal:~ $ su - guix Password: Backtrace: 2 (primitive-load "/home/guix/.guix-home/on-first-login") In ice-9/ports.scm: 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) In unknown file: 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) ERROR: In procedure open-file: In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" 17:37:33 janneke@dundal:~ $ ssh guix@localhost -p 2222 guix@localhost's password: Last login: Fri Oct 1 17:23:35 2021 from 127.0.0.1 guix@dundal ~$ [-- Attachment #2: home-minimal.scm --] [-- Type: application/octet-stream, Size: 741 bytes --] (use-modules (gnu home) (gnu home-services) (gnu home-services shells) (gnu home-services shepherd) (gnu services) (gnu packages admin) (guix gexp)) (home-environment (packages (list htop)) (services (list (service home-bash-service-type (home-bash-configuration (guix-defaults? #t) (bash-profile '("\ export HISTFILE=$XDG_CACHE_HOME/.bash_history")))) (simple-service 'test-config home-files-service-type (list `("config/test.conf" ,(plain-file "tmp-file.txt" "the content of ~/.config/test.conf"))))))) [-- Attachment #3: Type: text/plain, Size: 152 bytes --] -- Jan Nieuwenhuizen <janneke@gnu.org> | GNU LilyPond http://lilypond.org Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" 2021-10-01 15:46 bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" Jan Nieuwenhuizen @ 2021-10-01 17:05 ` Xinglu Chen 2021-10-07 5:21 ` Andrew Tropin 1 sibling, 0 replies; 6+ messages in thread From: Xinglu Chen @ 2021-10-01 17:05 UTC (permalink / raw) To: Jan Nieuwenhuizen, 50945; +Cc: Andrew Tropin [-- Attachment #1: Type: text/plain, Size: 1248 bytes --] On Fri, Oct 01 2021, Jan Nieuwenhuizen wrote: > Hi, > > When using su or sudo to enter an account managed by guix home, I get > this error > > --8<---------------cut here---------------start------------->8--- > Backtrace: > 2 (primitive-load "/home/guix/.guix-home/on-first-login") > In ice-9/ports.scm: > 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) > In unknown file: > 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) > > ERROR: In procedure open-file: > In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" > --8<---------------cut here---------------end--------------->8--- > > Upon a console login or ssh login, /var/run/1003 is created and all is fine. > > See below for the scenario, home-minimal.scm is attached. > > Greetings, > Janneke [ Cc Andrew who did most of the work on Guix Home ] I think this is because Guix Home relies on $XDG_RUNTIME_DIR to be defined, otherwise it falls-back to /run/user/UID. But it looks like /run/user/UID isn’t created when using ‘su’ to login. I don’t really know how these things work under the hood; maybe using $XDG_RUNTIME_DIR isn’t best idea. [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" 2021-10-01 15:46 bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" Jan Nieuwenhuizen 2021-10-01 17:05 ` Xinglu Chen @ 2021-10-07 5:21 ` Andrew Tropin 2021-11-05 16:58 ` Xinglu Chen 1 sibling, 1 reply; 6+ messages in thread From: Andrew Tropin @ 2021-10-07 5:21 UTC (permalink / raw) To: Jan Nieuwenhuizen, 50945 [-- Attachment #1.1: Type: text/plain, Size: 4908 bytes --] On 2021-10-01 17:46, Jan Nieuwenhuizen wrote: > Hi, > > When using su or sudo to enter an account managed by guix home, I get > this error > > --8<---------------cut here---------------start------------->8--- > Backtrace: > 2 (primitive-load "/home/guix/.guix-home/on-first-login") > In ice-9/ports.scm: > 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) > In unknown file: > 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) > > ERROR: In procedure open-file: > In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" > --8<---------------cut here---------------end--------------->8--- > > Upon a console login or ssh login, /var/run/1003 is created and all is fine. > > See below for the scenario, home-minimal.scm is attached. > > Greetings, > Janneke > > > $ ssh guix@localhost -p 2222 > guix@localhost's password: > Last login: Tue Jun 23 11:45:08 2020 from 2001:980:1b4f:1:216:d3ff:fe29:7cdb > guix@dundal ~$ guix home reconfigure home-minimal.scm > /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home > Cleaning up symlinks from previous home-environment. > > Skipping /home/guix/.config/fontconfig (not an empty directory)... done > Skipping /home/guix/.config (not an empty directory)... done > Cleanup finished. > > New symlinks to home-environment will be created soon. > All conflicting files will go to /home/guix/1633101995-guix-home-legacy-configs-backup. > > Skipping /home/guix/.config (directory already exists)... done > Creating /home/guix/.config/fontconfig... done > Symlinking /home/guix/.config/fontconfig/fonts.conf -> /gnu/store/phj2z2iiqdhryfy7mqral0b9qz3hlva6-fonts.conf... done > Symlinking /home/guix/.config/test.conf -> /gnu/store/bdixb09v30bvhpgi2f6ndiq25wzb9l74-tmp-file.txt... done > Symlinking /home/guix/.bash_profile -> /gnu/store/j3vhlswj46psxicapnq8c9p1jrwd55rk-bash_profile... done > Symlinking /home/guix/.profile -> /gnu/store/fxbppk3pqzdi3zzy0xl5vg1ir6c5jzq5-shell-profile... done > Symlinking /home/guix/.bashrc -> /gnu/store/513j2xkszmcmv7fiawh59mr0i1fmin55-bashrc... done > done > Finished updating symlinks. > > Comparing /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home/profile/share/fonts and > /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home/profile/share/fonts... done (same) > Evaling on-change gexps. > > On-change gexps evaluation finished. > > guix@dundal ~$ guix home list-generations > ]8;;file://dundal/var/guix/profiles/per-user/guix/guix-home-1-link\Generation 1 Oct 01 2021 12:19:16]8;;\ (current) > file name: /var/guix/profiles/per-user/guix/guix-home-1-link > canonical file name: /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home > channels: > guix: > repository URL: https://git.savannah.gnu.org/git/guix.git > branch: master > commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=56b10709efc4eb35df66f52a20ce3cb7fab4fee6\56b10709efc4eb35df66f52a20ce3cb7fab4fee6]8;;\ > configuration file: ]8;;file://dundal/gnu/store/kjha5z8mck0pa9jrgx2266rq1lvlb3ji-configuration.scm\/gnu/store/kjha5z8mck0pa9jrgx2266rq1lvlb3ji-configuration.scm]8;;\ > guix@dundal ~$ logout > Connection to localhost closed. > 17:26:49 janneke@dundal:~ > $ sudo -i -u guix > Password: > Backtrace: > 2 (primitive-load "/home/guix/.guix-home/on-first-login") > In ice-9/ports.scm: > 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) > In unknown file: > 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) > > ERROR: In procedure open-file: > In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" > guix@dundal ~$ ls -ltrF /run/user > total 0 > drwx------ 7 gdm gdm 160 Oct 1 12:16 971/ > drwx------ 13 janneke janneke 260 Oct 1 13:07 1000/ > guix@dundal ~$ logout > 17:29:34 janneke@dundal:~ > $ su - guix > Password: > Backtrace: > 2 (primitive-load "/home/guix/.guix-home/on-first-login") > In ice-9/ports.scm: > 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) > In unknown file: > 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) > > ERROR: In procedure open-file: > In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" > 17:37:33 janneke@dundal:~ > $ ssh guix@localhost -p 2222 > guix@localhost's password: > Last login: Fri Oct 1 17:23:35 2021 from 127.0.0.1 > guix@dundal ~$ Thank you for a very detailed report. pam_elogind doesn't create a session, when the login shell spawned by sudo or su => XDG_RUNTIME_DIR not get created => this message appears. I think we can omit execution of any processes by on-first-login script in case session wasn't created. Added the check: [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1.2: 0001-home-services-on-first-login-Check-if-XDG_RUNTIME_DI.patch --] [-- Type: text/x-patch, Size: 1397 bytes --] From aab6df0298963fe91a6ebfd1dadbc1530eceeff7 Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew@trop.in> Date: Thu, 7 Oct 2021 08:12:04 +0300 Subject: [PATCH] home-services: on-first-login: Check if XDG_RUNTIME_DIR exists. * gnu/home-services.scm (on-first-login): on-first-login won't execute anything if XDG_RUNTIME_DIR doesn't exists. --- gnu/home-services.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gnu/home-services.scm b/gnu/home-services.scm index 9f1e986616..0b77a1321d 100644 --- a/gnu/home-services.scm +++ b/gnu/home-services.scm @@ -286,8 +286,11 @@ will be put in @file{~/.guix-home/files}."))) ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick ;; allows to launch on-first-login script on first login only ;; after complete logout/reboot. - (when (not (file-exists? flag-file-path)) - (begin #$@gexps (touch flag-file-path)))))) + (if (file-exists? xdg-runtime-dir) + (when (not (file-exists? flag-file-path)) + (begin #$@gexps (touch flag-file-path))) + (display "XDG_RUNTIME_DIR doesn't exists, the session wasn't +created, on-first-login script won't execute anything."))))) (define (on-first-login-script-entry m-on-first-login) "Return, as a monadic value, an entry for the on-first-login script -- 2.33.0 [-- Attachment #1.3: Type: text/plain, Size: 37 bytes --] -- Best regards, Andrew Tropin [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply related [flat|nested] 6+ messages in thread
* bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" 2021-10-07 5:21 ` Andrew Tropin @ 2021-11-05 16:58 ` Xinglu Chen 2021-11-08 9:24 ` Andrew Tropin 0 siblings, 1 reply; 6+ messages in thread From: Xinglu Chen @ 2021-11-05 16:58 UTC (permalink / raw) To: Andrew Tropin, Jan Nieuwenhuizen, 50945 [-- Attachment #1: Type: text/plain, Size: 2816 bytes --] Hi, On Thu, Oct 07 2021, Andrew Tropin wrote: > On 2021-10-01 17:46, Jan Nieuwenhuizen wrote: > >> Hi, >> >> When using su or sudo to enter an account managed by guix home, I get >> this error >> >> --8<---------------cut here---------------start------------->8--- >> Backtrace: >> 2 (primitive-load "/home/guix/.guix-home/on-first-login") >> In ice-9/ports.scm: >> 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) >> In unknown file: >> 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) >> >> ERROR: In procedure open-file: >> In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" >> --8<---------------cut here---------------end--------------->8--- >> >> [...] > > Thank you for a very detailed report. > > pam_elogind doesn't create a session, when the login shell spawned by > sudo or su => XDG_RUNTIME_DIR not get created => this message appears. > > I think we can omit execution of any processes by on-first-login script > in case session wasn't created. Added the check: > > From aab6df0298963fe91a6ebfd1dadbc1530eceeff7 Mon Sep 17 00:00:00 2001 > From: Andrew Tropin <andrew@trop.in> > Date: Thu, 7 Oct 2021 08:12:04 +0300 > Subject: [PATCH] home-services: on-first-login: Check if XDG_RUNTIME_DIR > exists. > > * gnu/home-services.scm (on-first-login): on-first-login won't execute > anything if XDG_RUNTIME_DIR doesn't exists. > --- > gnu/home-services.scm | 7 +++++-- > 1 file changed, 5 insertions(+), 2 deletions(-) > > diff --git a/gnu/home-services.scm b/gnu/home-services.scm > index 9f1e986616..0b77a1321d 100644 > --- a/gnu/home-services.scm > +++ b/gnu/home-services.scm > @@ -286,8 +286,11 @@ will be put in @file{~/.guix-home/files}."))) > ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick > ;; allows to launch on-first-login script on first login only > ;; after complete logout/reboot. > - (when (not (file-exists? flag-file-path)) > - (begin #$@gexps (touch flag-file-path)))))) > + (if (file-exists? xdg-runtime-dir) > + (when (not (file-exists? flag-file-path)) Use (unless …) instead of (when (not …)…). > + (begin #$@gexps (touch flag-file-path))) > + (display "XDG_RUNTIME_DIR doesn't exists, the session wasn't > +created, on-first-login script won't execute anything."))))) It would be good to tell the user how they could manually run the script, that way they could manually set/create $XDG_RUNTIME_DIR and run the script. "XDG_RUNTIME_DIR doesn't exist; the 'on-first-login' script won't execute anything. You can manually execute the script by running '$HOME/.guix-home/on-first-login' WDYT? [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 861 bytes --] ^ permalink raw reply [flat|nested] 6+ messages in thread
* bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" 2021-11-05 16:58 ` Xinglu Chen @ 2021-11-08 9:24 ` Andrew Tropin 2021-11-14 22:11 ` Ludovic Courtès 0 siblings, 1 reply; 6+ messages in thread From: Andrew Tropin @ 2021-11-08 9:24 UTC (permalink / raw) To: Oleg Pykhalov, Xinglu Chen; +Cc: 50945 [-- Attachment #1.1: Type: text/plain, Size: 2995 bytes --] On 2021-11-05 17:58, Xinglu Chen wrote: > Hi, > > On Thu, Oct 07 2021, Andrew Tropin wrote: > >> On 2021-10-01 17:46, Jan Nieuwenhuizen wrote: >> >>> Hi, >>> >>> When using su or sudo to enter an account managed by guix home, I get >>> this error >>> >>> --8<---------------cut here---------------start------------->8--- >>> Backtrace: >>> 2 (primitive-load "/home/guix/.guix-home/on-first-login") >>> In ice-9/ports.scm: >>> 461:11 1 (call-with-output-file "/run/user/1003/on-first-login-…" …) >>> In unknown file: >>> 0 (open-file "/run/user/1003/on-first-login-executed" "w" …) >>> >>> ERROR: In procedure open-file: >>> In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed" >>> --8<---------------cut here---------------end--------------->8--- >>> >>> [...] >> >> Thank you for a very detailed report. >> >> pam_elogind doesn't create a session, when the login shell spawned by >> sudo or su => XDG_RUNTIME_DIR not get created => this message appears. >> >> I think we can omit execution of any processes by on-first-login script >> in case session wasn't created. Added the check: >> >> From aab6df0298963fe91a6ebfd1dadbc1530eceeff7 Mon Sep 17 00:00:00 2001 >> From: Andrew Tropin <andrew@trop.in> >> Date: Thu, 7 Oct 2021 08:12:04 +0300 >> Subject: [PATCH] home-services: on-first-login: Check if XDG_RUNTIME_DIR >> exists. >> >> * gnu/home-services.scm (on-first-login): on-first-login won't execute >> anything if XDG_RUNTIME_DIR doesn't exists. >> --- >> gnu/home-services.scm | 7 +++++-- >> 1 file changed, 5 insertions(+), 2 deletions(-) >> >> diff --git a/gnu/home-services.scm b/gnu/home-services.scm >> index 9f1e986616..0b77a1321d 100644 >> --- a/gnu/home-services.scm >> +++ b/gnu/home-services.scm >> @@ -286,8 +286,11 @@ will be put in @file{~/.guix-home/files}."))) >> ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick >> ;; allows to launch on-first-login script on first login only >> ;; after complete logout/reboot. >> - (when (not (file-exists? flag-file-path)) >> - (begin #$@gexps (touch flag-file-path)))))) >> + (if (file-exists? xdg-runtime-dir) >> + (when (not (file-exists? flag-file-path)) > > Use (unless …) instead of (when (not …)…). > >> + (begin #$@gexps (touch flag-file-path))) >> + (display "XDG_RUNTIME_DIR doesn't exists, the session wasn't >> +created, on-first-login script won't execute anything."))))) > > It would be good to tell the user how they could manually run the > script, that way they could manually set/create $XDG_RUNTIME_DIR and run > the script. > > "XDG_RUNTIME_DIR doesn't exist; the 'on-first-login' script won't > execute anything. You can manually execute the script by running > '$HOME/.guix-home/on-first-login' > > WDYT? Addressed suggestions, attaching updated patch. [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #1.2: 0001-home-services-on-first-login-Check-if-XDG_RUNTIME_DI.patch --] [-- Type: text/x-patch, Size: 1550 bytes --] From 8b924b02ab917632047d6653f19d9b16175989bf Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew@trop.in> Date: Thu, 7 Oct 2021 08:12:04 +0300 Subject: [PATCH] home-services: on-first-login: Check if XDG_RUNTIME_DIR exists. * gnu/home-services.scm (on-first-login): on-first-login won't execute anything if XDG_RUNTIME_DIR doesn't exists. --- gnu/home/services.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gnu/home/services.scm b/gnu/home/services.scm index 5c9b743f7b..1e295b6afe 100644 --- a/gnu/home/services.scm +++ b/gnu/home/services.scm @@ -286,8 +286,13 @@ (define (compute-on-first-login-script _ gexps) ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick ;; allows to launch on-first-login script on first login only ;; after complete logout/reboot. - (when (not (file-exists? flag-file-path)) - (begin #$@gexps (touch flag-file-path)))))) + (if (file-exists? xdg-runtime-dir) + (unless (file-exists? flag-file-path) + (begin #$@gexps (touch flag-file-path))) + (display "XDG_RUNTIME_DIR doesn't exists, on-first-login script +won't execute anything. You can check if xdg runtime directory exists, +XDG_RUNTIME_DIR variable is set to apropriate value and manually execute the +script by running '$HOME/.guix-home/on-first-login'"))))) (define (on-first-login-script-entry m-on-first-login) "Return, as a monadic value, an entry for the on-first-login script -- 2.33.0 [-- Attachment #1.3: Type: text/plain, Size: 62 bytes --] Also, added a note about elogind/XDG_RUNTIME_DIR to manual. [-- Attachment #1.4: 0001-doc-Add-a-note-about-elogind-and-XDG_RUNTIME_DIR-for.patch --] [-- Type: text/x-patch, Size: 1150 bytes --] From f5d35fd4f542a11226c0159ee32498e374ff40a2 Mon Sep 17 00:00:00 2001 From: Andrew Tropin <andrew@trop.in> Date: Mon, 8 Nov 2021 12:22:04 +0300 Subject: [PATCH] doc: Add a note about elogind and XDG_RUNTIME_DIR for Guix Home. * doc/guix.texi (Declaring the Home Environment): Add a note about elogind and XDG_RUNTIME_DIR. --- doc/guix.texi | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/doc/guix.texi b/doc/guix.texi index 3355a535ad..36437cf161 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -35916,6 +35916,13 @@ guix home reconfigure config.scm This ``builds'' your home environment and creates @file{~/.guix-home} pointing to it. Voilà! +@quotation +Ensure that operating system has elogind or any other mechanism, which +creates xdg runtime directory and sets @env{XDG_RUNTIME_DIR} variable. +Otherwise, @file{on-first-login} script won't execute anything, and +process like userland Shepherd and its descendants won't start. +@end quotation + @node Configuring the Shell @section Configuring the Shell This section is safe to skip if your shell or shells are managed by -- 2.33.0 [-- Attachment #1.5: Type: text/plain, Size: 80 bytes --] Oleg, please apply it if it looks good. -- Best regards, Andrew Tropin [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 832 bytes --] ^ permalink raw reply related [flat|nested] 6+ messages in thread
* bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" 2021-11-08 9:24 ` Andrew Tropin @ 2021-11-14 22:11 ` Ludovic Courtès 0 siblings, 0 replies; 6+ messages in thread From: Ludovic Courtès @ 2021-11-14 22:11 UTC (permalink / raw) To: Andrew Tropin; +Cc: 50945, Xinglu Chen Hi Andrew and all, Andrew Tropin <andrew@trop.in> skribis: > On 2021-11-05 17:58, Xinglu Chen wrote: > From 8b924b02ab917632047d6653f19d9b16175989bf Mon Sep 17 00:00:00 2001 > From: Andrew Tropin <andrew@trop.in> > Date: Thu, 7 Oct 2021 08:12:04 +0300 > Subject: [PATCH] home-services: on-first-login: Check if XDG_RUNTIME_DIR > exists. > > * gnu/home-services.scm (on-first-login): on-first-login won't execute > anything if XDG_RUNTIME_DIR doesn't exists. Applied, with a “Fixes” line in the commit log. However… > +++ b/gnu/home/services.scm > @@ -286,8 +286,13 @@ (define (compute-on-first-login-script _ gexps) > ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick > ;; allows to launch on-first-login script on first login only > ;; after complete logout/reboot. > - (when (not (file-exists? flag-file-path)) > - (begin #$@gexps (touch flag-file-path)))))) > + (if (file-exists? xdg-runtime-dir) > + (unless (file-exists? flag-file-path) > + (begin #$@gexps (touch flag-file-path))) > + (display "XDG_RUNTIME_DIR doesn't exists, on-first-login script > +won't execute anything. You can check if xdg runtime directory exists, > +XDG_RUNTIME_DIR variable is set to apropriate value and manually execute the > +script by running '$HOME/.guix-home/on-first-login'"))))) This pattern is problematic because this text is not internationalized (not subject to translation). Part of caring about users in Guix implies ensuring that all messages are internationalized. The fact that the text is embedded in a generated script makes it a little trickier. In the installer, we address that by using the message catalog of the ‘guix’ package like so: #~(begin (bindtextdomain "guix" (string-append #$guix "/share/locale")) (textdomain "guix") (setlocale LC_ALL "")) The downside is that the script ends up depending on the ‘guix’ package; we could optimize that later on. At any rate, for these cases where you cannot avoid having messages printed by generated scripts such as this one, the solution would be to: 1. Add calls to ‘bindtextdomain’ and ‘textdomain’ as above (‘setlocale’ no longer needs to be called explicitly). 2. Import (guix i18n) and wrap messages in ‘G_’ (or ‘N_’) calls. 3. Ensure that each file that uses ‘G_’ or ‘N_’ is listed in po/guix/POTFILES.in. Could one of you take a look? :-) > Also, added a note about elogind/XDG_RUNTIME_DIR to manual. > > From f5d35fd4f542a11226c0159ee32498e374ff40a2 Mon Sep 17 00:00:00 2001 > From: Andrew Tropin <andrew@trop.in> > Date: Mon, 8 Nov 2021 12:22:04 +0300 > Subject: [PATCH] doc: Add a note about elogind and XDG_RUNTIME_DIR for Guix > Home. > > * doc/guix.texi (Declaring the Home Environment): Add a note about elogind and > XDG_RUNTIME_DIR. I tweaked the wording and applied. Thank you! Ludo’. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2021-11-14 22:12 UTC | newest] Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2021-10-01 15:46 bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" Jan Nieuwenhuizen 2021-10-01 17:05 ` Xinglu Chen 2021-10-07 5:21 ` Andrew Tropin 2021-11-05 16:58 ` Xinglu Chen 2021-11-08 9:24 ` Andrew Tropin 2021-11-14 22:11 ` Ludovic Courtès
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/guix.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).