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.
I run Nix, and soon Guix, on two types of desktops:
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.
|((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|
|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|
|abandon||i’ll move this to my home config|
|abandon||havent opened vim in ages. emacs is my vim|
|wget||=||simple way to download files|
|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|
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.
|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|
|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|
Additional configuration found in my nix system configuration.
|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
|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|
|disable my touch pad. I do have another way to do this in my home config|
|hardware.cpu.intel.updateMicrocode||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.
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.
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.