{ lib , stdenvNoCC , python3 , makeWrapper , awww , libnotify , git # Shipped theme presets, baked into the package as a fallback so # `list`/`apply` work even when $NOMARCHY_PATH has no themes/ dir. # Already a store artifact (nomarchy-default-themes merges the repo's # ./themes with backgrounds/ symlinked from nomarchy-wallpapers) — the # wrapper points straight at it, no copy, so it stays in the closure # without duplicating it into $out. , themesDir ? null }: stdenvNoCC.mkDerivation { pname = "nomarchy-state-sync"; version = "0.5.0"; src = ./.; nativeBuildInputs = [ makeWrapper ]; buildInputs = [ python3 ]; installPhase = '' runHook preInstall install -Dm755 nomarchy-state-sync.py $out/bin/nomarchy-state-sync patchShebangs $out/bin/nomarchy-state-sync # Stdlib-only Python. home-manager is deliberately NOT wrapped in — # the rebuild must use the user's own home-manager from their PATH. wrapProgram $out/bin/nomarchy-state-sync \ --prefix PATH : ${lib.makeBinPath [ awww libnotify git ]} \ ${lib.optionalString (themesDir != null) "--set NOMARCHY_DEFAULT_THEMES ${themesDir}"} # #107: old CLI name kept as a symlink so muscle memory and scripts # survive a pull (drop after the next stable release notes say so). # After wrapProgram so it points at the wrapper, not the raw script. ln -s nomarchy-state-sync $out/bin/nomarchy-theme-sync runHook postInstall ''; meta = { description = "Nomarchy state writer + Home Manager rebuild dispatcher"; license = lib.licenses.mit; mainProgram = "nomarchy-state-sync"; platforms = lib.platforms.linux; }; }