Day 78 — Comparative landscape

Updated

July 30, 2026

Day 78 — Comparative landscape

Stage VII · ~4h
Goal: Write an honest, concrete trade-off note comparing NixOS to Guix System, image-based/immutable distros, and Ansible-style config management—grounded in your workloads, not tribal slogans.

Why this day exists

If you cannot say when NixOS is the wrong tool, you do not understand it. Capstone commitment is real effort; Day 78 is the “steelman the alternatives” day so your retrospective (Day 90) is adult, not fanfic.


Theory 1 — Comparison dimensions

Score systems on dimensions that matter to operators:

Dimension Question
Reproducibility Can two machines converge from the same artifact/definition?
Atomic rollback Bad update → previous generation quickly?
Abstraction Packages + services + users in one language?
Learning curve Time to first safe production change
Ecosystem breadth Packaging coverage, cloud images, vendor support
Secrecy & compliance Secrets, audit, SBOM stories
Day-2 ops Observability, patches, multi-node
Escape hatches Can you drop to imperative when burning?
Team skill fit What does your org already know?
Mac/desktop story Not everything is a Linux server
Migration cost From your current estate

No system wins all columns. Weighted scores beat vibes.


Theory 2 — NixOS (your baseline)

Strengths you have felt (cite your volume days):

  • Declarative modules + generations (II, 13, 89)
  • Flake pins for inputs (III, 24)
  • Same language from package to OS (V–VII)
  • Binary caches + remote builders (53–54)
  • Strong “rebuild from repo” story (Day 88 will prove it)
  • sops-nix / deploy-rs / Colmena / nixosTest ecosystem (IV, VI)

Weaknesses you should admit:

  • Steep language + module learning curve
  • Eval/build complexity; footguns (IFD, priorities, infinite recursion)
  • Docs fragmented across eras (channels vs flakes)
  • Some proprietary/vendor agents painful to package
  • GUI desktop polish varies by investment
  • Experimental features (CA derivations, etc.) not free wins
  • Team hiring: fewer “NixOS natives” than Ansible generalists

Write two scars from your lab, not from memes.


Theory 3 — Guix System

What it is: GNU Guix—functional package manager + Guix System; Scheme (Guile) instead of Nix language; strong free-software ethos; similar store/generation ideas.

Topic Guix-ish shape NixOS-ish shape
Language Scheme Nix
Init shepherd systemd
Channels / pins channels flakes/channels
FHS / binary blob culture Often stricter free software Pragmatic unfree options common
Community size Smaller Larger
Commercial surface Smaller Larger blog/job footprint

When Guix may win: Scheme fluency, GNU purity goals, shepherd preference, research alignment.

When NixOS may win for you: systemd ecosystem, larger package set, more operational write-ups, your already-built Capstone investment.

You do not need to install Guix today—read primary docs enough to avoid strawmen. If you already know Scheme, say so in the essay.


Theory 4 — Image-based / immutable distros

Examples of the family (not a full product review): Fedora CoreOS / Silverblue-style, Bottlerocket, Talos, some appliance OS designs—image A/B, ostree or similar, workloads often in containers.

Topic Image-based NixOS
Unit of deploy OS image Config evaluation → system closure
App delivery Containers/k8s common Packages + modules + optional containers
Rollback Previous image slot Generations
Host customization Minimal by design Extreme (sometimes too much)
“Pets” Discouraged Possible (homelab pets common)
Provisioning Ignition/cloud-init class tools Disko, nixos-anywhere, images (Day 62)

When images win: Large fleets of identical minimal nodes, Kubernetes workers, locked-down appliances, org already standardized on container platforms.

When NixOS wins: Highly specialized hosts, cross-cutting host services, desire for one repo to express weird topology without baking images every change (though NixOS can also build images).

Hybrid reality: NixOS build of images + k8s workers is a valid architecture—not purity cosplay.


Theory 5 — Ansible (and friends)

What it is: Imperative/convergent config management over SSH; YAML playbooks; enormous module library; agentless common. Cousins: Salt, Puppet, Chef—today’s comparison centers Ansible as the industry default many teams already run.

Topic Ansible NixOS
Model Converge state with tasks Specify desired system; build closure
Partial apply Easy, sometimes too easy Whole-system generations
Drift Easy without discipline Harder if you only use nix
Secrets Vault, etc. sops/agenix + store discipline
Non-NixOS estate Excellent Weak (HM/darwin partial)
Rollback You build it Built-in generations
Network gear / mixed OS Strong ecosystem Not the point

Hybrid reality: Many orgs use Terraform/cloud for create, Ansible for classic distros, NixOS for greenfield highly automated slices.

When Ansible wins: Heterogeneous fleets (Ubuntu + network gear + weird appliances), existing playbook investment, teams without Nix skills, “change this one file on 50 boxes” urgency.

When NixOS wins: Greenfield Linux hosts you fully own, strong need for rebuildable closures, rollback as a product feature, package+service unity.


Theory 6 — Honesty checklist (avoid tribal takes)

Bad argument Better
“Ansible is YAML spaghetti, Nix is pure.” “Our fleet is 200 Ubuntu boxes with existing roles; migration cost exceeds benefits this year.”
“Guix is just Nix with Scheme.” “Shared functional ideas; different language, init, and community trade-offs.”
“Immutable OS means no SSH ever.” “SSH policy is orthogonal; image distros still need day-2 access models.”
“NixOS can’t do containers.” “NixOS can; sometimes image-first platforms optimize for that path harder.”
“Nix solves secrets.” “sops-nix helps; key custody and policy still human.”

Theory 7 — Decision time-bounds

Prefer time-bounded decisions:

Through 26.11: NixOS Capstone lab remains source of truth for my learning hosts.
Ubuntu estate at $work: Ansible remains unless a greenfield slice appears.
Re-evaluate Guix: only if Scheme project requires it.

Eternal loyalty is not an engineering output.


Worked example — weighted scorecard fragment

Context: solo homelab + one day-job Ubuntu fleet I don’t control.

| Dimension | Weight | NixOS | Guix | Image-family | Ansible |
|-----------|--------|-------|------|--------------|---------|
| Reproducibility | 5 | 5 | 5 | 4 | 2 |
| Rollback | 5 | 5 | 5 | 4 | 2 |
| Learning curve | 3 | 2 | 2 | 3 | 4 |
| Team skill (job) | 4 | 1 | 1 | 3 | 5 |
| Specialized hosts | 5 | 5 | 4 | 2 | 3 |

Compute crude weighted sums; note uncertainty bands (“±1 on Guix—I read, didn’t run”).


Lab 0 — Workspace

mkdir -p ~/lab/90daysofx/02-nixos/day78
cd ~/lab/90daysofx/02-nixos/day78

Lab 1 — Primary sources (skimming with intent)

Collect links in SOURCES.md (official or project docs, not only Reddit):

  1. Guix System manual intro / features
  2. One image-based OS docs page (e.g. CoreOS update model or Talos architecture)
  3. Ansible “how it works” / idempotence intro

Spend ~45–60 min reading, not installing everything. Optional: one throwaway VM if time remains—not required.


Lab 2 — Scorecard for your context

SCORECARD.md — rate NixOS / Guix / Image-family / Ansible 1–5 on Theory 1 dimensions. Add “Weight for me.” Compute weighted sum. Note uncertainty.

Define your context in 5 bullets (homelab, job, course-only, multi-OS, etc.).


Lab 3 — Essay (required)

ESSAY.md — 400–800 words:

  1. Where NixOS clearly wins for you (with concrete examples from this volume).
  2. Where it loses or is overkill.
  3. One scenario you would pick Ansible or image-based instead.
  4. Whether Guix is interesting to you personally (even if “not now”).
  5. What you will not rewrite after this essay (protect Capstone).

Tone: steelman alternatives; no meme warfare.


Lab 4 — Elevator version

Compress the essay into a 90-second talk outline (bullet list) for a skeptical SRE. Save as ELEVATOR.md.

Include one sentence: “Here’s when I would not use NixOS…”


Lab 5 — Capstone implication

One short paragraph in IMPLICATIONS.md: does this change Capstone A scope? (Default: no—essay is clarity, not a rewrite trigger.)


Lab 6 — Scenario cards (forced choice)

Write three short cards (5–8 sentences each) in SCENARIOS.md. For each, pick a primary tool and justify with dimensions from Theory 1:

Card A — Homelab “weird topology”

One edge proxy, one data host, sops secrets, occasional GPU box. You already have Capstone muscle.

Card B — Employer fleet

80 Ubuntu VMs, existing Ansible roles, two network engineers who refuse new DSLs, compliance questionnaire next quarter.

Card C — Kubernetes worker pool

Stateless nodes, image A/B updates preferred by platform team, apps only in containers, host should be minimal.

Do not use these cards to reopen Capstone A scope. They exist to prove you can switch criteria with context.


Lab 7 — Quote hygiene

From your primary sources, copy one short quotation or paraphrased claim (with URL) that surprised you for each of: Guix, image-based, Ansible. In SOURCES.md, note whether you agree after Capstone experience.

This blocks empty essays that restate Twitter without contact with docs.


Worked example — elevator closer

NixOS wins for me when I fully own the Linux host and need rebuildable
closures plus rollback. I would not force it onto our Ubuntu estate this
year—the migration cost dwarfs the benefit. Image-based OS wins for
identical k8s workers. Guix is intellectually close but not my ops path.
Questions?

Adapt to your scorecard; keep under 90 seconds spoken.


Common gotchas

Mistake Fix
Comparing marketing to your scars Use Capstone experience as data
Installing four OSes today Read + score; optional one VM if time
Declaring eternal loyalty Prefer time-bounded decisions
Ignoring team skills Skills are a real dimension
Strawmanning Guix without reading Primary sources in SOURCES.md
Using Day 78 to restart layout thrash Protect Capstone; Day 77 already covered tools

Checkpoint

  • SOURCES.md with primary links
  • Weighted SCORECARD.md
  • ESSAY.md 400–800 words, honest trade-offs
  • ELEVATOR.md including when not NixOS
  • Capstone protection note
  • Three scenario cards
  • One primary-source surprise note per alternative
  • Three personal gotchas

Commit

git add .
git commit -m "day78: comparative landscape essay and scorecard"

Write three personal gotchas before continuing.

Tomorrow

Day 79 — 26.05 release notes deep: primary-source read; annotate impact on your flake.