Subject: guix-for-channels stuck in a loop

From: Nicolas Odermatt-Lemay <[email-masked]>
Date: Sat, 20 Apr 2024 22:38:58 -0400

Hi,
The procedure guix-for-channels seems to have introduced a loop. I am
currently using guix with commit 43a4215cad8c6da357f895569c0cedf5e854cee0.
Here are the steps to reproduce :
1. Take the example file system/examples/vm-image.tmpl
2. Add the guix-science channel as explained in
https://guix.gnu.org/manual/devel/en/html_node/Customizing-the-System_002dWide-Guix.html
3. Run the following command : $(guix system vm vm-image.tmpl) -m 1024 -smp
2 -nic user,model=virtio-net-pci

Here is the modified vm-image.tmpl with the guix-science channel added as
well as an excerpt of the output of the guix system vm command (where it
loops).

Thanks, and please let me know if I can provide more details.

----- vm-image.tmpl starts here -----
;; -*- mode: scheme; -*-
;; This is an operating system configuration for a VM image.
;; Modify it as you see fit and instantiate the changes by running:
;;
;;   guix system reconfigure /etc/config.scm
;;

(use-modules (gnu)
    (guix)
    (guix channels)
    (srfi srfi-1))
(use-service-modules desktop mcron networking spice ssh xorg sddm)
(use-package-modules bootloaders fonts
                     package-management xdisorg xorg)

(define vm-image-motd (plain-file "motd" "
\x1b[1;37mThis is the GNU system.  Welcome!\x1b[0m

This instance of Guix is a template for virtualized environments.
You can reconfigure the whole system by adjusting /etc/config.scm
and running:

  guix system reconfigure /etc/config.scm

Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation.

\x1b[1;33mConsider setting a password for the 'root' and 'guest' \
accounts.\x1b[0m
"))

(define my-channels
  ;; Channels that should be available to
  ;; /run/current-system/profile/bin/guix.
  (append
   (list (channel
          (name 'guix-science)
          (url "https://github.com/guix-science/guix-science")
          (branch "master")))
   %default-channels))

(operating-system
  (host-name "gnu")
  (timezone "Etc/UTC")
  (locale "en_US.utf8")
  (keyboard-layout (keyboard-layout "us" "altgr-intl"))

  ;; Label for the GRUB boot menu.
  (label (string-append "GNU Guix "
                        (or (getenv "GUIX_DISPLAYED_VERSION")
                            (package-version guix))))

  (firmware '())

  ;; Below we assume /dev/vda is the VM's hard disk.
  ;; Adjust as needed.
  (bootloader (bootloader-configuration
               (bootloader grub-bootloader)
               (targets '("/dev/vda"))
               (terminal-outputs '(console))))
  (file-systems (cons (file-system
                        (mount-point "/")
                        (device "/dev/vda1")
                        (type "ext4"))
                      %base-file-systems))

  (users (cons (user-account
                (name "guest")
                (comment "GNU Guix Live")
                (password "")           ;no password
                (group "users")
                (supplementary-groups '("wheel" "netdev"
                                        "audio" "video")))
               %base-user-accounts))

  ;; Our /etc/sudoers file.  Since 'guest' initially has an empty password,
  ;; allow for password-less sudo.
  (sudoers-file (plain-file "sudoers" "\
root ALL=(ALL) ALL
%wheel ALL=NOPASSWD: ALL\n"))

  (packages
   (append (list font-bitstream-vera
                 ;; Auto-started script providing SPICE dynamic resizing for
                 ;; Xfce (see:
                 ;; https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/142
).
                 x-resize)
           %base-packages))

  (services
   (append (list (service xfce-desktop-service-type)

                 ;; Choose SLiM, which is lighter than the default GDM.
                 (service slim-service-type
                          (slim-configuration
                           (auto-login? #t)
                           (default-user "guest")
                           (xorg-configuration
                            (xorg-configuration
                             ;; The QXL virtual GPU driver is added to
provide
                             ;; a better SPICE experience.
                             (modules (cons xf86-video-qxl
                                            %default-xorg-modules))
                             (keyboard-layout keyboard-layout)))))

                 ;; Uncomment the line below to add an SSH server.
                 ;;(service openssh-service-type)

                 ;; Add support for the SPICE protocol, which enables
dynamic
                 ;; resizing of the guest screen resolution, clipboard
                 ;; integration with the host, etc.
                 (service spice-vdagent-service-type)

                 ;; Use the DHCP client service rather than NetworkManager.
                 (service dhcp-client-service-type))

           ;; Remove some services that don't make sense in a VM.
           (remove (lambda (service)
                     (let ((type (service-kind service)))
                       (or (memq type
                                 (list gdm-service-type
                                       sddm-service-type
                                       wpa-supplicant-service-type
                                       cups-pk-helper-service-type
                                       network-manager-service-type
                                       modem-manager-service-type))
                           (eq? 'network-manager-applet
                                (service-type-name type)))))
                   (modify-services %desktop-services
                     (login-service-type config =>
                                         (login-configuration
                                          (inherit config)
                                          (motd vm-image-motd)))

                     ;; Install and run the current Guix rather than an
older
                     ;; snapshot.
                     (guix-service-type config =>
                                        (guix-configuration
                                         (inherit config)
(channels my-channels)
(guix (guix-for-channels my-channels))
                                         ;; (guix (current-guix))
))))))

  ;; Allow resolution of '.local' host names with mDNS.
  (name-service-switch %mdns-host-lookup-nss))
----- vm-image.tmpl ends here -----

----- output starts here -----
Updating channel 'guix' from Git repository at '
https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix-science' from Git repository at '
https://github.com/guix-science/guix-science'...
/home/nic/dotfiles/guix/.config/guix/system/vm-image.tmpl:35:9: warning:
channel 'guix-science' lacks 'introduction' field but
'.guix-authorizations' found
guix system: warning: pulled channel 'guix-science' from a mirror of
https://github.com/guix-science/guix-science.git, which might be stale
Computing Guix derivation for 'x86_64-linux'... \
Updating channel 'guix' from Git repository at '
https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix-science' from Git repository at '
https://github.com/guix-science/guix-science'...
/home/nic/dotfiles/guix/.config/guix/system/vm-image.tmpl:35:9: warning:
channel 'guix-science' lacks 'introduction' field but
'.guix-authorizations' found
guix system: warning: pulled channel 'guix-science' from a mirror of
https://github.com/guix-science/guix-science.git, which might be stale
Computing Guix derivation for 'x86_64-linux'... \
Updating channel 'guix' from Git repository at '
https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix-science' from Git repository at '
https://github.com/guix-science/guix-science'...
/home/nic/dotfiles/guix/.config/guix/system/vm-image.tmpl:35:9: warning:
channel 'guix-science' lacks 'introduction' field but
'.guix-authorizations' found
guix system: warning: pulled channel 'guix-science' from a mirror of
https://github.com/guix-science/guix-science.git, which might be stale
Computing Guix derivation for 'x86_64-linux'... /
Updating channel 'guix' from Git repository at '
https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix-science' from Git repository at '
https://github.com/guix-science/guix-science'...
/home/nic/dotfiles/guix/.config/guix/system/vm-image.tmpl:35:9: warning:
channel 'guix-science' lacks 'introduction' field but
'.guix-authorizations' found
guix system: warning: pulled channel 'guix-science' from a mirror of
https://github.com/guix-science/guix-science.git, which might be stale
Computing Guix derivation for 'x86_64-linux'... |
Updating channel 'guix' from Git repository at '
https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix-science' from Git repository at '
https://github.com/guix-science/guix-science'...
/home/nic/dotfiles/guix/.config/guix/system/vm-image.tmpl:35:9: warning:
channel 'guix-science' lacks 'introduction' field but
'.guix-authorizations' found
guix system: warning: pulled channel 'guix-science' from a mirror of
https://github.com/guix-science/guix-science.git, which might be stale
Computing Guix derivation for 'x86_64-linux'... |
Updating channel 'guix' from Git repository at '
https://git.savannah.gnu.org/git/guix.git'...
Updating channel 'guix-science' from Git repository at '
https://github.com/guix-science/guix-science'...
/home/nic/dotfiles/guix/.config/guix/system/vm-image.tmpl:35:9: warning:
channel 'guix-science' lacks 'introduction' field but
'.guix-authorizations' found
guix system: warning: pulled channel 'guix-science' from a mirror of
https://github.com/guix-science/guix-science.git, which might be stale
Computing Guix derivation for 'x86_64-linux'... /  C-c C-c
----- output ends here -----