Subject: bug#51639: closed (Re: bug#51639: The home-environment example on Guix manual has an error)

From: [email-masked] (GNU bug Tracking System)
Date: Fri, 10 Jun 2022 09:25:02 +0000

Your bug report

#51639: The home-environment example on Guix manual has an error

which was filed against the guix package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
51639: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=51639
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#51639: The home-environment example on Guix manual has an error
From: Ludovic Courtès <[email-masked]>
To: Andrew Tropin <[email-masked]>
Cc: Oleg Pykhalov <[email-masked]>, Luis Henrique Gomes Higino <[email-masked]>, [email-masked]
Date: Fri, 10 Jun 2022 11:24:11 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

Andrew Tropin <[email-masked]> skribis:

> From b1b448078a5382caf906c84064094f25aef7c689 Mon Sep 17 00:00:00 2001
> From: Andrew Tropin <[email-masked]>
> Date: Fri, 10 Jun 2022 10:08:24 +0300
> Subject: [PATCH] doc: Update example of a minimalistic home environment.
>
> * doc/he-config-bare-bones.scm: Adujst example according to changes in
> bash-service-type and home-files-service-type.

Applied, thanks!

Ludo’.

Subject: The home-environment example on Guix manual has an error
From: Luis Henrique Gomes Higino <[email-masked]>
To: [email-masked]
Date: Sat, 06 Nov 2021 09:50:34 -0300
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

the example present in the 11.1 section of the guix manual ((guix)
Declaring the Home Environment) uses a list of strings in the
bash-profile field of home-bash-configuration, which is incorrect, 
as it
expects a list of file-like objects.

The example is as follows:

  (use-modules (gnu home)
               (gnu home services)
               (gnu home services shells)
               (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")))))))

Running "guix home build" with a file containing this returns this 
error:

  building 
  /gnu/store/cvmpzmvb0p73dvbf813rcmpplj6fnbk8-bash_profile.drv...
  Backtrace:
             8 (primitive-load 
             "/gnu/store/w6nikzvdk66d1b8x579ra0vz0wl?")
  In ice-9/ports.scm:
     463:17  7 (call-with-output-file _ _ #:binary _ #:encoding _)
  In ice-9/eval.scm:
      159:9  6 (_ #(#(#<directory (guile-user) 7ffff3bb3f00>) 
      #<outp?>))
      163:9  5 (_ #(#(#<directory (guile-user) 7ffff3bb3f00>) 
      #<outp?>))
      155:9  4 (_ #(#(#<directory (guile-user) 7ffff3bb3f00>) 
      #<outp?>))
      159:9  3 (_ #(#(#<directory (guile-user) 7ffff3bb3f00>) 
      #<outp?>))
  In ice-9/boot-9.scm:
      152:2  2 (with-fluid* _ _ _)
  In ice-9/ports.scm:
     440:11  1 (call-with-input-file "     export 
     HISTFILE=$XDG_CACHE?" ?)
  In unknown file:
             0 (open-file "     export 
             HISTFILE=$XDG_CACHE_HOME/.bash?" ?)
  
  ERROR: In procedure open-file:
  In procedure open-file: No such file or directory: "     export 
  HISTFILE=$XDG_CACHE_HOME/.bash_history"
  builder for 
  `/gnu/store/cvmpzmvb0p73dvbf813rcmpplj6fnbk8-bash_profile.drv' 
  failed with exit code 1

I believe it should be changed to something like this:

  (use-modules (gnu home)
               (gnu home services)
               (gnu home services shells)
               (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 (list (plain-file "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")))))))

This manages to build correctly.

Greetings,
Luis

-- 
Luis H. Higino