feat: bump to NixOS 26.05 (Yarara) — WIP, desktop unverified on hardware

Bumps nixpkgs nixos-25.11 -> nixos-26.05, home-manager release-25.11 ->
release-26.05, and pins stylix to release-26.05 (was unpinned master).
`nix flake check --no-build` and `nomarchy-eval-matrix` are both clean and
the full system builds (nixos-system-nomarchy-26.05).

Breaking-change fixes required by 26.05:
- stylix-compat: drop the `programs.neovim.initLua` shim — HM 26.05 declares
  it natively, so the shim was a duplicate-option error.
- swww was renamed to awww (binaries gone, no `init` subcommand). Dropped swww
  entirely and unified the wallpaper path on swaybg (the daemon this distro
  actually runs): nomarchy-theme-bg-next now delegates to nomarchy-theme-bg-set,
  swaybg added to the theme-engine script deps, swww removed from package lists.
- default config: add a placeholder `fileSystems."/"` — 26.05's systemd stage-1
  forces fsType during plain toplevel eval (the VM build overrides it).
- services.resolved: extraConfig removed, domains/fallbackDns renamed -> migrated
  to settings.Resolve.* (RFC42).
- systemd.sleep.extraConfig removed -> settings.Sleep.HibernateDelaySec (RFC42).
- X11 'virtio' video driver removed -> dropped from vm-guest.nix and
  nomarchy-live.nix (modesetting drives virtio-gpu).
- nomarchy-eval-matrix: define /persist + /home in the impermanence scenarios
  (26.05 maps fsType over every neededForBoot filesystem).
- README/MIGRATION/installer: stale swww references -> swaybg.

KNOWN BLOCKER (why this is on a branch, not main):
In a headless QEMU VM, Hyprland boots and inits GL (virgl) fine but is
OOM-killed after ~19s (3.4 GB peak). Likely a no-display-consumer artifact of
headless rendering (unthrottled frames), but a real Hyprland-26.05 memory
regression can't be ruled out without a real display. Verify on real hardware
(a fresh ISO install) before merging to main; if the desktop is stable there,
the OOM was the headless VM and this can merge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Bernardo Magri
2026-06-06 15:46:17 +01:00
parent 83218a01f3
commit 3bdfc3552e
16 changed files with 128 additions and 95 deletions

View File

@@ -8,7 +8,7 @@
- **Modular Merging Architecture:** Distro code and user code are strictly separated. You can update the distro core without ever touching or breaking your personal configurations.
- **Interactive "Smart" Installer:** Detects hardware, sets up networking, localizes timezones/keymaps, and offers multi-select software profiles.
- **Erase Your Darlings (Optional):** Optional BTRFS root-wipe on boot ensures your system stays pristine and 100% declarative.
- **Dynamic Theming Engine:** 20+ built-in themes with instant UI feedback via IPC (swww, waybar, and stylix).
- **Dynamic Theming Engine:** 20+ built-in themes with instant UI feedback via IPC (swaybg, waybar, and stylix).
- **Portable State (`nomarchy-sync`):** Easily backup and sync your declarative config and dynamic state (theme/wallpaper choices) to a private Git repo.
---

View File

@@ -50,6 +50,16 @@ let
forced = x: (builtins.tryEval (builtins.seq x true)).success;
# Real impermanence installs define /persist + /home via disko; the eval
# scenarios must too, because nixpkgs 26.05's systemd stage-1 maps fsType
# over every neededForBoot filesystem and impermanence marks both
# neededForBoot (core/system/impermanence.nix). Without device+fsType here,
# the toplevel eval throws on a config that has no disko layer.
impermanenceFs = {
"/persist" = { device = "/dev/disk/by-label/persist"; fsType = "ext4"; };
"/home" = { device = "/dev/disk/by-label/home"; fsType = "ext4"; };
};
# Combined opt-in scenarios. Each enables as many compatible toggles as
# possible so CI does ~3 full-system evals, not one per toggle. Home-side
# options go under home-manager.users.nomarchy.nomarchy.*.
@@ -75,6 +85,7 @@ let
keymap = { layout = "de"; variant = "nodeadkeys"; };
toggles = { waybar = false; idle = false; nightlight = false; };
};
fileSystems = impermanenceFs;
};
# desktop preset — conflicts with the laptop formFactor, so its own eval.
@@ -85,6 +96,7 @@ let
# impermanence multi-disk variant (alternate mainLuksName).
"impermanence-multi" = {
nomarchy.system.impermanence = { enable = true; mainLuksName = "crypted_main"; };
fileSystems = impermanenceFs;
};
};

View File

@@ -7,9 +7,9 @@ in
config = lib.mkIf cfg.enable {
# Wait this long after suspend before hibernating, and use the same
# delay as the idle-action timeout so the two paths agree.
systemd.sleep.extraConfig = ''
HibernateDelaySec=${toString (cfg.idleMinutes * 60)}
'';
# nixpkgs 26.05 replaced systemd.sleep.extraConfig with the RFC42-style
# `settings` attrset.
systemd.sleep.settings.Sleep.HibernateDelaySec = cfg.idleMinutes * 60;
services.logind = {
settings.Login = {

View File

@@ -19,11 +19,13 @@ in
services.resolved = {
enable = lib.mkDefault (cfg.dns != "DHCP");
dnssec = lib.mkDefault "allow-downgrade";
domains = lib.mkDefault [ "~." ];
fallbackDns = lib.mkDefault [ "9.9.9.9" "149.112.112.112" ];
extraConfig = lib.mkDefault ''
DNSOverTLS=opportunistic
'';
# nixpkgs 26.05 moved resolved.conf options into the RFC42-style `settings`
# attrset (extraConfig dropped; domains/fallbackDns renamed).
settings.Resolve = {
Domains = lib.mkDefault [ "~." ];
FallbackDNS = lib.mkDefault [ "9.9.9.9" "149.112.112.112" ];
DNSOverTLS = lib.mkDefault "opportunistic";
};
};
environment.systemPackages = [

View File

@@ -15,7 +15,9 @@
# Improve VM resolution and guest experience
services.spice-vdagentd.enable = true;
services.qemuGuest.enable = true;
services.xserver.videoDrivers = [ "qxl" "virtio" "modesetting" ];
# nixpkgs 26.05 removed the standalone X11 'virtio' driver; modesetting
# drives virtio-gpu via KMS, so it covers the same hardware.
services.xserver.videoDrivers = [ "qxl" "modesetting" ];
# Provide the flake to the VM for local rebuilding
environment.etc."nomarchy".source = lib.mkDefault inputs.self;

View File

@@ -135,7 +135,7 @@ create minimal versions to start:
mpv
fastfetch
chromium
# …add anything you want; mako/hyprlock/swww/rofi/etc. ship with Nomarchy.
# …add anything you want; mako/hyprlock/swaybg/rofi/etc. ship with Nomarchy.
];
# Enable Nomarchy's curated app configurations

View File

@@ -122,8 +122,8 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
| `nomarchy-show-done` | `themes/engine/scripts` | features/scripts/utils/nomarchy-launch-floating-terminal-with-presentation | `kept` | |
| `nomarchy-show-logo` | `themes/engine/scripts` | features/scripts/utils/nomarchy-launch-floating-terminal-with-presentation | `kept` | |
| `nomarchy-skill` | `features/scripts/utils` | core/home/configs.nix | `kept` | |
| `nomarchy-state` | `features/scripts/utils` | core/system/scripts/nomarchy-system-reboot,core/system/scripts/nomarchy-system-shutdown, +14 more | `kept` | |
| `nomarchy-state-write` | `features/scripts/utils` | core/system/scripts/nomarchy-toggle-idle,features/scripts/utils/nomarchy-hyprland-monitor-scaling-cycle, +9 more | `kept` | |
| `nomarchy-state` | `features/scripts/utils` | core/system/scripts/nomarchy-system-reboot,core/system/scripts/nomarchy-system-shutdown, +13 more | `kept` | |
| `nomarchy-state-write` | `features/scripts/utils` | core/system/scripts/nomarchy-toggle-idle,features/scripts/utils/nomarchy-hyprland-monitor-scaling-cycle, +8 more | `kept` | |
| `nomarchy-sudo-passwordless-toggle` | `core/system/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
| `nomarchy-sudo-reset` | `core/system/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
| `nomarchy-swayosd-brightness` | `core/system/scripts` | core/system/scripts/nomarchy-brightness-display,core/system/scripts/nomarchy-brightness-display-apple | `kept` | |
@@ -137,10 +137,10 @@ Phase B (per-batch PRs) refines those into `port-from-omarchy`,
| `nomarchy-test-installer` | `features/scripts/utils` | README.md,features/scripts/utils/nomarchy-test-vm | `kept` | |
| `nomarchy-test-live-iso` | `features/scripts/utils` | hosts/nomarchy-live.nix | `kept` | |
| `nomarchy-test-vm` | `features/scripts/utils` | features/scripts/utils/nomarchy-test-live-iso | `kept` | |
| `nomarchy-theme` | `features/scripts/utils` | README.md,bin/utils/nomarchy-docs-scripts, +17 more | `kept` | |
| `nomarchy-theme` | `features/scripts/utils` | README.md,bin/utils/nomarchy-docs-scripts, +18 more | `kept` | |
| `nomarchy-theme-bg-install` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
| `nomarchy-theme-bg-next` | `themes/engine/scripts` | README.md,core/home/config/nomarchy-skill/SKILL.md, +1 more | `kept` | |
| `nomarchy-theme-bg-set` | `themes/engine/scripts` | features/apps/elephant/config/menus/nomarchy_background_selector.lua,features/scripts/utils/nomarchy-wallpaper | `kept` | |
| `nomarchy-theme-bg-set` | `themes/engine/scripts` | features/apps/elephant/config/menus/nomarchy_background_selector.lua,features/scripts/utils/nomarchy-wallpaper, +1 more | `kept` | |
| `nomarchy-theme-current` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,themes/engine/scripts/nomarchy-theme-next | `kept` | |
| `nomarchy-theme-install` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md | `kept` | |
| `nomarchy-theme-list` | `themes/engine/scripts` | core/home/config/nomarchy-skill/SKILL.md,features/scripts/utils/nomarchy-theme, +2 more | `kept` | |

View File

@@ -45,7 +45,6 @@ in
# hyprlock, mpv, etc. — which broke notifications and the lock screen.
home.packages = (with pkgs; [
# Hyprland ecosystem
swww # Wallpaper daemon
mako # Notification daemon
hyprlock # Lock screen

View File

@@ -14,7 +14,6 @@ let
# Category-specific dependencies
categoryDeps = with pkgs; {
appearance = [
swww
libnotify
];

113
flake.lock generated
View File

@@ -38,11 +38,11 @@
"base16-helix": {
"flake": false,
"locked": {
"lastModified": 1760703920,
"narHash": "sha256-m82fGUYns4uHd+ZTdoLX2vlHikzwzdu2s2rYM2bNwzw=",
"lastModified": 1776754714,
"narHash": "sha256-E3OAK27smtATTmX45uoTSRsVD+Y+ZiVVfgM/tjpbtYg=",
"owner": "tinted-theming",
"repo": "base16-helix",
"rev": "d646af9b7d14bff08824538164af99d0c521b185",
"rev": "4d508123037e7851ad36ebf7d9c48b0e9e1eb581",
"type": "github"
},
"original": {
@@ -91,11 +91,11 @@
]
},
"locked": {
"lastModified": 1773889306,
"narHash": "sha256-PAqwnsBSI9SVC2QugvQ3xeYCB0otOwCacB1ueQj2tgw=",
"lastModified": 1780290312,
"narHash": "sha256-eTAlX0CwgB84Ts3GaBd944A3DRXVMzgA0EqroZBISUo=",
"owner": "nix-community",
"repo": "disko",
"rev": "5ad85c82cc52264f4beddc934ba57f3789f28347",
"rev": "115e5211780054d8a890b41f0b7734cafad54dfe",
"type": "github"
},
"original": {
@@ -132,11 +132,11 @@
"firefox-gnome-theme": {
"flake": false,
"locked": {
"lastModified": 1775176642,
"narHash": "sha256-2veEED0Fg7Fsh81tvVDNYR6SzjqQxa7hbi18Jv4LWpM=",
"lastModified": 1779670703,
"narHash": "sha256-UdfMivNMwCCqQsYDg5pSz8X2IOaOrIZLIIy+Bg3CO2o=",
"owner": "rafaelmardojai",
"repo": "firefox-gnome-theme",
"rev": "179704030c5286c729b5b0522037d1d51341022c",
"rev": "942159e73e40bf785816f7f1f5feed9ef3d7c8f9",
"type": "github"
},
"original": {
@@ -153,11 +153,11 @@
]
},
"locked": {
"lastModified": 1775087534,
"narHash": "sha256-91qqW8lhL7TLwgQWijoGBbiD4t7/q75KTi8NxjVmSmA=",
"lastModified": 1778716662,
"narHash": "sha256-m1Yf0wZ8j1OHjTc2UwHwyQRSnNeSgLJOd7q5Y45hzi4=",
"owner": "hercules-ci",
"repo": "flake-parts",
"rev": "3107b77cd68437b9a76194f0f7f9c55f2329ca5b",
"rev": "f7c1a2d347e4c52d5fb8d10cb4d94b5884e546fb",
"type": "github"
},
"original": {
@@ -206,16 +206,16 @@
]
},
"locked": {
"lastModified": 1775425411,
"narHash": "sha256-KY6HsebJHEe5nHOWP7ur09mb0drGxYSzE3rQxy62rJo=",
"lastModified": 1780361225,
"narHash": "sha256-wnV9ttf4fPWNonBIQmvlrSlNpQYgx5HgWWd007mwIFA=",
"owner": "nix-community",
"repo": "home-manager",
"rev": "0d02ec1d0a05f88ef9e74b516842900c41f0f2fe",
"rev": "e28654b71096e08c019d4861ca26acb646f583d8",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "release-25.11",
"ref": "release-26.05",
"repo": "home-manager",
"type": "github"
}
@@ -282,12 +282,15 @@
}
},
"nixos-hardware": {
"inputs": {
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1775490113,
"narHash": "sha256-2ZBhDNZZwYkRmefK5XLOusCJHnoeKkoN95hoSGgMxWM=",
"lastModified": 1780310866,
"narHash": "sha256-fPBRVf6A5xlACYcOI59shGrjURuvwu0lRsDoSCEXt/I=",
"owner": "NixOS",
"repo": "nixos-hardware",
"rev": "c775c2772ba56e906cbeb4e0b2db19079ef11ff7",
"rev": "4ed851c979641e28597a05086332d75cdc9e395f",
"type": "github"
},
"original": {
@@ -298,18 +301,15 @@
},
"nixpkgs": {
"locked": {
"lastModified": 1775811116,
"narHash": "sha256-t+HZK42pB6N+i5RGbuy7Xluez/VvWbembBdvzsc23Ss=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "54170c54449ea4d6725efd30d719c5e505f1c10e",
"type": "github"
"lastModified": 1767892417,
"narHash": "sha256-8bW3q88CEg2u4hSP66Vf4lpbLonHz7hqDNBMcCY7E9U=",
"rev": "3497aa5c9457a9d88d71fa93a4a8368816fbeeba",
"type": "tarball",
"url": "https://releases.nixos.org/nixos/unstable/nixos-26.05pre924538.3497aa5c9457/nixexprs.tar.xz"
},
"original": {
"owner": "nixos",
"ref": "nixos-25.11",
"repo": "nixpkgs",
"type": "github"
"type": "tarball",
"url": "https://channels.nixos.org/nixos-unstable/nixexprs.tar.xz"
}
},
"nixpkgs-lib": {
@@ -327,6 +327,22 @@
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1780453794,
"narHash": "sha256-bXMRa9VTsHSPXL4Cw8R6JJLQeY3Y/IP4+YJCYVmQ7FY=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "6b316287bae2ee04c9b93c8c858d930fd07d7338",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-26.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nur": {
"inputs": {
"flake-parts": [
@@ -339,11 +355,11 @@
]
},
"locked": {
"lastModified": 1775228139,
"narHash": "sha256-ebbeHmg+V7w8050bwQOuhmQHoLOEOfqKzM1KgCTexK4=",
"lastModified": 1779766384,
"narHash": "sha256-P7Ohnlq8b8b2fU+Sgkrej7LBTM60LBTkHleLuYzmLmU=",
"owner": "nix-community",
"repo": "NUR",
"rev": "601971b9c89e0304561977f2c28fa25e73aa7132",
"rev": "57800b7ab648725ccd33551d01484ee14952ad3f",
"type": "github"
},
"original": {
@@ -359,7 +375,7 @@
"impermanence": "impermanence",
"nix-colors": "nix-colors",
"nixos-hardware": "nixos-hardware",
"nixpkgs": "nixpkgs",
"nixpkgs": "nixpkgs_2",
"stylix": "stylix",
"walker": "walker"
}
@@ -384,15 +400,16 @@
"tinted-zed": "tinted-zed"
},
"locked": {
"lastModified": 1775927784,
"narHash": "sha256-9Gm33hvgcy4hR7O9EjWrw2kipyVBIHgNUtAHyWgLDhg=",
"lastModified": 1780702455,
"narHash": "sha256-+srjPGNy67nKytYwdlepycL51IG6S34sS4MKRZXK8G0=",
"owner": "danth",
"repo": "stylix",
"rev": "8f6e6b3844b3b0b59470e276bd3fe9ab04600081",
"rev": "54fa19702f4f2c7f6a981a92850678933588af9a",
"type": "github"
},
"original": {
"owner": "danth",
"ref": "release-26.05",
"repo": "stylix",
"type": "github"
}
@@ -446,11 +463,11 @@
"tinted-schemes": {
"flake": false,
"locked": {
"lastModified": 1772661346,
"narHash": "sha256-4eu3LqB9tPqe0Vaqxd4wkZiBbthLbpb7llcoE/p5HT0=",
"lastModified": 1777806186,
"narHash": "sha256-PDF0/wObw4nIsSBeXVYLsloXOiphXCgIdsrNcVXguKs=",
"owner": "tinted-theming",
"repo": "schemes",
"rev": "13b5b0c299982bb361039601e2d72587d6846294",
"rev": "0c94645546f4f3ddac77a1a5fce54eb95bf50795",
"type": "github"
},
"original": {
@@ -462,11 +479,11 @@
"tinted-tmux": {
"flake": false,
"locked": {
"lastModified": 1772934010,
"narHash": "sha256-x+6+4UvaG+RBRQ6UaX+o6DjEg28u4eqhVRM9kpgJGjQ=",
"lastModified": 1778379944,
"narHash": "sha256-wPDFzMGSlARlw0Sfsn48Q2+jPSfk6N0Ng6BC/d+7Q24=",
"owner": "tinted-theming",
"repo": "tinted-tmux",
"rev": "c3529673a5ab6e1b6830f618c45d9ce1bcdd829d",
"rev": "fe0203a198690e71a5ff11e08812a4673de3678d",
"type": "github"
},
"original": {
@@ -478,11 +495,11 @@
"tinted-zed": {
"flake": false,
"locked": {
"lastModified": 1772909925,
"narHash": "sha256-jx/5+pgYR0noHa3hk2esin18VMbnPSvWPL5bBjfTIAU=",
"lastModified": 1778378178,
"narHash": "sha256-OXPXRIQgGwV77HjYRryOHguh4ALX96jkg+tseLkGgHA=",
"owner": "tinted-theming",
"repo": "base16-zed",
"rev": "b4d3a1b3bcbd090937ef609a0a3b37237af974df",
"rev": "9cd816033ff969415b190722cddf134e78a5665f",
"type": "github"
},
"original": {
@@ -500,11 +517,11 @@
"systems": "systems_2"
},
"locked": {
"lastModified": 1775815794,
"narHash": "sha256-4aYljsM+f09YLERdo+kQjg9lvxVc6yxc+rPRFdgeXxw=",
"lastModified": 1777789924,
"narHash": "sha256-fX3ErzTmHRO9z1SzHC2VZUgKOgRfO13X/joC5a3QN7Q=",
"owner": "abenz1267",
"repo": "walker",
"rev": "a0b5fa92e05c7d52936472c5027265b14e746bae",
"rev": "93d44d1cb41732e1370e4b949429ae8e34ea05a4",
"type": "github"
},
"original": {

View File

@@ -2,7 +2,7 @@
description = "Nomarchy - A NixOS-based distribution with Omarchy flavour";
inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-25.11";
nixpkgs.url = "github:nixos/nixpkgs/nixos-26.05";
nixos-hardware.url = "github:NixOS/nixos-hardware";
disko = {
@@ -16,7 +16,7 @@
};
home-manager = {
url = "github:nix-community/home-manager/release-25.11";
url = "github:nix-community/home-manager/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
@@ -25,7 +25,9 @@
# input" warning. Just URL it.
nix-colors.url = "github:misterio77/nix-colors";
stylix = {
url = "github:danth/stylix";
# Pinned to the matching release branch (tested against nixpkgs 26.05)
# rather than master, which targets unstable.
url = "github:danth/stylix/release-26.05";
inputs.nixpkgs.follows = "nixpkgs";
};
walker = {
@@ -237,6 +239,13 @@
system.stateVersion = "25.11";
networking.hostName = "nomarchy";
# This config is only ever built as a VM (`.build.vm`), where the
# qemu-vm module supplies the real root fs (via mkVMOverride). But
# nixpkgs 26.05's systemd stage-1 forces `fileSystems."/".fsType`
# during plain toplevel evaluation (`nix flake check`), so provide a
# placeholder root fs for eval; the VM build overrides it.
fileSystems."/" = lib.mkDefault { device = "/dev/disk/by-label/nixos"; fsType = "ext4"; };
virtualisation.vmVariant.virtualisation.memorySize = 4096;
virtualisation.vmVariant.virtualisation.cores = 2;

View File

@@ -47,7 +47,9 @@
boot.initrd.availableKernelModules = [
"amdgpu" "radeon" "nouveau" "i915" "virtio_gpu"
];
services.xserver.videoDrivers = [ "amdgpu" "radeon" "nouveau" "modesetting" "fbdev" "virtio" ];
# 'virtio' X11 driver was removed in nixpkgs 26.05; modesetting drives
# virtio-gpu via KMS.
services.xserver.videoDrivers = [ "amdgpu" "radeon" "nouveau" "modesetting" "fbdev" ];
# VM guest agents. Without these the virtio-gpu connector only advertises
# its 1024x768 fallback mode, so Hyprland's `monitor = , highres, …` rule

View File

@@ -1773,7 +1773,7 @@ EOF
# User-level packages (Home Manager).
#
# Nomarchy already ships the core Hyprland ecosystem (mako, hyprlock, swww,
# Nomarchy already ships the core Hyprland ecosystem (mako, hyprlock, swaybg,
# wl-clipboard, grim, slurp, rofi, etc.). The list below includes the
# default user apps and a menu of extras — uncomment what you want and
# run \`nomarchy-env-update\`.

View File

@@ -11,7 +11,7 @@ let
findutils
gawk
jq
swww
swaybg
libnotify
gum
brightnessctl

View File

@@ -1,8 +1,8 @@
#!/usr/bin/env bash
set -e
# Cycles through the background images available for the current theme.
# Declarative + Hybrid (instant swww) for Nomarchy NixOS.
# Cycles through the background images available for the current theme,
# then applies the pick via nomarchy-theme-bg-set (see the note at the end).
STATE_DIR="$HOME/.config/nomarchy"
STATE_FILE="$STATE_DIR/state.json"
@@ -45,13 +45,11 @@ done
NEXT_INDEX=$(((INDEX + 1) % TOTAL))
NEW_BG="$BG_DIR/${BACKGROUNDS[$NEXT_INDEX]}"
nomarchy-state-write wallpaper "$NEW_BG"
# Instant feedback via swww
if pgrep -x swww-daemon >/dev/null; then
swww img "$NEW_BG" --transition-type outer --transition-pos 0.85,0.97 --transition-step 90
else
swww init && swww img "$NEW_BG"
fi
echo "Background set to $NEW_BG declaratively."
# Apply through the shared setter: it persists state.json, updates the
# ~/.config/nomarchy/current/background symlink, and restarts swaybg — the
# single wallpaper daemon this distro actually runs. Previously this script
# drove swww directly, but it gated on `swww-daemon` (never running, since
# swaybg owns the wallpaper), so it spawned a second daemon competing with
# swaybg. swww was also renamed to awww and dropped its `init` subcommand in
# nixpkgs 26.05, so unifying on swaybg fixes both at once.
exec nomarchy-theme-bg-set "$NEW_BG"

View File

@@ -1,19 +1,16 @@
{ config, lib, ... }:
{ lib, ... }:
# Compatibility shims for stylix target modules
# Stylix unconditionally imports all target modules, which expect certain
# program options to exist. This module defines stub options for programs
# we don't use to prevent evaluation errors.
#
# Note: the neovim `initLua` shim was dropped at the 26.05 bump — Home Manager
# now declares `programs.neovim.initLua` natively, so re-declaring it here is
# both redundant and a duplicate-option error.
{
options = {
# Neovim: stylix uses initLua but home-manager uses extraLuaConfig
programs.neovim.initLua = lib.mkOption {
type = lib.types.lines;
default = "";
description = "Lua code to run at init (compatibility shim for stylix)";
};
# OpenCode: stylix expects programs.opencode options
programs.opencode = {
tui = lib.mkOption {
@@ -28,8 +25,4 @@
};
};
};
config = lib.mkIf (config.programs.neovim.initLua != "") {
programs.neovim.extraLuaConfig = config.programs.neovim.initLua;
};
}