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 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 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" 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 = [ 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 = 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; 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 ]; + }; +}) 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."); 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"; 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="; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index a908629a15fd..6ec9b1035de1 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -2185,7 +2185,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