<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Linux on Pink Noise</title><link>https://rustikus.codeberg.page/tags/linux/</link><description>Recent content in Linux on Pink Noise</description><generator>Hugo -- 0.163.3</generator><language>en-us</language><lastBuildDate>Wed, 14 Jan 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://rustikus.codeberg.page/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>Nix Setup on macOS: An Overview</title><link>https://rustikus.codeberg.page/tech/nix-setup-on-macos-overview/</link><pubDate>Wed, 14 Jan 2026 00:00:00 +0000</pubDate><guid>https://rustikus.codeberg.page/tech/nix-setup-on-macos-overview/</guid><description>&lt;p&gt;A collection of resources for setting up Nix on macOS with nix-darwin and home-manager.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;&lt;a href="https://github.com/ryan4yin/nix-darwin-kickstarter"&gt;nix-darwin-kickstarter&lt;/a&gt;&lt;/strong&gt; repository is a good starting point for macOS.&lt;/p&gt;
&lt;p&gt;Run programs without installing them with &lt;code&gt;nix-shell -p cowsay&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Remote Deployment&lt;/strong&gt;: &lt;a href="https://www.haskellforall.com/2023/01/announcing-nixos-rebuild-new-deployment.html"&gt;nixos-rebuild announcement&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Example configurations&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/jdheyburn/nixos-configs/tree/main"&gt;jdheyburn/nixos-configs&lt;/a&gt;&lt;/strong&gt;&lt;br&gt;
Great examples for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Caddy web server&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;FreshRSS&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;deploy-rs&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tailscale integration&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/wimpysworld/nix-config"&gt;wimpysworld/nix-config&lt;/a&gt;&lt;/strong&gt; - Production-ready configuration&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Remote installation with nixos-anywhere&lt;/strong&gt;: &lt;a href="https://github.com/nix-community/nixos-anywhere"&gt;nixos-anywhere&lt;/a&gt; uses kexec. If kexec doesn&amp;rsquo;t work, &lt;a href="https://github.com/nix-community/nixos-anywhere/blob/main/docs/howtos/no-os.md"&gt;boot with NixOS ISO instead&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Wireless in initrd&lt;/strong&gt;: &lt;a href="https://discourse.nixos.org/t/wireless-connection-within-initrd/38317/12"&gt;Unlocking encrypted drives over WiFi&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Incorporating EDID into initrd Image on Linux</title><link>https://rustikus.codeberg.page/tech/incorporating-edid-into-initrd-linux/</link><pubDate>Fri, 09 Jan 2026 00:00:00 +0000</pubDate><guid>https://rustikus.codeberg.page/tech/incorporating-edid-into-initrd-linux/</guid><description>&lt;p&gt;Some monitors don&amp;rsquo;t properly report their capabilities (EDID - Extended Display Identification Data) to Linux systems during early boot, causing incorrect resolutions or no video output. You can fix this by incorporating custom EDID data into the initrd image.&lt;/p&gt;
&lt;p&gt;First, extract the EDID from a working system. Install the required tools:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install read-edid edid-decode
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Extract and verify the EDID:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo get-edid &amp;gt; desktop_edid.bin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;edid-decode desktop_edid.bin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Transfer the file to your target system and copy it to the firmware directory:&lt;/p&gt;</description></item><item><title>Mounting an Encrypted Btrfs System in Arch Linux</title><link>https://rustikus.codeberg.page/tech/mounting-encrypted-btrfs-arch-linux/</link><pubDate>Mon, 05 Jan 2026 00:00:00 +0000</pubDate><guid>https://rustikus.codeberg.page/tech/mounting-encrypted-btrfs-arch-linux/</guid><description>&lt;p&gt;To access an encrypted Btrfs Arch Linux system from a live USB, you need to unlock the LUKS partition and mount each Btrfs subvolume before chrooting:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Unlock the encrypted partition&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cryptsetup open /dev/nvme0n1 cryptlvm
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Mount the root subvolume&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o &lt;span class="nv"&gt;subvol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;@ /dev/mapper/cryptlvm /mnt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Mount the home subvolume&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o &lt;span class="nv"&gt;subvol&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;@home /dev/mapper/cryptlvm /mnt/home
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Mount the log subvolume with nodatacow option&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;mount -o nodatacow,subvol&lt;span class="o"&gt;=&lt;/span&gt;@var_log /dev/mapper/cryptlvm /mnt/var/log
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Chroot into the system&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo arch-chroot /mnt
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The &lt;code&gt;cryptsetup open&lt;/code&gt; command unlocks the encrypted partition and maps it to &lt;code&gt;/dev/mapper/cryptlvm&lt;/code&gt;. Each Btrfs subvolume needs to be mounted separately. The &lt;code&gt;nodatacow&lt;/code&gt; option on &lt;code&gt;/var/log&lt;/code&gt; prevents copy-on-write for log files. The &lt;code&gt;arch-chroot&lt;/code&gt; command automatically handles mounting &lt;code&gt;/proc&lt;/code&gt;, &lt;code&gt;/sys&lt;/code&gt;, and &lt;code&gt;/dev&lt;/code&gt;.&lt;/p&gt;</description></item></channel></rss>