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
wegei8
July 27, 2025, 5:33am
2
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)
So I managed to make the theme work with:
home.scm
```
(home-environment
(packages
(list (list glib “bin”)
gnome-tweaks
gnome-shell-extensions
nordic-theme
)
...
(services
(list
(simple-service 'gtk-theme-env
home-shell-profile-service-type
(list (plain-file "gtk-theme-profile"
"export GTK_THEME=Nordic")))
))
The available nordic-theme seemed a bit outdated (not really sure about this) so I customized its definition
(define-module (packages nordic-theme)
#:use-module (guix build-system copy)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:))
(define-public nordic-theme
(let ((commit "b50d932713915cb29b25fa54a66286a7170861e6")
(revision "0"))
(package
(name "nordic-theme")
(version (git-version "2.2.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/EliverLara/Nordic")
(commit commit)))
(sha256
(base32
"0l0i2jc0la0q9qr9b78bycjyxcvpj2pfbafvb20hpp5v4j2zdy1k"))
(file-name (git-file-name name version))))
(build-system copy-build-system)
(arguments
`(#:install-plan
`(("." "share/themes/Nordic"
#:exclude ("README.md" "LICENSE" "Art/" "package.json"
"package-lock.json" "Gulpfile.js" ".github")))))
(home-page "https://github.com/EliverLara/Nordic")
(synopsis "Dark Gtk3.20+ theme using the Nord color palette")
(description "Nordic is a Gtk3.20+ theme created using the Nord color
palette.")
(license license:gpl3))))
1 Like