<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>monotux.tech</title><link>https://www.monotux.tech/</link><description>Recent content on monotux.tech</description><generator>Hugo</generator><language>en</language><copyright>Oscar Carlsson</copyright><lastBuildDate>Thu, 05 Mar 2026 23:18:28 +0100</lastBuildDate><atom:link href="https://www.monotux.tech/index.xml" rel="self" type="application/rss+xml"/><item><title>Configure Incus containers using Ansible</title><link>https://www.monotux.tech/posts/2026/02/ansible-incus/</link><pubDate>Fri, 13 Feb 2026 13:01:07 +0100</pubDate><guid>https://www.monotux.tech/posts/2026/02/ansible-incus/</guid><description>&lt;p&gt;This post will outline how I setup an Ansible playbook to manage a
Incus container on a remote host. This was fairly straight
forward&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; but I couldn&amp;rsquo;t find a suitable write-up elsewhere so here
we go!&lt;/p&gt;</description></item><item><title>Implementing search on this site</title><link>https://www.monotux.tech/posts/2026/01/search/</link><pubDate>Tue, 27 Jan 2026 09:02:56 +0100</pubDate><guid>https://www.monotux.tech/posts/2026/01/search/</guid><description>&lt;p&gt;I decided to add a search function to this blog, but this time I had
to accept &lt;em&gt;some&lt;/em&gt; browser side JavaScript for it to function. This
entry will describe how I implemented this (using
&lt;a
 href="https://pagefind.app/"
 target="_blank" rel="noopener" class="external-link"
 
 
&gt;pagefind&lt;/a&gt;) on this site.&lt;/p&gt;</description></item><item><title>Light/dark theme for MermaidJS</title><link>https://www.monotux.tech/posts/2026/01/system-theme-icons/</link><pubDate>Fri, 09 Jan 2026 23:56:46 +0100</pubDate><guid>https://www.monotux.tech/posts/2026/01/system-theme-icons/</guid><description>&lt;p&gt;Making my graphs respect the user system light- and darkmode settings
was surprisingly straight-forward, and we are still not using &lt;em&gt;any&lt;/em&gt;
(browser side) JavaScript to accomplish this!&lt;/p&gt;</description></item><item><title>Adding icons to Mermaid charts</title><link>https://www.monotux.tech/posts/2025/11/mermaid-icons/</link><pubDate>Sat, 22 Nov 2025 18:00:54 +0100</pubDate><guid>https://www.monotux.tech/posts/2025/11/mermaid-icons/</guid><description>&lt;p&gt;While we are ricing&amp;hellip;enhancing this blog with MermaidJS charts, we might as
well add icons to said charts as well! This was also surprisingly easy to do,
so here we go&amp;hellip;&lt;/p&gt;</description></item><item><title>Upgrading to a new Postgresql major version on NixOS</title><link>https://www.monotux.tech/posts/2025/11/upgrading-postgresql-version-nixos/</link><pubDate>Thu, 20 Nov 2025 18:50:29 +0100</pubDate><guid>https://www.monotux.tech/posts/2025/11/upgrading-postgresql-version-nixos/</guid><description>&lt;p&gt;I&amp;rsquo;ve seen a few different guides on how to upgrade to a new major PostgreSQL
version but couldn&amp;rsquo;t make it work as I&amp;rsquo;m also using extensions for some of my
databases. Luckily this was relatively easy due to NixOS declarative nature!&lt;/p&gt;</description></item><item><title>Garage object storage, Caddy and dynamically provisioned TLS certificates</title><link>https://www.monotux.tech/posts/2025/11/garage-caddy-dnsmasq/</link><pubDate>Wed, 12 Nov 2025 08:37:00 +0100</pubDate><guid>https://www.monotux.tech/posts/2025/11/garage-caddy-dnsmasq/</guid><description>&lt;p&gt;I recently started serving this website internally (as a &amp;ldquo;staging environment&amp;rdquo;)
and discovered that Garage + Caddy can automagically serve sites &amp;amp; issue
certificates per S3 bucket, as subdomains under the Garage domain name
(&lt;code&gt;*.garage.example.com&lt;/code&gt;). This entry will describe how I setup Garage, Caddy
and dnsmasq to work together in my homelab setup.&lt;/p&gt;</description></item><item><title>Woodpecker CI, Hugo &amp; MermaidJS</title><link>https://www.monotux.tech/posts/2025/11/woodpecker-mermaid/</link><pubDate>Tue, 11 Nov 2025 21:16:17 +0100</pubDate><guid>https://www.monotux.tech/posts/2025/11/woodpecker-mermaid/</guid><description>&lt;p&gt;Fiddling around with Woodpecker CI was a lot of fun, so I finally implemented
javascript-less &lt;a
 href="https://mermaid.js.org/"
 target="_blank" rel="noopener" class="external-link"
 
 
&gt;MermaidJS graphs!&lt;/a&gt; It&amp;rsquo;s not perfect by &lt;em&gt;any&lt;/em&gt; means
but I think it is Good Enough(tm) and it involves some terrible regexps so here
we go!&lt;/p&gt;</description></item><item><title>Woodpecker CI &amp; Alpine Linux ash</title><link>https://www.monotux.tech/posts/2025/11/woodpecker-alpine-ash/</link><pubDate>Sun, 09 Nov 2025 11:37:24 +0100</pubDate><guid>https://www.monotux.tech/posts/2025/11/woodpecker-alpine-ash/</guid><description>&lt;p&gt;I recently started setting up a new CI/CD environment in my homelab
(due to reasons), and this time I decided to test &lt;a
 href="https://woodpecker-ci.org/"
 target="_blank" rel="noopener" class="external-link"
 
 
&gt;Woodpecker
CI&lt;/a&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;. It was quite easy to setup, even with both
server and agents running in Kubernetes, but I ran into some silly but
confusing issues when dealing with environment variables in an Alpine
Linux based build step.&lt;/p&gt;</description></item><item><title>Ubiquity EdgeRouter Infinity ER-8-XG</title><link>https://www.monotux.tech/posts/2025/10/edgerouter-infinity/</link><pubDate>Tue, 21 Oct 2025 15:18:34 +0200</pubDate><guid>https://www.monotux.tech/posts/2025/10/edgerouter-infinity/</guid><description>&lt;p&gt;I got my hands on an used &lt;a
 href="https://store.ui.com/us/en/products/er-8-xg"
 target="_blank" rel="noopener" class="external-link"
 
 
&gt;Ubiquity EdgeRouter Infinity
ER-8-XG&lt;/a&gt; this summer, and in this entry I will try to
document any discoveries when evaluating this device for homelab use.&lt;/p&gt;
&lt;p&gt;And yes, this is overkill even for my homelab ⎛⎝( ` ᢍ ´ )⎠⎞ᵐᵘʰᵃʰᵃ&lt;/p&gt;</description></item><item><title>Disable disk spindown on NixOS</title><link>https://www.monotux.tech/posts/2025/10/disable-disk-spindown/</link><pubDate>Sun, 19 Oct 2025 09:18:11 +0200</pubDate><guid>https://www.monotux.tech/posts/2025/10/disable-disk-spindown/</guid><description>&lt;p&gt;I have two disks in my homelab NAS that would spin down when idle,
which puts unnecessary strain on the drives as they are typically
woken up again a few minutes later. Disabling this is not very hard,
and this pattern is usable for other cases where you want
&lt;a
 href="https://www.monotux.tech/tags/systemd"
 
 class="internal-tag"
 
&gt;systemd&lt;/a&gt; to run multiple instances of something. While
all examples below uses &lt;a
 href="https://www.monotux.tech/tags/nixos"
 
 class="internal-tag"
 
&gt;NixOS&lt;/a&gt; syntax, it&amp;rsquo;s all just standard
systemd components at play.&lt;/p&gt;
&lt;p&gt;I initially tried asking a LLM on how to do it and was just provided
with a broken, impossible solution so I thought I might as well write
this up if someone else needs something similar.&lt;/p&gt;</description></item></channel></rss>