It’s been busy, busy enough to keep me from writing as much as I would like! While my personal life has also been busy of late, there are a number of things that are brewing on the software side of things that I’m excited about!

NixOS

I performed a clean install of NixOS 23.05 to clear up some issued I’d been experiencing with Yubikeys and dual-booting. I have always been one to do a fresh install every couple years on each of my machines, it just feels cleaner. And with most of my configuration being declarative these days, doing so has never been easier!

Dual Booting with systemd-boot

It didn’t end up fixing the issues I was experiencing with os-prober, but inspired me to dig into how UEFI boots work to understand what I could do about it. I’m still by no means an expert, but I managed to come up with a pretty elegant solution with systemd-boot.

First some context. I have two drives on my tower. One containing an encrypted NixOS installation I use for development, and the other an Arch Linux installation I use for playing games. I like keeping things separate in this way, and using different drives means if it comes to it I can switch which drive boots in the BIOS, a workaround I have been leveraging for months.

Unfortunately, systemd-boot won’t auto-detect other linux partitions when they live on another disk. So I had to get creative:

fileSystems."/gamer-boot" =
  { device = "/dev/disk/by-uuid/XXXX-XXXX";
    fsType = "vfat";
  };

boot.loader.systemd-boot = {
  enable = true;
  extraEntries = {
    "arch.conf" = ''
      title Arch Linux
      linux /vmlinuz-linux
      initrd /amd-ucode.img
      initrd /initramfs-linux.img
      options root="UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" rw
      sort-key arch-linux
    '';
  };
  extraFiles = {
    "amd-ucode.img" = "/gamer-boot/amd-ucode.img";
    "initramfs-linux.img" = "/gamer-boot/initramfs-linux.img";
    "vmlinuz-linux" = "/gamer-boot/vmlinuz-linux";
  };
};

This does the following:

  1. Mounts the Arch boot partition to /gamer-boot/
  2. Copies the arch.conf boot entry (which I got from that mount) to the list of systemd-boot entries
  3. Copies the necessary files from that mount into the NixOS boot directory

Sure enough, booting my computer I am greeted with a list of NixOS generations to choose from, the active one automatically selected, with a special entry for “Arch Linux” sorted at the top. *chefs kiss*

Secrets with sops & age

I also took the opportunity to remove the gpg part of how I was managing secrets in conjunction with sops and sops-nix, and instead replace it with age. And what a breath of fresh air that was, age knows exactly what it is and does just that thing (encryption). Transitioning was painless, and setting up machines to be able to decrypt the secrets was orders of magnitude easier than with gpg.

mblaze.kak

I love mblaze. It’s such a wonderful, truly unixy tool. In fact I love most of the stuff that the author, Leah Neukirchen, builds; take a look at nq and xe as well. I’ve been using aerc for a while now, but like many fully-fledged clients I find it too rigid in it’s implementation. I’d rather be given the tools I need to stitch something together that fits the way I use email. And mblaze is exactly that!

Enter mblaze.kak, the newest in my collection of kakoune plugins! It’s early days still, but I’ve got it to the point where I can at least read my emails inside of kakoune. I’d show you what it looks like but… it’s my emails… sorry! I’m doing my best to keep the plugin lean, just the less opinionated bits, leaving users free to set it up in the way they prefer. I’ll definitely show some examples of how it could be setup though.

If the project interests you, you can subscribe to the mailing list. I will post an update there when it’s more usable.

minimal.kak

Speaking of kakoune, I’ve also created a minimal configuration for those that want to try the editor out! It will get you started with some sane defaults (which fortunately is much easier to achieve than with Vim), and also adds a :kaktutor command for you to get to know the editor1.

I’m still super happy with my choice to invest in kakoune, and I say this as someone who has read multiple textbooks on Vim (from back when I was a regular user). I remember being scared away by the prospect of configuring an editor in bash, but I’ve really come to appreciate that aspect. And all the reasons I stuck with it are still as true now as they were when I wrote about it

Obsidian CLI

If I get time, I’d really like to build out a small CLI tool that can assist editors in replicating the wikilinks functionality present in Obsidian. I’m still just mulling over it at this point, but I’d really like to have a better experience editing some of my vaults in kakoune, and I’d like to make that improved experience available to other editors as well to what extent I am able.

Secret project

I’ve also been busy on a project that I’m not ready to talk about yet! If all goes well, in the next couple years it will get some significant coverage in future posts, but for now this little teaser will have to suffice.


  1. Important to note that the TRAMPOLINE file this leverages was not written by me, and can be found in the kakoune repo ↩︎