2024-04-27 11:49:26
I tried out Nix and Home manager a couple weeks ago after signing
up for vern.cc. The experience was good, however I can't imagine
using it for my primary dotfiles management for the following
reasons:
- It creates symlinks for those original config files. Programs
that modify their own config files (they shouuld, in fact, have
very good reasons to do so and should rightfully be allowed)
will not be able to. And what's worse that -- fine, I modify it
myself -- I don't even know what they were going to change,
because the filesystem (source files) are *readonly*. So the
program tries to modify the files (sometimes even without
my knowledge) and *I do not know what was the modification*.
- It's not very portable and lightweight on machines that do not
use Nix. With yadm, or simpler dotfiles management techniques,
the original files are still there, it's as if the dotfile
manager did not exist. With yadm/`git init ~` tracking my
dotfiles on my primary machine, when I switch to another
machine I can simply clone the dotfile repo and copy/symlink
the files myself, without needing the dotfile manager.
Now it does come with its benefits, obviously. For me, most
notably:
- Declarative listing of packages to install. This makes what I
am already doing streamlined and standardized, ie, I use a
document to note down the list of packages I have manually
installed and which package manager is used to install it,
along with any additional notes every time I switch to a new
laptop or install new software.
- Bootstrapped setup for the entire system. I currently rely on
handwritten shell scripts that check system conditions in a
manual logic (but automatic process), such as for installing
emacs and doom emacs. These scripts require maintenance.
Then, several days ago, I came across an article on Lobste.rs
that suggested there is more concern to Nix than I had expected.
https://lobste.rs/s/0qvtim/open_letter_nixos_foundation
Perhaps I just leave it be for now and see how the dust settles
on that front? It's not like there's troubles I currently
experience with yadm right now anyway.
Fast forward to today, I was hanging about (lurking!) soem
libera.chat channels, Guile was mentioned in the #emacs channel.
I suddenly remembered Guix, a GNU package manager that allows
Guile scripting which I briefly looked into, back a year ago when
attempting to find a secondary lightweight package manager for my
new MacOS system (BTW- I ended up with NetBSD's pkgsrc).
I looked at Guix today. The demo screen recording used the
terminal *from within emacs*. Sweet, GNU all the way then?
My primary motivation in looking at Guix is the dream of having a
Scheme-like langauge for system configuration, that can
*hopefully* be just as good as Nix currently is for some core
features, lack a few extra features, and solve some pain points I
had with Nix (described above) for other aspects. The ideal
situation is being able to {1} use Guix as my "primary" secondary
manager for all personal machines I use (hence requiring Guix to
be lightweight and easily portable), {2} Use Guile for
dotfile/package configuration, and {3} still allowing a some sort
of "archive" I can easily extract in case I would like to make
use of some of these configuration selectively and some other
system (without setting up the entire thing like a new machine).
This page seems to be of interest:
https://guix.gnu.org/en/cookbook/en/html_node/System-Configuration.html
I am still reading through everything, so I have not yet arrived
at a conclusion regarding Guix.
Although, again, at the end of the day, yadm + my bootstrap
scripts + personal notes on the list of installed packages works
*just fine* right now. Perhaps I am only dreaming of a
hypothetical system that can sweepingly cover all those use-cases
into one streamlined system...
2024-04-27 12:07:47
On another note -- I feel like I've found my perfect sort of
music for working with!
piano covers of pop EDM.
Oh and, watching Protesilaos videos as part of my daily
youtube binge, the urge to go back to emacs grows stronger every
day. I'm just indecisive on whether to give up trying to make
evil mode work nicely with everything else, or find a good way to
create the same keybind but perform different actions based on
context. One thing I discovered today I miss from emacs
(currently in vim/neovim): input methods! In emacs I get to have
a built-in, interactive and elaborate input selection system,
without needing completion plugins etc, for a whole host of
languages and input methods such as Unicode, TeX, Emoji (Emacs
29), which I find most particularly useful.
That's all for today, remembering to stay hydrated and *don't let
distractions get in the way of your path to clarity*.