Skip to content

Instantly share code, notes, and snippets.

@tang0n
Last active December 31, 2023 20:01
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save tang0n/2970dfcff813b31ea5bfee1e33aed60c to your computer and use it in GitHub Desktop.
Save tang0n/2970dfcff813b31ea5bfee1e33aed60c to your computer and use it in GitHub Desktop.
Using Guix Home vs GNU Stow + Guix Package Manager
*** TODO Decide on home env strategy
Time to think out some pros and cons for `guix home` versus stow:
+--------------+-------------------------------+-----------------------------------+
| Guix Home vs |Pros |Cons |
| GNU Stow + |Home: 7 |Home: 5 |
| Guix Package |Stow: 9 |Stow: 2 |
| | | |
+--------------+-------------------------------+-----------------------------------+
| Home & Stow |Distrobution agnostic, portable| |
| |& easy to version control with | |
| |git. | |
+--------------+-------------------------------+-----------------------------------+
| Home |Consolidates user-level |Package management is confusingly |
| |concerns including packages, |separate from guix package and |
| |shell configs, services, crons |sometimes obtrustive when used with|
| |& package/dotfile configs. |guix package. |
+--------------+-------------------------------+-----------------------------------+
| Home |Isolates all active |Adds a layer of complexity as |
| |configuration links as |changes to any config requires the |
| |immutable state, thus adding a |entire home config to be evaluated |
| |layer of security. |as a whole, including garbage |
| | |collected build files. |
+--------------+-------------------------------+-----------------------------------+
| Home |Changes to the home environment| |
| |can be previewed before | |
| |committing to them | |
+--------------+-------------------------------+-----------------------------------+
| Home |Every reconfigure is an |The specifics of what was changed |
| |appended record, so changes to |are limited to the time-stamp of |
| |the home configs are always |when they were changed and which |
| |"checked in" |channels were used. Not very useful|
| | |if you want to see what was |
| | |updated. |
+--------------+-------------------------------+-----------------------------------+
| Home |Configurations are central to | |
| |~/.config/guix and are s | |
| |intended to be programmatically| |
| |put together with Guile scheme | |
+--------------+-------------------------------+-----------------------------------+
| Home |How anything is configured, or | |
| |installed, for any reason is | |
| |limited only by your ability to| |
| |program it in Guile scheme. | |
+--------------+-------------------------------+-----------------------------------+
| Home | |Still relatively new and moving |
| | |fast enough to have to watch out |
| | |for changes. |
+--------------+-------------------------------+-----------------------------------+
| Home | |Many moving parts, harder learning |
| | |curve, "book heavy" and yet sparse |
| | |documentation. |
+--------------+-------------------------------+-----------------------------------+
| Stow |Separates concerns for shell | |
| |configs, services, cons & | |
| |package/dotfile configs. | |
+--------------+-------------------------------+-----------------------------------+
| Stow |Dead simple setup via symlinks | |
| |from a ~/.dotfiles folder, | |
| |including the ~/.config/guix | |
| |folder itself. There is not | |
| |much documentation as there | |
| |isn't need for it. | |
+--------------+-------------------------------+-----------------------------------+
| Stow |Is less opinionated & more |Is not automatically aware of the |
| |package-manager agnostic |guix .profile context and some |
| | |necessary changes that may need |
| | |updating |
+--------------+-------------------------------+-----------------------------------+
| Stow |Simplified environment version |You would have to remember to stage|
| |control if you just use git |+ commit changes faithfully after |
| | |each change to meet guix in |
| | |roll-back capability. Arguably, git|
| | |is not as easy to roll-back with. |
+--------------+-------------------------------+-----------------------------------+
| Stow |Utilizing guix package instead | |
| |of guix home for packages means| |
| |a better generation record for | |
| |your package changes | |
+--------------+-------------------------------+-----------------------------------+
| Stow |Mcrons are a simpler | |
| |implementation if they don't | |
| |have to be gexps. | |
+--------------+-------------------------------+-----------------------------------+
| Stow |As a simple symlink manager | |
| |stow can be used for managing | |
| |custom-built software as well | |
| |as config files. It simply | |
| |symlinks a directory | |
| |(recursively) to the parent | |
| |directory. | |
+--------------+-------------------------------+-----------------------------------+
| Stow |Configurations can be | |
| |cherry-picked by folder name | |
| |with stow/unstow without | |
| |needing to evaluate much else. | |
+--------------+-------------------------------+-----------------------------------+
| Stow |Versions/variations of | |
| |configurations or binaries that| |
| |stow can target are easy to | |
| |make via symantic file naming. | |
| |You can then easily stow/unstow| |
| |the desired version. | |
+--------------+-------------------------------+-----------------------------------+
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment