This is our opinionated, minimalist GNU Guix configuration. It features [[https://sr.ht/~abcdw/rde][ =rde= ]], Emacs (evil mode) and various Wayland applications.
[[./images/desktop.jpeg]] [[./images/apps.jpeg]]
** Applications We have patched some of our favorite applications with GNU Guile support and also created some tools from scratch in Guile, for example: |---------------+--------------------------------+--------------------| | Application | Description | Links | |---------------+--------------------------------+--------------------| | =dwl-guile= | dynamic tiling window manager | [[https://github.com/engstrand-config/dwl-guile][repo]], [[https://github.com/engstrand-config/home-service-dwl-guile][home service]] | | =dtao-guile= | a minimal status bar | [[https://github.com/engstrand-config/dtao-guile][repo]], [[https://github.com/engstrand-config/home-service-dtao-guile][home service]] | | =farg= | system colorscheme manager | [[https://github.com/engstrand-config/farg][repo/home service]] | | =bemenu-prompt= | create =bemenu= prompts in Guile | [[https://github.com/engstrand-config/guix-dotfiles/blob/main/engstrand/utils/bemenu-prompt.scm][source]] | |---------------+--------------------------------+--------------------|
We like configuring as much as possible (WM, status bar etc.) in Guile, since it brings a unified approach to the configuration of our computing environment.
** System level configuration We own a number of desktop/laptop computers and they all have their own configuration file in =./engstrand/systems=. In the system-specific configuration file we define hardware-specific settings such as mount points for drives, LUKS encryption, the resolution and refresh rate of monitors and more.
** User-level configuration Our user-level configurations reside in =./engstrand/configs=. This includes name, email address, GPG public key, default applications, personalized appearance of the window manager etc.
** Reconfiguring the system The entry point for applying a configuration to our =rde=-powered Guix system is =~/.config/guix/config.scm=, so in order to reconfigure the system we run
RDE_USER=$USER \ RDE_TARGET=system \ sudo guix system reconfigure ~/.config/guix/config.scm
and similarly, to reconfigure the home environment
RDE_USER=$USER \ RDE_TARGET=home \ guix home reconfigure ~/.config/guix/config.scm
So, what is in =~/.config/guix/config.scm=? That depends on the user and system configuration we would like to apply. For example, on the desktop system named =ghost= that the user =johan= uses, =config.scm= contains the following:
(use-modules (engstrand reconfigure)) (make-config #:user "johan" #:system "ghost")
** Building an installation ISO The =build-iso.sh= script builds a GNU Guix System ISO that has
** Usage *** Bitwarden CLI setup using rbw Passwords for e.g. git send-mail are fetched from Bitwarden using the =rbw= binary. On newly installed computers, you need to first register your device to the Bitwarden API.
*** Qutebrowser adblock To improve the adblock in qutebrowser, you need to install the Brave adblocker. This needs to be manually downloaded from pip (for now).
Run =pip install adblock=, followed by =:adblock-update= in qutebrowser.