Environment Configuration with Guix Home

Summary

I am now using Guix Home for managing a portion of my system configuration. Its a pretty nice program made by Andrew Tropin. However, setting it up really emphasized the weakness of normal POSIX shells, just like most of the interaction between Guix and the shell environment. It is a pain to configure them for the following reasons:

  • Tens of spread out files sourced in unclear scenarios.
  • Everything is a string. Even structured data like lists.
  • Building up lists by prepending and appending is not reproducible and error prone.
  • Environment variables are always mutable and that can break stuff at any time.
  • Shells lack almost everything provided by a real programming language.

I'd like to fix this with something like scsh or using a lisp REPL for a shell, but it requires work to depart from the mainstream way of doing things.

Lessons Learned

  • Using Guix Services
  • POSIX Shell / ZSH Initialization