phonon

The joy of ricing

The start

Recently I started switching my personal laptop over to NixOS, while at the same time giving Emacs a try, specifically doom-emacs. This has been an amazing success, and both are tools that I would never want to live without anymore. The experience learning to use doom-emacs was wonderful, with it's declarative package management, and sensible standard configuration it was quite nice to get used to. And the killer-features of emacs lived up to it's promise, with org instantly becoming my main note-taking application, something Logseq, Joplin, Zettlr, SiYuan and mdsilo couldn't do. magit also quickly overtook my CLI-git commands quickly, and elfeed my RSS needs. The general extensibility of Emacs and incredible buffer- and window-management made it the only way I wanted to use my computer from now on. This started me down the road of a tiling-window manager…

Now all this emacs-curiosity was happening on a NixOS system, albeit an incredibly simple and basic NixOS system. I had given NixOS a spin after seeing it's praises being sung nearly everywhere, and I was curious. I had before tried to manage some of my systems with a dotfiles-repo, and made attempts at writing a shell-setup script should I have to setup a new system, but these efforts were half-assessed and incomplete. So what Nix offered was interesting. Declarative system configuration is an incredibly appealing idea. Not just for being able to reproduce systems, but for me also being able to see what's inside a system. Knowing it's full contents as it were. I don't think I could have realistically made the switch to a tiling-window manager without it.

The hook

Given the security and comfort that Nix offers with regards to breaking my system config, and my recent Emacs discovery, I was convinced to try my hand at a tiling window manager, namely Hyprland. It would revolutionize my workflow and skyrocket my productivity. The only cost? My time. Linux detractors often like to sneer that Linux is for people who don't like to use their system for work, but who like to work on their system. To a certain extent this is true. Of course you have to learn entirely new tools, new ways of working, and new environments. However, this allows you to shape a system to your needs and for some people claw back some of that lost time. For others it's just a hobby. I'm firmly in that second camp I should note, I don't need Linux, and my work is bound to Windows sadly enough. But I enjoy using it, and it's my preferred tool for everything personal. So for wanting to try a tiling tiling window manager, and configuring it in Nix, this was going to cost a lot of my precious time.

So I started, painfully at first, cautiously optimistic later. One of the biggest hurdles was understanding how the hell Nix actually worked. Nix is somewhat opaque, and definitely not intuitive for those that haven't studied computer science, and those for whom the term 'Hermeticity' means something related to a crab maybe. I mostly learn by doing, particularly in this area, and I do so a lot. In the end, Nix has an amazing ecosystem, with a wealth of resources (Tweag, Determinate Systems, FlakeHub, MyNixOS, HomeManager), and leveraging those along with studying and copying other people's config it worked out.

Nix configuration was not the only tool that I had to learn. Committing yourself to a window manager like Hyprland, also means you have to completely replace a whole suite of applications to get a reasonably functioning desktop. A notification daemon, a bar, network manager, volume control, application launcher, image viewer, file manager, clipboard manager, screenshot utility, etc. Some of these applications don't just come with a new work flow, but they also have to be setup and configured. My bar for example (powered by eww), is configured with yuck a lisp-like language and css, something I have 0 experience with. These are all things I had to get used to just to be able to configure my environment. Not to mention having to read through docs to learn what can actually be configured and how.

Despite how painful the process could be at times, configuring your system just to your liking is an amazing feeling. Personalisation is generally something that we all enjoy, it's why we have a billion choices for clothes, why we put patches on backpacks and stickers on laptops. To make it feel like our own. This is similar for ricing your setup. With ricing you also get the added benefits of not just being aesthetic but changing how you interact with your system on a day-to-day basis, deepening this connection and changing your habits around your rice.

The end

I have spent a significant amount of time configuring my system to the point where I feel satisfied now, from a usability and aesthetic point of view. I now know how my tools work much better, and adjustments from there will be must faster and easier, but the initial investment is not to be understated. The pay-off, of having so little stand in my way when using my most important tools, is also not to be understated. The switch to a tiling WM was definitely worth it, and learning these new tools (including Nix) has been immensely interesting.

#Linux #Nix #Ricing