~elis/blog/

Computing contrast colors without dart-sass

Back in 2021 I wrote about dynamic CSS color themes with similar contrasts, where I used a SCSS function to automatically adjust colors to meet the WCAG 7:1 contrast ratio against both a light and a dark background. The idea was that you specify the intent — the hue you want — and the build system derives the actual color that achieves sufficient contrast.

That worked well, but it required dart-sass. Hugo’s built-in LibSass was removed in Hugo 0.128, leaving dart-sass as the only SCSS transpiler. Getting dart-sass into the Nix build required a symlinkJoin bundle that wrapped Hugo with dart-sass on its PATH — not terrible, but an extra moving part in both devshell.nix and packages/default.nix.

Read On →

NixOS ❄: Remote unlock of encrypted ZFS over SSH

This is a follow-up to my earlier post: Encrypted ZFS mirror with mirrored boot on NixOS.

At the end of that post I briefly mentioned that I configured remote unlocking of my encrypted ZFS pools over SSH on boot, linking off to the NixOS wiki. The wiki page is now quite outdated and the approach it describes no longer works well with modern NixOS, which uses a systemd-based initrd by default. This post covers the current way to do it.

Read On →

My experience of migrating from Google G-Suite to ProtonMail

For about 9 years, I’ve been a customer of Google G-Suite, using it for email, file storage, and photos. I’ve never fully trusted them, however I have always claimed the following.

As a paying customer, I hope that they mine my data less than they do for free users.

There’s a lot of uncertainty in that sentence. Words like hope and less aren’t exactly reassuring, and there’s no proof it’s actually the case either. With a recent price increase warning at renewal time and the current state of politics between the EU and USA, I decided to switch to an EU provider.

Read On →

Migrating from ZFS mirror to RAIDZ2

For a long time I’ve been running my storage on a 2-disk ZFS mirror. It’s been stable, safe, and easy to manage. However, at some point, 2 disks just aren’t enough, and I wanted to upgrade to RAIDZ2 so that I could survive up to two simultaneous disk failures.

I could have added another mirror, which would have been simple, and this setup would allow two drives to fail, but not any two drives. I wanted the extra safety of being able to lose any two drives.

Read On →

Elis Tempeh v1.0

Tempeh. Ever heard of it? It’s a traditional Indonesian food made from fermented soybeans. Packed with protein and a unique nutty flavor, tempeh is a fantastic meat substitute for vegans and vegetarians alike.

In this post, I’ll guide you through what tempeh is, how to make it at home, and tackle some of the common challenges, like maintaining the right fermentation temperature. So, if you’ve ever thought about giving tempeh-making a try, let’s dive in!

Read On →

Back from Hyprland to Sway

After a brief experiment with Hyprland, I’m back to using Sway. My experiment lasted less than a month, as I hoped Hyprland’s window selector would resolve my window-sharing woes.

It turns out it wasn’t, because the first week back at work I had the need to share a slideshow in full screen. Then it doesn’t matter if you can select a window anymore. So my workarounds with Sway would have worked in that use case while my Hyprland set up… didn’t.

Read On →

Switching from Sway to Hyprland

Introduction

After four years with Sway, I’ve decided to transition to Hyprland. My journey from EXWM to Sway began about four years ago, and I documented the experience in this post three years ago. While Sway has served me well, it has its limitations that I’ve used hacks and workarounds to circumvent.

The Limitations of Sway

One major drawback of Sway is its screen sharing capabilities. Although I managed to get screen sharing somewhat functional, it only allows sharing the full screen.

Read On →

Prune gh-pages branches using GitHub Actions

This website is hosted on GitHub Pages, built using nix and hugo with a custom theme that I maintain. I have automated updates for the nix flake to get new versions of hugo and nixpkgs, which applies to both my theme and the website itself.

This automation generates numerous commits and deployments to the gh-pages branch, mainly due to minor version bumps of hugo and other changes to the theme. While this hasn’t been a problem for my static website, which primarily consists of text, a recent addition has created some challenges.

Read On →

NixOS superpower: specialisations

NixOS has a lot of configurability and features. One feature that I’ve known about for a while that I think is both really cool, but also a bit lesser known is the ability to have declarative Specialisations. To me, this is a superpower of NixOS that I have a hard time to see any other Linux Distribution having.

What’s a Specialisation?

The name doesn’t do it justice, it’s a bit of a weird name for it. However I couldn’t come up with a better name for it either.

Read On →

A personal adventure with hot beverages

My history with coffee

I’ve never been into coffee, every time I’ve tried them as a child or young adult they have been terrible. They have just been bitter and it’s not a taste profile I to this day enjoy at all.

I have, a couple of times encountered coffee that friends have made that actually weren’t that bitter. So my reaction to it has managed to reach the level of “this isn’t terrible”. Not terrible isn’t a great review though, not really something that one gets back to right away.

Read On →