Merge the two Guix Home configurations into one source of truth #1

Open
opened 2026-08-18 18:08:58 +00:00 by htayj · 0 comments
htayj commented 2026-08-18 18:08:58 +00:00 (Migrated from github.com)

Problem

There are two Guix Home configurations in guix-config/, and it is not
obvious which one a given host should use:

  • home-configuration.scm
  • home-workstation-configuration.scm

Both build a home-environment from the same shared module
(modules/tay/home-common.scm), appending %core-home-packages /
%core-home-services / %base-home-services. They differ only in their
extra package lists and a few workstation-only services (syncthing, mpd,
kwallet, the Signal desktop entry).

k8-plus-install.md documents home-workstation-configuration.scm as
the one to reconfigure from, but nothing in the repo enforces or even
states that, so it is easy to reconfigure from the wrong file by mistake
and silently swap out a large part of the profile.

This actually happened: a host was reconfiguring from
home-configuration.scm for several generations before it was noticed.

Proposed work

Reconcile the two into a single source of truth. Roughly:

  1. Decide whether home-configuration.scm still describes a real host or
    is stale. If stale, delete it.
  2. If both are needed, factor the genuinely shared parts into
    modules/tay/home-common.scm and leave only host-specific deltas in
    the per-host files.
  3. Consider naming the files after their hosts so the intended target is
    unambiguous.
  4. Add a short note in README.md (or extend k8-plus-install.md)
    stating which config each host reconfigures from.

Package delta to triage

86 package specifications appear in home-configuration.scm but not in
the workstation config or the shared core. Before deleting anything,
these should be triaged into "move to core", "move to workstation", or
"drop":

acl autorandr bind:utils bison bluedevil blueman cl-charms cl-croatoan
cl-mcclim clisp cmake cutter cvs dico docker dvdbackup emacs-guix
emacs-slime emacs-treesit-auto filezilla flex font-gnu-unifont
font-misc-misc fontconfig glibc-locales gnome-font-viewer gnuplot
graphviz guile-gcrypt interception-tools kmonad less librewolf make
ncurses pandoc parallel pipx podman python-gyp radare2 recutils rizin
rust:cargo sbcl sbcl-alexandria sbcl-slime-swank sbcl-stumpwm-*
screen setxkbmap shell-functools steam sword texinfo
texlive-scheme-full texlive-scheme-small texlive-texinfo tree-sitter
tuxemon unzip v4l2loopback-linux-module xdot xev xiphos xmodmap
xrandr xset

Notes from the initial pass:

  • stumpwm and the sbcl-stumpwm-* contribs are also installed by the
    system config, so the Home entries may be redundant.
  • xmodmap / setxkbmap look like pre-kanata leftovers. The live
    keyboard path is the kanata shepherd services plus the Space Cadet
    XKB layout under .config/xkb, which live in the shared core.
  • vim and htop have already been carried over to the workstation
    config.

Also worth fixing

guix home reconfigure currently needs --allow-downgrades because the
pulled tay channel is older than the commit recorded in an earlier
generation. A guix pull should clear this; it is unrelated to the merge
but shows up in the same workflow.


Imported from GitHub issue/PR. Originally posted by htayj on 2026-08-18T18:08:58Z.

## Problem There are two Guix Home configurations in `guix-config/`, and it is not obvious which one a given host should use: - `home-configuration.scm` - `home-workstation-configuration.scm` Both build a `home-environment` from the same shared module (`modules/tay/home-common.scm`), appending `%core-home-packages` / `%core-home-services` / `%base-home-services`. They differ only in their extra package lists and a few workstation-only services (syncthing, mpd, kwallet, the Signal desktop entry). `k8-plus-install.md` documents `home-workstation-configuration.scm` as the one to reconfigure from, but nothing in the repo enforces or even states that, so it is easy to reconfigure from the wrong file by mistake and silently swap out a large part of the profile. This actually happened: a host was reconfiguring from `home-configuration.scm` for several generations before it was noticed. ## Proposed work Reconcile the two into a single source of truth. Roughly: 1. Decide whether `home-configuration.scm` still describes a real host or is stale. If stale, delete it. 2. If both are needed, factor the genuinely shared parts into `modules/tay/home-common.scm` and leave only host-specific deltas in the per-host files. 3. Consider naming the files after their hosts so the intended target is unambiguous. 4. Add a short note in `README.md` (or extend `k8-plus-install.md`) stating which config each host reconfigures from. ## Package delta to triage 86 package specifications appear in `home-configuration.scm` but not in the workstation config or the shared core. Before deleting anything, these should be triaged into "move to core", "move to workstation", or "drop": ``` acl autorandr bind:utils bison bluedevil blueman cl-charms cl-croatoan cl-mcclim clisp cmake cutter cvs dico docker dvdbackup emacs-guix emacs-slime emacs-treesit-auto filezilla flex font-gnu-unifont font-misc-misc fontconfig glibc-locales gnome-font-viewer gnuplot graphviz guile-gcrypt interception-tools kmonad less librewolf make ncurses pandoc parallel pipx podman python-gyp radare2 recutils rizin rust:cargo sbcl sbcl-alexandria sbcl-slime-swank sbcl-stumpwm-* screen setxkbmap shell-functools steam sword texinfo texlive-scheme-full texlive-scheme-small texlive-texinfo tree-sitter tuxemon unzip v4l2loopback-linux-module xdot xev xiphos xmodmap xrandr xset ``` Notes from the initial pass: - `stumpwm` and the `sbcl-stumpwm-*` contribs are also installed by the system config, so the Home entries may be redundant. - `xmodmap` / `setxkbmap` look like pre-kanata leftovers. The live keyboard path is the `kanata` shepherd services plus the Space Cadet XKB layout under `.config/xkb`, which live in the shared core. - `vim` and `htop` have already been carried over to the workstation config. ## Also worth fixing `guix home reconfigure` currently needs `--allow-downgrades` because the pulled `tay` channel is older than the commit recorded in an earlier generation. A `guix pull` should clear this; it is unrelated to the merge but shows up in the same workflow. --- Imported from [GitHub issue/PR](https://github.com/htayj/src/issues/1). Originally posted by [htayj](https://github.com/htayj) on 2026-08-18T18:08:58Z.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
tay/src#1
No description provided.