<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Posts on Cat in a Shell</title>
        <link>https://catinashell.de/posts/</link>
        <description>Recent content in Posts on Cat in a Shell</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en-us</language>
        <lastBuildDate>Sat, 27 Jun 2026 18:31:21 +0200</lastBuildDate>
        <atom:link href="https://catinashell.de/posts/index.xml" rel="self" type="application/rss+xml" />
        
        <item>
            <title>Noctalia V5 NixOS</title>
            <link>https://catinashell.de/posts/noctalia-v5-nixos/</link>
            <pubDate>Sat, 27 Jun 2026 18:31:21 +0200</pubDate>
            
            <guid>https://catinashell.de/posts/noctalia-v5-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.
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>
            <content type="html"><![CDATA[<p>Currently <a href="https://noctalia.dev/blog/announcing-noctalia-v5" target="_blank" rel="noopener">Noctalia v5</a> is still in the alpha, but I still decided to adapt already, as it works better with my current setup.
I&rsquo;m using an Impermanent NixOS System and didn&rsquo;t want to persist the <code>.cache</code> folder (really don&rsquo;t want to, caches should be cleared &hellip;). And unfortunately Noctalia v4 stores the current Wallpaper in there, so if you don&rsquo;t persist it, each restart Noctalia has the Wallpaper set to the default one with the own &hellip;</p>
<p>Well in Noctalia 5 this is no longer the case, everything is now more cleanly defined in a <strong>TOML-File</strong></p>
<p>So how to switch? Well the old flake path, now points anyway to v5, if you haven&rsquo;t specified a commit / branch, so one a flake update, you&rsquo;d anyway be switched to 5.</p>
<p>But here the flake input anyway</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>noctalia <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>  url <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;github:noctalia-dev/noctalia&#34;</span>;
</span></span><span style="display:flex;"><span>  inputs<span style="color:#f92672">.</span>nixpkgs<span style="color:#f92672">.</span>follows <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;nixpkgs&#34;</span>;
</span></span><span style="display:flex;"><span>};
</span></span></code></pre></div><h2 id="config-format-change">Config Format Change</h2>
<p>Also the import <strong>Home Manager Import</strong> changed to: <code>inputs.noctalia.homeModules.default</code> from the previous noctalia-shell thing.
Previously I had a <code>noctalia.json</code> in my config, loaded via <code>noctalia-shell.settings = builtins.fromJSON ./noctalia.json;</code>.</p>
<p>Now it looks like this:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>{ inputs<span style="color:#f92672">,</span> <span style="color:#f92672">...</span> }:
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>{
</span></span><span style="display:flex;"><span>  imports <span style="color:#f92672">=</span> [ inputs<span style="color:#f92672">.</span>noctalia<span style="color:#f92672">.</span>homeModules<span style="color:#f92672">.</span>default ];
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  programs<span style="color:#f92672">.</span>noctalia <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    enable <span style="color:#f92672">=</span> <span style="color:#66d9ef">true</span>;
</span></span><span style="display:flex;"><span>    settings <span style="color:#f92672">=</span> builtins<span style="color:#f92672">.</span>fromTOML (builtins<span style="color:#f92672">.</span>readFile <span style="color:#e6db74">./config.toml</span>);
</span></span><span style="display:flex;"><span>  };
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Loading a <code>config.toml</code> instead, also a few settings changed, so I kinda had to make my whole config from scratch. Luckily its pretty good documentated in the <a href="https://docs.noctalia.dev/v5/configuration/" target="_blank" rel="noopener">noctalia docs</a>.
The new config also allows having multiple bars instead of a single one and many more cool things, and also comes with extreme <strong>performance improvements</strong> by <strong>completely ditching qt &amp; quickshell, and rewriting everything in C++</strong> (Why not Rust? TT).</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-toml" data-lang="toml"><span style="display:flex;"><span>[<span style="color:#a6e22e">theme</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">mode</span>              = <span style="color:#e6db74">&#34;dark&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">source</span>            = <span style="color:#e6db74">&#34;wallpaper&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">wallpaper_scheme</span>  = <span style="color:#e6db74">&#34;m3-content&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[<span style="color:#a6e22e">wallpaper</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">enabled</span>               = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">transition_on_startup</span> = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">directory</span>             = <span style="color:#e6db74">&#34;~/Pictures/Wallpapers&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[<span style="color:#a6e22e">nightlight</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">enabled</span>              = <span style="color:#66d9ef">true</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">temperature_day</span>      = <span style="color:#ae81ff">6500</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">temperature_night</span>    = <span style="color:#ae81ff">3500</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>[<span style="color:#a6e22e">location</span>]
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">auto_locate</span> = <span style="color:#66d9ef">false</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">sunset</span>      = <span style="color:#e6db74">&#34;20:30&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#a6e22e">sunrise</span>     = <span style="color:#e6db74">&#34;06:30&#34;</span>
</span></span><span style="display:flex;"><span>...
</span></span></code></pre></div><p>pretty clean in my opinion.</p>
<h2 id="command-changes">Command Changes</h2>
<p>The IPC commands also changed, so your window manager (e.g. niri) shortcuts will probably stop working.
The new commands look like this: <code>noctalia msg panel-toggle launcher</code></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-kdl" data-lang="kdl"><span style="display:flex;"><span><span style="color:#75715e">// Launcher
</span></span></span><span style="display:flex;"><span>Mod+Space <span style="color:#f92672">{</span> spawn <span style="color:#e6db74">&#34;noctalia&#34;</span> <span style="color:#e6db74">&#34;msg&#34;</span> <span style="color:#e6db74">&#34;panel-toggle&#34;</span> <span style="color:#e6db74">&#34;launcher&#34;</span><span style="color:#f92672">;</span> <span style="color:#f92672">}</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Locker
</span></span></span><span style="display:flex;"><span>CTRL+Alt+L <span style="color:#f92672">{</span> spawn <span style="color:#e6db74">&#34;noctalia&#34;</span> <span style="color:#e6db74">&#34;msg&#34;</span> <span style="color:#e6db74">&#34;session&#34;</span> <span style="color:#e6db74">&#34;lock&#34;</span><span style="color:#f92672">;</span> <span style="color:#f92672">}</span>
</span></span></code></pre></div><p>If you need more keybindings with the new format, e.g. for volume etc. you might check out <a href="https://codeberg.org/slayernominee/mynixos/src/commit/ac6daa04e2d565c1021e6459192cac7dcc6f95d5/home/settings/niri/keybindings.kdl" target="_blank" rel="noopener">my current niri keybindings as reference</a>. Note: these are based on <a href="https://github.com/ryan4yin/nix-config" target="_blank" rel="noopener">ryan4yin&rsquo;s nix config</a>, which at the time of my writing still use noctalia v4 syntax.</p>
]]></content>
        </item>
        
        <item>
            <title>Nix Impermanence NoExec Root</title>
            <link>https://catinashell.de/posts/nix-impermanence-noexec-root/</link>
            <pubDate>Fri, 26 Jun 2026 15:15:56 +0200</pubDate>
            
            <guid>https://catinashell.de/posts/nix-impermanence-noexec-root/</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;
&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;Xe Iaso&amp;rsquo;s blog&lt;/a&gt;. And well one thing especially seemed cool, so I wanted to share it.&lt;/p&gt;
&lt;h2 id=&#34;noexec-for-the-root-fs&#34;&gt;NoExec for the Root FS&lt;/h2&gt;
&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;).
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>
            <content type="html"><![CDATA[<p>An impermanent NixOS Setup is something, I personally I really enjoy, as I don&rsquo;t like preserving everything on my system forever &hellip; Persistence Opt-In is the best approach.</p>
<p>And recently I came across a nice Blog about hardening NixOS from <a href="https://xeiaso.net/blog/paranoid-nixos-2021-07-18/" target="_blank" rel="noopener">Xe Iaso&rsquo;s blog</a>. And well one thing especially seemed cool, so I wanted to share it.</p>
<h2 id="noexec-for-the-root-fs">NoExec for the Root FS</h2>
<p>At the bottom of the blog is a part about having <code>noexec</code> for the root fs (which is a tmpfs anyway). Since all programs in NixOS life anyway in <code>/nix/store</code> and <code>/nix</code> is its own partition in the typical Impermancence Setup (I won&rsquo;t talk about how to this now, as there are already many good blogs discussing this, and showing how it&rsquo;s done; if you want to see my own setup, check <a href="https://codeberg.org/slayernominee/mynixos" target="_blank" rel="noopener">my Codeberg out</a>).
So only the <code>/nix</code> parititon needs to be mounted without <code>noexec</code>, the rest can be <mark><code>noexec</code></mark>.</p>
<p>Additionally you can even add <mark><code>nodev</code></mark> and <mark><code>nosuid</code></mark> to the root fs, since devices should life under <code>/dev</code>, which is its own partition anyway (a temporary device fs). And <code>suid</code> (switch user id) requires the partition to allow executables anyway.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>disko<span style="color:#f92672">.</span>devices<span style="color:#f92672">.</span>nodev <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;/&#34;</span> <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    fsType <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;tmpfs&#34;</span>;
</span></span><span style="display:flex;"><span>    mountOptions <span style="color:#f92672">=</span> [
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;size=50%&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;mode=755&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;noexec&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;nodev&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;nosuid&#34;</span>
</span></span><span style="display:flex;"><span>    ];
</span></span><span style="display:flex;"><span>  };
</span></span><span style="display:flex;"><span>};
</span></span></code></pre></div><p>I use this setup for a while now and so far I haven&rsquo;t run into any issues with it. So I can only recommend it to anyone, since its certainly not wrong, to minimise the attack surface (even though this is obviously not a here you go, don&rsquo;t worry anymore about anything else). It just stops things like running a <strong>C Binary</strong> that is placed into e.g. <code>/tmp</code> via <code>/tmp/malicious_binary</code> but not sth like <code>bash /tmp/malicious_script.sh</code></p>
<h4 id="boot-partition">Boot Partition</h4>
<p>These options can also be added to the <code>/boot</code> Parititon without issues.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>content<span style="color:#f92672">.</span>partitions<span style="color:#f92672">.</span>esp <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>  name <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;ESP&#34;</span>;
</span></span><span style="display:flex;"><span>  size <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;1G&#34;</span>;
</span></span><span style="display:flex;"><span>  type <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;EF00&#34;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  content <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    type <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;filesystem&#34;</span>;
</span></span><span style="display:flex;"><span>    format <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;vfat&#34;</span>;
</span></span><span style="display:flex;"><span>    mountpoint <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/boot&#34;</span>;
</span></span><span style="display:flex;"><span>    mountOptions <span style="color:#f92672">=</span> [
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;fmask=0177&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;dmask=0077&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;noexec&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;nosuid&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;nodev&#34;</span>
</span></span><span style="display:flex;"><span>    ];
</span></span><span style="display:flex;"><span>  };
</span></span><span style="display:flex;"><span>};
</span></span></code></pre></div><h4 id="persistent-partition">Persistent Partition</h4>
<p>Well if you don&rsquo;t have any binaries you want to persist, you can also add these options there too, if you have some like through steam games, flatpaks etc. you can at least add the <code>nodev</code> and <code>nosuid</code> most of the times. Also if you&rsquo;re writing code yourself that is compiled, you probably don&rsquo;t want <code>noexec</code> for these files.</p>
<p><em>My config looks sth like: (Note: these are already btrfs subvolumes, since I encrypt my whole btrfs fs via luks, so using subvolumes is kinda convenient -&gt; only one decrypt)</em></p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"><code class="language-nix" data-lang="nix"><span style="display:flex;"><span>subvolumes <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;/persistent&#34;</span> <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    mountOptions <span style="color:#f92672">=</span> [
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;subvol=persistent&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;noatime&#34;</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;nosuid&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;nodev&#34;</span>
</span></span><span style="display:flex;"><span>    ];
</span></span><span style="display:flex;"><span>    mountpoint <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/persistent&#34;</span>;
</span></span><span style="display:flex;"><span>  };
</span></span><span style="display:flex;"><span>  <span style="color:#e6db74">&#34;/nix&#34;</span> <span style="color:#f92672">=</span> {
</span></span><span style="display:flex;"><span>    mountOptions <span style="color:#f92672">=</span> [
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;subvol=nix&#34;</span>
</span></span><span style="display:flex;"><span>      <span style="color:#e6db74">&#34;noatime&#34;</span>
</span></span><span style="display:flex;"><span>    ];
</span></span><span style="display:flex;"><span>    mountpoint <span style="color:#f92672">=</span> <span style="color:#e6db74">&#34;/nix&#34;</span>;
</span></span><span style="display:flex;"><span>  };
</span></span><span style="display:flex;"><span>};
</span></span></code></pre></div>]]></content>
        </item>
        
        <item>
            <title>Starting a blog</title>
            <link>https://catinashell.de/posts/starting-a-blog/</link>
            <pubDate>Thu, 25 Jun 2026 22:00:11 +0200</pubDate>
            
            <guid>https://catinashell.de/posts/starting-a-blog/</guid>
            <description>&lt;p&gt;Recently I&amp;rsquo;ve come across some pretty cool blogs, like the one from &lt;a href=&#34;https://%e3%83%9e%e3%83%aa%e3%82%a6%e3%82%b9.com&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;マリウス&lt;/a&gt;, or some cool Nix related blogs, a lot of them linked in this &lt;a href=&#34;https://nixwebr.ing/&#34; target=&#34;_blank&#34; rel=&#34;noopener&#34;&gt;Nix Webring Project&lt;/a&gt;.
I really enjoy reading a lot of these posts and doing some of the projects shown there myself, or finding inspiration for my own setups etc.
So I thought maybe I should also start a blog, as I do certain things still different in the end or find some nice tweaks I just wanna share, as I&amp;rsquo;ve not seen them so far.&lt;/p&gt;</description>
            <content type="html"><![CDATA[<p>Recently I&rsquo;ve come across some pretty cool blogs, like the one from <a href="https://%e3%83%9e%e3%83%aa%e3%82%a6%e3%82%b9.com" target="_blank" rel="noopener">マリウス</a>, or some cool Nix related blogs, a lot of them linked in this <a href="https://nixwebr.ing/" target="_blank" rel="noopener">Nix Webring Project</a>.
I really enjoy reading a lot of these posts and doing some of the projects shown there myself, or finding inspiration for my own setups etc.
So I thought maybe I should also start a blog, as I do certain things still different in the end or find some nice tweaks I just wanna share, as I&rsquo;ve not seen them so far.</p>
<p>And honestly I also just wanna share a bit of what I&rsquo;m doing with the world, maybe it&rsquo;s even helpful to someone out there.</p>
<p>Well so here I am, I don&rsquo;t know if this will have any future or I stop this already tomorrow, but as of now, I&rsquo;m kinda motiviated. Ig this might even help me review things better as I&rsquo;m going through them again sharing them.</p>
<p>As for this Blog, for now I&rsquo;m settling with <strong>Hugo</strong>, it stroke me as one of the best solutions for managing such a blog, as for the theming, I&rsquo;m not yet sure about. And the Server, unfortunately I wasn&rsquo;t able to install NixOS and NixOS-Infect dind&rsquo;t work, so I just choose <em>Fedora</em> which I&rsquo;m also a bit familiar (used if for around a year or so as my daily driver).</p>
<p>The <strong>topics</strong> will probably mostly revolve around <strong>NixOS, Privacy-Focused and/or FOSS Projects, Security</strong> &amp; potentially CTFs (I wanted to start for a real long time, but haven&rsquo;t yet xD). And a lot about just the issues I encounter in my setup now and then and how I resolved them, nice tweaks I found etc.</p>
]]></content>
        </item>
        
    </channel>
</rss>
