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…
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.…
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…
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…
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…
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…
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…
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.…
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…
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…
As artificial intelligence (AI) continues to advance, concerns have been raised about the potential dangers of AI becoming too powerful and taking over human civilization. In a recent interview, entrepreneur and CEO Elon Musk expressed his concerns about the risks associated with developing super-intelligent AI. However, his views were challenged by Larry Page, co-founder of Google, who referred…
NixOS is a Linux-distribution that may be source-based, but it has a binary cache that covers things so you generally don’t need to compile things, things tends to be cached. However, depending on how you configure your system, you may trigger compiles depending on what you do. So a thing I do is that I run Emacs 29 with the native-comp patches that is wayland native with the pgtk-branch.…
For over 10 years I’ve used Kodi on a separate PC connected to a TV to play back local media. A couple of weeks ago everything changed in a matter of days. I listened to Late Night Linux – Episode 179 where they talked about Jellyfin . I have looked into Jellyfin before, however I’ve disregarded it due to the lack of app for LG webOS. This changed because the podcast episode told that…
Back in 2017, this fairly small company Purism launched a crowdfunding on their own crowdfunding platform for their future phone known as Librem 5 . I went back and forth a bit, I thought through some of the history about the company and decided that I thought they may deliver some day. At least I wanted to support the effort to make a modern Linux that could fill the hole that the demise of the…
This blog is built with Emacs, SCSS using Nix and deployed as static files to GitHub Pages. This blog also has quite some colors due to the syntax highlighting for code that is performed using CSS rules on HTML classes. So in total I have 15 different colors defined, in which four of them is background and foreground colors, two of them is related to link and visited link colors. Then I have nine…
I’ve been an Emacs user for 13+ years, during this time I’ve been using org-mode on and off for different thing. Some examples where I currently use org-mode: Deployment of this website Making of presentation slides Project read me files Notes files Time reporting I’ve tried to use it for to do’s but never really managed, partly because I wanted to have a good interface for…
Since I’ve started using NixOS about four years ago I haven’t really used any tools to do central deployments of machines. But I’ve always read and known that NixOS is excellent at this. NixOS can easily build another systems configuration, then copy the system to the target systems nix store and then activate it there. Despite knowing all this, I haven’t gotten around to…
Switching to Wayland has it’s side-effects, one of which is the improved security from X11 where applications can’t just randomly spy on each other at any point. This is both good news and bad news. The good news: Applications can’t just randomly spy on each other. The bad news: Things like global hot-keys in for example Mumble won’t work. Back from complaining to actually…
Today my work day didn’t turn out the way I expected. It started like a normal day, I woke up around the regular time, did my morning routine, sat at my desk and started my work-issued laptop. It booted up just fine, I connected it to my Ultrawide display, started going through Slack and Email and catch up on some news while drinking my morning tea and waking up. Then after around an hour of…
Getting screen sharing to work on Wayland seems to be surprisingly hard. Maybe it is compared to X11 that doesn’t require any additional setup at all. To have working screen sharing on Sway you really need three components installed and set up with correct environment variables. These three components are: pipewire (I have version: 0.3.21) xdg-desktop-portal (I have version: 1.8.0)…
Like every other desktop Linux user for the past many years I’ve used X11. I was on i3wm for quite some time until I was introduced to Emacs X11 Window Manager which I used exclusively for about 18 months, I’ve even held a talk about it. But at some point it got too annoying, for example in multi monitor use cases. At this point my first step was to go back to set up i3wm again. With…
A couple of months (after at least half a year of thinking) I finally decided to do it. I decided to buy a Ultra wide screen for my home office. The one I had been looking at for months is the Samsung Odyssey G9 C49G95 . It happens to be the opposite of cheap. Part of the triggering factor was a conversation on IRC in #nixos-chat where a person admitted that she had one of those. Then the real…
This is a follow-up on: Why I use Free Software , Why I got into Veganism . Since the Free Software movement in it’s core is an ethical movement, which cares about human rights and humans access and ability to study, share and improve on the software they use. I’m well aware that not everyone in the Free Software community is in it for ethical reasons - but I’m pretty sure that…
This is a follow-up on: Why I use Free Software . This has been followed up by: I find food habits at Free Software events weird . People who turn to Veganism can do this for different reasons, some do it for health reasons, others for climate reasons. But in it’s core, the Vegan movement in itself is an ethical movement about saving the animals. The other reasons are more or less side…
This has been followed up by: Why I got into Veganism , I find food habits at Free Software events weird . People in general may have different reasons for choosing to use Free Software , some may use it for the price, others because of pragmatic reasons, simply put it’s the best tool for the job. Others may choose it for ethical reasons. I didn’t get into Free Software for any of the…
Setting up the Weechat Android GitHub Play Store relay client over SSH can be a bit tricky and quite bad at giving useful error messages. So since I’m going through a re-setup of that I’m also writing down my notes here. Weechat configuration Type the following commands into Weechat. Placeholders such as {port} and {password} will be used here and later on. Suggested default port is…
Note: I’m not a doctor, dietitian or ergonomics expert. I just have spent a lot of time to find something that works well for me. This is my experience and you can probably take inspiration for it, but don’t do stupid things and seek expert advice if you need it. In parts of the IT industry abbreviations like RSI and CTS gets thrown around fairly often. I’m guilty myself of doing…
This is a follow-up post for my earlier post: NixOS ❄: tmpfs as root . When you start to go down the route of setting up a “pure” system that is as clean as you want it to be on each boot. You may start with the lazy route of using a persistent partition for your home directory. But it never feels quite right. But initially it’s so convenient to choose this path.
This post covers both EFI and legacy boot setups. One fairly unique property of NixOS is the ability to boot with only /boot and /nix . Nothing else is actually required. This supports doing all sorts of weird things with your root file system. One way is to do like Graham’s post “erase your darlings” describes and empty your root file system each boot using ZFS snapshots. This…
This is a sneak peak into the future 20.09 release of NixOS. The PHP packaging ecosystem in NixOS has been in a quite sad state for a long time. Partly because of the lack of people caring about PHP in Nix, but also that PHP is a bit weird when it comes to packaging. State of PHP before NixOS 20.09 Due to the lack of ability to do clever things like the python community does with =withPackages= to…
This is a quite unusual post for this blog, it’s not what I’ve expected to put on here. But I wanted to share it somewhere more permanent than many other places where I hang out on the internet. So here it goes. I’ve been knitting for a bunch of years now, and some years ago I was intrigued by a knitting method that is called double knitting. In theory it’s fairly simple…
So for a long time I have wanted to replace my file server, because it’s an old HP Microserver that is really slow. And at the same time I have had this beast of a desktop tower PC that I haven’t used with a Xeon and 32GiB ECC memory that has just been turned off due to noise. The obvious solution is to re-purpose that install and move it to a location where noise doesn’t matter,…
Hello world! This is a test blog post. This is an external link example.org . Internal link start page . This is a block quote element. This is an inline code block. Test of syntax highlighting elisp ;; Define the hello function ( defun hello () 'This is my docstring' ( message 'world' )) ;; Call the hello function ( hello ) Nix { # Define the hello function hello = {}: 'world' ; # More tests…