The system configuration for %systemchoice "desktop" ( ... set in config.scm) has been tested via guix system build:
successfully built /gnu/store/33whk4r85fdnnqxajcd5ajf1a3sp6z6h-profile.drv
building /gnu/store/yrnxy79agdxnggy3apkdrzwr4c1615dj-activate-service.scm.drv...
successfully built /gnu/store/yrnxy79agdxnggy3apkdrzwr4c1615dj-activate-service.scm.drv
building /gnu/store/fi1bjspmj0w8d7d95v4rs01qpp71w279-activate.scm.drv...
successfully built /gnu/store/fi1bjspmj0w8d7d95v4rs01qpp71w279-activate.scm.drv
building /gnu/store/f72wivwc82r0f2s02xppbyb32ffahzil-boot.drv...
successfully built /gnu/store/f72wivwc82r0f2s02xppbyb32ffahzil-boot.drv
building /gnu/store/5fy6ckc0rsj1240ylvvf65cal1ps02h5-system.drv...
successfully built /gnu/store/5fy6ckc0rsj1240ylvvf65cal1ps02h5-system.drv
/gnu/store/x72dc187zwnyzsm758pbyf1x2gm1qjgf-system
and successfully builds every package, module, and service - including Nvidia Drivers.
The Guix Home configuration (home.scm) builds as well:
building /gnu/store/9w5ns912bkkd28hpy66swbh9j87fg0ai-provenance.drv...
building CA certificate bundle...
listing Emacs sub-directories...
building /gnu/store/0xgpl2vcv5jp2wfq7lk9psrfv6zp9k1h-files.drv...
building fonts directory...
generating GdkPixbuf loaders cache...
building GHC package cache...
generating GLib schema cache...
creating GTK+ icon theme cache...
building cache files for GTK+ input methods...
building directory of Info manuals...
building database for manual pages...
building XDG desktop file cache...
building XDG MIME database...
building profile with 149 packages...
building /gnu/store/zp9sz0ycg7rqxalchm1lpv2z1ylk7v80-home.drv...
the only issue is that I had to comment out steam-nvidia, as there are seemingly no Rust substitutes, and building multiple Rust versions from source fails and crashes the entire build.
This GNU Guix Configuration pre-configures a few useful channels to make certain Packages available that are otherwise missing in the official GNU Guix repository, these include:
- nonguix, this channel provides nvidia drivers, firmware, and a full Linux kernel.
- jonabron, this channel provides games, emacs packages, window managers, discord, and more.
- emacs, this channel provides melpa emacs packages.
- guix, this is the default and official guix channel.
- pantherx, this channel provides various packages. [Currently Disabled]
Clone this repository via git clone https://github.com/nixpup/geex, then move the files to their respective destinations:
cp channels.scm ~/.config/guix/channels.scmcp channels.scm /etc/guix/channels.scmcp -r files /etc/guix/filescp -r systems /etc/guix/systemscp home.scm /etc/guix/home.scmcp config.scm /etc/guix/config.scm
Don't forget to import the Nonguix Key via sudo guix archive --authorize < /etc/guix/files/keys/nonguix.pub, as well as the panther key via sudo guix archive --authorize < /etc/guix/files/keys/panther.pub.
Then you can update Guix and its Channels by invoking guix pull, and afterwards check whether all Channels were correctly set up with guix describe. Make sure that "~/.config/guix/channels.scm" is the first item in your "$PATH".
Update Bash's Guix binary and configuration with hash guix after guix pull is done.
Afterwards, you need to pick your systems configuration. For that, edit the /etc/guix/config.scm file and change the "%systemchoice" variable, for example like this:
(define %systemchoice "desktop") ; Available options: "desktop", "laptop".
; ... rest of the File.This will then pick either the /etc/guix/systems/desktop.scm or /etc/guix/systems/laptop.scm system configuration file depending on your needs. The main difference is that the Laptop configuration does not come with Nvidia Drivers, unlike the Desktop Configuration.
To apply the system configuration, run sudo guix system reconfigure /etc/guix/config.scm. Similarly, to reconfigure or apply the Guix Home configuration, run guix home reconfigure /etc/guix/home.scm.
If you copied all the files of this repository to their respective target directories, you can test the Guix Home environment this configuration sets up for you inside a container via guix home container /etc/guix/home.scm. This gives you a minimal environment with only the packages, configuration files, variables, and settings provided by the home.scm file.
