From 90a2d70abe2d07121f9f95bc2a93163423e3fe89 Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Sat, 2 May 2026 12:57:38 +0200 Subject: [PATCH 01/11] nixos/lib/make-multi-disk-zfs-image: use structuredAttrs instead of passAsFile --- nixos/lib/make-multi-disk-zfs-image.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos/lib/make-multi-disk-zfs-image.nix b/nixos/lib/make-multi-disk-zfs-image.nix index 69d05ab004f6..dd49009450a0 100644 --- a/nixos/lib/make-multi-disk-zfs-image.nix +++ b/nixos/lib/make-multi-disk-zfs-image.nix @@ -221,12 +221,12 @@ let }; }) mountable; }; - passAsFile = [ "filesystems" ]; + __structuredAttrs = true; } '' ( echo "builtins.fromJSON '''" - jq . < "$filesystemsPath" + printf "%s" "$filesystems" | jq . echo "'''" ) > $out From 340a2d696982f4196fc2ef3c97354870a29ba18f Mon Sep 17 00:00:00 2001 From: Stefan Frijters Date: Sat, 2 May 2026 12:57:40 +0200 Subject: [PATCH 02/11] nixos/lib/make-single-disk-zfs-image: use structuredAttrs instead of passAsFile --- nixos/lib/make-single-disk-zfs-image.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nixos/lib/make-single-disk-zfs-image.nix b/nixos/lib/make-single-disk-zfs-image.nix index 7e47be6d00d9..8c71fbd2c13d 100644 --- a/nixos/lib/make-single-disk-zfs-image.nix +++ b/nixos/lib/make-single-disk-zfs-image.nix @@ -209,12 +209,12 @@ let }; }) mountable; }; - passAsFile = [ "filesystems" ]; + __structuredAttrs = true; } '' ( echo "builtins.fromJSON '''" - jq . < "$filesystemsPath" + printf "%s" "$filesystems" | jq . echo "'''" ) > $out From f7c91d08f14a9aa2ff610a8b67d9a6638c4b2785 Mon Sep 17 00:00:00 2001 From: Euan Kemp Date: Sun, 10 May 2026 01:06:55 +0900 Subject: [PATCH 03/11] anki: 25.09.3 -> 25.09.4 --- pkgs/by-name/an/anki/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/an/anki/package.nix b/pkgs/by-name/an/anki/package.nix index 9909f92a97b8..a4fdea9dca4c 100644 --- a/pkgs/by-name/an/anki/package.nix +++ b/pkgs/by-name/an/anki/package.nix @@ -37,10 +37,10 @@ let yarn-berry = yarn-berry_4; pname = "anki"; - version = "25.09.3"; - rev = "3890e12c9e48c028c3f12aa58cb64bd9f8895e30"; + version = "25.09.4"; + rev = "d52ca669f6deac5966b1c5035bc2dc77c78d3260"; - srcHash = "sha256-vpAWrZAXqm775sn1I5unPb8L9cqaRqPrVEc4A8SxPOk="; + srcHash = "sha256-brwJjsqjiCd+QDZoB9Pv3TJxTTAfDm8KtYFvJhJpELk="; cargoHash = "sha256-qcB+r9VzBz6ACZaXPL26MOxxtb/h2OIuxyc54vUgfPM="; yarnHash = "sha256-wi8e9B0EtRMoyH6KhRBNDHM/ffJ+/0Y4f4AZ7eUcXmA="; pythonDeps = From 68e2e2bde3015a036b0dd09bbd0c20dfe64fe048 Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Mon, 20 Apr 2026 12:28:52 -0700 Subject: [PATCH 04/11] nixos/test-driver: fix eval with noUserModules When "non-user" modules are not placed in baseModules or extraModules (arguments of eval-config.nix), noUserModules.evalModules breaks if the options defined in those modules are consumed. In order to restore noUserModules functionality for NixOS VM (and now nspawn) tests, the modules implementing test behavior are moved to baseModules. --- nixos/lib/testing/nixos-test-base.nix | 1 + nixos/lib/testing/nodes.nix | 167 +++++++++--------- .../nspawn-container/default.nix | 2 - nixos/modules/virtualisation/qemu-vm.nix | 1 - 4 files changed, 85 insertions(+), 86 deletions(-) diff --git a/nixos/lib/testing/nixos-test-base.nix b/nixos/lib/testing/nixos-test-base.nix index 6b518e39ac11..5e4fe23f3b5e 100644 --- a/nixos/lib/testing/nixos-test-base.nix +++ b/nixos/lib/testing/nixos-test-base.nix @@ -8,6 +8,7 @@ in { imports = [ ../../modules/testing/test-instrumentation.nix # !!! should only get added for automated test runs + ../../modules/virtualisation/guest-networking-options.nix { key = "no-manual"; documentation.nixos.enable = false; diff --git a/nixos/lib/testing/nodes.nix b/nixos/lib/testing/nodes.nix index dfd7a7278277..f83f268c88b3 100644 --- a/nixos/lib/testing/nodes.nix +++ b/nixos/lib/testing/nodes.nix @@ -37,93 +37,94 @@ let in hostToGuest.${hostPlatform.system} or (throw message); - baseOS = import ../eval-config.nix { - inherit lib; - system = null; # use modularly defined system - inherit (config.node) specialArgs; - modules = [ config.defaults ]; - baseModules = (import ../../modules/module-list.nix) ++ [ - ./nixos-test-base.nix - { - key = "nodes"; - _module.args = { - inherit (config) containers; - nodes = config.nodesCompat; - }; - } - ( - { options, ... }: - { - key = "nodes.nix-pkgs"; - config = optionalAttrs (!config.node.pkgsReadOnly) ( - mkIf (!options.nixpkgs.pkgs.isDefined) { - # TODO: switch to nixpkgs.hostPlatform and make sure containers-imperative test still evaluates. - nixpkgs.system = guestSystem; + baseOS = + extraBaseModules: + import ../eval-config.nix { + inherit lib; + system = null; # use modularly defined system + inherit (config.node) specialArgs; + modules = [ config.defaults ]; + baseModules = + (import ../../modules/module-list.nix) + ++ [ + ./nixos-test-base.nix + { + key = "nodes"; + _module.args = { + inherit (config) containers; + nodes = config.nodesCompat; + }; + } + ( + { options, ... }: + { + key = "nodes.nix-pkgs"; + config = optionalAttrs (!config.node.pkgsReadOnly) ( + mkIf (!options.nixpkgs.pkgs.isDefined) { + # TODO: switch to nixpkgs.hostPlatform and make sure containers-imperative test still evaluates. + nixpkgs.system = guestSystem; + } + ); } - ); - } - ) - testModuleArgs.config.extraBaseModules - ]; - }; - baseQemuOS = baseOS.extendModules { - modules = [ - ../../modules/virtualisation/qemu-vm.nix - config.nodeDefaults + ) + testModuleArgs.config.extraBaseModules + ] + ++ extraBaseModules; + }; + baseQemuOS = baseOS [ + ../../modules/virtualisation/qemu-vm.nix + testModuleArgs.config.extraBaseNodeModules + config.nodeDefaults + { + key = "base-qemu"; + virtualisation.qemu = { + inherit (testModuleArgs.config.qemu) package forceAccel; + }; + virtualisation.host.pkgs = hostPkgs; + } + ]; + baseNspawnOS = baseOS [ + ../../modules/virtualisation/nspawn-container + config.containerDefaults + ( + { pkgs, ... }: { - key = "base-qemu"; - virtualisation.qemu = { - inherit (testModuleArgs.config.qemu) package forceAccel; + key = "base-nspawn"; + + # PAM requires setuid and doesn't work in the build sandbox. + # https://github.com/NixOS/nix/blob/959c244a1265f4048390f3ad21679219d7b27a99/src/libstore/unix/build/linux-derivation-builder.cc#L63 + services.openssh.settings.UsePAM = false; + + # Networking for tests is statically configured by default. + # dhcpcd times out after blocking for a long time, which slows down tests. + # See https://github.com/NixOS/nixpkgs/pull/478109#discussion_r2867570799 + networking.useDHCP = lib.mkDefault false; + + # Disable Info manual directory generation to prevent build failures. + # + # Context: 'install-info' (from texinfo) is triggered during system-path + # generation to index manuals, but it requires 'gzip' in the $PATH to + # decompress them. + # When 'networking.useDHCP' is set to false, transitive dependencies + # (like dhcpcd or other network tools) that normally pull 'gzip' into + # the system environment are removed. This leaves 'install-info' + # stranded without 'gzip', causing the 'system-path' derivation to fail. + # Since nspawn containers are typically minimal, disabling 'info' + # is a cleaner fix than explicitly adding 'gzip' to systemPackages. + documentation.info.enable = lib.mkDefault false; + + # Gross, insecure hack to make login work. See above. + security.pam.services.login = { + text = '' + auth sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so + account sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so + password sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so + session sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so + ''; }; - virtualisation.host.pkgs = hostPkgs; } - testModuleArgs.config.extraBaseNodeModules - ]; - }; - baseNspawnOS = baseOS.extendModules { - modules = [ - ../../modules/virtualisation/nspawn-container - config.containerDefaults - ( - { pkgs, ... }: - { - key = "base-nspawn"; - - # PAM requires setuid and doesn't work in the build sandbox. - # https://github.com/NixOS/nix/blob/959c244a1265f4048390f3ad21679219d7b27a99/src/libstore/unix/build/linux-derivation-builder.cc#L63 - services.openssh.settings.UsePAM = false; - - # Networking for tests is statically configured by default. - # dhcpcd times out after blocking for a long time, which slows down tests. - # See https://github.com/NixOS/nixpkgs/pull/478109#discussion_r2867570799 - networking.useDHCP = lib.mkDefault false; - - # Disable Info manual directory generation to prevent build failures. - # - # Context: 'install-info' (from texinfo) is triggered during system-path - # generation to index manuals, but it requires 'gzip' in the $PATH to - # decompress them. - # When 'networking.useDHCP' is set to false, transitive dependencies - # (like dhcpcd or other network tools) that normally pull 'gzip' into - # the system environment are removed. This leaves 'install-info' - # stranded without 'gzip', causing the 'system-path' derivation to fail. - # Since nspawn containers are typically minimal, disabling 'info' - # is a cleaner fix than explicitly adding 'gzip' to systemPackages. - documentation.info.enable = lib.mkDefault false; - - # Gross, insecure hack to make login work. See above. - security.pam.services.login = { - text = '' - auth sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so - account sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so - password sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so - session sufficient ${pkgs.linux-pam}/lib/security/pam_permit.so - ''; - }; - } - ) - ]; - }; + ) + ]; # TODO (lib): Dedup with run.nix, add to lib/options.nix mkOneUp = opt: f: lib.mkOverride (opt.highestPrio - 1) (f opt.value); diff --git a/nixos/modules/virtualisation/nspawn-container/default.nix b/nixos/modules/virtualisation/nspawn-container/default.nix index f56167ca0b07..e1fdab1a6f1c 100644 --- a/nixos/modules/virtualisation/nspawn-container/default.nix +++ b/nixos/modules/virtualisation/nspawn-container/default.nix @@ -21,8 +21,6 @@ let cfg = config.virtualisation; in { - imports = [ ../guest-networking-options.nix ]; - options = { virtualisation.cmdline = lib.mkOption { diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index b58cdd8ac5f7..01d0c6cca8c8 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -399,7 +399,6 @@ in imports = [ ../profiles/qemu-guest.nix ./disk-size-option.nix - ./guest-networking-options.nix (mkRenamedOptionModule [ "virtualisation" From e2c94c46d5fcd6ef14083b8172bbf169e24b41ce Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 13 May 2026 01:50:17 +0000 Subject: [PATCH 05/11] exim: 4.99.2 -> 4.99.3 --- pkgs/by-name/ex/exim/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ex/exim/package.nix b/pkgs/by-name/ex/exim/package.nix index b1c4c975e018..145ab39bb17a 100644 --- a/pkgs/by-name/ex/exim/package.nix +++ b/pkgs/by-name/ex/exim/package.nix @@ -39,11 +39,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "exim"; - version = "4.99.2"; + version = "4.99.3"; src = fetchurl { url = "https://ftp.exim.org/pub/exim/exim4/exim-${finalAttrs.version}.tar.xz"; - hash = "sha256-JTZPGZiCcNhGllaJ3SnGYs9d4VJjmHXQ1TUqaf11Okc="; + hash = "sha256-Zj520qDZuPxbNz0ACORK4ETxD+sivJ266MfyE0Xr+zs="; }; enableParallelBuilding = true; From 05abc40d459c5d23d12e2e0d13bdf0594d846d1d Mon Sep 17 00:00:00 2001 From: Ivan Petkov Date: Wed, 13 May 2026 15:57:55 -0700 Subject: [PATCH 06/11] wasm-bindgen-cli_0_2_121: init at 0.2.121 --- .../wa/wasm-bindgen-cli_0_2_121/package.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 pkgs/by-name/wa/wasm-bindgen-cli_0_2_121/package.nix diff --git a/pkgs/by-name/wa/wasm-bindgen-cli_0_2_121/package.nix b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_121/package.nix new file mode 100644 index 000000000000..ccaf3b78a1a5 --- /dev/null +++ b/pkgs/by-name/wa/wasm-bindgen-cli_0_2_121/package.nix @@ -0,0 +1,19 @@ +{ + buildWasmBindgenCli, + fetchCrate, + rustPlatform, +}: + +buildWasmBindgenCli rec { + src = fetchCrate { + pname = "wasm-bindgen-cli"; + version = "0.2.121"; + hash = "sha256-ZOMgFNOcGkO66Jz/Z83eoIu+DIzo3Z/vq6Z5g6BDY/w="; + }; + + cargoDeps = rustPlatform.fetchCargoVendor { + inherit src; + inherit (src) pname version; + hash = "sha256-DPdCDPTAPBrbqLUqnCwQu1dePs9lGg85JCJOCIr9qjU="; + }; +} From b1845cf91fb2cc413207372930ed008873286892 Mon Sep 17 00:00:00 2001 From: Ivan Petkov Date: Wed, 13 May 2026 16:04:34 -0700 Subject: [PATCH 07/11] wasm-bindgen-cli: 0.2.117 -> 0.2.121 --- pkgs/top-level/aliases.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index c94f1eb11bd1..b3a2b1dc8dff 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -2179,7 +2179,7 @@ mapAliases { warsow = throw "'warsow' has been removed as it is unmaintained and is broken"; # Added 2025-10-09 warsow-engine = throw "'warsow-engine' has been removed as it is unmaintained and is broken"; # Added 2025-10-09 wasistlos = throw "'wasistlos' has been removed because it was unmaintained and archived upstream. Consider using 'karere' instead"; # Added 2026-04-13 - wasm-bindgen-cli = wasm-bindgen-cli_0_2_117; + wasm-bindgen-cli = wasm-bindgen-cli_0_2_121; wasm-strip = throw "'wasm-strip' has been removed due to upstream deprecation. Use 'wabt' instead."; # Added 2025-11-06 wavebox = throw "'wavebox' has been removed due to lack of maintenance in nixpkgs"; # Added 2025-06-24 wavm = throw "wavm has been removed, as it does not build with supported LLVM versions"; # Added 2025-08-10 From 4322b22aa2d753f638817fd4678a011f6fe187c5 Mon Sep 17 00:00:00 2001 From: Ivan Petkov Date: Wed, 13 May 2026 16:47:04 -0700 Subject: [PATCH 08/11] wasm-bindgen-cli: enable __structuredAttrs --- pkgs/build-support/wasm-bindgen-cli/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/build-support/wasm-bindgen-cli/default.nix b/pkgs/build-support/wasm-bindgen-cli/default.nix index c4688dfec76e..9941a7215d1b 100644 --- a/pkgs/build-support/wasm-bindgen-cli/default.nix +++ b/pkgs/build-support/wasm-bindgen-cli/default.nix @@ -21,6 +21,8 @@ rustPlatform.buildRustPackage { inherit version src cargoDeps; + __structuredAttrs = true; + nativeBuildInputs = [ pkg-config ]; buildInputs = [ From 851986399093c7b3e2fcb81b56b8c13d345eb369 Mon Sep 17 00:00:00 2001 From: FlameFlag Date: Thu, 14 May 2026 16:48:41 +0300 Subject: [PATCH 09/11] raycast: 1.104.10 -> 1.104.17 --- pkgs/by-name/ra/raycast/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ra/raycast/package.nix b/pkgs/by-name/ra/raycast/package.nix index f94bc174fbaa..150f1b16e65a 100644 --- a/pkgs/by-name/ra/raycast/package.nix +++ b/pkgs/by-name/ra/raycast/package.nix @@ -12,19 +12,19 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "raycast"; - version = "1.104.10"; + version = "1.104.17"; src = { aarch64-darwin = fetchurl { name = "Raycast.dmg"; url = "https://releases.raycast.com/releases/${finalAttrs.version}/download?build=arm"; - hash = "sha256-YXEynLEEZChlbk+y3yfO0qYHY95eC00kWf9tzmQk5Ho="; + hash = "sha256-muX6PPanjU+ElCQhIfo7Y7cChbTO8Q/gH12ULvBK43s="; }; x86_64-darwin = fetchurl { name = "Raycast.dmg"; url = "https://releases.raycast.com/releases/${finalAttrs.version}/download?build=x86_64"; - hash = "sha256-xr2//lFv67QlL1At2OEjAvZMnYbhbGjFTFUN6un3zY4="; + hash = "sha256-E8VGFydX5GXE3graZUSzN0S2JGbBXM/LD+DLm9waAus="; }; } .${stdenvNoCC.system} or (throw "raycast: ${stdenvNoCC.system} is unsupported."); From 14b4726797bda9b9b8e8946ba89c4f397b197b4b Mon Sep 17 00:00:00 2001 From: FlameFlag Date: Thu, 14 May 2026 16:48:41 +0300 Subject: [PATCH 10/11] raycast-beta: init at 0.60.0.0 --- pkgs/by-name/ra/raycast-beta/package.nix | 78 ++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 pkgs/by-name/ra/raycast-beta/package.nix diff --git a/pkgs/by-name/ra/raycast-beta/package.nix b/pkgs/by-name/ra/raycast-beta/package.nix new file mode 100644 index 000000000000..acd40a54dc50 --- /dev/null +++ b/pkgs/by-name/ra/raycast-beta/package.nix @@ -0,0 +1,78 @@ +{ + lib, + stdenvNoCC, + fetchurl, + writeShellApplication, + cacert, + curl, + openssl, + undmg, +}: + +stdenvNoCC.mkDerivation (finalAttrs: { + pname = "raycast-beta"; + version = "0.60.0.0"; + + __structuredAttrs = true; + strictDeps = true; + + src = + { + aarch64-darwin = fetchurl { + name = "Raycast_Beta.dmg"; + url = "https://x-r2.raycast-releases.com/Raycast_Beta_${finalAttrs.version}_2fc04147cc_arm64.dmg"; + hash = "sha256-PQX5l5UzlphKySIR5QRcJvJLe9NxQrTOPLy3itV0QHU="; + }; + } + .${stdenvNoCC.system} or (throw "raycast-beta: ${stdenvNoCC.system} is unsupported."); + + dontPatch = true; + dontConfigure = true; + dontBuild = true; + dontFixup = true; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "Raycast Beta.app"; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/Applications/Raycast Beta.app" + cp -R . "$out/Applications/Raycast Beta.app" + mkdir -p "$out/bin" + ln -s "$out/Applications/Raycast Beta.app/Contents/MacOS/Raycast Beta" "$out/bin/raycast-beta" + + runHook postInstall + ''; + + passthru.updateScript = lib.getExe (writeShellApplication { + name = "raycast-beta-update-script"; + runtimeInputs = [ + cacert + curl + openssl + ]; + text = '' + url=$(curl --silent "https://www.raycast.com/new" | grep -o 'https://x-r2\.raycast-releases\.com/Raycast_Beta_[^"]*_arm64\.dmg' | head -n1) + version=$(echo "$url" | sed -E 's|.*/Raycast_Beta_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)_[^/]+_arm64\.dmg|\1|') + hash="sha256-$(curl -sL "$url" | openssl dgst -sha256 -binary | openssl base64)" + + sed -i -E \ + -e 's|(version = )"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+";|\1"'"$version"'";|' \ + -e 's|url = "https://x-r2\.raycast-releases\.com/Raycast_Beta_[^"]*_arm64\.dmg";|url = "'"$url"'";|' \ + -e 's|(hash = )"sha256-[A-Za-z0-9+/]+=";|\1"'"$hash"'";|' \ + ./pkgs/by-name/ra/raycast-beta/package.nix + ''; + }); + + meta = { + description = "Control your tools with a few keystrokes - beta release"; + homepage = "https://raycast.app/"; + license = lib.licenses.unfree; + mainProgram = "raycast-beta"; + maintainers = with lib.maintainers; [ FlameFlag ]; + platforms = [ "aarch64-darwin" ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + }; +}) From 78520aa5744c73270252123b37c1be35f1544787 Mon Sep 17 00:00:00 2001 From: Luna Perroni Date: Wed, 13 May 2026 12:48:12 -0300 Subject: [PATCH 11/11] smartcat: remove v prefix in meta.changelog --- pkgs/by-name/sm/smartcat/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/sm/smartcat/package.nix b/pkgs/by-name/sm/smartcat/package.nix index bfa3e826d0b2..7847794cdb53 100644 --- a/pkgs/by-name/sm/smartcat/package.nix +++ b/pkgs/by-name/sm/smartcat/package.nix @@ -31,7 +31,7 @@ rustPlatform.buildRustPackage (finalAttrs: { meta = { description = "Integrate large language models into the command line"; homepage = "https://github.com/efugier/smartcat"; - changelog = "https://github.com/efugier/smartcat/releases/tag/v${finalAttrs.version}"; + changelog = "https://github.com/efugier/smartcat/releases/tag/${finalAttrs.version}"; license = lib.licenses.asl20; platforms = lib.platforms.unix; mainProgram = "sc";