Customizing gnome using guix-home

Hi everyone!

I’m truly struggling to make my guix GUI look more cool/modern. I like the nordic theme (found through toys.whereis.social) for example, so I installed it in my guix home as package, and I also used 3 ways to set it up:

  • gnome-tweaks: I can only use nordic in one of the settings not all of them. Even when I change that setting nothing happens

  • I installed (list glib “bin”) which contains gsettings and run the normal commands you would use to set up the theme and nothing changed

  • I used a service I found posted on r/guix to try to setup everything from guix home with dconf

None of the 3 approaches work. I have evaluated moving to sway where @daviwil has video tutorials, or even going to Hyprland. But I would like to keep things simple and just customize my gnome from my guile files.

Any tutorials, ideas, tips on this?

1 Like

What service did you use?

(define (dconf-load-gexp settings)
  #~(begin
      (use-modules (ice-9 popen))
      
      (define (alist-value-print value)
        (define (list-vals lv) (string-join (map alist-value-print lv) ", "))
        ((@ (ice-9 match) match) value
          [#t "true"]
          [#f "false"]
          [(? string? str) (format #f "'~a'" str)]
          [(entries ...)
           (format #f "(~a)" (list-vals entries))]
          [#(entries ...)
           (format #f "[~a]" (list-vals entries))]
          [v (format #f "~a" v)]))
     
      (define (alist->ini al)
        (string-concatenate
         (map
          ((@ (ice-9 match) match-lambda)
            [(top-level-path entries ...)
             (format #f "[~a]~%~a~%" top-level-path
	             (string-concatenate
		      (map
		       ((@ (ice-9 match) match-lambda)
		         [(var value)
		          (format #f "~a=~a~%" var (alist-value-print value))])
		       entries)))]) al)))
      
      (let ([dc-pipe (open-pipe* OPEN_WRITE #$(file-append dconf "/bin/dconf") "load" "/")])
	display (alist->ini '#$settings) dc-pipe)))

(define home-dconf-load-service-type
  (service-type (name 'dconf-load-service)
		(extensions
		 (list
		  (service-extension
		   home-activation-service-type
		   dconf-load-gexp)))
		(default-value '())
		(description "Loads an Alist of INI Dconf entries on activation")))

(service
    home-dconf-load-service-type
    '(("org/gnome/desktop/interface"
       ("gtk-theme" "Nordic")
       ("icon-theme" "Papirus")
       ("cursor-theme" "default") ; or whatever you prefer
       ("color-scheme" "prefer-dark"))

      ("org/gnome/desktop/wm/preferences"
       ;; This is for window decorations (title bars)
       ("theme" "Nordic"))

      ;; This section is for the GNOME Shell theme itself.
      ;; It requires the "User Themes" extension to be enabled.
      ("org/gnome/shell/extensions/user-theme"
       ("name" "Nordic"))))

Plus the due module imports. (taken from a service I saw in r/guix)