<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Blogs on Giacomo Di Clerico</title><link>https://giacomodiclerico.com/en/blog/</link><description>Recent content in Blogs on Giacomo Di Clerico</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://giacomodiclerico.com/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>From Gentoo to NixOS — My Desktop Journey</title><link>https://giacomodiclerico.com/en/blog/from-gentoo-to-nixos/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://giacomodiclerico.com/en/blog/from-gentoo-to-nixos/</guid><description>&lt;p&gt;I&amp;rsquo;ve been distro-hopping with intent for a while now. Not for fun — each switch taught me something fundamentally different about Linux. This is the story of how I went from Arch to Gentoo to NixOS on my main workstation.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="arch--a-solid-year-as-my-daily-driver"&gt;Arch — a solid year as my daily driver&lt;/h2&gt;
&lt;p&gt;I&amp;rsquo;ve been using Linux for a long time across various distributions, so I was already quite experienced when I moved to Arch Linux. Arch became my main operating system for over a year. Rolling release, minimal base install, and the wiki made it a solid daily driver. It taught me how to construct and maintain a system from the ground up. But after more than a year of running it daily, I wanted even deeper control — not just over what packages were installed, but over &lt;em&gt;how&lt;/em&gt; they were compiled and configured.&lt;/p&gt;</description></item><item><title>Server Migration — From bootc to NixOS</title><link>https://giacomodiclerico.com/en/blog/server-bootc-to-nixos/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://giacomodiclerico.com/en/blog/server-bootc-to-nixos/</guid><description>&lt;p&gt;I recently migrated my homelab server from a &lt;strong&gt;bootc&lt;/strong&gt; (bootable container) setup on Fedora to &lt;strong&gt;NixOS&lt;/strong&gt;. The trigger wasn&amp;rsquo;t philosophical — it was a real breakage caused by the iptables/nft transition and Fedora&amp;rsquo;s kernel policy.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="the-bootc-setup"&gt;The bootc setup&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;bootc&lt;/strong&gt; is a model where your entire OS is defined as an OCI container image. You write a &lt;code&gt;Containerfile&lt;/code&gt;, build the image, push it to a registry, and the server pulls and boots from it. It&amp;rsquo;s immutable infrastructure taken to its logical extreme — your OS has a CI/CD pipeline.&lt;/p&gt;</description></item><item><title>Git 101 — Public Course with POuL</title><link>https://giacomodiclerico.com/en/blog/git101/</link><pubDate>Tue, 10 Mar 2026 00:00:00 +0000</pubDate><guid>https://giacomodiclerico.com/en/blog/git101/</guid><description>&lt;p&gt;In March I held &lt;strong&gt;Git 101&lt;/strong&gt;, an introductory Git course organized with &lt;a href="https://poul.org"&gt;POuL — Politecnico Open unix Lab&lt;/a&gt;, the student association at Politecnico di Milano focused on open source culture and Linux.&lt;/p&gt;
&lt;p&gt;The course was open to everyone: no prerequisites, just a desire to finally understand what happens when you run &lt;code&gt;git commit&lt;/code&gt;. I contributed to the slides, worked on the material on GitLab, and held the session in person — also streamed live on YouTube, where over &lt;strong&gt;300 people&lt;/strong&gt; tuned in.&lt;/p&gt;</description></item><item><title>Homelab — Stack &amp; Infrastructure</title><link>https://giacomodiclerico.com/en/blog/homelab/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://giacomodiclerico.com/en/blog/homelab/</guid><description>&lt;p&gt;My homelab started as a small Linux test server and gradually evolved into a full &lt;strong&gt;virtualized, self-hosted infrastructure&lt;/strong&gt;, built for learning, experimentation, and reliability.&lt;/p&gt;
&lt;h2 id="stack"&gt;Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Proxmox VE&lt;/strong&gt; — virtualization layer (KVM + LXC)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;k3s&lt;/strong&gt; — lightweight Kubernetes cluster&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Flux CD&lt;/strong&gt; — GitOps continuous delivery&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SOPS + age&lt;/strong&gt; — encrypted secrets in git&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tailscale&lt;/strong&gt; — secure remote access and subnet routing&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="services"&gt;Services&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Immich&lt;/strong&gt; — photo and video management (backed by CloudNativePG)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Nextcloud&lt;/strong&gt; — personal cloud, file sync, notes, calendar&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Pi-hole&lt;/strong&gt; — network-wide DNS filtering&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="networking"&gt;Networking&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ExternalDNS&lt;/strong&gt; + Cloudflare for automatic DNS management&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;cert-manager&lt;/strong&gt; — DNS-01 wildcard certificates via Let&amp;rsquo;s Encrypt&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>Personal Website &amp; Workflow</title><link>https://giacomodiclerico.com/en/blog/website/</link><pubDate>Mon, 20 Oct 2025 00:00:00 +0000</pubDate><guid>https://giacomodiclerico.com/en/blog/website/</guid><description>&lt;p&gt;My personal website is built using &lt;strong&gt;Hugo&lt;/strong&gt;, the &lt;strong&gt;hugo-theme-terminal&lt;/strong&gt; theme, and an automated deployment workflow designed for speed, simplicity, and long-term maintainability.&lt;/p&gt;
&lt;p&gt;I chose an open-source static site generator to keep full control over my content, ensure long-term stability, and avoid dependencies on external platforms or databases.&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="tech-stack"&gt;Tech Stack&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Hugo (static site generator)&lt;/li&gt;
&lt;li&gt;hugo-theme-terminal theme&lt;/li&gt;
&lt;li&gt;Markdown-based content&lt;/li&gt;
&lt;li&gt;Multilingual EN/IT setup&lt;/li&gt;
&lt;li&gt;GitHub repository for version control&lt;/li&gt;
&lt;li&gt;GitHub Pages for automated builds&lt;/li&gt;
&lt;li&gt;Cloudflare for CDN, HTTPS, and caching&lt;/li&gt;
&lt;li&gt;Custom domain with DNSSEC enabled&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="why-hugo"&gt;Why Hugo&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Extremely fast (builds in milliseconds)&lt;/li&gt;
&lt;li&gt;Open-source and actively maintained&lt;/li&gt;
&lt;li&gt;Secure by design (no server-side code, no database)&lt;/li&gt;
&lt;li&gt;Flexible thanks to themes, templates, and shortcodes&lt;/li&gt;
&lt;li&gt;Ideal for long-term maintainability&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2 id="deployment-workflow"&gt;Deployment Workflow&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Write content in Markdown&lt;/li&gt;
&lt;li&gt;Commit changes to GitHub&lt;/li&gt;
&lt;li&gt;GitHub Pages builds the site using Hugo&lt;/li&gt;
&lt;li&gt;Cloudflare distributes the static files globally&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This gives: automatic builds, atomic deployments, global CDN caching, HTTPS by default, zero downtime.&lt;/p&gt;</description></item></channel></rss>