feat: Nomarchy ground-up rewrite on NixOS 26.05

Full replacement of the previous iteration, rebuilt around three ideas:

- Pure evaluation: theme-state.json lives inside the flake and is read
  via the nomarchy.stateFile option — no --impure, ever.
- All-Home-Manager theming: `nomarchy-theme-sync apply` writes the JSON
  and runs `home-manager switch`; every theme change is one atomic,
  rollbackable generation. Wallpaper (swww) is the sole runtime piece.
- Flat, downstream-first layout: modules/{nixos,home} with one
  options.nix each, exported as nixosModules/homeModules + overlay +
  flake template; system (nixos-rebuild) and desktop (home-manager
  switch) rebuild paths are fully split.

Ships 21 themes imported from the previous iteration (palettes,
wallpapers, btop themes, six whole-swap Waybar identities), Stylix for
the GTK/Qt/cursor long tail, a live ISO target with offline theme
switching, and docs/TESTING.md with the QEMU verification workflow.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-10 10:59:13 +01:00
commit f211ef0d09
131 changed files with 4844 additions and 0 deletions

View File

@@ -0,0 +1,53 @@
{
description = "My Nomarchy machine";
inputs = {
# Pin Nomarchy; nixpkgs and home-manager follow whatever it ships.
nomarchy.url = "github:YOUR-USER/nomarchy"; # <- point at the distro repo
nixpkgs.follows = "nomarchy/nixpkgs";
home-manager.follows = "nomarchy/home-manager";
};
outputs = { self, nomarchy, nixpkgs, home-manager, ... }:
let
system = "x86_64-linux";
username = "me"; # <- your login name
pkgs = import nixpkgs {
inherit system;
overlays = [ nomarchy.overlays.default ];
};
in
{
# System layer — rebuilt rarely:
# sudo nixos-rebuild switch --flake .#default
nixosConfigurations.default = nixpkgs.lib.nixosSystem {
inherit system;
modules = [
nomarchy.nixosModules.nomarchy # the distro
./hardware-configuration.nix # from `nixos-generate-config`
./system.nix # your machine
];
};
# Desktop layer — rebuilt on every theme change, no sudo:
# home-manager switch --flake .#me
# (`nomarchy-theme-sync apply <theme>` runs this for you.)
homeConfigurations.${username} = home-manager.lib.homeManagerConfiguration {
inherit pkgs;
modules = [
nomarchy.homeModules.nomarchy
./home.nix
{
# Your theme state — written by nomarchy-theme-sync, baked
# in on every switch. Keep it git-tracked.
nomarchy.stateFile = ./theme-state.json;
home = {
inherit username;
homeDirectory = "/home/${username}";
};
}
];
};
};
}