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>
112 lines
2.3 KiB
Nix
112 lines
2.3 KiB
Nix
{ config, pkgs, lib, ... }:
|
|
|
|
let
|
|
# Core dependencies needed by most scripts (minimal set)
|
|
coreDeps = with pkgs; [
|
|
coreutils
|
|
gnused
|
|
gnugrep
|
|
findutils
|
|
gawk
|
|
jq
|
|
];
|
|
|
|
# Category-specific dependencies
|
|
categoryDeps = with pkgs; {
|
|
appearance = [
|
|
libnotify
|
|
];
|
|
|
|
apps = [
|
|
hyprland
|
|
libnotify
|
|
];
|
|
|
|
hardware = [
|
|
brightnessctl
|
|
playerctl
|
|
pamixer
|
|
pciutils
|
|
libnotify
|
|
];
|
|
|
|
system = [
|
|
gum
|
|
libnotify
|
|
curl
|
|
wget
|
|
pkgs.home-manager
|
|
nixos-rebuild
|
|
];
|
|
|
|
utils = [
|
|
gum
|
|
glow
|
|
hyprland
|
|
libnotify
|
|
wl-clipboard
|
|
grim
|
|
slurp
|
|
xmlstarlet
|
|
curl
|
|
wget
|
|
];
|
|
|
|
wm = [
|
|
hyprland
|
|
swayosd
|
|
libnotify
|
|
procps
|
|
];
|
|
};
|
|
|
|
# All dependencies combined (for scripts that might call others)
|
|
allDeps = coreDeps ++ (lib.unique (lib.flatten (builtins.attrValues categoryDeps)));
|
|
|
|
# Environment variables to inject
|
|
envVars = {
|
|
NOMARCHY_TOGGLE_SUSPEND = if config.nomarchy.toggles.suspend then "true" else "false";
|
|
NOMARCHY_TOGGLE_SCREENSAVER = if config.nomarchy.toggles.screensaver then "true" else "false";
|
|
NOMARCHY_TOGGLE_IDLE = if config.nomarchy.toggles.idle then "true" else "false";
|
|
NOMARCHY_TOGGLE_NIGHTLIGHT = if config.nomarchy.toggles.nightlight then "true" else "false";
|
|
NOMARCHY_TOGGLE_WAYBAR = if config.nomarchy.toggles.waybar then "true" else "false";
|
|
NOMARCHY_MONOSPACE_FONT = config.nomarchy.fonts.monospace;
|
|
};
|
|
|
|
# Build wrapper arguments for environment variables
|
|
envWrapperArgs = lib.concatStringsSep " " (
|
|
lib.mapAttrsToList (name: value: "--set ${name} \"${value}\"") envVars
|
|
);
|
|
|
|
nomarchy-scripts = pkgs.stdenv.mkDerivation {
|
|
pname = "nomarchy-scripts";
|
|
version = "1.0.0";
|
|
src = ./utils;
|
|
|
|
nativeBuildInputs = [ pkgs.makeWrapper ];
|
|
|
|
installPhase = ''
|
|
mkdir -p $out/bin
|
|
cp * $out/bin/
|
|
|
|
chmod +x $out/bin/*
|
|
patchShebangs $out/bin
|
|
'';
|
|
|
|
postFixup = ''
|
|
# Wrap all scripts with all dependencies for robustness
|
|
deps="${lib.makeBinPath allDeps}"
|
|
for file in $out/bin/*; do
|
|
if [ -f "$file" ]; then
|
|
wrapProgram "$file" \
|
|
--prefix PATH : "$deps" \
|
|
${envWrapperArgs}
|
|
fi
|
|
done
|
|
'';
|
|
};
|
|
in
|
|
{
|
|
home.packages = [ nomarchy-scripts ];
|
|
}
|