Last active
December 31, 2023 20:01
-
-
Save tang0n/2970dfcff813b31ea5bfee1e33aed60c to your computer and use it in GitHub Desktop.
Using Guix Home vs GNU Stow + Guix Package Manager
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
*** 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