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>
54 lines
1.7 KiB
Nix
54 lines
1.7 KiB
Nix
{
|
|
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}";
|
|
};
|
|
}
|
|
];
|
|
};
|
|
};
|
|
}
|