The Weekend Sprint

November 16-17 was a pivotal weekend for Argo OS (my custom Gentoo distribution). Moved from a “barely booting” prototype to a snapshot-protected, version-controlled system with a clear path to binary distribution.

Also, I broke SDDM. Badly.

The Crash Loop (SDDM + Nvidia)

I ran etc-update -3. Mistake #1.

This automatically merged configuration files, including PAM configs. Suddenly, my display manager (SDDM) was in a crash loop. Flickering screen. No TTY. The only way out was Alt+SysRq+R-E-I-S-U-B.

The Autopsy

PAM Broken: pam_loginuid.so was missing from session required.

Nvidia Missing: I hadn’t set nvidia_drm.modeset=1 in the kernel parameters.

Services Down: elogind wasn’t even enabled.

The Fix

Rebuilt the PAM stack and created a proper Xorg config. But the real MVP was enabling agetty on TTY fallbacks so I could actually log in when the GUI died.

ln -s /etc/init.d/agetty /etc/init.d/agetty.tty1
rc-update add agetty.tty1 default

Always have a fallback TTY.

The openSUSE-style @ Subvolumes

I love how openSUSE handles Btrfs. It uses @ for root and @home for data. This makes snapshotting the entire system trivial.

I decided to migrate my running Gentoo install to this structure live.

  1. Created @ subvolume
  2. Moved everything (/bin, /etc, /usr…) into @
  3. Updated /etc/fstab to mount subvol=@ as /
  4. Updated GRUB to look for the kernel inside /@/boot/

It felt like heart surgery. But it worked.

Snapper: The Time Machine

With the @ structure in place, I installed snapper.

Since Snapper expects systemd (and Argo OS runs OpenRC), I had to wire up the cron jobs manually.

Now, every hour, and before/after every emerge, the system takes a snapshot. If I break verified boot again?

snapper rollback
reboot

Done.

The Binary Package Infrastructure

Compiling locally is slow. I don’t want my gaming rig compiling @world for hours.

Set up a dedicated build VM that acts as a binary package host. It compiles packages, uploads them to the NAS, and my workstation just downloads pre-built binaries.

# On the workstation - binary only mode
emerge --usepkg --usepkgonly package-name

Compile times go from hours to seconds.

The Result

Ended the weekend with v0.2.1-alpha:

  • Stable booting with fallback TTY
  • Btrfs snapshots before every package operation
  • Binary package distribution working
  • Snapper rollback tested and confirmed

If I break it, I can travel back in time.