This is my latest attempt at a literate configuration.
#+begin_note
This is in the very early stages of an attempt to do this. And usually I get frustrated and give up quite early on. I'll try and get small bits and pieces in here one at a time.
Here is the command that converts this file into my home configuration. This calls [[file:../guix.org][Guix]] shell with /just/ the =emacs-next= package installed and runs [[file:../emacs.org][Emacs]] to tangle this file. When tangling is done it runs guix home to configure my environment.
For the moment this doesn't do ~guix home reconfigure~ but ~guix home build~ instead. I'm still getting this up to the point where I can actually use it.
This is a random assortment of environment variables that I like to have defined for various reasons.
The =LESS= environment variable specifies the default command-line arguments to pass in to =less= whenever it is run. I've gotten quite used to these:
#+ATTR_HTML: :class short-dl
- =F= :: Causes =less= to exit right away when there is less than one screen of text to display.
- =X= :: Prevents the screen from being cleared away when =less= exits (it does more, but this is why I use it)
- =R= :: Displays ANSI color escape sequences to be rendered as normal, instead of as readable characters. In other words it lets =less= display colored text instead of displaying escape sequences.
- =S= :: Truncates long lines instead of wrapping them. Makes it easier for me to read.
- =i= :: This causes any searches using =/= to become case-insensitive so that the search term “done” will match “done”, “Done”, “DONE”, and any other combination of upper- and lowercase letters.
I use the =MY_GUIX_CONFIGURED= just as an indication that [[file:../guix.org][Guix]] home actually configured my user profile. It's not actually necessary for anything.
Because I use [[file:../guix.org][Guix]] on top of another distribution, this variable needs to be set in order for locales to work properly for both package installed through Guix and ones installed by the host distribution.
Again because I use Guix on top of another distribution this variable ensures that the things I have stored away in my usual data directory get included, not just the ones Guix defines.
I was working with =git= recently, splitting some utilities out into their own repository from a bigger repository using =filter-branch=. Apparently =filter-branch= has been deprecated because it's easy to make mistakes and there's better alternatives now. But =filter-branch= is what I know and my needs are simple, so I disable that warning.
This brings it all together. The =<<services>>= is where all the services defined throughout this document are placed, and the last few lines return my home environment.