From 4a0b76cc97089fb8e56322091edc0ea674dc10d5 Mon Sep 17 00:00:00 2001 From: Bernardo Magri Date: Thu, 16 Jul 2026 14:09:00 +0100 Subject: [PATCH] =?UTF-8?q?feat(branding):=20drop=20the=20nixpkgs=20codena?= =?UTF-8?q?me=20=E2=80=94=20"Nomarchy=2026.05",=20not=20"(Yarara)"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Yarara is nixpkgs' release name. Carrying it in PRETTY_NAME told users something true about our upstream and nothing about our product, in the one string every fetch tool and greeter reads. Upstream hardcodes the codename into VERSION, PRETTY_NAME and VERSION_CODENAME (misc/version.nix) with no switch, and `system.nixos.codeName = ""` is the wrong lever — it renders "26.05 ()". So the assembled strings are overridden through the merge hooks upstream does provide (extraOSReleaseArgs / extraLSBReleaseArgs), which is already where our project URLs live. lsb-release gets the same treatment; it carried the codename in three fields of its own. Empty VERSION_CODENAME/DISTRIB_CODENAME is deliberate: `//` cannot remove a key, os-release(5) makes every field optional, and the file already ships ANSI_COLOR="" and IMAGE_ID="". nixos-version still prints "(Yarara)" and is left alone on purpose: that command reports which nixpkgs the system was built from — the one question the codename actually answers. Reaching it would mean patching a nixpkgs script for no gain. Verified on the built system: PRETTY_NAME="Nomarchy 26.05", VERSION="26.05", VERSION_ID="26.05"; lsb DISTRIB_DESCRIPTION="Nomarchy 26.05", LSB_VERSION="26.05". fastfetch's os line reads PRETTY_NAME, so it follows. Co-Authored-By: Claude Opus 4.8 --- docs/ROADMAP.md | 14 ++++++++++++++ modules/nixos/default.nix | 21 +++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 43602f5..debe1d6 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -555,6 +555,20 @@ Design/decision records and a running log of shipped work (items marked `%26`, `%3F`, `%23`, `caf%C3%A9`. **Unverified on purpose:** whether each vendor's page fills the box or auto-submits — testing that means posting into Bernardo's own accounts. +- ✓ **No codename in the branding (2026-07-16):** Bernardo — the distro is + "Nomarchy 26.05", not "Nomarchy 26.05 (Yarara)". Yarara is *nixpkgs'* release + name; presenting it as ours told users something true about our upstream and + nothing about our product, in the one string (`PRETTY_NAME`) every fetch tool + and greeter reads. Upstream hardcodes the codename into `VERSION`, + `PRETTY_NAME` and `VERSION_CODENAME` (`misc/version.nix`) with no switch, and + `system.nixos.codeName = ""` is the wrong lever — it renders `26.05 ()`. So the + assembled strings are overridden through the merge hooks upstream does provide + (`extraOSReleaseArgs` / `extraLSBReleaseArgs`), which is also where our project + URLs already live. Empty `VERSION_CODENAME`/`DISTRIB_CODENAME` is deliberate: + `//` cannot remove a key, os-release(5) makes every field optional, and the + file already ships `ANSI_COLOR=""`. **`nixos-version` still prints "(Yarara)" + by design** — that command answers "which nixpkgs was this built from?", the + one question the codename genuinely answers. - ✓ **The #107 compat shim is pinned (#133, 2026-07-16):** `mkFlake` prefers `state.json` and still accepts the legacy `theme-state.json`, because a machine only migrates on its next menu write — but nothing evaluated a diff --git a/modules/nixos/default.nix b/modules/nixos/default.nix index 4bc4d75..08e818e 100644 --- a/modules/nixos/default.nix +++ b/modules/nixos/default.nix @@ -55,11 +55,32 @@ in # restore them pointing at the project instead. system.nixos.distroName = lib.mkDefault "Nomarchy"; system.nixos.distroId = lib.mkDefault "nomarchy"; + # No codename. Upstream hardcodes it into three fields — + # VERSION = "${release} (${codeName})", PRETTY_NAME likewise, plus + # VERSION_CODENAME (misc/version.nix) — so "Nomarchy 26.05 (Yarara)" read + # as if Yarara were *our* release name. It is nixpkgs': ours is the number, + # and the number is what tells you what you are running. Setting + # `system.nixos.codeName = ""` is the wrong lever — it renders "26.05 ()" — + # so override the assembled strings through the merge hook upstream + # provides. The empty VERSION_CODENAME is deliberate and in keeping with + # the file's own style (ANSI_COLOR="", IMAGE_ID="" …): the key cannot be + # removed through `//`, and os-release(5) makes every field optional. + # `nixos-version` still prints "(Yarara)" and is left alone on purpose — + # that command reports the *nixpkgs* release this system was built from, + # which is exactly when the codename is the honest answer. system.nixos.extraOSReleaseArgs = lib.mkDefault { HOME_URL = "https://git.bemagri.xyz/bernardo/Nomarchy"; DOCUMENTATION_URL = "https://git.bemagri.xyz/bernardo/Nomarchy"; SUPPORT_URL = "https://git.bemagri.xyz/bernardo/Nomarchy"; BUG_REPORT_URL = "https://git.bemagri.xyz/bernardo/Nomarchy/issues"; + VERSION = config.system.nixos.release; + VERSION_CODENAME = ""; + PRETTY_NAME = "${config.system.nixos.distroName} ${config.system.nixos.release}"; + }; + system.nixos.extraLSBReleaseArgs = lib.mkDefault { + LSB_VERSION = config.system.nixos.release; + DISTRIB_CODENAME = ""; + DISTRIB_DESCRIPTION = "${config.system.nixos.distroName} ${config.system.nixos.release}"; }; # MOTD on TTY/SSH login (the desktop auto-logs into Hyprland, so this