Benoit J - My mostly tech blog

Guix system configuration


In this post, I’m starting the analysis phase of migrating to Guix.

The first step is analyzing my current nix system configuration, and what I would need to do to port it to Guix.

My use cases

I run Nix, and soon Guix, on two types of desktops:

  1. At least one work laptop running Linux in a VM where I:
  2. My personal laptop, which has pretty much all of the above, with additional “fun” features:

software from my system configuration

The following is software part of my system configuration. They are really minimal, and required to get the system up. Some of these are needed on boot or requires special privileges.

nix Guix comments
((emacsPackagesFor emacsNativeComp).emacsWithPackages (epkgs: [epkgs.nix-mode])) default emacs + scheme mode this is not my full setup, but a minimal system configuration to be able to edit configuration files. I dont need native comp at the system config
libvterm-neovim emacs-vterm in nix, this neovim is the way to get the “so” for libvterm. useful for emacs vterm
nfs-utils = mounting nfs
git = this allows me to access my dotfiles repo
gnumake make my dotfiles need make to launch commands
gnupg = for smartcard setup
pinentry = for gpg setup. do I need additional pinentry-* packages?
lynx = decent text web browser
surfraw = quickly search the web
st abandon i’ll move this to my home config
vim abandon havent opened vim in ages. emacs is my vim
wget = simple way to download files
openvpn = system app
networkmanager-openvpn network-manager-openvpn integrates openvpn in network-manager
lxqt.lxqt-policykit lxqt-policykit polkit interface. I believe I need it for yk + gpg, but unsure
glxinfo mesa-utils describe video 3d capabilities
qmk-udev-rules N/A, create config I need to set thes udev rules myself. wondering if this could be a Guix package

system services enabled

I tend to take a similar approach to software for my services. I usually only have services that are not good fit for my home configuration.

nix guix comment
hardware.sane w/ airscan backends sane-service-type I use this to setup my scanner with airscan configuration
services.avahi w/ nssmdns avahi-service-type seems doing the same as nix
services.pcscd pcscd-service-type smartcard support (yubikey)
networking.networkmanager network-manager-service-type this is my go to network configurator
services.gvfs package gvfs usermounts for usb keys. could not find a service. unclear if i’m missing something
hardware.bluetooth bluetooth-service-type bluetooth service and tools
services.printing cups-service-type cups daemon redirecting to my network printer
services.fwupd iptables-service-type not exactly a match, but does the same result
virtualisation.docker docker-service-type container daemon
sound and hardware.pulseaudio pulseaudio-service-type sound daemon
services.xserver display manager sddm-service-type or slim-service-type I may need to modify my dwm package to install an Xsession file

Other system configuration

Additional configuration found in my nix system configuration.

nix guix comment
hardware.opengl unknown this enable opengl and dri with mesa. not critical early on, but speed up the UI
backlight control udev configuration udev rules to enable backlight control for the video group. maybe I can package this.
console.useXkbConfig use my X configuration for console too. I dont really use this.
xkbOptions = “ctrl:nocaps” set-org-configuration should be able to set this on X11 system config
synaptics.enable=false disable my touch pad. I do have another way to do this in my home config microcode-initrd from nonguix cpu specific microcode updates. even if this is a blob, it contains important fixes and security patches
kvm-intel unknown enable kvm kernel for intel

Some of these config are specific to my intel laptop. may need to be split once I setup for both work VM and personal desktop.

Compare with my old Guix config for any missing bits

Here is my older Guix system configuration files.

The only thing I’ve got in my Guix configurations and not in my Nix setup: openssh server.

Coming next

I need to do the exact same analysis for my home configuration. I told myself I would not install Guix before i’m done with the preparation.

Stay tuned!