Dear Wolf,

my system-config.scm is quite normal desktop. Because of my WLAN chip I use a 
non-free linux kernel which is customized to my needs (e.g. only btrfs and no 
ext*-fs). I change some privileged programs (e.g. exchange slock by slock-caps, 
trivial suspend). See below.

my reconfig is and takes today about 25 minutes:

  guix time-machine -C ~user/reg/c/config/systems/channels-lock.scm -- system 
reconfigure -L ~user/reg/c ~user/reg/c/config/systems/config.scm "$@" |& tee -a 
reconfig-$(date +%F.%T).log

Without time-machine the output is the same. But yesterday, I saw some pulls 
and applied commits.

NB: I fix the channels to a commit by channels-lock.scm. It contains the 
commits just after the last CVEs.
--- begin channels-lock.scm
(list (channel
        (name 'nonguix)
        (url "https://gitlab.com/nonguix/nonguix";)
        (branch "master")
        (commit
          "fea3efac5021b5c2b5037e0281d95e8ac81b34eb")
        (introduction
          (make-channel-introduction
            "897c1a470da759236cc11798f4e0a5f7d4d59fbc"
            (openpgp-fingerprint
              "2A39 3FFF 68F4 EF7A 3D29  12AF 6F51 20A0 22FB B2D5"))))
      (channel
        (name 'guix)
        (url "https://git.guix.gnu.org/guix.git";)
        (branch "master")
        (commit
          "8ee445f39ad6fc706247060e7fd235c13351c7f1")
        (introduction
          (make-channel-introduction
            "9edb3f66fd807b096b48283debdcddccfea34bad"
            (openpgp-fingerprint
              "BBB0 2DDF 2CEA F6A8 0D1D  E643 A2A0 6DF2 A33A 54FA")))))
--- end channels-lock.scm

Besides this, I get *three* times {Updating channels + Computing Guix 
derivation for 'x86_64-linux'} !

The output of reconfigure is:

--- begin output with channels-lock.scm
Updating channel 'guix' from Git repository at 
'https://git.guix.gnu.org/guix.git'...
Updating channel 'nonguix' from Git repository at 
'https://gitlab.com/nonguix/nonguix'...
Computing Guix derivation for 'x86_64-linux'...
Updating channel 'guix' from Git repository at 
'https://git.guix.gnu.org/guix.git'...
Updating channel 'nonguix' from Git repository at 
'https://gitlab.com/nonguix/nonguix'...
Computing Guix derivation for 'x86_64-linux'...
substitute: looking for substitutes on 'https://substitutes.nonguix.org'...   
100.0%
substitute: looking for substitutes on 'https://bordeaux.guix.gnu.org'...     
100.0%
substitute: looking for substitutes on 'https://ci.guix.gnu.org'...           
100.0%
The following derivations will be built:
  /gnu/store/4n8p23vp5q94gmcf42wajqj9xxkxh3hp-activate-service.scm.drv
  /gnu/store/kpssw1srszhq1p4qcchcqq81rhc8jcqf-activate.scm.drv
  /gnu/store/y5b31mf70r84drj6cn3h8l4z5c2m37ys-boot.drv
  /gnu/store/dsifllskpmcimyaslwmp09rxnfl9an5n-system.drv
  /gnu/store/3c5707shbz9n4g3mpfaz9w88fx8m6ldz-grub.cfg.drv

building /gnu/store/4n8p23vp5q94gmcf42wajqj9xxkxh3hp-activate-service.scm.drv...
building /gnu/store/kpssw1srszhq1p4qcchcqq81rhc8jcqf-activate.scm.drv...
building /gnu/store/y5b31mf70r84drj6cn3h8l4z5c2m37ys-boot.drv...
building /gnu/store/dsifllskpmcimyaslwmp09rxnfl9an5n-system.drv...
building /gnu/store/3c5707shbz9n4g3mpfaz9w88fx8m6ldz-grub.cfg.drv...
/gnu/store/y636b201mc0h5rsp8pi9h670njrmbrr1-system
/gnu/store/9l6wlm8z6j2m3fxxaplbczr9knd9h5j4-grub.cfg

activating system...
Updating channel 'guix' from Git repository at 
'https://git.guix.gnu.org/guix.git'...
Updating channel 'nonguix' from Git repository at 
'https://gitlab.com/nonguix/nonguix'...
Computing Guix derivation for 'x86_64-linux'...
The following derivation will be built:
  /gnu/store/1c1csvzk2pw612pp93g6k14105r6xq5l-switch-to-system.scm.drv

building /gnu/store/1c1csvzk2pw612pp93g6k14105r6xq5l-switch-to-system.scm.drv...
making '/var/guix/profiles/system-43-link' the current system...
populating /etc from /gnu/store/1km8pkvp5n8i67qx0vkmw4lqb7vrqjdj-etc...
setting up privileged programs in '/run/privileged/bin'...
warning: failed to privilege 
"/gnu/store/aal4fxvkvpzc3p03fy3bbzl19zi550xs-slock-1.5/bin/slock": File exists
warning: failed to privilege 
"/gnu/store/jxhjfzsnl8sgnzaizfd7ljhmampnvw6l-slock-caps-1.5/bin/slock": File 
exists
The following derivation will be built:
  /gnu/store/7c0k15mlwda70q81dbvyfm0bqlgpr7c0-install-bootloader.scm.drv

building 
/gnu/store/7c0k15mlwda70q81dbvyfm0bqlgpr7c0-install-bootloader.scm.drv...
guix system: bootloader successfully installed on '(/boot/efi)'
Updating channel 'guix' from Git repository at 
'https://git.guix.gnu.org/guix.git'...
Updating channel 'nonguix' from Git repository at 
'https://gitlab.com/nonguix/nonguix'...
Computing Guix derivation for 'x86_64-linux'...
[...shepard and kexec stuff]
--- end output with channels-lock.scm

PS: my system-config.scm is
--- begin system-config.scm
(define-public h2ka-system
  (operating-system
   (kernel host-linux)
   (initrd microcode-initrd)
   (firmware (list linux-firmware))
   (locale "de_DE.utf8")
   (timezone "Europe/Berlin")
   (keyboard-layout (keyboard-layout "de" "deadgraveacute"))
   (host-name "host")

   (users (cons* (user-account
                  (name "me")
                  (comment "me")
                  (group "users")
                  (home-directory "/home/me")
                  (supplementary-groups '("wheel" "netdev"
                                          "audio" "video")))
                 %base-user-accounts))

   (packages
    (append
     (map
      specification->package
      '("cifs-utils"
        "davfs2"
        "i3-wm"
        "i3status"
        "suspend"
        "dmenu"
        "bash"
        ;;"dwm"
        "tinyalsa"
        "alsa-plugins"
        "alsa-utils"
        "pulseaudio"
        "lxde"
        "lxpanel"
        "st"
        ;;"s6"
        ;;"execline"
        ))
     %base-packages))

   (privileged-programs
    (cons*
     (privileged-program
      (program (file-append slock-caps "/bin/slock"))
      (setuid? #t)
      )
     (privileged-program
      (program (file-append suspend "/bin/suspend"))
      (group "wheel")
      (setuid? #f)
      (setgid? #t)
      )
     (privileged-program
      (program (file-append davfs2 "/sbin/mount.davfs"))
      (setuid? #t))
     (privileged-program
      (program (file-append cifs-utils "/sbin/mount.cifs"))
      (setuid? #t))
     ((remove-privileged
       `(,(file-append slock "/bin/slock")))
      %default-privileged-programs)))
   (services
    (cons*
     (service mcron-service-type
              (mcron-configuration
               (jobs (list cpupower-powersave-job
                           lift-nofile-limit-job
                           renice-guix-daemon-job
                           guix-reconfigure-job
                           guix-release-throttle-job))))

     (service xfce-desktop-service-type)
     (service cups-service-type         ;2025-07-27
              (cups-configuration
               (web-interface? #t)
               (extensions
                (list foomatic-filters cups-filters hplip dbus foo2zjs 
hplip-plugin))))

     (service nix-service-type)         ; 2025-05-08
     (service varnish-service-type)     ; 2025-05-08
     (set-xorg-configuration
      (xorg-configuration
       (keyboard-layout keyboard-layout)
       (extra-config (list touchpad-conf))))

     (service
      screen-locker-service-type
      (screen-locker-configuration
       (name "slock")
       (program (file-append slock-caps "/bin/slock"))))

     ;; Dies ist die Standardliste von Diensten, zu der wir
     ;; Einträge hinzufügen.
     (modify-services
      %desktop-services
      (guix-service-type
       config
       => (guix-configuration
           (inherit config)
           ;; (privileged? #f) ; new 2025-04-25
           (channels my-channels)
           (guix (guix-for-channels my-channels))
           (substitute-urls
            (cons* "https://substitutes.nonguix.org";
                   %default-substitute-urls))
           (authorized-keys
            (cons*
             (plain-file "non-guix.pub"
                         "(public-key (ecc (curve Ed25519)
  (q #C1FD53E5D4CE971933EC50C9F307AE2171A2D3B52C804642A7A35F84F3A4EA98#)))")
             ;;(local-file "./signing-key.pub")
             %default-authorized-guix-keys))))
      )))
   (bootloader (bootloader-configuration
                (bootloader grub-efi-bootloader)
                (targets (list "/boot/efi"))
                (keyboard-layout keyboard-layout)))
   (swap-devices (list (swap-space
                        (target (uuid
                                 "7aae4d4e-bbd1-4af7-a8e7-cf7c3f65724f")))))

   ;; Die Liste der Dateisysteme, die "eingehängt" werden. Die, zu den
   ;; Dateisystemen einzigartigen, Identifikatoren ("UUIDs") können durch das
   ;; Ausführen des Befehls "blkid" in einem Terminal erhalten werden.
   (file-systems
    (cons*
     (file-system
      (mount-point "/")
      (device (uuid
               "5edbc69f-592c-42e1-8a95-0d6b728225b3"
               'btrfs))
      (type "btrfs"))

     (file-system
      (mount-point "/boot/efi")
      (device (uuid "D6F3-2354"
                    'fat32))
      (type "vfat"))

     %base-file-systems))))
--- end system-config.scm

PPS: my suspend is
--- begin suspend.scm
(define-module (config packages suspend))

(use-modules
 (gnu packages bash)
 (guix build-system trivial)
 (guix gexp)
 (guix licenses)
 (guix modules)
 (guix packages)
 )

(define-public suspend
  (package
    (name "suspend")
    (version "0.1")
    (source #f) ; no external source
    (inputs (list bash))
    (build-system trivial-build-system)
    (arguments
     (list
      #:builder
      (with-imported-modules
       (source-module-closure
        '((guix build utils)))
       #~(begin
             (use-modules (guix build utils))
             (let* ((out (getenv "out"))
                    (bin (string-append out "/bin"))
                    (script (string-append bin "/suspend"))
                    (she-bang (string-append
                               "#!"
                               #$(file-append bash "/bin/bash")
                               "\n")))
               (mkdir-p bin)
               (call-with-output-file script
                 (lambda (port)
                   (display she-bang port)
                   (display "echo mem > /sys/power/state\n" port)))
               (chmod script #o755))))))
    (synopsis "Suspend command")
    (description "Provides a suspend command, which could be
privileged in a system configuration.")
    (home-page "https://codeberg.de/stefanK/stix";) ; not yet there
    (license public-domain)))

suspend
--- end suspend.scm

-- 
Kind regars,
S. Karrmann


> Gesendet: Mittwoch, 6. August 2025 um 21:55
> Von: "Tomas Volf" <~@wolfsden.cz>
> An: "Stefan Karrmann" <s.karrm...@web.de>
> CC: guix-devel@gnu.org
> Betreff: Re: Computing Guix derivation for 'x86_64-linux' takes ages... -> 3 
> proposals
>
> Stefan Karrmann <s.karrm...@web.de> writes:
> 
> > Dear all,
> >
> > this question was asked several times. But >Computing Guix derivation for 
> > 'x86_64-linux'< annoys really.
> >
> > Why do we need this so often?
> >
> > Of course, we need this, if we pull a new guix. If we do it, we know that 
> > it takes its time.
> >
> > But why do we need it with >guix system reconfigure< etc.pp.? We have a 
> > pulled
> > guix locally and ready. That's the one we want to use! Well, I see that 
> > >guix
> > system reconfigure< pulls new commits. But why? I don't want them.
> 
> Would you be able to share some more details about your configuration
> and setup in general?  It is some time since I have last used `guix
> system reconfigure' -- I only use `guix deploy' these days -- but I have
> to say I do not recall reconfigure doing a pull.  So this might be
> something specific to your setup?
> 
> Can you get reproducer in a virtual machine and share the configuration
> and commands to run?
> 
> > [..]
> > OPEN: How to handle local trees (i.e. -L directory)? Well, they add
> > new branches and leafs, maybe a new forest. They do not change the old
> > forest at all.
> 
> I do not think this is accurate.  You can use -L to deploy completely
> custom Guix -- that is how pre-inst-env works when using checkout of the
> Guix repository.  So while I agree that *usually* -L just adds new
> stuff, it very much *can* change "the old forest".
> 
> Tomas
> -- 
> There are only two hard things in Computer Science:
> cache invalidation, naming things and off-by-one errors.
>

Reply via email to