<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Tech on Cat in a Shell</title>
		<link>https://catinashell.de/categories/tech/</link>
		<description>Recent content in Tech on Cat in a Shell</description>
		<generator>Hugo</generator>
		<language>en-us</language>
		
		
		
		
			<lastBuildDate>Mon, 20 Jul 2026 21:51:27 +0200</lastBuildDate>
		
			<atom:link href="https://catinashell.de/categories/tech/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>Next Post in August</title>
				<link>https://catinashell.de/posts/next-post-in-august/</link>
				<pubDate>Mon, 20 Jul 2026 21:48:06 +0200</pubDate>
				<guid>https://catinashell.de/posts/next-post-in-august/</guid>
				<description>&lt;p&gt;The blog is currently kinda quiet, thats due me preparing for exams now + some random coding projects and some other random stuff in my life.&lt;/p&gt;&#xA;&lt;p&gt;the next post will probably happen somewhere between &lt;em&gt;10-15. August&lt;/em&gt; and be about sth pretty cool (wouldnt spoiler yet xD)&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hugo Server Side Mermaid Rendering</title>
				<link>https://catinashell.de/posts/hugo-server-side-mermaid-rendering/</link>
				<pubDate>Sat, 11 Jul 2026 14:03:00 +0200</pubDate>
				<guid>https://catinashell.de/posts/hugo-server-side-mermaid-rendering/</guid>
				<description>&lt;p&gt;This diagram is rendered during hugo build and served as a static svg.&lt;/p&gt;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&#xA;&lt;div class=&#34;mermaid-diagram&#34;&gt;&#xA;  &#xA;    &#xA;    &#xA;    &lt;img class=&#34;mermaid-light&#34; src=&#34;https://catinashell.de/svg_14587722597978374570.svg&#34; alt=&#34;Diagram&#34;&gt;&#xA;  &#xA;  &#xA;    &#xA;    &#xA;    &lt;img class=&#34;mermaid-dark&#34; src=&#34;https://catinashell.de/svg_10056839910447859318.svg&#34; alt=&#34;Diagram&#34;&gt;&#xA;  &#xA;&lt;/div&gt;&lt;p&gt;Most websites just use the mermiad js library and let each user render the diagrams client-side. But this is a imo pretty trashy solution, since it requires each visitor to run javascript (which no one should do &amp;hellip;; read more in my &lt;a href=&#34;https://catinashell.de/about#nojs&#34;&gt;about section&lt;/a&gt;).&lt;/p&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#how-to-make-hugo-render-mermaid-diagrams-during-build&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h2 id=&#34;how-to-make-hugo-render-mermaid-diagrams-during-build&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    How to make Hugo render Mermaid Diagrams during Build&#xA;&#xA;&lt;/h2&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;In the end you can just write in your markdown files:&lt;/p&gt;</description>
			</item>
			<item>
				<title>Creating a Signal Bot</title>
				<link>https://catinashell.de/posts/creating-a-signal-bot/</link>
				<pubDate>Wed, 08 Jul 2026 19:58:28 +0200</pubDate>
				<guid>https://catinashell.de/posts/creating-a-signal-bot/</guid>
				<description>&lt;p&gt;&lt;img src=&#34;bot.webp&#34; alt=&#34;some interactions with the bot&#34;&gt;&lt;/p&gt;&#xA;&lt;p&gt;Why you want this? You can create a useful bot for chat groups, adding commands like wheater, wikipedia, reminders or something group specific. And then you don&amp;rsquo;t always have to leave signal, but can just get the info you want directly in the chat. This is pretty cool if you need sth during a conversation ;)&lt;/p&gt;&#xA;&lt;p&gt;&lt;em&gt;If you run into any issues, just write me on &lt;a href=&#34;https://catq.de/mastodon&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;mastodon&lt;/a&gt; or a &lt;a href=&#34;https://catinashell.de/about#contact&#34;&gt;mail&lt;/a&gt;, I&amp;rsquo;ll gladly help and make the post more comprehensive&lt;/em&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Using AI to create Anki Templates with Random Values</title>
				<link>https://catinashell.de/posts/using-ai-to-create-anki-templates/</link>
				<pubDate>Tue, 07 Jul 2026 08:12:28 +0200</pubDate>
				<guid>https://catinashell.de/posts/using-ai-to-create-anki-templates/</guid>
				<description>&lt;p&gt;TLDR; just put the template in a file, use ai to modify it to your wishes. And I&amp;rsquo;m talking a bit about my own experience and what I did.&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m using &lt;a href=&#34;https://apps.ankiweb.net/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Anki&lt;/a&gt; quite a lot, for learning geography with the Ultimate Geography Deck, learning Kanji or learning stuff for university.&lt;/p&gt;&#xA;&lt;p&gt;Well and its a lot of math, like I want a card for everything (guess its inefficient, but fun at least and helps me being motivated). So having a static card is not really an option, since my brain will just remember the solution and finished, I won&amp;rsquo;t think much about it and wouldn&amp;rsquo;t need to solve the question again and again &amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Stalwart Mail Alias Creation Script</title>
				<link>https://catinashell.de/posts/stalwart-mail-alias-creation-script/</link>
				<pubDate>Fri, 03 Jul 2026 22:18:38 +0200</pubDate>
				<guid>https://catinashell.de/posts/stalwart-mail-alias-creation-script/</guid>
				<description>&lt;p&gt;I just run: &lt;code&gt;al &amp;lt;name for the alias&amp;gt;&lt;/code&gt; and get a new mail redirecting all mails to my main inbox.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;preview.webp&#34; alt=&#34;how it looks later&#34;&gt;&lt;/p&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#why&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h3 id=&#34;why&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Why?&#xA;&#xA;&lt;/h3&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;You might want to hide your mail from websites where you register, as they might sell your mail address (which is then used to profile or spam you), they might get hacked and you get tons of spam, or they just spam you right away. An alias mail can be easily disabled and tada, finished, no more wories, no more mails from that address (and the site you gave it to) without having to change your whole mailbox &amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Setting Up My Own Mailserver (Stalwart)</title>
				<link>https://catinashell.de/posts/setting-up-my-own-mailserver/</link>
				<pubDate>Thu, 02 Jul 2026 15:19:27 +0200</pubDate>
				<guid>https://catinashell.de/posts/setting-up-my-own-mailserver/</guid>
				<description>&lt;p&gt;&lt;em&gt;TLDR; Me renting about mail, you can skip to &lt;a href=&#34;#options&#34;&gt;Options&lt;/a&gt;, if you don&amp;rsquo;t wanna read it, because you already know&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Mail usually totally sucks, you register somewhere for free, like gmail or whatever, and need to provide tons of personal data + have them scan your mails (not sure if they openly admit it tbh, but I believe they do even if claimed otherwise&amp;hellip;). Mails are horrible for privacy &amp;hellip; They are often unencrypted (except if you set up PGP and your communication partner also uses it, but almost no one except in the privacy corner does so &amp;hellip;). There are some providers who don&amp;rsquo;t ask you for as much, like Proton. Still it sucks, you can&amp;rsquo;t easily move provider etc. Lets say they decide to charge everyone one day &amp;hellip; Or change their privacy policy, or make some controversal tweets &amp;hellip; and you want to distance yourself from them.&lt;/p&gt;</description>
			</item>
			<item>
				<title>How to add a copy button to Codeblocks in Hugo</title>
				<link>https://catinashell.de/posts/hugo-copy-codeblocks/</link>
				<pubDate>Tue, 30 Jun 2026 09:53:18 +0200</pubDate>
				<guid>https://catinashell.de/posts/hugo-copy-codeblocks/</guid>
				<description>&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#before--after&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h2 id=&#34;before--after&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Before &amp;amp; After&#xA;&#xA;&lt;/h2&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;&lt;img src=&#34;codeblock_before.webp&#34; alt=&#34;default hugo codeblock&#34;&gt;&lt;/p&gt;&#xA;&lt;style&gt;&#xA;    .codeblock {&#xA;        position: relative;&#xA;        margin: 1.4em 0;&#xA;        border: 1px solid rgba(255, 255, 255, 0.1);&#xA;        border-radius: 8px;&#xA;        background: #272822;  &#xA;    }&#xA;    .codeblock-label {&#xA;        display: flex;&#xA;        align-items: center;&#xA;        gap: 8px;&#xA;        padding: 8px 12px;&#xA;        border-bottom: 1px solid rgba(255, 255, 255, 0.1);&#xA;        font-size: 0.8rem;&#xA;        color: rgba(255, 255, 255, 0.7);&#xA;    }&#xA;    .codeblock-icon {&#xA;        align-items: center;&#xA;        width: 14px;&#xA;        height: 14px;&#xA;        flex-shrink: 0;&#xA;        opacity: 0.85;&#xA;        fill: rgba(255, 255, 255, 0.7);&#xA;    }&#xA;    .codeblock-copybtn {&#xA;        position: absolute;&#xA;        top: 0px;&#xA;        right: 0px;&#xA;        background: transparent;&#xA;        color: rgba(255, 255, 255, 0.5);&#xA;        cursor: pointer;&#xA;    }&#xA;    .codeblock-copybtn:hover {&#xA;        color: rgba(255, 255, 255, 0.9);&#xA;        background: rgba(255, 255, 255, 0.08);&#xA;    }&#xA;    .codeblock-copybtn-icon {&#xA;        margin-right: 4px;&#xA;    }&#xA;&lt;/style&gt;&#xA;&#xA;&lt;div class=&#34;codeblock&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;codeblock-label&#34;&gt;&#xA;        &lt;span class=&#34;codeblock-icon&#34;&gt;&lt;style&gt;&#xA;.icon svg {&#xA;    width: 14px;&#xA;    height: 14px;&#xA;    fill: rgba(255, 255, 255, 0.7);&#xA;}&#xA;&lt;/style&gt;&lt;span class=&#34;icon&#34;&gt;&lt;svg role=&#34;img&#34; viewBox=&#34;0 0 24 24&#34; xmlns=&#34;http://www.w3.org/2000/svg&#34;&gt;&lt;title&gt;Python&lt;/title&gt;&lt;path d=&#34;M14.25.18l.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98l-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95l.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25l-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z&#34;/&gt;&lt;/svg&gt;&lt;/span&gt;&lt;/span&gt;&#xA;&#xA;        &lt;span&gt;oneorzero.py&lt;/span&gt;&#xA;    &lt;/div&gt;&#xA;&#xA;    &#xA;    &lt;div class=&#34;codeblock-body&#34;&gt;&#xA;        &lt;button class=&#34;codeblock-copybtn&#34;&gt;&#xA;            &lt;span class=&#34;codeblock-copybtn-icon&#34;&gt;&#xA;                &lt;svg&#xA;                    xmlns=&#34;http://www.w3.org/2000/svg&#34;&#xA;                    fill=&#34;none&#34;&#xA;                    viewBox=&#34;0 0 24 24&#34;&#xA;                    stroke-width=&#34;1.5&#34;&#xA;                    stroke=&#34;currentColor&#34;&#xA;                    width=&#34;16&#34;&#xA;                &gt;&#xA;                    &lt;path&#xA;                        stroke-linecap=&#34;round&#34;&#xA;                        stroke-linejoin=&#34;round&#34;&#xA;                        d=&#34;M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184&#34;&#xA;                    /&gt;&#xA;                &lt;/svg&gt;&#xA;            &lt;/span&gt;&#xA;            &lt;span class=&#34;codeblock-copybtn-label&#34;&gt;copy&lt;/span&gt;&#xA;        &lt;/button&gt;&lt;div class=&#34;highlight&#34; filename=&#34;oneorzero.py&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-python&#34; data-lang=&#34;python&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;import&lt;/span&gt; random&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;print(random&lt;span style=&#34;color:#f92672&#34;&gt;.&lt;/span&gt;randint(&lt;span style=&#34;color:#ae81ff&#34;&gt;0&lt;/span&gt;, &lt;span style=&#34;color:#ae81ff&#34;&gt;1&lt;/span&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#motivation&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h2 id=&#34;motivation&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Motivation&#xA;&#xA;&lt;/h2&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;I often need codeblocks in my posts, but it&amp;rsquo;s rather inconvenient for anyone following the steps, that until now one couldn&amp;rsquo;t copy the commands right away.&lt;/p&gt;</description>
			</item>
			<item>
				<title>RSS is Awesome!</title>
				<link>https://catinashell.de/posts/rss-is-awesome/</link>
				<pubDate>Mon, 29 Jun 2026 10:17:52 +0200</pubDate>
				<guid>https://catinashell.de/posts/rss-is-awesome/</guid>
				<description>&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#what-is-rss&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h3 id=&#34;what-is-rss&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    What is RSS?&#xA;&#xA;&lt;/h3&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;Its a format for website feed, basically like a social media timeline for only the stuff the website wants to post there (one site can also have multiple feeds, like one per category etc.).&#xA;So lets say you subscribe to &lt;a href=&#34;https://nixos.org/blog/announcements-rss.xml&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;NixOS Announcement Feed&lt;/a&gt;, whenever they write a new announcement post they also (automatically probably) create an entry in their rss feed.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Secure a Caddy Server &amp; Best Practices</title>
				<link>https://catinashell.de/posts/secure-a-caddy-server-and-best-practices/</link>
				<pubDate>Sun, 28 Jun 2026 11:14:58 +0200</pubDate>
				<guid>https://catinashell.de/posts/secure-a-caddy-server-and-best-practices/</guid>
				<description>&lt;p&gt;I currently use &lt;a href=&#34;https://caddyserver.com/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Caddy&lt;/a&gt; for the statically generated Hugo Blog, since Caddy seems like a robust webserver written in go (so memory safe) and rather fast. Also it handles https automatically, requesting certificates etc. so no longer having to run anything manually.&#xA;Also its pretty easy to configure for this use case&lt;/p&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#minimal-caddy-config&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h4 id=&#34;minimal-caddy-config&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Minimal Caddy Config&#xA;&#xA;&lt;/h4&gt;&#xA;&lt;/a&gt;&#xA;&lt;style&gt;&#xA;    .codeblock {&#xA;        position: relative;&#xA;        margin: 1.4em 0;&#xA;        border: 1px solid rgba(255, 255, 255, 0.1);&#xA;        border-radius: 8px;&#xA;        background: #272822;  &#xA;    }&#xA;    .codeblock-label {&#xA;        display: flex;&#xA;        align-items: center;&#xA;        gap: 8px;&#xA;        padding: 8px 12px;&#xA;        border-bottom: 1px solid rgba(255, 255, 255, 0.1);&#xA;        font-size: 0.8rem;&#xA;        color: rgba(255, 255, 255, 0.7);&#xA;    }&#xA;    .codeblock-icon {&#xA;        align-items: center;&#xA;        width: 14px;&#xA;        height: 14px;&#xA;        flex-shrink: 0;&#xA;        opacity: 0.85;&#xA;        fill: rgba(255, 255, 255, 0.7);&#xA;    }&#xA;    .codeblock-copybtn {&#xA;        position: absolute;&#xA;        top: 0px;&#xA;        right: 0px;&#xA;        background: transparent;&#xA;        color: rgba(255, 255, 255, 0.5);&#xA;        cursor: pointer;&#xA;    }&#xA;    .codeblock-copybtn:hover {&#xA;        color: rgba(255, 255, 255, 0.9);&#xA;        background: rgba(255, 255, 255, 0.08);&#xA;    }&#xA;    .codeblock-copybtn-icon {&#xA;        margin-right: 4px;&#xA;    }&#xA;&lt;/style&gt;&#xA;&#xA;&lt;div class=&#34;codeblock&#34;&gt;&#xA;    &#xA;    &lt;div class=&#34;codeblock-body&#34;&gt;&#xA;        &lt;button class=&#34;codeblock-copybtn&#34;&gt;&#xA;            &lt;span class=&#34;codeblock-copybtn-icon&#34;&gt;&#xA;                &lt;svg&#xA;                    xmlns=&#34;http://www.w3.org/2000/svg&#34;&#xA;                    fill=&#34;none&#34;&#xA;                    viewBox=&#34;0 0 24 24&#34;&#xA;                    stroke-width=&#34;1.5&#34;&#xA;                    stroke=&#34;currentColor&#34;&#xA;                    width=&#34;16&#34;&#xA;                &gt;&#xA;                    &lt;path&#xA;                        stroke-linecap=&#34;round&#34;&#xA;                        stroke-linejoin=&#34;round&#34;&#xA;                        d=&#34;M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184&#34;&#xA;                    /&gt;&#xA;                &lt;/svg&gt;&#xA;            &lt;/span&gt;&#xA;            &lt;span class=&#34;codeblock-copybtn-label&#34;&gt;copy&lt;/span&gt;&#xA;        &lt;/button&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-caddyfile&#34; data-lang=&#34;caddyfile&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;catinashell.de {&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;root&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;*&lt;/span&gt; &lt;span style=&#34;color:#e6db74&#34;&gt;/var/www/blog/public&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#66d9ef&#34;&gt;file_server&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;    &lt;/div&gt;&#xA;&lt;/div&gt;&#xA;&lt;p&gt;this is a pretty basic working example, you generate the content via &lt;code&gt;hugo&lt;/code&gt; inside &lt;code&gt;/var/www/blog&lt;/code&gt;, move ownership to caddy &lt;code&gt;chown -R caddy:caddy /var/www/blog&lt;/code&gt; and done.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Updating to Noctalia v5 on NixOS</title>
				<link>https://catinashell.de/posts/updating-to-noctalia-v5-on-nixos/</link>
				<pubDate>Sat, 27 Jun 2026 18:31:21 +0200</pubDate>
				<guid>https://catinashell.de/posts/updating-to-noctalia-v5-on-nixos/</guid>
				<description>&lt;p&gt;Currently &lt;a href=&#34;https://noctalia.dev/blog/announcing-noctalia-v5&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Noctalia v5&lt;/a&gt; is still in the alpha, but I still decided to adapt already, as it works better with my current setup.&#xA;I&amp;rsquo;m using an Impermanent NixOS System and didn&amp;rsquo;t want to persist the &lt;code&gt;.cache&lt;/code&gt; folder (really don&amp;rsquo;t want to, caches should be cleared &amp;hellip;). And unfortunately Noctalia v4 stores the current Wallpaper in there, so if you don&amp;rsquo;t persist it, each restart Noctalia has the Wallpaper set to the default one with the own &amp;hellip;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Hardening NixOS Impermanence Setup with noexec</title>
				<link>https://catinashell.de/posts/hardening-nixos-impermanence-setup-with-noexec/</link>
				<pubDate>Fri, 26 Jun 2026 15:15:56 +0200</pubDate>
				<guid>https://catinashell.de/posts/hardening-nixos-impermanence-setup-with-noexec/</guid>
				<description>&lt;p&gt;An impermanent NixOS Setup is something, I personally I really enjoy, as I don&amp;rsquo;t like preserving everything on my system forever &amp;hellip; Persistence Opt-In is the best approach.&lt;/p&gt;&#xA;&lt;p&gt;And recently I came across a nice Blog about hardening NixOS from &lt;a href=&#34;https://xeiaso.net/blog/paranoid-nixos-2021-07-18/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;&lt;strong&gt;Xe Iaso&amp;rsquo;s blog&lt;/strong&gt;&lt;/a&gt;. And well one thing especially seemed cool, so I wanted to share it.&lt;/p&gt;&#xA;&lt;style&gt;&#xA;.heading {&#xA;    text-decoration: none;&#xA;}&#xA;.heading:hover {&#xA;    color: rgba(200,200,255,0.7);&#xA;}&#xA;.heading-anchor {&#xA;    margin-left: -1em;&#xA;    position: absolute;&#xA;    opacity: 0;&#xA;    text-decoration: none;&#xA;    transition: opacity 0.15s;&#xA;}&#xA;h1:hover .heading-anchor,&#xA;h2:hover .heading-anchor,&#xA;h3:hover .heading-anchor,&#xA;h4:hover .heading-anchor,&#xA;h5:hover .heading-anchor,&#xA;h6:hover .heading-anchor {&#xA;    opacity: 1;&#xA;}&#xA;&lt;/style&gt;&#xA;&#xA;&lt;a href=&#34;#noexec-for-the-root-fs&#34; class=&#34;heading&#34;&gt;&#xA;&lt;h2 id=&#34;noexec-for-the-root-fs&#34;&gt;&#xA;    &lt;div class=&#34;heading-anchor&#34; aria-label=&#34;Link to this section&#34;&gt;&#xA;        #&#xA;    &lt;/div&gt;&#xA;    Noexec for the Root FS&#xA;&#xA;&lt;/h2&gt;&#xA;&lt;/a&gt;&#xA;&lt;p&gt;At the bottom of the blog is a part about having &lt;code&gt;noexec&lt;/code&gt; for the root fs (which is a tmpfs anyway). Since all programs in NixOS life anyway in &lt;code&gt;/nix/store&lt;/code&gt; and &lt;code&gt;/nix&lt;/code&gt; is its own partition in the typical Impermancence Setup (I won&amp;rsquo;t talk about how to this now, as there are already many good blogs discussing this, and showing how it&amp;rsquo;s done; if you want to see my own setup, check &lt;a href=&#34;https://codeberg.org/slayernominee/mynixos&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;my Codeberg out&lt;/a&gt;).&#xA;So only the &lt;code&gt;/nix&lt;/code&gt; parititon needs to be mounted without &lt;code&gt;noexec&lt;/code&gt;, the rest can be &lt;mark&gt;&lt;code&gt;noexec&lt;/code&gt;&lt;/mark&gt;.&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
