From 04c3e0defa78848cccbf0b38e8a47e9a1cb626bd Mon Sep 17 00:00:00 2001 From: Yueh-Shun Li Date: Wed, 20 Aug 2025 19:08:27 +0800 Subject: [PATCH 01/73] rustPlatform.buildRustPackage: fix cargoDeps inherited attribute overriding Make `.cargoDeps` reference the overridden `.src` and other attributes. Let `stdenv.mkDerivation` handle the name of `.cargoDeps`. Make Rust package overriding *possible* before making further design decisions about the `.overrideAttrs` interface. --- .../rust/build-rust-package/default.nix | 37 +++++++++---------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/pkgs/build-support/rust/build-rust-package/default.nix b/pkgs/build-support/rust/build-rust-package/default.nix index 7ad39a58935c..bb445d9f173a 100644 --- a/pkgs/build-support/rust/build-rust-package/default.nix +++ b/pkgs/build-support/rust/build-rust-package/default.nix @@ -16,6 +16,9 @@ }: let + getOptionalAttrs = + names: attrs: lib.getAttrs (lib.intersectLists names (lib.attrNames attrs)) attrs; + interpolateString = s: if lib.isList s then @@ -39,16 +42,9 @@ lib.extendMkDerivation { extendDrvArgs = finalAttrs: { - name ? "${args.pname}-${args.version}", - # Name for the vendored dependencies tarball - cargoDepsName ? name, + cargoDepsName ? null, - src ? null, - srcs ? null, - preUnpack ? null, - unpackPhase ? null, - postUnpack ? null, cargoPatches ? [ ], patches ? [ ], sourceRoot ? null, @@ -112,17 +108,20 @@ lib.extendMkDerivation { throw "cargoHash, cargoVendorDir, cargoDeps, or cargoLock must be set" else fetchCargoVendor ( - { - inherit - src - srcs - sourceRoot - cargoRoot - preUnpack - unpackPhase - postUnpack - ; - name = cargoDepsName; + getOptionalAttrs [ + "name" + "pname" + "version" + "src" + "srcs" + "sourceRoot" + "cargoRoot" + "preUnpack" + "unpackPhase" + "postUnpack" + ] finalAttrs + // { + ${if cargoDepsName != null then "name" else null} = cargoDepsName; patches = cargoPatches; hash = args.cargoHash; } From 8f4338bd67815c60bf321c4626f6cdcb81248669 Mon Sep 17 00:00:00 2001 From: mulatta <67085791+mulatta@users.noreply.github.com> Date: Thu, 19 Feb 2026 12:45:05 +0900 Subject: [PATCH 02/73] nextflow: fix NXF_OPTS wrapper to expand $USER at runtime --- pkgs/by-name/ne/nextflow/package.nix | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/ne/nextflow/package.nix b/pkgs/by-name/ne/nextflow/package.nix index 948c0dd2f5e7..0567008ed940 100644 --- a/pkgs/by-name/ne/nextflow/package.nix +++ b/pkgs/by-name/ne/nextflow/package.nix @@ -84,6 +84,8 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + # --run is used instead of --set to avoid makeWrapper's single-quote escaping, + # which prevents $USER from expanding at runtime. See #192396 postFixup = '' wrapProgram $out/bin/nextflow \ --prefix PATH : ${ @@ -96,7 +98,7 @@ stdenv.mkDerivation (finalAttrs: { ] } \ --set JAVA_HOME ${openjdk.home} \ - --set NXF_OPTS "-Duser.name=\''${USER}" + --run 'export NXF_OPTS="-Duser.name=''$USER''${NXF_OPTS:+ ''$NXF_OPTS}"' ''; passthru.tests.default = nixosTests.nextflow; From d5274a45ac8ddcf20d72a9165eaaf7e46ef9ba2f Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 8 Mar 2026 18:14:13 +0000 Subject: [PATCH 03/73] highscore-nestopia: 0-unstable-2025-12-30 -> 0-unstable-2026-03-03 --- pkgs/by-name/hi/highscore-nestopia/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/hi/highscore-nestopia/package.nix b/pkgs/by-name/hi/highscore-nestopia/package.nix index ca8046c548af..7bf2dfc936a6 100644 --- a/pkgs/by-name/hi/highscore-nestopia/package.nix +++ b/pkgs/by-name/hi/highscore-nestopia/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "highscore-nestopia"; - version = "0-unstable-2025-12-30"; + version = "0-unstable-2026-03-03"; src = fetchFromGitLab { owner = "highscore-emu"; repo = "nestopia"; - rev = "529e69b6e577f42a246c8fa44ef7f3095647adaf"; - hash = "sha256-2aBEtut6AShP1Nz0BqNTFD3/gN2cj5PY8JL8WbLE7XE="; + rev = "0ef62709df9ff3af8729c9d7dc257d8fbc2cd48c"; + hash = "sha256-DRA1l5wV/jZhbFni5ZXD6agObt+XZYrPIbgkzSgUGEo="; }; sourceRoot = "${finalAttrs.src.name}/highscore"; From c61c7418d066011591080873cab68e85d981d974 Mon Sep 17 00:00:00 2001 From: Alex Libman <5430928+aslibman@users.noreply.github.com> Date: Sat, 28 Mar 2026 18:22:13 -0400 Subject: [PATCH 04/73] bat: genericize shell init for bat-extras packages Moves shell init logic specific to bat-extras packages into the extras packages themselves. The bat package itself is now only reponsible for registering the bat-extras shell inits. Also uses finalAttrs.finalPackage to correctly handle overlays on bat-extra packages. --- nixos/modules/programs/bat.nix | 55 ++++++------------- .../misc/bat-extras/buildBatExtrasPkg.nix | 36 ++++++++++++ pkgs/tools/misc/bat-extras/modules/batman.nix | 3 + .../tools/misc/bat-extras/modules/batpipe.nix | 3 + 4 files changed, 58 insertions(+), 39 deletions(-) diff --git a/nixos/modules/programs/bat.nix b/nixos/modules/programs/bat.nix index 9d220cf7aa1c..d3fe0096c13d 100644 --- a/nixos/modules/programs/bat.nix +++ b/nixos/modules/programs/bat.nix @@ -5,9 +5,9 @@ ... }: let - inherit (builtins) isList elem; + inherit (builtins) isList; inherit (lib) - getExe + concatMapStrings literalExpression maintainers mapAttrs' @@ -36,33 +36,6 @@ let boolToString value else toString value; - - initScript = - { - program, - shell, - flags ? [ ], - }: - if (shell != "fish") then - '' - eval "$(${getExe program} ${toString flags})" - '' - else - '' - ${getExe program} ${toString flags} | source - ''; - - shellInit = - shell: - optionalString (elem pkgs.bat-extras.batpipe cfg.extraPackages) (initScript { - program = pkgs.bat-extras.batpipe; - inherit shell; - }) - + optionalString (elem pkgs.bat-extras.batman cfg.extraPackages) (initScript { - program = pkgs.bat-extras.batman; - inherit shell; - flags = [ "--export-env" ]; - }); in { options.programs.bat = { @@ -112,17 +85,21 @@ in ); }; - programs = { - bash = mkIf (!config.programs.fish.enable) { - interactiveShellInit = shellInit "bash"; + programs = + let + shellInit = shell: concatMapStrings (pkg: pkg.shellInit shell) cfg.extraPackages; + in + { + bash = mkIf (!config.programs.fish.enable) { + interactiveShellInit = shellInit "bash"; + }; + fish = mkIf config.programs.fish.enable { + interactiveShellInit = shellInit "fish"; + }; + zsh = mkIf (!config.programs.fish.enable && config.programs.zsh.enable) { + interactiveShellInit = shellInit "zsh"; + }; }; - fish = mkIf config.programs.fish.enable { - interactiveShellInit = shellInit "fish"; - }; - zsh = mkIf (!config.programs.fish.enable && config.programs.zsh.enable) { - interactiveShellInit = shellInit "zsh"; - }; - }; }; meta.maintainers = with maintainers; [ sigmasquadron ]; } diff --git a/pkgs/tools/misc/bat-extras/buildBatExtrasPkg.nix b/pkgs/tools/misc/bat-extras/buildBatExtrasPkg.nix index e4aaeedbd12b..9779438c460f 100644 --- a/pkgs/tools/misc/bat-extras/buildBatExtrasPkg.nix +++ b/pkgs/tools/misc/bat-extras/buildBatExtrasPkg.nix @@ -16,12 +16,18 @@ let "name" "dependencies" "meta" + "shellInit" ]; in { name, dependencies, meta ? { }, + # Config for the `shellInit` passthru (a `shell -> string` + # function returning the shell-specific init snippet for the bat-extras + # package). Specified as an attrset with a 'flags' string list argument. + # If null, there is no shell init for the package. + shellInit ? null, ... }@args: stdenv.mkDerivation ( @@ -76,6 +82,36 @@ stdenv.mkDerivation ( # We have already patched dontPatchShebangs = true; + passthru = + let + initScript = + { + program, + shell, + flags ? [ ], + }: + if (shell != "fish") then + '' + eval "$(${lib.getExe program} ${toString flags})" + '' + else + '' + ${lib.getExe program} ${toString flags} | source + ''; + in + { + shellInit = + shell: + if shellInit == null then + "" + else + initScript { + program = finalAttrs.finalPackage; + inherit shell; + flags = shellInit.flags or [ ]; + }; + }; + meta = core.meta // { mainProgram = name; } // meta; } ) diff --git a/pkgs/tools/misc/bat-extras/modules/batman.nix b/pkgs/tools/misc/bat-extras/modules/batman.nix index a08067f7df5e..bf518657c6a9 100644 --- a/pkgs/tools/misc/bat-extras/modules/batman.nix +++ b/pkgs/tools/misc/bat-extras/modules/batman.nix @@ -7,5 +7,8 @@ buildBatExtrasPkg { name = "batman"; dependencies = lib.optional stdenv.targetPlatform.isLinux util-linux; + shellInit = { + flags = [ "--export-env" ]; + }; meta.description = "Read system manual pages (man) using bat as the manual page formatter"; } diff --git a/pkgs/tools/misc/bat-extras/modules/batpipe.nix b/pkgs/tools/misc/bat-extras/modules/batpipe.nix index c8c9a754923d..c9cfdc7253a9 100644 --- a/pkgs/tools/misc/bat-extras/modules/batpipe.nix +++ b/pkgs/tools/misc/bat-extras/modules/batpipe.nix @@ -11,6 +11,9 @@ buildBatExtrasPkg { less procps ]; + shellInit = { + flags = [ ]; + }; patches = [ ../patches/batpipe-skip-outdated-test.patch From b386fc280a9517c4532d8563ed8afb3b6ffcc3a2 Mon Sep 17 00:00:00 2001 From: Artur Sannikov Date: Thu, 26 Mar 2026 10:59:33 +0200 Subject: [PATCH 05/73] phylophlan: 3.1.1 -> 3.2.1 --- pkgs/by-name/ph/phylophlan/package.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ph/phylophlan/package.nix b/pkgs/by-name/ph/phylophlan/package.nix index e5670ec6ef85..78b307e46972 100644 --- a/pkgs/by-name/ph/phylophlan/package.nix +++ b/pkgs/by-name/ph/phylophlan/package.nix @@ -11,14 +11,14 @@ let finalAttrs = { pname = "phylophlan"; - version = "3.1.1"; + version = "3.2.1"; pyproject = true; src = fetchFromGitHub { owner = "biobakery"; repo = "phylophlan"; tag = finalAttrs.version; - hash = "sha256-KlWKt2tH2lQBh/eQ2Hbcu2gXHEFfmFEc6LrybluxINc="; + hash = "sha256-rPTEdu0W3LD27tDIWCOQ3K+RJuj97I9aEeYFdM77jOs="; }; build-system = with python3Packages; [ setuptools ]; @@ -35,6 +35,8 @@ let seaborn distutils requests + scipy + tqdm ]; # Minimum needed external tools From 19add69b0631fb0647e51aaa86866ad47da6b2d2 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Fri, 3 Apr 2026 15:23:51 +0000 Subject: [PATCH 06/73] highscore-sameboy: 0-unstable-2026-02-17 -> 0-unstable-2026-04-01 --- pkgs/by-name/hi/highscore-sameboy/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/hi/highscore-sameboy/package.nix b/pkgs/by-name/hi/highscore-sameboy/package.nix index 05872a1bfff9..2dbf26a11db8 100644 --- a/pkgs/by-name/hi/highscore-sameboy/package.nix +++ b/pkgs/by-name/hi/highscore-sameboy/package.nix @@ -12,13 +12,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "highscore-sameboy"; - version = "0-unstable-2026-02-17"; + version = "0-unstable-2026-04-01"; src = fetchFromGitHub { owner = "highscore-emu"; repo = "SameBoy"; - rev = "aae1571db7de438638d4180dc451b1b348d5a135"; - hash = "sha256-PZNWzN/C6QPTgNLIsN55cE/3DyfcUdUknAUjxZ7sJvA="; + rev = "f59693cc4f1f3ac547eaf25856574fb850c1da61"; + hash = "sha256-GzBTB3lqWi+Cw24fFVN9YBa3ecOA5G9756RWM6mMxvA="; }; sourceRoot = "${finalAttrs.src.name}/highscore"; From 5d46128ee700091776c5c38a18a412aaa13e6d77 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Fri, 3 Apr 2026 15:27:48 +0000 Subject: [PATCH 07/73] highscore-stella: 0-unstable-2026-01-27 -> 0-unstable-2026-04-02 --- pkgs/by-name/hi/highscore-stella/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/hi/highscore-stella/package.nix b/pkgs/by-name/hi/highscore-stella/package.nix index 11d037fa431d..2b924bb6b63a 100644 --- a/pkgs/by-name/hi/highscore-stella/package.nix +++ b/pkgs/by-name/hi/highscore-stella/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "highscore-stella"; - version = "0-unstable-2026-01-27"; + version = "0-unstable-2026-04-02"; src = fetchFromGitHub { owner = "highscore-emu"; repo = "stella"; - rev = "689e4325099fbc348a92be40237d94bba692aff4"; - hash = "sha256-7+/qgWUiL/dzacuFmbQiAOO+R71rFas+Tf0kpZHOjgY="; + rev = "d4e5a1f26fd62766e2ff9eb070f59efa89d68ed6"; + hash = "sha256-/TbINGmvsDFxTwdaewg1Hv/fDQMk4ELz6j1TDLaffUQ="; }; sourceRoot = "${finalAttrs.src.name}/src/os/highscore"; From 4b75b20b0e9e815f462d1ab36f79cfa9bed39aef Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Wed, 8 Apr 2026 23:32:48 +0000 Subject: [PATCH 08/73] opa-envoy-plugin: 1.13.2-envoy-2 -> 1.15.2-envoy --- pkgs/by-name/op/opa-envoy-plugin/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/op/opa-envoy-plugin/package.nix b/pkgs/by-name/op/opa-envoy-plugin/package.nix index 1241f2e33865..9daaf936f685 100644 --- a/pkgs/by-name/op/opa-envoy-plugin/package.nix +++ b/pkgs/by-name/op/opa-envoy-plugin/package.nix @@ -14,16 +14,16 @@ assert buildGoModule (finalAttrs: { pname = "opa-envoy-plugin"; - version = "1.13.2-envoy-2"; + version = "1.15.2-envoy"; src = fetchFromGitHub { owner = "open-policy-agent"; repo = "opa-envoy-plugin"; tag = "v${finalAttrs.version}"; - hash = "sha256-2NztAdUcslKzr+OIMWWLJx76Fw0CNP1nw6056Xs6SVo="; + hash = "sha256-PUtiM72ENAJtCQeX0YnDuWCrQT/y7s4683AxvX/VsIs="; }; - vendorHash = "sha256-3NV5YNwfZgcL+VYXBDWwtb+/0bwCgLRxE3XmLGA2Nkw="; + vendorHash = "sha256-zkEgvAD8HaObrbq8OZgx/HLLdv+r4b1Za+R4fYl4h3A="; nativeBuildInputs = [ installShellFiles ]; From 4ce11070ff6c34e9e967cb66215af77ccf9bc390 Mon Sep 17 00:00:00 2001 From: Gaute Ravndal Date: Thu, 9 Apr 2026 17:59:31 +0200 Subject: [PATCH 09/73] nixos/programs/fish: don't generate completions for configuration.nix(5) This can be a fairly large bottleneck on slower systems, and as there obviously are no useful shell completions generated from this man page it can safely be ignored. --- nixos/modules/programs/fish.nix | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/nixos/modules/programs/fish.nix b/nixos/modules/programs/fish.nix index 13c00237906e..5d767c98868f 100644 --- a/nixos/modules/programs/fish.nix +++ b/nixos/modules/programs/fish.nix @@ -301,11 +301,18 @@ in find -L $package/share/man -type f | xargs ${pkgs.python3.pythonOnBuildForHost.interpreter} ${patchedGenerator}/create_manpage_completions.py --directory $out >/dev/null fi ''; + packages = + if config.documentation.nixos.enable && config.documentation.man.enable then + builtins.filter (pkg: pkg != config.system.build.manual.nixos-configuration-reference-manpage) ( + cfge.systemPackages ++ cfg.extraCompletionPackages + ) + else + cfge.systemPackages ++ cfg.extraCompletionPackages; in pkgs.buildEnv { name = "system_fish-completions"; ignoreCollisions = true; - paths = map generateCompletions (config.environment.systemPackages ++ cfg.extraCompletionPackages); + paths = map generateCompletions packages; }; }) From 8246d879f73d53fc0265be250cef5c559a1718e0 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 11 Apr 2026 14:29:41 +0000 Subject: [PATCH 10/73] libhighscore: 0-unstable-2026-01-30 -> 0-unstable-2026-04-01 --- pkgs/by-name/li/libhighscore/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/li/libhighscore/package.nix b/pkgs/by-name/li/libhighscore/package.nix index 202c0dd199c4..89e0e2aa6fa8 100644 --- a/pkgs/by-name/li/libhighscore/package.nix +++ b/pkgs/by-name/li/libhighscore/package.nix @@ -13,14 +13,14 @@ stdenv.mkDerivation { pname = "libhighscore"; - version = "0-unstable-2026-01-30"; + version = "0-unstable-2026-04-01"; src = fetchFromGitLab { domain = "gitlab.gnome.org"; owner = "alicem"; repo = "libhighscore"; - rev = "81366c670b777a6943dbdd955b9e867c8da247e7"; - hash = "sha256-z+gMU9IA0F9alrhXNf5e+0/J87ChwVyCn26iA+ythBE="; + rev = "a2fcebc004be977f45ecbe40e94a85d0c1690f43"; + hash = "sha256-npJDapediUTpDgevwfsEskEWSObPD/0ERFL0JWzAvM0="; }; nativeBuildInputs = [ From 7cb276518091df1b5a8770080fd0519f7de4167b Mon Sep 17 00:00:00 2001 From: Gaute Ravndal Date: Fri, 2 Jan 2026 01:24:00 +0100 Subject: [PATCH 11/73] fish: nixos/programs/fish: remove references to __fish_datadir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit __fish_datadir was renamed to __fish_data_dir in fish 3.0b1, see the release notes in fish-doc(1): > fish 3.0b1 (released December 11, 2018) > ... > Notable non-backward compatible changes > ... > • The internal variables __fish_datadir and __fish_sysconfdir are > now known as __fish_data_dir and __fish_sysconf_dir respectively. That this has kept working (?) all the while might possibly be an indication that this could have been removed a little over seven years ago. With the release of fish 4.2.0 the contest of __fish_data_dir is also no longer used (with the exception of HTML docs, and vendor_*.d), as the standalone build mode is now enabled by default. Fish refers to embedded files by prefixing them with "embedded:", see `$ type cd`: `# Defined in embedded:functions/cd.fish @ line 5`. --- nixos/modules/programs/fish.nix | 8 ++++---- pkgs/by-name/fi/fish/package.nix | 17 ++++++++--------- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/nixos/modules/programs/fish.nix b/nixos/modules/programs/fish.nix index dac854aeb4f3..520def20d967 100644 --- a/nixos/modules/programs/fish.nix +++ b/nixos/modules/programs/fish.nix @@ -199,16 +199,16 @@ in '' else indentFishFile "nixos-env-preinit.fish" '' - # This happens before $__fish_datadir/config.fish sets fish_function_path, so it is currently - # unset. We set it and then completely erase it, leaving its configuration to $__fish_datadir/config.fish - set fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d $__fish_datadir/functions + # This happens before embedded:config.fish sets fish_function_path, so it is currently + # unset. We set it and then completely erase it, leaving its configuration to embedded:config.fish + set fish_function_path ${pkgs.fishPlugins.foreign-env}/share/fish/vendor_functions.d # source the NixOS environment config if [ -z "$__NIXOS_SET_ENVIRONMENT_DONE" ] fenv source ${config.system.build.setEnvironment} end - # clear fish_function_path so that it will be correctly set when we return to $__fish_datadir/config.fish + # clear fish_function_path so that it will be correctly set when we return to embedded:config.fish set -e fish_function_path ''; } diff --git a/pkgs/by-name/fi/fish/package.nix b/pkgs/by-name/fi/fish/package.nix index 69127aa37d78..9ecccf3a9402 100644 --- a/pkgs/by-name/fi/fish/package.nix +++ b/pkgs/by-name/fi/fish/package.nix @@ -105,11 +105,10 @@ let test -n "$NIX_PROFILES" and begin - # We ensure that __extra_* variables are read in $__fish_datadir/config.fish - # with a preference for user-configured data by making sure the package-specific - # data comes last. Files are loaded/sourced in encounter order, duplicate - # basenames get skipped, so we assure this by prepending Nix profile paths - # (ordered in reverse of the $NIX_PROFILE variable) + # We ensure that __extra_* variables are read in embedded:config.fish with a preference for + # user-configured data by making sure the package-specific data comes last. Files are + # loaded/sourced in encounter order, duplicate basenames get skipped, so we assure this by + # prepending Nix profile paths (ordered in reverse of the $NIX_PROFILE variable) # # Note that at this point in evaluation, there is nothing whatsoever on the # fish_function_path. That means we don't have most fish builtins, e.g., `eval`. @@ -135,12 +134,12 @@ let # `begin; begin; …; end; end` but that's ok. sourceWithFenv = path: '' begin # fenv - # This happens before $__fish_datadir/config.fish sets fish_function_path, so it is currently - # unset. We set it and then completely erase it, leaving its configuration to $__fish_datadir/config.fish - set fish_function_path ${fishPlugins.foreign-env}/share/fish/vendor_functions.d $__fish_datadir/functions + # This happens before embedded:config.fish sets fish_function_path, so it is currently unset. + # We set it and then completely erase it, leaving its configuration to embedded:config.fish + set fish_function_path ${fishPlugins.foreign-env}/share/fish/vendor_functions.d fenv source ${lib.escapeShellArg path} set -l fenv_status $status - # clear fish_function_path so that it will be correctly set when we return to $__fish_datadir/config.fish + # clear fish_function_path so that it will be correctly set when we return to embedded:config.fish set -e fish_function_path test $fenv_status -eq 0 end # fenv From f8314a1fa1aa9bbe578d31616b19204cdcac00ae Mon Sep 17 00:00:00 2001 From: Jost Alemann Date: Sat, 18 Apr 2026 14:21:09 +0200 Subject: [PATCH 12/73] starship: 1.24.2 -> 1.25.0 Changelog: https://github.com/starship/starship/releases/tag/v1.25.0 Diff: https://github.com/starship/starship/compare/v1.24.2...v1.25.0 --- pkgs/by-name/st/starship/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/st/starship/package.nix b/pkgs/by-name/st/starship/package.nix index 354a0603aa1e..b12cdede87d5 100644 --- a/pkgs/by-name/st/starship/package.nix +++ b/pkgs/by-name/st/starship/package.nix @@ -12,13 +12,13 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "starship"; - version = "1.24.2"; + version = "1.25.0"; src = fetchFromGitHub { owner = "starship"; repo = "starship"; tag = "v${finalAttrs.version}"; - hash = "sha256-QE0zsQa7JRSXbCBe9yGGGW2ZNo0kp+JD0/5jIyN0OIQ="; + hash = "sha256-r7qUsAcs/Ljp1bgormw9sw4UKePs4EdAV0PjMWFFTdo="; }; nativeBuildInputs = [ installShellFiles ]; @@ -44,7 +44,7 @@ rustPlatform.buildRustPackage (finalAttrs: { '' ); - cargoHash = "sha256-CYRm8wvKK7HIPI1yxTWLV/wpK++mHVT9BvDVX96VFr0="; + cargoHash = "sha256-1fCdIJC1PW86ZV4dfL8OJ8Xm3y2rbBvDNeZ0Td+TZVY="; nativeCheckInputs = [ gitMinimal From 66fc30dff5459c984870e3f904cba5bb3e61a16b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 18 Apr 2026 17:13:31 +0000 Subject: [PATCH 13/73] bitwarden-directory-connector: 2026.3.0 -> 2026.4.0 --- .../security/bitwarden-directory-connector/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/security/bitwarden-directory-connector/default.nix b/pkgs/tools/security/bitwarden-directory-connector/default.nix index 8b081f53525c..695fcd2cedec 100644 --- a/pkgs/tools/security/bitwarden-directory-connector/default.nix +++ b/pkgs/tools/security/bitwarden-directory-connector/default.nix @@ -19,14 +19,14 @@ let }: buildNpmPackage rec { pname = name; - version = "2026.3.0"; + version = "2026.4.0"; nodejs = nodejs_22; src = fetchFromGitHub { owner = "bitwarden"; repo = "directory-connector"; rev = "v${version}"; - hash = "sha256-MfYFxcK0pqwIGBJFMVbmSUaGyrwLhMzdSoO6q46F9l8="; + hash = "sha256-FcT+rZkSqlDjSXjmNTHWoNXzW8WPo8LTED8Do5sDvwE="; }; postPatch = '' @@ -38,7 +38,7 @@ let --replace-fail "AppImage" "dir" ''; - npmDepsHash = "sha256-c3Q+b+ZS6nXPuSPq8CZliDYfpN/HIH49tIcGj3bVmLg="; + npmDepsHash = "sha256-kFuSCcIWAEJ0KNVqEabjqqSZ8CVBbPyxkAxhrbRBqVc="; env.ELECTRON_SKIP_BINARY_DOWNLOAD = "1"; From a35af4e928ee9156ee4156450ad182f4565122bf Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Fri, 24 Apr 2026 14:39:47 +0000 Subject: [PATCH 14/73] gdal: 3.12.3 -> 3.12.4 --- pkgs/by-name/gd/gdal/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/gd/gdal/package.nix b/pkgs/by-name/gd/gdal/package.nix index 9d0c5f6f103b..353b44e4ed0d 100644 --- a/pkgs/by-name/gd/gdal/package.nix +++ b/pkgs/by-name/gd/gdal/package.nix @@ -83,13 +83,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "gdal" + lib.optionalString useMinimalFeatures "-minimal"; - version = "3.12.3"; + version = "3.12.4"; src = fetchFromGitHub { owner = "OSGeo"; repo = "gdal"; tag = "v${finalAttrs.version}"; - hash = "sha256-tGyZB0e2DNyi3OpiOb1Mk8R8SdQRwhxCy8fOQrauVso="; + hash = "sha256-sD/ZAOvMWK2+AGw6wgziDsheH+hwUwhd7i2f65cjFKg="; }; nativeBuildInputs = [ From 2a04bfb289a212ead4b2ee54062541b6005acfb9 Mon Sep 17 00:00:00 2001 From: Sigmanificient Date: Sat, 25 Apr 2026 00:56:30 +0200 Subject: [PATCH 15/73] route159: use installFonts --- pkgs/by-name/ro/route159/package.nix | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/ro/route159/package.nix b/pkgs/by-name/ro/route159/package.nix index c042aa846ef4..d9cfe49a31cc 100644 --- a/pkgs/by-name/ro/route159/package.nix +++ b/pkgs/by-name/ro/route159/package.nix @@ -2,6 +2,7 @@ lib, stdenvNoCC, fetchzip, + installFonts, }: let @@ -18,13 +19,7 @@ stdenvNoCC.mkDerivation { stripRoot = false; }; - installPhase = '' - runHook preInstall - - install -D -m444 -t $out/share/fonts/opentype $src/*.otf - - runHook postInstall - ''; + nativeBuildInputs = [ installFonts ]; meta = { homepage = "https://dotcolon.net/font/route159/"; From 6ab308a1d9423365b748b679e77db7d68ec78daf Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 25 Apr 2026 05:47:19 +0000 Subject: [PATCH 16/73] netassert: 2.1.0 -> 2.1.4 --- pkgs/by-name/ne/netassert/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ne/netassert/package.nix b/pkgs/by-name/ne/netassert/package.nix index a8eec81a81f7..64818b130880 100644 --- a/pkgs/by-name/ne/netassert/package.nix +++ b/pkgs/by-name/ne/netassert/package.nix @@ -6,15 +6,15 @@ buildGoModule (finalAttrs: { pname = "netassert"; - version = "2.1.0"; + version = "2.1.4"; src = fetchFromGitHub { owner = "controlplaneio"; repo = "netassert"; rev = "v${finalAttrs.version}"; - hash = "sha256-9uzidE/b+7UWNMAknxTdeWYKLEjWbV0V9hab18w+E10="; + hash = "sha256-swnTJwsWsTROO6E9LFNP9L9SbdT99yZpfNWPb8CVcBk="; }; - vendorHash = "sha256-JuyE1pYlTIeG3IGOsvYgQN1lTAb7NWytkp/Ibh91QgA="; + vendorHash = "sha256-AmYhpc80jlJBhQbN+DUE9U8Oj550Vg+QS4Rci8KLMCk="; ldflags = [ "-s" From d3594149781e826f933fb8093dd085f301e4dbc4 Mon Sep 17 00:00:00 2001 From: Sigmanificient Date: Mon, 27 Apr 2026 00:16:05 +0200 Subject: [PATCH 17/73] linden-hill: use installFonts --- pkgs/by-name/li/linden-hill/package.nix | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/li/linden-hill/package.nix b/pkgs/by-name/li/linden-hill/package.nix index 07d41919b2c2..658d755dedbd 100644 --- a/pkgs/by-name/li/linden-hill/package.nix +++ b/pkgs/by-name/li/linden-hill/package.nix @@ -2,6 +2,7 @@ lib, fetchFromGitHub, stdenvNoCC, + installFonts, }: stdenvNoCC.mkDerivation { @@ -15,13 +16,7 @@ stdenvNoCC.mkDerivation { hash = "sha256-EjXcLjzVQeOJgLxGua8t0oMc+APOsONGGpG6VJVCgFw="; }; - installPhase = '' - runHook preInstall - - install -D -m444 -t $out/share/fonts/opentype $src/*.otf - - runHook postInstall - ''; + nativeBuildInputs = [ installFonts ]; meta = { description = "Digital version of Frederic Goudy’s Deepdene"; From 720e6f005771ef174fba3b43d4902b1e5b1cab85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Sun, 26 Apr 2026 18:38:34 -0700 Subject: [PATCH 18/73] python3Packages.serialx: 1.2.3 -> 1.5.0 Diff: https://github.com/puddly/serialx/compare/v1.2.3...v1.5.0 Changelog: https://github.com/puddly/serialx/releases/tag/v1.5.0 --- pkgs/development/python-modules/serialx/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/serialx/default.nix b/pkgs/development/python-modules/serialx/default.nix index f06d9064ab79..dc05c2455149 100644 --- a/pkgs/development/python-modules/serialx/default.nix +++ b/pkgs/development/python-modules/serialx/default.nix @@ -18,14 +18,14 @@ buildPythonPackage (finalAttrs: { pname = "serialx"; - version = "1.2.3"; + version = "1.5.0"; pyproject = true; src = fetchFromGitHub { owner = "puddly"; repo = "serialx"; tag = "v${finalAttrs.version}"; - hash = "sha256-FroHqWuNGna5FxP4PXZzhADaNNRQnVjG9S5JJq4CVkQ="; + hash = "sha256-ttKnjpF3SYo2QIKMuPU2EuTTp/Hq0s+4gvNdXdNApbs="; }; cargoDeps = rustPlatform.fetchCargoVendor { @@ -62,6 +62,8 @@ buildPythonPackage (finalAttrs: { disabledTests = [ # tries to access /sys/class/tty in sandbox "test_compat_tools_module" + # connects to 192.0.2.1 + "test_async_socket_connect_timeout" ]; meta = { From b20841087b9e0c6fc67ac791ccc4a5a9c2b24d7d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Mon, 27 Apr 2026 06:49:19 -0700 Subject: [PATCH 19/73] python3Packages.actron-neo-api: 0.5.4 -> 0.5.5 Diff: https://github.com/kclif9/actronneoapi/compare/v0.5.4...v0.5.5 Changelog: https://github.com/kclif9/actronneoapi/releases/tag/v0.5.5 --- .../python-modules/actron-neo-api/default.nix | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/pkgs/development/python-modules/actron-neo-api/default.nix b/pkgs/development/python-modules/actron-neo-api/default.nix index 7c82d159a8fd..91c56ade8efa 100644 --- a/pkgs/development/python-modules/actron-neo-api/default.nix +++ b/pkgs/development/python-modules/actron-neo-api/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "actron-neo-api"; - version = "0.5.4"; + version = "0.5.5"; pyproject = true; src = fetchFromGitHub { owner = "kclif9"; repo = "actronneoapi"; tag = "v${version}"; - hash = "sha256-XyX9o1fIyY5TZqLzK1a+KLkLDVEorw2illg+lHutLtc="; + hash = "sha256-bBPhwiJQYDBEPZKA1Cq94X9LYAmBkOWCI+4afrQntmw="; }; build-system = [ @@ -39,15 +39,6 @@ buildPythonPackage rec { pytestCheckHook ]; - disabledTests = [ - # test hangs - "test_poll_for_token_pending" - # AttributeError: property 'authorization_header' of 'ActronAirOAuth2DeviceCodeAuth' object has no setter - "test_lazy_token_refres" - # ActronAirAuthError: Refresh token is required to refresh the access token - "test_get_user_info" - ]; - meta = { changelog = "https://github.com/kclif9/actronneoapi/releases/tag/${src.tag}"; description = "Communicate with Actron Air systems via the Actron Neo API"; From c6ddeb01303b47e1dab2af158d29b8970e2d647b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Mon, 27 Apr 2026 06:53:38 -0700 Subject: [PATCH 20/73] python3Packages.aiosomecomfort: 0.0.35 -> 0.0.36 Diff: https://github.com/mkmer/AIOSomecomfort/compare/0.0.35...0.0.36 Changelog: https://github.com/mkmer/AIOSomecomfort/releases/tag/0.0.36 --- .../development/python-modules/aiosomecomfort/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/aiosomecomfort/default.nix b/pkgs/development/python-modules/aiosomecomfort/default.nix index 98ada059e360..8d441fc14216 100644 --- a/pkgs/development/python-modules/aiosomecomfort/default.nix +++ b/pkgs/development/python-modules/aiosomecomfort/default.nix @@ -9,20 +9,24 @@ buildPythonPackage rec { pname = "aiosomecomfort"; - version = "0.0.35"; + version = "0.0.36"; pyproject = true; src = fetchFromGitHub { owner = "mkmer"; repo = "AIOSomecomfort"; tag = version; - hash = "sha256-zhCpV11nzRpWiCPNgeBfBzXgLM2NAw1p9R0ACD3u/mk="; + hash = "sha256-Da2Nvke01S7Pt+md2G5RRJqyUc6M3tcj4qsdSJVoQds="; }; build-system = [ setuptools ]; + pythonRelaxDeps = [ + "aiohttp" + ]; + dependencies = [ aiohttp prettytable From 25293bac781ea28f1ef30840c399dc485542fbf3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Mon, 27 Apr 2026 06:56:42 -0700 Subject: [PATCH 21/73] python3Packages.approvaltests: 17.4.1 -> 18.0.1 Diff: https://github.com/approvals/ApprovalTests.Python/compare/v17.4.1...v18.0.1 Changelog: https://github.com/approvals/ApprovalTests.Python/releases/tag/v18.0.1 --- pkgs/development/python-modules/approvaltests/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/approvaltests/default.nix b/pkgs/development/python-modules/approvaltests/default.nix index efa2eff09e36..5c91f2217155 100644 --- a/pkgs/development/python-modules/approvaltests/default.nix +++ b/pkgs/development/python-modules/approvaltests/default.nix @@ -20,18 +20,18 @@ buildPythonPackage rec { pname = "approvaltests"; - version = "17.4.1"; + version = "18.0.1"; pyproject = true; src = fetchFromGitHub { owner = "approvals"; repo = "ApprovalTests.Python"; tag = "v${version}"; - hash = "sha256-8JOd1JRwJS+y5Eh/an0RrGtwBZMPW/ziGTRd1H9Sveo="; + hash = "sha256-2lz3TMI4/QoNVfnZga5Ro9rheixFpVJfNbvVLy0lnLA="; }; postPatch = '' - test -f setup.py || mv setup/setup.publish.py setup.py + test -f setup.py || mv setup/setup.approvaltests.py setup.py patchShebangs internal_documentation/scripts ''; From 20a1dabdd7b187b0d057ff0ee308521a8b548347 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=BCtz?= Date: Mon, 27 Apr 2026 07:00:23 -0700 Subject: [PATCH 22/73] python3Packages.elevenlabs: 2.43.0 -> 2.45.0 Diff: https://github.com/elevenlabs/elevenlabs-python/compare/v2.43.0...v2.45.0 Changelog: https://github.com/elevenlabs/elevenlabs-python/releases/tag/v2.45.0 --- pkgs/development/python-modules/elevenlabs/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/elevenlabs/default.nix b/pkgs/development/python-modules/elevenlabs/default.nix index 2e514cd135f1..bba728e0c3e2 100644 --- a/pkgs/development/python-modules/elevenlabs/default.nix +++ b/pkgs/development/python-modules/elevenlabs/default.nix @@ -14,14 +14,14 @@ buildPythonPackage (finalAttrs: { pname = "elevenlabs"; - version = "2.43.0"; + version = "2.45.0"; pyproject = true; src = fetchFromGitHub { owner = "elevenlabs"; repo = "elevenlabs-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-w8IvjwC1X81BhPgTcHWx/vDL9M/ZoHUNsvTySmN0qW0="; + hash = "sha256-E9+hlFfDx1pBEMPcsx1vuawkbmsgCDv3s+/JYqVUu3U="; }; build-system = [ poetry-core ]; From 0738314e1c8843f429d9eed708a693b2244c3b80 Mon Sep 17 00:00:00 2001 From: kilyanni Date: Mon, 27 Apr 2026 18:15:19 +0200 Subject: [PATCH 23/73] intelLlvmStdenv: init alias to intel-llvm.stdenv --- pkgs/top-level/all-packages.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b9d5402e0aee..2051862fda76 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1658,6 +1658,8 @@ with pkgs; intel-oneapi = recurseIntoAttrs (callPackage ../development/libraries/intel-oneapi { }); + intelLlvmStdenv = intel-llvm.stdenv; + cambrinary = python3Packages.callPackage ../applications/misc/cambrinary { }; cplex = callPackage ../applications/science/math/cplex (config.cplex or { }); From f6bf2603ea9cd0d96cb1fab82e3b1d760211dc01 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Mon, 27 Apr 2026 11:50:48 -0500 Subject: [PATCH 24/73] yabai: 7.1.23 -> 7.1.24 --- pkgs/by-name/ya/yabai/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ya/yabai/package.nix b/pkgs/by-name/ya/yabai/package.nix index 3aab225ba089..b9c444846f51 100644 --- a/pkgs/by-name/ya/yabai/package.nix +++ b/pkgs/by-name/ya/yabai/package.nix @@ -14,7 +14,7 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "yabai"; - version = "7.1.23"; + version = "7.1.24"; src = finalAttrs.passthru.sources.${stdenv.hostPlatform.system} @@ -66,13 +66,13 @@ stdenv.mkDerivation (finalAttrs: { # See the comments on https://github.com/NixOS/nixpkgs/pull/188322 for more information. "aarch64-darwin" = fetchzip { url = "https://github.com/asmvik/yabai/releases/download/v${finalAttrs.version}/yabai-v${finalAttrs.version}.tar.gz"; - hash = "sha256-p8LHuAhmkKNPkRNIw4NHpAA+/oQPMI34H21mlUiwK+M="; + hash = "sha256-2NTZUxptWhcF6sb1iUQwOuvG6omVAGVeb+j8XPBhRvs="; }; "x86_64-darwin" = fetchFromGitHub { owner = "asmvik"; repo = "yabai"; rev = "v${finalAttrs.version}"; - hash = "sha256-6fvjwn2MBJ8LKShR3evLyS3BfoJ4yYtnaCif7c9faxc="; + hash = "sha256-WyZbkIcqtVogvCfy/ee5Dk2+6OqXgMuVq6GzKKZ9F0A="; }; }; From 66ec9fbccbd9d5562ebcbc201bdf2c608aea2156 Mon Sep 17 00:00:00 2001 From: Austin Horstman Date: Mon, 27 Apr 2026 11:50:13 -0500 Subject: [PATCH 25/73] 1password-gui: 8.12.8 -> 8.12.12 --- pkgs/by-name/_1/_1password-gui/sources.json | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/_1/_1password-gui/sources.json b/pkgs/by-name/_1/_1password-gui/sources.json index e70bce1ed0e2..ff8aa8fa2dcf 100644 --- a/pkgs/by-name/_1/_1password-gui/sources.json +++ b/pkgs/by-name/_1/_1password-gui/sources.json @@ -1,28 +1,28 @@ { "stable": { "linux": { - "version": "8.12.8", + "version": "8.12.12", "sources": { "x86_64": { - "url": "https://downloads.1password.com/linux/tar/stable/x86_64/1password-8.12.8.x64.tar.gz", - "hash": "sha256-WMApavYGR4TX1/gx8yjzaI0SHf1CEC+Ay9nAyxCOLs0=" + "url": "https://downloads.1password.com/linux/tar/stable/x86_64/1password-8.12.12.x64.tar.gz", + "hash": "sha256-tdhuBJeCXbepDN6Z9Yqs6gE5lMUh72sOJuQSv4Qoj1M=" }, "aarch64": { - "url": "https://downloads.1password.com/linux/tar/stable/aarch64/1password-8.12.8.arm64.tar.gz", - "hash": "sha256-Uqt44otc40/v7/f90r2BS0yK1TuctOO0VUcWGhjv0pI=" + "url": "https://downloads.1password.com/linux/tar/stable/aarch64/1password-8.12.12.arm64.tar.gz", + "hash": "sha256-RNwZOqr29aLgNJYH/66TFEKCK3AVBhk+qnSax+Y7Dl4=" } } }, "darwin": { - "version": "8.12.8", + "version": "8.12.12", "sources": { "x86_64": { - "url": "https://downloads.1password.com/mac/1Password-8.12.8-x86_64.zip", - "hash": "sha256-w4gfs8Ctpe73TNaXebwUoa0cEOuZfiBUWN+qngSNcj4=" + "url": "https://downloads.1password.com/mac/1Password-8.12.12-x86_64.zip", + "hash": "sha256-6vVMkra7T4kVRrVn8QexBMRkHDrUoZXP/eALyBPYPow=" }, "aarch64": { - "url": "https://downloads.1password.com/mac/1Password-8.12.8-aarch64.zip", - "hash": "sha256-tT7VG6KlIv4Q+UtG9pzkyBRnISzvAdrqOeO8zdlZPb4=" + "url": "https://downloads.1password.com/mac/1Password-8.12.12-aarch64.zip", + "hash": "sha256-IqMw4dgMhHkzjMVbmZy/h3li74JZxbY8D4COeMEg+1o=" } } } From 22702a5c90eda6abac6fa7c71dbd483cf60ee833 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 27 Apr 2026 20:14:21 +0000 Subject: [PATCH 26/73] art: 1.26.3 -> 1.26.4 --- pkgs/by-name/ar/art/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ar/art/package.nix b/pkgs/by-name/ar/art/package.nix index 4e5ca00c16e3..cdfa9a2c8c3e 100644 --- a/pkgs/by-name/ar/art/package.nix +++ b/pkgs/by-name/ar/art/package.nix @@ -39,13 +39,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "art"; - version = "1.26.3"; + version = "1.26.4"; src = fetchFromGitHub { owner = "artpixls"; repo = "ART"; tag = finalAttrs.version; - hash = "sha256-cBhM8vYQoEGntM4GjFaNNC5fuBQxcX343qEcrdMxuSE="; + hash = "sha256-T7ri0fQz3OBLmr3BBQvYgSmAQaV/aMax6SOupAQDg5o="; }; # Fix the build with CMake 4. From b606761c748fb05cfa7296256db01ffb2009fbbe Mon Sep 17 00:00:00 2001 From: Mynacol Date: Mon, 27 Apr 2026 14:45:00 +0000 Subject: [PATCH 27/73] deno: Build rusty-v8 on big-parallel After the switch to building rusty-v8 from source and some hiccups with test failures on Hydra, we have recurring timeouts on Hydra. rusty-v8 is mostly busy compiling c/c++ code. That is highly parallelizable, and that part is without any log output. The solution against the timeouts and to speed things up is to build rusty-v8 on big-parallel. Builds on an older 32-core Intel CPU take 30 minutes, builds on the default Hydra dual-core environments apparently and logically take easily more than three hours. --- pkgs/by-name/de/deno/librusty_v8.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/de/deno/librusty_v8.nix b/pkgs/by-name/de/deno/librusty_v8.nix index bb03c5ff2090..24f839daf75f 100644 --- a/pkgs/by-name/de/deno/librusty_v8.nix +++ b/pkgs/by-name/de/deno/librusty_v8.nix @@ -159,6 +159,8 @@ rustPlatform.buildRustPackage (finalAttrs: { runHook postInstall ''; + requiredSystemFeatures = [ "big-parallel" ]; + meta = { description = "Rust bindings for the V8 JavaScript engine"; homepage = "https://github.com/denoland/rusty_v8"; From cbca27041eec11720ecb66a755060d0d55693734 Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Mon, 27 Apr 2026 19:33:26 +0000 Subject: [PATCH 28/73] python3Packages.dulwich: 1.1.0 -> 1.2.0 --- pkgs/development/python-modules/dulwich/default.nix | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/pkgs/development/python-modules/dulwich/default.nix b/pkgs/development/python-modules/dulwich/default.nix index b618ab9ea3bc..b87e8d3c974a 100644 --- a/pkgs/development/python-modules/dulwich/default.nix +++ b/pkgs/development/python-modules/dulwich/default.nix @@ -25,19 +25,19 @@ buildPythonPackage (finalAttrs: { pname = "dulwich"; - version = "1.1.0"; + version = "1.2.0"; pyproject = true; src = fetchFromGitHub { owner = "jelmer"; repo = "dulwich"; tag = "dulwich-${finalAttrs.version}"; - hash = "sha256-9y7+00M2Ib5j+1fHNsJBomkyNZWhihqcIvAgGpJ5AB8="; + hash = "sha256-R5vq3mb1nSqEn+LIUaXc8Edrw8TgTb5H4LOXnHgeAzQ="; }; cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) pname version src; - hash = "sha256-NEYauayn7laPLQUomQAFEskFP5m8546jYltazR/gn1A="; + hash = "sha256-r2Ef8ciZW6rNBg8eLr5lkqtTEXugy7B9DjbSCErJkzc="; }; nativeBuildInputs = [ @@ -89,8 +89,6 @@ buildPythonPackage (finalAttrs: { ''; disabledTestPaths = [ - # "Code [in contrib] is not an official part of Dulwich, and may no longer work" - "tests/contrib" # AssertionError: GPGMEError not raised "tests/test_signature.py::GPGSignatureVendorTests::test_verify_invalid_signature" ]; From c6e1981fa23b96e41b794260476427239150bb27 Mon Sep 17 00:00:00 2001 From: Ameer Taweel Date: Tue, 28 Apr 2026 00:59:06 +0300 Subject: [PATCH 29/73] lib/filesystem: remove absolute path literals --- lib/filesystem.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/filesystem.nix b/lib/filesystem.nix index 27f3ab1c5ce1..5e31e8e2311c 100644 --- a/lib/filesystem.nix +++ b/lib/filesystem.nix @@ -201,7 +201,7 @@ in in if builtins.length matches != 0 then { inherit path matches; } - else if path == /. then + else if toString path == "/" then null else go (dirOf path); @@ -211,7 +211,7 @@ in base = baseNameOf file; type = (builtins.readDir parent).${base} or null; in - file == /. || type == "directory"; + toString file == "/" || type == "directory"; in go (if isDir then file else parent); From ecf55714fe2a863e378d360a50664c6c0bcd4135 Mon Sep 17 00:00:00 2001 From: Ameer Taweel Date: Tue, 28 Apr 2026 01:00:25 +0300 Subject: [PATCH 30/73] lib/sources: remove absolute path literals --- lib/sources.nix | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/sources.nix b/lib/sources.nix index 230512bbaa77..43bc2ab2dbe3 100644 --- a/lib/sources.nix +++ b/lib/sources.nix @@ -311,7 +311,13 @@ let fileName = path + "/${file}"; packedRefsName = path + "/packed-refs"; absolutePath = - base: path: if lib.hasPrefix "/" path then path else toString (/. + "${base}/${path}"); + base: path: + if lib.hasPrefix "/" path then + path + else if lib.hasPrefix "/" base then + "${base}/${path}" + else + "/${base}/${path}"; in if pathIsRegularFile path From ca30fa1c5935be521e3a912e18f1da1b1ab2f002 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 00:07:32 +0000 Subject: [PATCH 31/73] python3Packages.striprtf: 0.0.29 -> 0.0.32 --- pkgs/development/python-modules/striprtf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/striprtf/default.nix b/pkgs/development/python-modules/striprtf/default.nix index 547f1b7f43b9..2c1aa3d5b918 100644 --- a/pkgs/development/python-modules/striprtf/default.nix +++ b/pkgs/development/python-modules/striprtf/default.nix @@ -7,12 +7,12 @@ buildPythonPackage rec { pname = "striprtf"; - version = "0.0.29"; + version = "0.0.32"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-WoItB14XQXk07Trdb8ebX8j7VE/kNwsviUzdKPDd144="; + hash = "sha256-fzdaN12ZonAIQhcxaMkMm1RcskQkH/xdho7Z9rr5FV8="; }; build-system = [ hatchling ]; From 3604e6328f1fcf923c4967825ebb8edab09af2c2 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 00:18:42 +0000 Subject: [PATCH 32/73] python3Packages.satel-integra: 1.2.1 -> 1.2.2 --- pkgs/development/python-modules/satel-integra/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/satel-integra/default.nix b/pkgs/development/python-modules/satel-integra/default.nix index 0c0eeec32372..387c6d5a0add 100644 --- a/pkgs/development/python-modules/satel-integra/default.nix +++ b/pkgs/development/python-modules/satel-integra/default.nix @@ -12,14 +12,14 @@ buildPythonPackage rec { pname = "satel-integra"; - version = "1.2.1"; + version = "1.2.2"; pyproject = true; src = fetchFromGitHub { owner = "c-soft"; repo = "satel_integra"; tag = version; - hash = "sha256-haSCSWLHEvd4AUXMvopYjFdEXQ2u6IGrT7q3sY711PQ="; + hash = "sha256-bYwAW8mbgE4D6xvAmkOPewAGkKJuF5AKPjXGeaJpk6s="; }; build-system = [ From 4c3b93c56c4e7695a78056ea062115500d03ff3f Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 00:46:57 +0000 Subject: [PATCH 33/73] surfer: 0.6.0 -> 0.7.0 --- pkgs/by-name/su/surfer/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/su/surfer/package.nix b/pkgs/by-name/su/surfer/package.nix index 0c32b51c09ad..5d06f57f0bf7 100644 --- a/pkgs/by-name/su/surfer/package.nix +++ b/pkgs/by-name/su/surfer/package.nix @@ -17,13 +17,13 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "surfer"; - version = "0.6.0"; + version = "0.7.0"; src = fetchFromGitLab { owner = "surfer-project"; repo = "surfer"; rev = "v${finalAttrs.version}"; - hash = "sha256-83UKSD9Z4pT0OXLqIgquuJ8W6+U29ZzWG1SOrAOK9ic="; + hash = "sha256-WO0TWmUaKqUh+Cr75Hrxa2x4V9xZhzHY5PzlIRNUzZA="; fetchSubmodules = true; }; @@ -48,7 +48,7 @@ rustPlatform.buildRustPackage (finalAttrs: { libxi ]; - cargoHash = "sha256-UuZpgW8di79mTNpDJ7K12IC5Xa3YX9ex2BYd62pUh1o="; + cargoHash = "sha256-WK3+YlBfHTo48+JBEBrgR23PTmyCZo98wg35VZmBdWA="; # Avoid the network attempt from skia. See: https://github.com/cargo2nix/cargo2nix/issues/318 doCheck = false; From 48210a1707aa6c7985c163da7186c30689e5c4ce Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 03:12:19 +0000 Subject: [PATCH 34/73] highscore-mgba: 0-unstable-2026-02-03 -> 0-unstable-2026-04-26 --- pkgs/by-name/hi/highscore-mgba/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/hi/highscore-mgba/package.nix b/pkgs/by-name/hi/highscore-mgba/package.nix index f629fe2e9f0b..4e95cb7b5208 100644 --- a/pkgs/by-name/hi/highscore-mgba/package.nix +++ b/pkgs/by-name/hi/highscore-mgba/package.nix @@ -10,13 +10,13 @@ stdenv.mkDerivation { pname = "highscore-mgba"; - version = "0-unstable-2026-02-03"; + version = "0-unstable-2026-04-26"; src = fetchFromGitHub { owner = "highscore-emu"; repo = "mgba"; - rev = "178d7dbe3c2927f2fc52a6032bc7b6c805192e9b"; - hash = "sha256-AXOe2YoYQDeRpicYD9B9BR2l0rCJ+syYTwTnJUIcG1U="; + rev = "4a1ca6566fc1c0a67341ddadfc18011aa0a0578f"; + hash = "sha256-zcRynN01O6zAcOuV/q9u7kL5elFTDJ2tA3wTJR3JBt0="; }; outputs = [ From 77530c2027a779650ea5a2edcefb38ffd19cfbac Mon Sep 17 00:00:00 2001 From: Sarah Brofeldt Date: Tue, 28 Apr 2026 08:36:56 +0200 Subject: [PATCH 35/73] filebeat8: fix meta.changelog URL --- pkgs/by-name/fi/filebeat8/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/fi/filebeat8/package.nix b/pkgs/by-name/fi/filebeat8/package.nix index 3d36d5e8a399..fa9b393ff18d 100644 --- a/pkgs/by-name/fi/filebeat8/package.nix +++ b/pkgs/by-name/fi/filebeat8/package.nix @@ -37,7 +37,7 @@ buildGoModule (finalAttrs: { meta = { description = "Tails and ships log files"; homepage = "https://github.com/elastic/beats"; - changelog = "https://www.elastic.co/guide/en/beats/libbeat/${finalAttrs.version}/release-notes-${finalAttrs.version}.html"; + changelog = "https://www.elastic.co/guide/en/beats/libbeat/${lib.versions.majorMinor finalAttrs.version}/release-notes-${finalAttrs.version}.html"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ srhb ]; mainProgram = "filebeat"; From 2396ba189861df244d4c53131fbd14cf14c83e31 Mon Sep 17 00:00:00 2001 From: Francesco Zanini Date: Tue, 28 Apr 2026 09:19:13 +0200 Subject: [PATCH 36/73] pv-migrate: remove extra v prefix from ldflags `main.version` and `main.commit` were set to `v${version}` via ldflags. However, version 3+ of pv-migrate prepends `v` internally when resolving Kubernetes helper images, producing `vv3.3.0` instead of `v3.3.0`. Drop the hardcoded `v` prefix from the ldflags so the software receives a bare version string and constructs the image tag correctly. This also aligns the behavior with goreleaser. --- pkgs/by-name/pv/pv-migrate/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/pv/pv-migrate/package.nix b/pkgs/by-name/pv/pv-migrate/package.nix index 8747c7d7e7f2..931214bd64f3 100644 --- a/pkgs/by-name/pv/pv-migrate/package.nix +++ b/pkgs/by-name/pv/pv-migrate/package.nix @@ -24,8 +24,8 @@ buildGoModule (finalAttrs: { ldflags = [ "-s" "-w" - "-X main.version=v${finalAttrs.version}" - "-X main.commit=v${finalAttrs.version}" + "-X main.version=${finalAttrs.version}" + "-X main.commit=${finalAttrs.version}" "-X main.date=1970-01-01-00:00:01" ]; From ea3a3c214ebcb1a8e76484b8b772f092936f851f Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 07:57:08 +0000 Subject: [PATCH 37/73] openspec: 1.3.0 -> 1.3.1 --- pkgs/by-name/op/openspec/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/op/openspec/package.nix b/pkgs/by-name/op/openspec/package.nix index 0e787d2d3c4b..749e4f05f146 100644 --- a/pkgs/by-name/op/openspec/package.nix +++ b/pkgs/by-name/op/openspec/package.nix @@ -13,13 +13,13 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "openspec"; - version = "1.3.0"; + version = "1.3.1"; src = fetchFromGitHub { owner = "Fission-AI"; repo = "OpenSpec"; tag = "v${finalAttrs.version}"; - hash = "sha256-yLzndbXdPoIv7xWHd23FOtMlPmWWz3+H7WODWQYylJc="; + hash = "sha256-L4LBHVVtgMhSJm+IzZSYOR0UXPbvIRg4xiEV5urYxdI="; }; pnpmDeps = fetchPnpmDeps { From 3dd2164845e74287df81c72486a5e81b8480f6ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Reynier?= Date: Tue, 28 Apr 2026 10:04:46 +0200 Subject: [PATCH 38/73] foxmarks: fix changelog --- pkgs/by-name/fo/foxmarks/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/fo/foxmarks/package.nix b/pkgs/by-name/fo/foxmarks/package.nix index c5f6e0b8ffe2..75d8a217ef15 100644 --- a/pkgs/by-name/fo/foxmarks/package.nix +++ b/pkgs/by-name/fo/foxmarks/package.nix @@ -23,7 +23,7 @@ rustPlatform.buildRustPackage (finalAttrs: { meta = { description = "CLI read-only interface for Mozilla Firefox's bookmarks"; homepage = "https://github.com/zer0-x/foxmarks"; - changelog = "https://github.com/zer0-x/foxmarks/blobl/v${finalAttrs.version}/CHANGELOG.md"; + changelog = "https://github.com/zer0-x/foxmarks/blob/v${finalAttrs.version}/CHANGELOG.md"; license = lib.licenses.gpl3; maintainers = with lib.maintainers; [ loicreynier ]; }; From 2e715f610bbcd1566a950f3a186914413b9c73e7 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 09:36:30 +0000 Subject: [PATCH 39/73] zapret2: 0.9.5 -> 0.9.5.1 --- pkgs/by-name/za/zapret2/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/za/zapret2/package.nix b/pkgs/by-name/za/zapret2/package.nix index d6c2729bd30e..08f96106c855 100644 --- a/pkgs/by-name/za/zapret2/package.nix +++ b/pkgs/by-name/za/zapret2/package.nix @@ -20,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "zapret2"; - version = "0.9.5"; + version = "0.9.5.1"; outputs = [ "out" @@ -34,7 +34,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "bol-van"; repo = "zapret2"; tag = "v${finalAttrs.version}"; - hash = "sha256-KdkUCfxxe2ddcYebvKsslIUBkl5g7Rc/f+xY00hy5JM="; + hash = "sha256-uKLHzsi/AYQ8OLj2g8pszSCyD485Sg/s45Ko8gKN5z8="; leaveDotGit = true; postFetch = '' cd "$out" From 1e646f0ec7eafe2e9f0ed1a7e185b5343cbcdf40 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Mon, 27 Apr 2026 18:32:20 +0000 Subject: [PATCH 40/73] python3Packages.cuda-bindings: support multiple versions of cudaPackages --- .../python-modules/cuda-bindings/12_9.nix | 43 +++++ .../python-modules/cuda-bindings/13_0.nix | 40 +++++ .../python-modules/cuda-bindings/13_1.nix | 45 +++++ .../python-modules/cuda-bindings/13_2.nix | 50 ++++++ .../python-modules/cuda-bindings/default.nix | 94 ++++++---- ...tch => patch-nvidia-libs-paths_12_9.patch} | 0 .../patch-nvidia-libs-paths_13_0.patch | 125 +++++++++++++ .../patch-nvidia-libs-paths_13_1.patch | 147 +++++++++++++++ .../patch-nvidia-libs-paths_13_2.patch | 169 ++++++++++++++++++ 9 files changed, 677 insertions(+), 36 deletions(-) create mode 100644 pkgs/development/python-modules/cuda-bindings/12_9.nix create mode 100644 pkgs/development/python-modules/cuda-bindings/13_0.nix create mode 100644 pkgs/development/python-modules/cuda-bindings/13_1.nix create mode 100644 pkgs/development/python-modules/cuda-bindings/13_2.nix rename pkgs/development/python-modules/cuda-bindings/{patch-nvidia-libs-paths.patch => patch-nvidia-libs-paths_12_9.patch} (100%) create mode 100644 pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_0.patch create mode 100644 pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_1.patch create mode 100644 pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_2.patch diff --git a/pkgs/development/python-modules/cuda-bindings/12_9.nix b/pkgs/development/python-modules/cuda-bindings/12_9.nix new file mode 100644 index 000000000000..c7e178a8560d --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/12_9.nix @@ -0,0 +1,43 @@ +{ + replaceVars, + cudaLibPaths, +}: +{ + version = "12.9.6"; + sourceHash = "sha256-uRv27h2b6wXC8oOf5k2KxZ0bUFNvNu6XO05FBbJcU1k="; + + nvidiaLibsPatch = replaceVars ./patch-nvidia-libs-paths_12_9.patch { + inherit (cudaLibPaths) + libcudart + libcufile + libnvfatbin + libnvjitlink + libnvml + libnvrtc + libnvvm + ; + }; + + pythonImportsCheck = [ + "cuda.bindings.nvfatbin" + "cuda.bindings.nvml" + ]; + + disabledTests = [ + # sysfs cpu topology is not available in the sandbox, causing: + # cuda.bindings.nvml.UnknownError: Unknown Error + # hwloc/linux: failed to find sysfs cpu topology directory, aborting linux discovery. + "test_device_get_cpu_affinity_within_scope" + "test_device_get_memory_affinity" + + # Requires the nvidia_fs kernel module (GPUDirect Storage), causing: + # cuda.bindings.cufile.cuFileError: NVFS_SETUP_ERROR (5033): NVFS driver initialization error + "test_buf_register_already_registered" + "test_buf_register_host_memory" + "test_buf_register_invalid_flags" + "test_buf_register_large_buffer" + "test_buf_register_multiple_buffers" + "test_buf_register_simple" + "test_driver_open" + ]; +} diff --git a/pkgs/development/python-modules/cuda-bindings/13_0.nix b/pkgs/development/python-modules/cuda-bindings/13_0.nix new file mode 100644 index 000000000000..d3cbcc6120cb --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/13_0.nix @@ -0,0 +1,40 @@ +{ + replaceVars, + cudaLibPaths, +}: +{ + version = "13.0.3"; + sourceHash = "sha256-Uq1oQWtilocQPh6cZ3P/L/L6caCHv17u1y67sm5fhhA="; + + nvidiaLibsPatch = replaceVars ./patch-nvidia-libs-paths_13_0.patch { + inherit (cudaLibPaths) + libcudart + libcufile + libnvjitlink + libnvrtc + libnvvm + ; + }; + + postPatch = '' + substituteInPlace pyproject.toml \ + --replace-fail "cython>=3.1,<3.2" "cython" + ''; + + disabledTests = [ + # Requires the nvidia_fs kernel module (GPUDirect Storage), causing: + # cuda.bindings.cufile.cuFileError: NVFS_SETUP_ERROR (5033): NVFS driver initialization error + "test_buf_register_already_registered" + "test_buf_register_host_memory" + "test_buf_register_invalid_flags" + "test_buf_register_large_buffer" + "test_buf_register_multiple_buffers" + "test_buf_register_simple" + "test_driver_open" + "test_get_bar_size_in_kb" + "test_get_parameter_min_max_value" + "test_set_parameter_posix_pool_slab_array" + "test_set_stats_level" + "test_stats_start_stop" + ]; +} diff --git a/pkgs/development/python-modules/cuda-bindings/13_1.nix b/pkgs/development/python-modules/cuda-bindings/13_1.nix new file mode 100644 index 000000000000..882b1632cec6 --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/13_1.nix @@ -0,0 +1,45 @@ +{ + replaceVars, + cudaLibPaths, +}: +{ + version = "13.1.1"; + sourceHash = "sha256-AvIw2G4EGWsX7PxFGxzECXhwkbwYslHzRdUArTNf7jE="; + + nvidiaLibsPatch = replaceVars ./patch-nvidia-libs-paths_13_1.patch { + inherit (cudaLibPaths) + libcudart + libcufile + libnvjitlink + libnvml + libnvrtc + libnvvm + ; + }; + + pythonImportsCheck = [ + "cuda.bindings._nvml" + ]; + + disabledTests = [ + # sysfs cpu topology is not available in the sandbox, causing: + # cuda.bindings._nvml.UnknownError: Unknown Error + # hwloc/linux: failed to find sysfs cpu topology directory, aborting linux discovery. + "test_device_get_cpu_affinity_within_scope" + "test_device_get_memory_affinity" + + # Requires the nvidia_fs kernel module (GPUDirect Storage), causing: + # cuda.bindings.cufile.cuFileError: NVFS_SETUP_ERROR (5033): NVFS driver initialization error + "test_buf_register_already_registered" + "test_buf_register_host_memory" + "test_buf_register_invalid_flags" + "test_buf_register_large_buffer" + "test_buf_register_multiple_buffers" + "test_buf_register_simple" + "test_get_bar_size_in_kb" + "test_get_parameter_min_max_value" + "test_set_parameter_posix_pool_slab_array" + "test_set_stats_level" + "test_stats_start_stop" + ]; +} diff --git a/pkgs/development/python-modules/cuda-bindings/13_2.nix b/pkgs/development/python-modules/cuda-bindings/13_2.nix new file mode 100644 index 000000000000..a2ce0c462b39 --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/13_2.nix @@ -0,0 +1,50 @@ +{ + replaceVars, + cudaLibPaths, +}: +{ + version = "13.2.0"; + sourceHash = "sha256-VOaRjZwg1phGjkOeXjWMcs/vjlPMNKiVSKyKrQG5ohM="; + + nvidiaLibsPatch = replaceVars ./patch-nvidia-libs-paths_13_2.patch { + inherit (cudaLibPaths) + libcudart + libcufile + libnvfatbin + libnvjitlink + libnvml + libnvrtc + libnvvm + ; + }; + + pythonImportsCheck = [ + "cuda.bindings.nvfatbin" + "cuda.bindings.nvml" + ]; + + disabledTests = [ + # Requires GPU discovery support not available in the test environment + "test_discover_gpus" + + # sysfs cpu topology is not available in the sandbox, causing: + # cuda.bindings.nvml.UnknownError: Unknown Error + # hwloc/linux: failed to find sysfs cpu topology directory, aborting linux discovery. + "test_device_get_cpu_affinity_within_scope" + "test_device_get_memory_affinity" + + # Requires the nvidia_fs kernel module (GPUDirect Storage), causing: + # cuda.bindings.cufile.cuFileError: NVFS_SETUP_ERROR (5033): NVFS driver initialization error + "test_buf_register_already_registered" + "test_buf_register_host_memory" + "test_buf_register_invalid_flags" + "test_buf_register_large_buffer" + "test_buf_register_multiple_buffers" + "test_buf_register_simple" + "test_get_bar_size_in_kb" + "test_get_parameter_min_max_value" + "test_set_parameter_posix_pool_slab_array" + "test_set_stats_level" + "test_stats_start_stop" + ]; +} diff --git a/pkgs/development/python-modules/cuda-bindings/default.nix b/pkgs/development/python-modules/cuda-bindings/default.nix index 94fb27fc5182..c7a3dcbba44c 100644 --- a/pkgs/development/python-modules/cuda-bindings/default.nix +++ b/pkgs/development/python-modules/cuda-bindings/default.nix @@ -19,15 +19,49 @@ numpy, # tests + cuda-pathfinder, + pytest-benchmark, pytestCheckHook, + util-linux, # passthru cuda-bindings, }: +let + cudaVersion = cudaPackages.cudaMajorMinorVersion; + + versionSpecificAttrs = + let + args = { + inherit replaceVars; + cudaLibPaths = { + libcudart = lib.getLib cudaPackages.cuda_cudart; + libcufile = lib.getLib cudaPackages.libcufile; + libnvfatbin = lib.getLib cudaPackages.libnvfatbin; + libnvjitlink = lib.getLib cudaPackages.libnvjitlink; + libnvml = addDriverRunpath.driverLink; + libnvrtc = lib.getLib cudaPackages.cuda_nvrtc; + libnvvm = + if cudaOlder "13.0" then "${cudaPackages.cuda_nvcc}/nvvm" else lib.getLib cudaPackages.libnvvm; + }; + }; + in + { + # cuda-bindings patch versions DO NOT correspond to cuda toolkits' own path versions. + # Only major.minor is supposed to match + "12.9" = import ./12_9.nix args; + "13.0" = import ./13_0.nix args; + "13.1" = import ./13_1.nix args; + "13.2" = import ./13_2.nix args; + } + .${cudaVersion} or (throw "Unsupported cuda-bindings version: ${cudaVersion}"); + + inherit (cudaPackages) cudaOlder cudaAtLeast; +in buildPythonPackage (finalAttrs: { pname = "cuda-bindings"; - version = "12.9.6"; + inherit (versionSpecificAttrs) version; pyproject = true; __structuredAttrs = true; @@ -35,22 +69,14 @@ buildPythonPackage (finalAttrs: { owner = "NVIDIA"; repo = "cuda-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-uRv27h2b6wXC8oOf5k2KxZ0bUFNvNu6XO05FBbJcU1k="; + hash = versionSpecificAttrs.sourceHash; }; # Apply patch relative to cuda_bindings patchFlags = [ "-p2" ]; patches = [ - (replaceVars ./patch-nvidia-libs-paths.patch { - libcudart = lib.getLib cudaPackages.cuda_cudart; - libcufile = lib.getLib cudaPackages.libcufile; - libnvfatbin = lib.getLib cudaPackages.libnvfatbin; - libnvjitlink = lib.getLib cudaPackages.libnvjitlink; - libnvml = addDriverRunpath.driverLink; - libnvrtc = lib.getLib cudaPackages.cuda_nvrtc; - libnvvm = "${cudaPackages.cuda_nvcc}/nvvm"; - }) + versionSpecificAttrs.nvidiaLibsPatch ]; sourceRoot = "${finalAttrs.src.name}/cuda_bindings"; @@ -76,7 +102,8 @@ buildPythonPackage (finalAttrs: { --replace-fail \ "path = 'libcuda.so.1'" \ "path = '${libCudaPath}/lib/libcuda.so.1'" - ''; + '' + + (versionSpecificAttrs.postPatch or ""); preBuild = '' export CUDA_PYTHON_PARALLEL_LEVEL=$NIX_BUILD_CORES @@ -101,8 +128,14 @@ buildPythonPackage (finalAttrs: { }; buildInputs = [ - cudaPackages.cuda_nvcc # crt/host_defines.h cudaPackages.libcufile # cufile.h + ] + # Until 13.0, crt headers are shipped in nvcc + ++ lib.optionals (cudaOlder "13.0") [ + cudaPackages.cuda_nvcc # crt/host_defines.h + ] + ++ lib.optionals (cudaAtLeast "13.0") [ + cudaPackages.cuda_crt # crt/host_defines.h ]; pythonRemoveDeps = [ @@ -118,13 +151,12 @@ buildPythonPackage (finalAttrs: { "cuda" "cuda.bindings.cufile" "cuda.bindings.driver" - "cuda.bindings.nvfatbin" "cuda.bindings.nvjitlink" - "cuda.bindings.nvml" "cuda.bindings.nvrtc" "cuda.bindings.nvvm" "cuda.bindings.runtime" - ]; + ] + ++ (versionSpecificAttrs.pythonImportsCheck or [ ]); preCheck = '' rm -rf cuda @@ -132,38 +164,28 @@ buildPythonPackage (finalAttrs: { nativeCheckInputs = [ pytestCheckHook + ] + ++ lib.optionals (cudaPackages.cudaAtLeast "13.0") [ + # Although we don't want cuda.pathfinder as a dependency (to handle dlopens), it is imported by + # some tests + cuda-pathfinder + + pytest-benchmark + util-linux # findmnt ]; enabledTestPaths = [ "tests/" ]; - disabledTestPaths = [ + disabledTestPaths = lib.optionals (cudaOlder "13.0") [ # The current driver shipped in NixOS (590.48.01) advertises CUDA 13.1, causing the following # error: # cuda.bindings._internal.utils.NotSupportedError: only CUDA 12 driver is supported - # - # Ideally, we should transition to cuda 13 across the whole nixpkgs tree. "tests/test_nvjitlink.py" ]; - disabledTests = [ - # sysfs cpu topology is not available in the sandbox, causing: - # cuda.bindings.nvml.UnknownError: Unknown Error - # hwloc/linux: failed to find sysfs cpu topology directory, aborting linux discovery. - "test_device_get_cpu_affinity_within_scope" - "test_device_get_memory_affinity" - - # Requires the nvidia_fs kernel module (GPUDirect Storage), causing: - # cuda.bindings.cufile.cuFileError: NVFS_SETUP_ERROR (5033): NVFS driver initialization error - "test_buf_register_already_registered" - "test_buf_register_host_memory" - "test_buf_register_invalid_flags" - "test_buf_register_large_buffer" - "test_buf_register_multiple_buffers" - "test_buf_register_simple" - "test_driver_open" - ]; + disabledTests = versionSpecificAttrs.disabledTests or [ ]; # Tests need access to a GPU doCheck = false; diff --git a/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths.patch b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_12_9.patch similarity index 100% rename from pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths.patch rename to pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_12_9.patch diff --git a/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_0.patch b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_0.patch new file mode 100644 index 000000000000..fe21e832c58e --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_0.patch @@ -0,0 +1,125 @@ +diff --git a/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in b/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in +index 8409032852..b3a04478c2 100644 +--- a/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in ++++ b/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in +@@ -8,7 +8,7 @@ cimport cuda.bindings._lib.windll as windll + {{else}} + cimport cuda.bindings._lib.dlfcn as dlfcn + {{endif}} +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + from libc.stdint cimport intptr_t, uintptr_t + import threading + +@@ -45,7 +45,7 @@ cdef int _cuPythonInit() except -1 nogil: + # Load library + with gil, __symbol_lock: + {{if 'Windows' == platform.system()}} +- handle = load_nvidia_dynamic_lib("nvrtc")._handle_uint ++ handle = CDLL("@libnvrtc@/lib/libnvrtc.so")._handle + + # Load function + {{if 'nvrtcGetErrorString' in found_functions}} +@@ -146,7 +146,7 @@ cdef int _cuPythonInit() except -1 nogil: + {{endif}} + + {{else}} +- handle = (load_nvidia_dynamic_lib("nvrtc")._handle_uint) ++ handle = (CDLL("@libnvrtc@/lib/libnvrtc.so")._handle) + + # Load function + {{if 'nvrtcGetErrorString' in found_functions}} +diff --git a/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx b/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx +index 33b6384647..9fe3eb78e4 100644 +--- a/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx +@@ -9,7 +9,7 @@ import threading + + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + import cython + +@@ -107,7 +107,7 @@ cdef void* __cuFileGetParameterPosixPoolSlabArray = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("cufile")._handle_uint ++ cdef uintptr_t handle = CDLL("@libcufile@/lib/libcufile.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx +index a8e2b4e56b..917facb824 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -76,7 +76,7 @@ cdef void* __nvJitLinkVersion = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvJitLink")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvjitlink@/lib/libnvJitLink.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx +index 64d97334b9..d325e68ea7 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -75,7 +75,7 @@ cdef void* __nvvmGetProgramLog = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvvm")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvvm@/lib/libnvvm.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/cyruntime.pyx.in b/cuda_bindings/cuda/bindings/cyruntime.pyx.in +index 3031e43d2f..bb83421b46 100644 +--- a/cuda_bindings/cuda/bindings/cyruntime.pyx.in ++++ b/cuda_bindings/cuda/bindings/cyruntime.pyx.in +@@ -1886,7 +1886,7 @@ cdef cudaError_t cudaGraphicsVDPAURegisterOutputSurface(cudaGraphicsResource** r + {{if True}} + + from libc.stdint cimport uintptr_t +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + {{if 'Windows' == platform.system()}} + cimport cuda.bindings._lib.windll as windll + {{else}} +@@ -1896,11 +1896,11 @@ cimport cuda.bindings._lib.dlfcn as dlfcn + cdef cudaError_t getLocalRuntimeVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil: + # Load + with gil: +- loaded_dl = load_nvidia_dynamic_lib("cudart") ++ loaded_dl = CDLL("@libcudart@/lib/libcudart.so") + {{if 'Windows' == platform.system()}} +- handle = loaded_dl._handle_uint ++ handle = loaded_dl._handle + {{else}} +- handle = loaded_dl._handle_uint ++ handle = loaded_dl._handle + {{endif}} + + {{if 'Windows' == platform.system()}} diff --git a/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_1.patch b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_1.patch new file mode 100644 index 000000000000..0585ca7500ae --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_1.patch @@ -0,0 +1,147 @@ +diff --git a/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in b/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in +index 608aebd1af..7f60917f71 100644 +--- a/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in ++++ b/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in +@@ -8,7 +8,7 @@ cimport cuda.bindings._lib.windll as windll + {{else}} + cimport cuda.bindings._lib.dlfcn as dlfcn + {{endif}} +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + from libc.stdint cimport intptr_t, uintptr_t + import threading + +@@ -45,7 +45,7 @@ cdef int _cuPythonInit() except -1 nogil: + # Load library + with gil, __symbol_lock: + {{if 'Windows' == platform.system()}} +- handle = load_nvidia_dynamic_lib("nvrtc")._handle_uint ++ handle = CDLL("@libnvrtc@/lib/libnvrtc.so")._handle + + # Load function + {{if 'nvrtcGetErrorString' in found_functions}} +@@ -146,7 +146,7 @@ cdef int _cuPythonInit() except -1 nogil: + {{endif}} + + {{else}} +- handle = (load_nvidia_dynamic_lib("nvrtc")._handle_uint) ++ handle = (CDLL("@libnvrtc@/lib/libnvrtc.so")._handle) + + # Load function + {{if 'nvrtcGetErrorString' in found_functions}} +diff --git a/cuda_bindings/cuda/bindings/_internal/_nvml_linux.pyx b/cuda_bindings/cuda/bindings/_internal/_nvml_linux.pyx +index 1622cc82aa..ddff5dad75 100644 +--- a/cuda_bindings/cuda/bindings/_internal/_nvml_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/_nvml_linux.pyx +@@ -10,7 +10,7 @@ import threading + + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -410,7 +410,7 @@ cdef void* __nvmlDeviceGetSramUniqueUncorrectedEccErrorCounts = NULL + + + cdef void* load_library() except* with gil: +- return dlopen("libnvidia-ml.so.1", RTLD_NOW | RTLD_GLOBAL) ++ return dlopen("@libnvml@/lib/libnvidia-ml.so.1", RTLD_NOW | RTLD_GLOBAL) + + + cdef int _init_nvml() except -1 nogil: +diff --git a/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx b/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx +index c64eb00c5c..9ba4ea2727 100644 +--- a/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx +@@ -9,7 +9,7 @@ import threading + + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + import cython + +@@ -107,7 +107,7 @@ cdef void* __cuFileGetParameterPosixPoolSlabArray = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("cufile")._handle_uint ++ cdef uintptr_t handle = CDLL("@libcufile@/lib/libcufile.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx +index 8c96b6d640..96761a95ae 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -76,7 +76,7 @@ cdef void* __nvJitLinkVersion = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvJitLink")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvjitlink@/lib/libnvJitLink.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx +index 408a2cb592..2b31888e1f 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -75,7 +75,7 @@ cdef void* __nvvmGetProgramLog = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvvm")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvvm@/lib/libnvvm.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/cyruntime.pyx.in b/cuda_bindings/cuda/bindings/cyruntime.pyx.in +index 248346d274..e041b41d69 100644 +--- a/cuda_bindings/cuda/bindings/cyruntime.pyx.in ++++ b/cuda_bindings/cuda/bindings/cyruntime.pyx.in +@@ -2012,7 +2012,7 @@ cdef cudaError_t cudaGraphicsVDPAURegisterOutputSurface(cudaGraphicsResource** r + {{if True}} + + from libc.stdint cimport uintptr_t +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + {{if 'Windows' == platform.system()}} + cimport cuda.bindings._lib.windll as windll + {{else}} +@@ -2022,11 +2022,11 @@ cimport cuda.bindings._lib.dlfcn as dlfcn + cdef cudaError_t getLocalRuntimeVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil: + # Load + with gil: +- loaded_dl = load_nvidia_dynamic_lib("cudart") ++ loaded_dl = CDLL("@libcudart@/lib/libcudart.so") + {{if 'Windows' == platform.system()}} +- handle = loaded_dl._handle_uint ++ handle = loaded_dl._handle + {{else}} +- handle = loaded_dl._handle_uint ++ handle = loaded_dl._handle + {{endif}} + + {{if 'Windows' == platform.system()}} diff --git a/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_2.patch b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_2.patch new file mode 100644 index 000000000000..f0cabbad67d5 --- /dev/null +++ b/pkgs/development/python-modules/cuda-bindings/patch-nvidia-libs-paths_13_2.patch @@ -0,0 +1,169 @@ +diff --git a/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in b/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in +index 534dcb55cb..bd3feb2760 100644 +--- a/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in ++++ b/cuda_bindings/cuda/bindings/_bindings/cynvrtc.pyx.in +@@ -8,7 +8,7 @@ cimport cuda.bindings._lib.windll as windll + {{else}} + cimport cuda.bindings._lib.dlfcn as dlfcn + {{endif}} +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + from libc.stdint cimport intptr_t, uintptr_t + import threading + +@@ -47,7 +47,7 @@ cdef int _cuPythonInit() except -1 nogil: + # Load library + with gil, __symbol_lock: + {{if 'Windows' == platform.system()}} +- handle = load_nvidia_dynamic_lib("nvrtc")._handle_uint ++ handle = CDLL("@libnvrtc@/lib/libnvrtc.so")._handle + + # Load function + {{if 'nvrtcGetErrorString' in found_functions}} +@@ -156,7 +156,7 @@ cdef int _cuPythonInit() except -1 nogil: + {{endif}} + + {{else}} +- handle = (load_nvidia_dynamic_lib("nvrtc")._handle_uint) ++ handle = (CDLL("@libnvrtc@/lib/libnvrtc.so")._handle) + + # Load function + {{if 'nvrtcGetErrorString' in found_functions}} +diff --git a/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx b/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx +index 5231808058..f74cf1daec 100644 +--- a/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx +@@ -9,7 +9,7 @@ import threading + + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + import cython + +@@ -107,7 +107,7 @@ cdef void* __cuFileGetParameterPosixPoolSlabArray = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("cufile")._handle_uint ++ cdef uintptr_t handle = CDLL("@libcufile@/lib/libcufile.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvfatbin_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvfatbin_linux.pyx +index f5a9bbd218..8271f7aa20 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvfatbin_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvfatbin_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -73,7 +73,7 @@ cdef void* __nvFatbinAddTileIR = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvfatbin")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvfatbin@/lib/libnvfatbin.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx +index d676aac372..ed3c000566 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -76,7 +76,7 @@ cdef void* __nvJitLinkVersion = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvJitLink")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvjitlink@/lib/libnvJitLink.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvml_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvml_linux.pyx +index 28f0919423..852f75e46d 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvml_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvml_linux.pyx +@@ -10,7 +10,7 @@ import threading + + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -406,7 +406,7 @@ cdef void* __nvmlDeviceSetRusdSettings_v1 = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvml")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvml@/lib/libnvidia-ml.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx b/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx +index 8a84834a9a..a3ced66807 100644 +--- a/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx ++++ b/cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx +@@ -9,7 +9,7 @@ from libc.stdint cimport intptr_t, uintptr_t + import threading + from .utils import FunctionNotFoundError, NotSupportedError + +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + + + ############################################################################### +@@ -75,7 +75,7 @@ cdef void* __nvvmGetProgramLog = NULL + + + cdef void* load_library() except* with gil: +- cdef uintptr_t handle = load_nvidia_dynamic_lib("nvvm")._handle_uint ++ cdef uintptr_t handle = CDLL("@libnvvm@/lib/libnvvm.so")._handle + return handle + + +diff --git a/cuda_bindings/cuda/bindings/cyruntime.pyx.in b/cuda_bindings/cuda/bindings/cyruntime.pyx.in +index 244410a382..769664e157 100644 +--- a/cuda_bindings/cuda/bindings/cyruntime.pyx.in ++++ b/cuda_bindings/cuda/bindings/cyruntime.pyx.in +@@ -2042,7 +2042,7 @@ cdef cudaError_t cudaGraphicsVDPAURegisterOutputSurface(cudaGraphicsResource** r + {{if True}} + + from libc.stdint cimport uintptr_t +-from cuda.pathfinder import load_nvidia_dynamic_lib ++from ctypes import CDLL + {{if 'Windows' == platform.system()}} + cimport cuda.bindings._lib.windll as windll + {{else}} +@@ -2052,11 +2052,11 @@ cimport cuda.bindings._lib.dlfcn as dlfcn + cdef cudaError_t getLocalRuntimeVersion(int* runtimeVersion) except ?cudaErrorCallRequiresNewerDriver nogil: + # Load + with gil: +- loaded_dl = load_nvidia_dynamic_lib("cudart") ++ loaded_dl = CDLL("@libcudart@/lib/libcudart.so") + {{if 'Windows' == platform.system()}} +- handle = loaded_dl._handle_uint ++ handle = loaded_dl._handle + {{else}} +- handle = loaded_dl._handle_uint ++ handle = loaded_dl._handle + {{endif}} + + {{if 'Windows' == platform.system()}} From 1395e56d3c34e9186712e92ebe42cb6fdd438e73 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 09:55:08 +0000 Subject: [PATCH 41/73] mongodb-tools: 100.16.0 -> 100.16.1 --- pkgs/by-name/mo/mongodb-tools/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mo/mongodb-tools/package.nix b/pkgs/by-name/mo/mongodb-tools/package.nix index 8f46ce6e6f91..20c42939f918 100644 --- a/pkgs/by-name/mo/mongodb-tools/package.nix +++ b/pkgs/by-name/mo/mongodb-tools/package.nix @@ -11,13 +11,13 @@ buildGoModule (finalAttrs: { pname = "mongo-tools"; - version = "100.16.0"; + version = "100.16.1"; src = fetchFromGitHub { owner = "mongodb"; repo = "mongo-tools"; tag = finalAttrs.version; - hash = "sha256-r5oqgHs5aFeuKTGPy/+DPdJbc70S53frBh0ffMBiEFs="; + hash = "sha256-oxMc0+Il6pY0L8KF0h5+DYpBuqQvPzaOcZ8cjQDig0c="; }; vendorHash = null; From 39725b582977f8c491b4771aee67731deeababf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Pitucha?= Date: Tue, 28 Apr 2026 20:08:06 +1000 Subject: [PATCH 42/73] python3.pkgs.pycycling: update changelog link --- pkgs/development/python-modules/pycycling/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/pycycling/default.nix b/pkgs/development/python-modules/pycycling/default.nix index 706975af95ea..027753f69a50 100644 --- a/pkgs/development/python-modules/pycycling/default.nix +++ b/pkgs/development/python-modules/pycycling/default.nix @@ -27,7 +27,7 @@ buildPythonPackage rec { meta = { description = "Package for interacting with Bluetooth Low Energy (BLE) compatible bike trainers, power meters, radars and heart rate monitors"; homepage = "https://github.com/zacharyedwardbull/pycycling"; - changelog = "https://github.com/zacharyedwardbull/pycycling/releases/tag/${version}"; + changelog = "https://github.com/zacharyedwardbull/pycycling/releases/tag/v${version}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ viraptor ]; }; From 7636ef86063d015c98e5807dcbec3fa31c3df7b6 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 28 Apr 2026 12:11:04 +0200 Subject: [PATCH 43/73] firefox-unwrapped: 150.0 -> 150.0.1 https://www.firefox.com/en-US/firefox/150.0.1/releasenotes/ --- .../networking/browsers/firefox/packages/firefox.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox/packages/firefox.nix b/pkgs/applications/networking/browsers/firefox/packages/firefox.nix index 84119d35af4a..2de4bb1ad8d9 100644 --- a/pkgs/applications/networking/browsers/firefox/packages/firefox.nix +++ b/pkgs/applications/networking/browsers/firefox/packages/firefox.nix @@ -9,10 +9,10 @@ buildMozillaMach rec { pname = "firefox"; - version = "150.0"; + version = "150.0.1"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz"; - sha512 = "77e8eae86e7b17c33933fdea6d3b5fbe73e6613949e62c13d9ed3e593e7ba0b50701fa97fc7d56a278961d2e1cdb2902244c30a1020790091b0ae2f0cb1b4e71"; + sha512 = "b3710e1b35002312bf248e822681039b75ec1196f8d014c88b0377c9b06f34780469152a98ad967440a51a4a0ca45418ba6239438f869ae564cc82c023645179"; }; meta = { From 857f6aee5508d37dd5a21b4931f9c1b8bf972062 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 28 Apr 2026 12:11:30 +0200 Subject: [PATCH 44/73] firefox-bin-unwrapped: 150.0 -> 150.0.1 https://www.firefox.com/en-US/firefox/150.0.1/releasenotes/ --- .../browsers/firefox-bin/release_sources.nix | 1436 ++++++++++------- 1 file changed, 817 insertions(+), 619 deletions(-) diff --git a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix index 61fd96b85d4f..6a921c8c2936 100644 --- a/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix +++ b/pkgs/applications/networking/browsers/firefox-bin/release_sources.nix @@ -1,1859 +1,2057 @@ { - version = "150.0"; + version = "150.0.1"; sources = [ { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ach/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ach/firefox-150.0.1.tar.xz"; locale = "ach"; arch = "linux-x86_64"; - sha256 = "6fda3549eeb58d2c0abee981f03cec5abdf0a99031d82be368ab11268791cf28"; + sha256 = "8df967bb0baa0dcc1e16e6b9d36654068fa263839af105e04103bddd9a3b3cb6"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/af/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/af/firefox-150.0.1.tar.xz"; locale = "af"; arch = "linux-x86_64"; - sha256 = "2f564c698f6d287b2574d00380886119ba3ec088f622ebccc08e83799ecdbcaa"; + sha256 = "e0bd056bc365ea58b008cacafbaddb4af0eea7f025aeb5a980144513f5be3dbb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/an/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/an/firefox-150.0.1.tar.xz"; locale = "an"; arch = "linux-x86_64"; - sha256 = "d91484977a311430e8d883b2de04338d07b166ba1244b215e5a7e3c4381a9e08"; + sha256 = "d29cfd51a2881834bdb4878d774cd29134f1b3d86f781853b57a1368337c16a4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ar/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ar/firefox-150.0.1.tar.xz"; locale = "ar"; arch = "linux-x86_64"; - sha256 = "069c5001055811f1c6e26c80d1b6b94b0d1944d29774ce294863a075bc30610f"; + sha256 = "9953650bfb2a9da5cae6950c5649ce4ee1a1891da53a3ce94c0739039c61e620"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ast/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ast/firefox-150.0.1.tar.xz"; locale = "ast"; arch = "linux-x86_64"; - sha256 = "46c58edf509744ae7b2b66fa8b9ccc35b596bb46b19fe36d72c0cfd5df147ecd"; + sha256 = "557ddda3f673963872057b7b87438150dcab1ec707ab4a98620e5d9dd4ed4bb3"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/az/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/az/firefox-150.0.1.tar.xz"; locale = "az"; arch = "linux-x86_64"; - sha256 = "aee9472480d653b17ca70a27bd02d5809c686eea855c083707f4f97e20fa9e04"; + sha256 = "b054f3f119b2cdcc2acd69d2b1595ffc51385aefa8066a887de9567e3431b7cb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/be/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/be/firefox-150.0.1.tar.xz"; locale = "be"; arch = "linux-x86_64"; - sha256 = "f337bbece77ab7a80a2379d7d937f4b07c33143f33c067586b6b8b9a7a036bcd"; + sha256 = "dc2681e0b390ee722ac3d9b8af4afc31d8ada28b5e65af2486cb08a3c85f3eee"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/bg/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/bg/firefox-150.0.1.tar.xz"; locale = "bg"; arch = "linux-x86_64"; - sha256 = "bc93a3c89dd4ddaeca71ab29f60fb0f03d4c575829fb6f008d5d3f768c822483"; + sha256 = "398974bcd5c80e513db99e8d282a1c0acaff3596123f0af161de6082a989e492"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/bn/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/bn/firefox-150.0.1.tar.xz"; locale = "bn"; arch = "linux-x86_64"; - sha256 = "5498489c48848ae28416d859951faed4ab176a2f7c1578f28b3d2d59631e6c53"; + sha256 = "8ed8814129d7e2a2e15a90d6e9eb089e2b57061ad3f8085c0b2c86b21c9809ed"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/br/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/bo/firefox-150.0.1.tar.xz"; + locale = "bo"; + arch = "linux-x86_64"; + sha256 = "4dd922931156b14ddada8dad36c14c3d046d388d2314e9720f6671a4a6ff4adf"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/bqi/firefox-150.0.1.tar.xz"; + locale = "bqi"; + arch = "linux-x86_64"; + sha256 = "f5a959afa143a3c5576944758c1c6595498345a76cc12f0d649f68025d35f870"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/br/firefox-150.0.1.tar.xz"; locale = "br"; arch = "linux-x86_64"; - sha256 = "e37a97e0235c36028bd43e4358bc50a8c64819ea9d28b889dd550afab6f06396"; + sha256 = "a10ebb49d0f1a551a8c956d3232c351769533eed0c433ac00b075ff3ed932600"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/bs/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/brx/firefox-150.0.1.tar.xz"; + locale = "brx"; + arch = "linux-x86_64"; + sha256 = "2a557041f621c371be99762f31816fbc87fa6a9413f2ba148d8076c064038034"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/bs/firefox-150.0.1.tar.xz"; locale = "bs"; arch = "linux-x86_64"; - sha256 = "6e8b7aa778e3423c10c26de2eacddc5fd1adb50f97c90ba5fda3379a1ed74f92"; + sha256 = "986f07ce957f704a1c5711755bf052aa694df87998eb265ac8ce68bb59acd9f8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ca-valencia/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ca-valencia/firefox-150.0.1.tar.xz"; locale = "ca-valencia"; arch = "linux-x86_64"; - sha256 = "26fb6c5c4018bb318e65ce8545dd1470a76f5865d42b341c7009ec7961f1170a"; + sha256 = "f0db798b7e2b2d5459fdba9ab143e72c151577e8416108c8df1f168fd72b37e7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ca/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ca/firefox-150.0.1.tar.xz"; locale = "ca"; arch = "linux-x86_64"; - sha256 = "fa1688801bd1fd16771bd31d457c70b02b15d493f709e37dc947e26f642d7f75"; + sha256 = "128abfe1d356d6ef07202ca992c415f0b8a3b2cf319c68245272209b2752d6ce"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/cak/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/cak/firefox-150.0.1.tar.xz"; locale = "cak"; arch = "linux-x86_64"; - sha256 = "5334bc92c4912b4500311c8ddcb149abed21ab74a8bb7a91213a3690c43a130a"; + sha256 = "e068e8371fd28a6feaa7829cc27d853c256a6cf64c03f37521e0ac51f6ef4862"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/cs/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ckb/firefox-150.0.1.tar.xz"; + locale = "ckb"; + arch = "linux-x86_64"; + sha256 = "1bf8bcf2e8dafd46719d0b52539661ce9309bee9d1b014d221b3029e8a4041f4"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/cs/firefox-150.0.1.tar.xz"; locale = "cs"; arch = "linux-x86_64"; - sha256 = "0deaf31785fec9f5212a81ca7908525283205783b3670c41fc669e1288006eb4"; + sha256 = "15201a284b7c4b3c7fef023ec6041c7fb0749e93e72bad0ab33cb2cb7ffa98e7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/cy/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/cy/firefox-150.0.1.tar.xz"; locale = "cy"; arch = "linux-x86_64"; - sha256 = "b19fd410e899ce9e2ed41667e0ea7500d9c6a3eb20579a45563bd7bc7afad21a"; + sha256 = "b4b101b4df576e53abd7ddc44f6d845d485148864b09ef58c15c72f69d1bf9af"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/da/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/da/firefox-150.0.1.tar.xz"; locale = "da"; arch = "linux-x86_64"; - sha256 = "bc609f518235a115c6b64c67e3cbc805098cc2a4c4b19352e951c8e60316e733"; + sha256 = "75d1a8fe304e8e4fe2209571de9917806e56d5ef2dcf4beb0e70034464141453"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/de/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/de/firefox-150.0.1.tar.xz"; locale = "de"; arch = "linux-x86_64"; - sha256 = "5991544d554bdad4e1d485fba3e3d1bd86909bacf42afe2c794bb7cedf5192de"; + sha256 = "ec9a6c64811db82b51b003d6f9c61719be185a2ab102be753d54886902bb0b97"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/dsb/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/dsb/firefox-150.0.1.tar.xz"; locale = "dsb"; arch = "linux-x86_64"; - sha256 = "0925ac61578aff7ada7c5d4ce94e4bee685a4487b3930e55817325f1b21c38a1"; + sha256 = "702f2b853c8dd9d6b851792740796903a5b471b2be7d6dce514825a3330c7054"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/el/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/el/firefox-150.0.1.tar.xz"; locale = "el"; arch = "linux-x86_64"; - sha256 = "ce06c587a2b86fa73e7e8cd93427a74498fbec28ee2603bfbf048c9962931cd0"; + sha256 = "24291afc0c758a2823406ef48b66f7ce82f051bf1cb77bec54f605a5f7f18d12"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/en-CA/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/en-CA/firefox-150.0.1.tar.xz"; locale = "en-CA"; arch = "linux-x86_64"; - sha256 = "7187c727aacc8b462c340bc3d68d4e2c78c53a0db6e92efdf1d3a3eb770bcdd9"; + sha256 = "563445823374ac3a4b2d7a35902e7c8bca507590fb49bf51fc7289cb58466af0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/en-GB/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/en-GB/firefox-150.0.1.tar.xz"; locale = "en-GB"; arch = "linux-x86_64"; - sha256 = "04802f87d51633e593682c3a67ffe5ad2278d8aefba0a7a963b1aadaf78bb2f8"; + sha256 = "927bf825b1f72d36e28fdc9ebc04ebd79cc86265f2c4739891ba69a2f80babcf"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/en-US/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/en-US/firefox-150.0.1.tar.xz"; locale = "en-US"; arch = "linux-x86_64"; - sha256 = "2ff987e94bfa6ed51f53d6b4baa7f0f8ec3fc26c4c47bd9f86c70d11aa0fbd60"; + sha256 = "83871560c3d3514d3b5bdd196cd258dde23d53f5d3d89d266765bd7e8306b895"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/eo/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/eo/firefox-150.0.1.tar.xz"; locale = "eo"; arch = "linux-x86_64"; - sha256 = "1983fb4d167646ec7a9c9320de1b37e4f0042fd24c890848b84a304df13e0e68"; + sha256 = "e5b4e12d05e99bde29fc96566efc4d039d1fca07d4b257f1c0ba36b9a64d88d0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/es-AR/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/es-AR/firefox-150.0.1.tar.xz"; locale = "es-AR"; arch = "linux-x86_64"; - sha256 = "bc2e4b24152c6a2f9b2a29e9a4c7dae698f803ba2cc841a39e318a4e04f95575"; + sha256 = "7b1914eee5c0155f95a93bfb53e641240889ffe707423abcbb130c34c6a6c6a1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/es-CL/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/es-CL/firefox-150.0.1.tar.xz"; locale = "es-CL"; arch = "linux-x86_64"; - sha256 = "0f11ee090d0927239847c22de8e4e8fde5426cb0f48ab5c40bb4819a6d0dfa9b"; + sha256 = "29c6efef9868b0383338af0afba7ee623e1f06155a8e47a86dc6229418b399e5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/es-ES/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/es-ES/firefox-150.0.1.tar.xz"; locale = "es-ES"; arch = "linux-x86_64"; - sha256 = "cd604a866aa7f8e6086d70690671281f975d20206edbfde19f1c153d82d52081"; + sha256 = "ce1fa5fcef78563a4d2921f600f91b378b0c81ed22b167eef0b503a274752a20"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/es-MX/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/es-MX/firefox-150.0.1.tar.xz"; locale = "es-MX"; arch = "linux-x86_64"; - sha256 = "00250676a87308cf1cb0260fd300c3d3abaebbaa01bb58952bced085496bb94b"; + sha256 = "f31252190c4fccaea01b328a1a4a73837ae7060180ac5d610ea0cb53c028533d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/et/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/et/firefox-150.0.1.tar.xz"; locale = "et"; arch = "linux-x86_64"; - sha256 = "e6effc06ee1998a7842e3459ef87d0eb41813239df1a638b19e25cee690f4545"; + sha256 = "b7862bdecc8492c76d110971d28da8de194cd38b0351a286fb71506f88474032"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/eu/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/eu/firefox-150.0.1.tar.xz"; locale = "eu"; arch = "linux-x86_64"; - sha256 = "b55c891191869c9b38cc8abdacc73fa46f6f400571247fda0e11351d4eecb8e6"; + sha256 = "d9686a806b870adf51f512589b23649e66a94e59a66689b0fed69dfef62844c7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/fa/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/fa/firefox-150.0.1.tar.xz"; locale = "fa"; arch = "linux-x86_64"; - sha256 = "8565e9302d61fe53db0aa93b54c77c2e5fa01668a0749f2180d4a2877bd436da"; + sha256 = "bc48fd47694ab1040d7880c9dedb3461f3f87c95493a0571cf4b314c8297d1c1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ff/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ff/firefox-150.0.1.tar.xz"; locale = "ff"; arch = "linux-x86_64"; - sha256 = "9cdf2a235b2900f5773abeff59d929a787576fc76e8b0f8bfbf199d8d3493c86"; + sha256 = "a93365446a506e1453c6815d8ad8913208c11390df7d60d8fdb38636e73c9044"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/fi/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/fi/firefox-150.0.1.tar.xz"; locale = "fi"; arch = "linux-x86_64"; - sha256 = "ff8901eb6714133cbbcf8cc0cac83b253686d82e9dbff693538d10a577dbbe17"; + sha256 = "84379104f44ace79de75ae0b65b09d63a7bc519b57a00135925d38f177ddd290"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/fr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/fr/firefox-150.0.1.tar.xz"; locale = "fr"; arch = "linux-x86_64"; - sha256 = "e5993ec9c373df0e3e738f00e3914fdf727b00e3b15a0ed4892e5d1416f30eff"; + sha256 = "8ace62c3c41df014135d2f598a7e9cbfc8efa0836d0489fc4f12ed8bc5e5b820"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/fur/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/fur/firefox-150.0.1.tar.xz"; locale = "fur"; arch = "linux-x86_64"; - sha256 = "25dec1f12105b87d9ec64847b97b3d66610ca10bfdefa1b0d6c9e94ccd5f1e06"; + sha256 = "f9704f4587d080b3938b03468cfda8d9f8028f57d4ddfaff9f222622fac841c9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/fy-NL/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/fy-NL/firefox-150.0.1.tar.xz"; locale = "fy-NL"; arch = "linux-x86_64"; - sha256 = "13bd01d13edc2a63d334d184adff5b5f58014e50e97c5dfc747f7c22865f67a4"; + sha256 = "aa04c83b25a9d09f6bb7d10b95fa03b6ca9219e2c1697e3085882edb9c2b0015"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ga-IE/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ga-IE/firefox-150.0.1.tar.xz"; locale = "ga-IE"; arch = "linux-x86_64"; - sha256 = "fc08eb3c9f3e0554a8b449502a91b53562b9a1b90e9bbbe3f5ec7a69835a075c"; + sha256 = "a63ad6d692a605f7382bbd8a39d8496b9dab813573f33697d26b8c696e453b7b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/gd/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/gd/firefox-150.0.1.tar.xz"; locale = "gd"; arch = "linux-x86_64"; - sha256 = "f93f7c51e96248b8f4bc342f887e698c2a8300c635dc188e243a92344bf9a40c"; + sha256 = "7a97768ea9326f844b00f63e716ebd87b8fa4304cb949f3be6c2d0ff3b44d829"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/gl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/gl/firefox-150.0.1.tar.xz"; locale = "gl"; arch = "linux-x86_64"; - sha256 = "94df516061208f827856132baab2f21a3e3099066ca324358586c5de2b8d64d2"; + sha256 = "9421edf800c0b68c057a0bffef4071d1e76affb06d06c97f04c0429ef6825bea"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/gn/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/gn/firefox-150.0.1.tar.xz"; locale = "gn"; arch = "linux-x86_64"; - sha256 = "fcdd1c0a2ea34e49c82e71b15ff6246fcc94c0a822ec857d20d84ed1194a2426"; + sha256 = "12a62535360280796c6eb4f22c6745c16a0d45a8e473728da5d0763898bb97d4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/gu-IN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/gu-IN/firefox-150.0.1.tar.xz"; locale = "gu-IN"; arch = "linux-x86_64"; - sha256 = "9aa1360317b7a730c5bfbaca9fd4271170299ae7d86d01352a0fe90fd6af7567"; + sha256 = "b9b93f9ba1c1ac8e83a605ee5cb26482362024cfea5a198efd265add2470692d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/he/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/he/firefox-150.0.1.tar.xz"; locale = "he"; arch = "linux-x86_64"; - sha256 = "96b935a94a0e57cef008b0fc72de9fa46328ad47aa12eb1f348a51b684588c4f"; + sha256 = "92f907d375d8d43b4226047b3326c00884a03bcc012b7f385c1fbea8417fb275"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/hi-IN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/hi-IN/firefox-150.0.1.tar.xz"; locale = "hi-IN"; arch = "linux-x86_64"; - sha256 = "ab8d3295c74c407cb923035f070b3dd8a8f102e7968b0786010b31c105f0ff61"; + sha256 = "82ad07e69ab74b7256d6a623033c8e8a8c5c8c4015c59b605a876fd1fbdb8260"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/hr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/hr/firefox-150.0.1.tar.xz"; locale = "hr"; arch = "linux-x86_64"; - sha256 = "c07894fc729efd289a16c75bd9791bf9b45da02582aa6b16b1575f215c87baa3"; + sha256 = "c8655f3a8b8829419a82bc63f9eade478fce4f0643b6a7e65c76e0fd63de209f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/hsb/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/hsb/firefox-150.0.1.tar.xz"; locale = "hsb"; arch = "linux-x86_64"; - sha256 = "7639cb516533ce99038691116edc6ef571192e74f1458850de438c1cd6591239"; + sha256 = "57d39bd2c7969b1b7de9864d8ced6f14bdbfa231fc18a7c3a5be6a54cd1e392a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/hu/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/hu/firefox-150.0.1.tar.xz"; locale = "hu"; arch = "linux-x86_64"; - sha256 = "9b8a83bef86262ecaa8f0c52cd8f6ea24c37307aa4e757b4e467039cbb91ec6b"; + sha256 = "9a3ceffe953e4e935e68295a67d933073d368d07addc54b40f745709ddfdadb6"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/hy-AM/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/hy-AM/firefox-150.0.1.tar.xz"; locale = "hy-AM"; arch = "linux-x86_64"; - sha256 = "034f14b74c65117fe19191da9a48862cfb4b43dc3d96bccba7c52c413af72b82"; + sha256 = "a66233ddeb1ad03a1f5a14134480cbcaa64e3f58e3f30ab9fcc40bb2fb681868"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ia/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/hye/firefox-150.0.1.tar.xz"; + locale = "hye"; + arch = "linux-x86_64"; + sha256 = "be4bb38c9b57ab42e055a1d2c167307c656473c4296d6f2c435e1bf81a1393a3"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ia/firefox-150.0.1.tar.xz"; locale = "ia"; arch = "linux-x86_64"; - sha256 = "0c99d8783d83621cd75d74ec91b1917aaa7649030c94848af74eeca85fba4f95"; + sha256 = "57f5feab33ae6be40c363b805785aa9e6c1b9aa8082ba600e34bad04cefb7162"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/id/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/id/firefox-150.0.1.tar.xz"; locale = "id"; arch = "linux-x86_64"; - sha256 = "7836898dd1569518d1e11f872e90b161072f786b0df1ef0a6e561066e48e4fba"; + sha256 = "b1e7bdd4631f50e5b1910a850fae113415997563bfc4ad981cfb5f29bcaf3105"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/is/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/is/firefox-150.0.1.tar.xz"; locale = "is"; arch = "linux-x86_64"; - sha256 = "9a3425105dc9cae3c61c9c66099d8db45ebdafca3b24ba61a6ae3d9a8367aabc"; + sha256 = "036ea67243ce666c54086d0e219bb063217f2e8321ab1dfcbf2e7690fefb353d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/it/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/it/firefox-150.0.1.tar.xz"; locale = "it"; arch = "linux-x86_64"; - sha256 = "c46f185b9357b62d4ed2d5f1fd4abc3d88174c72b97846eae87d8a7e0ac149e8"; + sha256 = "00f38bb2ec48dec5a202774b4c50440b06b9936726922850d3663e641a09c927"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ja/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ja/firefox-150.0.1.tar.xz"; locale = "ja"; arch = "linux-x86_64"; - sha256 = "86f16a1bc7e8dd1e54ff4abac9684c4380eab88ef55c45b056107aad33c197ff"; + sha256 = "56faf471236f66aa4739287885d458324d91c715407dceaddc24bcd30d752394"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ka/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ka/firefox-150.0.1.tar.xz"; locale = "ka"; arch = "linux-x86_64"; - sha256 = "711bf219c8271cebbadf735510e06f64732f96a3e82e9f02031c1b4c45210473"; + sha256 = "e16ce6b7994cf29fc875c70eba04c6aa6172a1d508455a9e48298f942bdf7b31"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/kab/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/kab/firefox-150.0.1.tar.xz"; locale = "kab"; arch = "linux-x86_64"; - sha256 = "9e808d0b0433fcaeca0f046bf3504d174afdcb51ca7fcce13cf8d5445dafaeb0"; + sha256 = "1a6c584963332e16c55db5b16f6acaf27847a56696a3c7d3057f139fd1fbe6e1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/kk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/kk/firefox-150.0.1.tar.xz"; locale = "kk"; arch = "linux-x86_64"; - sha256 = "e39c684b53088922e06f291e36360d8b7668854e7ccb090897e3c4d6afea2120"; + sha256 = "fbd12f3014207ef7c0e4dc5c7b116eb69bd9305afd7da4e1e0535ad4237d7565"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/km/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/km/firefox-150.0.1.tar.xz"; locale = "km"; arch = "linux-x86_64"; - sha256 = "27755aaf765e65cbc3813aa780390586db75d0a54e0bf30d9b39c5457efece30"; + sha256 = "f65d60e0d21ed87e061a1668575ce54c90699ab06decf42b0acf1c6dfa799099"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/kn/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/kn/firefox-150.0.1.tar.xz"; locale = "kn"; arch = "linux-x86_64"; - sha256 = "59365d692e939a83ee409db0c593200ca5721f3c0c37dc15fd305ff9f4cad8a4"; + sha256 = "979b78ba65f70f875f2364aa0d3621fa965a54c42e5520e2a34ef03fd80a7c02"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ko/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ko/firefox-150.0.1.tar.xz"; locale = "ko"; arch = "linux-x86_64"; - sha256 = "f9b40208d5d782d823caf658b3527778fd569c4beffceebeac0e593fd72ea846"; + sha256 = "d1f7142a6bca24b26d1ede360c8e2013376e300117a10054f7a2cbaef4bd236a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/lij/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/lij/firefox-150.0.1.tar.xz"; locale = "lij"; arch = "linux-x86_64"; - sha256 = "8d92d909dcf6fb2096cdf174c38fd22343b735bd406f1bd7b70ebe2ace40780b"; + sha256 = "bf4fca76941f2b92288a79be529c6d8daae42d00dfa1509cbf0b1c4acd546f88"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/lt/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/lo/firefox-150.0.1.tar.xz"; + locale = "lo"; + arch = "linux-x86_64"; + sha256 = "5849e07330a477098364863d114fde1fd54fa97460183443514f0beef386b2de"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/lt/firefox-150.0.1.tar.xz"; locale = "lt"; arch = "linux-x86_64"; - sha256 = "2ed3230c2989218674b5c5c454e6be6db02aa53a51171f80b710a8854364ea4b"; + sha256 = "b3295000050b405dc8131c79a5e7c6f4ac63157bba554dc270227a0d0e1d12c9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/lv/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ltg/firefox-150.0.1.tar.xz"; + locale = "ltg"; + arch = "linux-x86_64"; + sha256 = "62a0d117c718d07f2f63e5976fa5ef01a98147e0d066cf8e1c7961b095f7ad86"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/lv/firefox-150.0.1.tar.xz"; locale = "lv"; arch = "linux-x86_64"; - sha256 = "3cae4a5fee6856fc8d26f9f331e6209c92e368e7d8e0cca116493da5257d1e88"; + sha256 = "4cbab42225c919b21dc7ba624bcac999188d3a7452f237ff0594653f0fc9b103"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/mk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/meh/firefox-150.0.1.tar.xz"; + locale = "meh"; + arch = "linux-x86_64"; + sha256 = "3900f5657d5655d73ceffb15a9f912cf16e5abdc9c2ea51a8e437c2ab7decb4a"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/mk/firefox-150.0.1.tar.xz"; locale = "mk"; arch = "linux-x86_64"; - sha256 = "4e983c39616f2a0a903f18c7b9c724d3ee30e284b91a2197346d5ef9b89333c4"; + sha256 = "ab45fc250423d23da2f0f80abbac28abdfdca22239f629d11d8527c566f36865"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/mr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ml/firefox-150.0.1.tar.xz"; + locale = "ml"; + arch = "linux-x86_64"; + sha256 = "26b8e74037fee5ef9b88a8b1fd042f8efa3909f41c2a90f7b3503376f75f0910"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/mr/firefox-150.0.1.tar.xz"; locale = "mr"; arch = "linux-x86_64"; - sha256 = "018c79ec6dd8d80aaf025260ee1f0fa436d1f273a0450401b5582d325d15e808"; + sha256 = "e720a7acde548cdc4ed45a3a6a1a633b81b523579d03af314e67943e6f6f326c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ms/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ms/firefox-150.0.1.tar.xz"; locale = "ms"; arch = "linux-x86_64"; - sha256 = "fd6e53060243b54d02cf15f83ae6b6a1fd74387e32c3a872e06287e4e67e7214"; + sha256 = "ef2e8232de91b87581572c33b4cb9dea2e197f325cbc1c389da20b08fd9025fa"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/my/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/my/firefox-150.0.1.tar.xz"; locale = "my"; arch = "linux-x86_64"; - sha256 = "66be74d223804ea70759e21f67388c506459b1e5dabcb99ea4c6940d8437bd5f"; + sha256 = "f7c6592ad7b8edab343de438ddc756b1031439d5fe0be44ffae7c41bd3abf490"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/nb-NO/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/nb-NO/firefox-150.0.1.tar.xz"; locale = "nb-NO"; arch = "linux-x86_64"; - sha256 = "881700e587a36b40c3a363e721b7a8b6bc8525bfac3ef0bc0bd32c4ae55eadb6"; + sha256 = "e76c556b97bd5e70f098b88678ce85ea80da9afe5f63f7214d18bca2678264f9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ne-NP/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ne-NP/firefox-150.0.1.tar.xz"; locale = "ne-NP"; arch = "linux-x86_64"; - sha256 = "612e84a33109f3be70ebf5806d23aa82abfb1e2ee1be26be8871dcc834ef5e90"; + sha256 = "bfcc08764cd5ae2c5afe6a8796f0fd8248c65fc8378248b23d7cdd8177478d9c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/nl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/nl/firefox-150.0.1.tar.xz"; locale = "nl"; arch = "linux-x86_64"; - sha256 = "8cf72e25578ef232d111fde5dc233be761467b3ccf9089d356724a202a4af507"; + sha256 = "a38d38a5115cfdd3b8a6af0f3a227c41b81ff1df989a8f7eaedb1a8ea5c3a76d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/nn-NO/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/nn-NO/firefox-150.0.1.tar.xz"; locale = "nn-NO"; arch = "linux-x86_64"; - sha256 = "d8b7b4c09f69d8b4f72bf65efb38c1a6fd2cbb7a5e1d628c7747d53f1b752cd3"; + sha256 = "69399f4217d4bacfc317b76c2d98e35ec1db8792f74a48e48a78ffce79cf7562"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/oc/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/oc/firefox-150.0.1.tar.xz"; locale = "oc"; arch = "linux-x86_64"; - sha256 = "d85c3edbdb601e4b2f185da27dd87a5c991edd57d7093eae0ea504e8c895014b"; + sha256 = "71acefaa84fc651a0244976c9861a98595abf7f5372e242b8e76aff6b10fdb82"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/pa-IN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/pa-IN/firefox-150.0.1.tar.xz"; locale = "pa-IN"; arch = "linux-x86_64"; - sha256 = "0b1606b64d0b712a7844cd98f51c271400c409a02875fced5830407cf6e24eb0"; + sha256 = "3ad8da6f8b29e0523383ab75b0312b11a316ff3b7a7e7fc53482f899b7e75cca"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/pl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/pl/firefox-150.0.1.tar.xz"; locale = "pl"; arch = "linux-x86_64"; - sha256 = "e2e48642bcf8b73ae19be2212f4c5faecea12d90ab03467f9ce778a02ac54f92"; + sha256 = "4dc09fb01345cf5e4e6a38f2977821e0bca4ecac57ea6ab37069e89325489fad"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/pt-BR/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/pt-BR/firefox-150.0.1.tar.xz"; locale = "pt-BR"; arch = "linux-x86_64"; - sha256 = "d2c9dc14be5395be1e99782644a0dd69cd381bd0558ba905e59842baf2d9fd77"; + sha256 = "7e178f959ed18806149625c05d64a3867b71c36d327defe3bafa4f1a294d2dbe"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/pt-PT/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/pt-PT/firefox-150.0.1.tar.xz"; locale = "pt-PT"; arch = "linux-x86_64"; - sha256 = "78ca0c4486fd2b5f36e74fb75de94be6be3ae9863283fc40c098dde7bd056ae5"; + sha256 = "0fd02b1e54dcbfdf33e20d078d3ab9e252e2f7be9f4cf6b4ab2a6e84e7ba673a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/rm/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/rm/firefox-150.0.1.tar.xz"; locale = "rm"; arch = "linux-x86_64"; - sha256 = "5fdcc6ea08da8d9539bdb6b058370880b8387d8b724663e692ac69a70ae1688d"; + sha256 = "8f3a004e64a884e6e6adc71bc1958e4bb0624f1ddf9641b595a9aad77a78a103"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ro/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ro/firefox-150.0.1.tar.xz"; locale = "ro"; arch = "linux-x86_64"; - sha256 = "ccbd22c2e0a5b42b0a7385e5d18f1f4318f9aee45db45e979f66606b5b38cde1"; + sha256 = "39d91e36bd820f514b1555c7efc4119e178be0bfc50d7d80cbd235dc79fa3f88"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ru/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ru/firefox-150.0.1.tar.xz"; locale = "ru"; arch = "linux-x86_64"; - sha256 = "12fa20208db2048f35cda8c868103dcee372fec4fa111fa46e135aaab7d4a556"; + sha256 = "3ea866bea819fe2924b31c2d230864ded8e79c520efe5a0077807d40d6ff1f8b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sat/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sat/firefox-150.0.1.tar.xz"; locale = "sat"; arch = "linux-x86_64"; - sha256 = "719e550ad69aced566f63f2863f5f8f1fd2dd5e7f1bb31606eeee830d151760e"; + sha256 = "108a14c809facc50001caa056ac5662a01a71920b879eb04f64e71199b9c679c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sc/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sc/firefox-150.0.1.tar.xz"; locale = "sc"; arch = "linux-x86_64"; - sha256 = "cd215721dba4cf36b00eaf5a3bf29af623c7f86b21e6f4abe54b0f00f6a52214"; + sha256 = "af53472a3e87aadf764521da7c8de117bd05d99df70d40b1d7e7ccde6b77de5e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sco/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/scn/firefox-150.0.1.tar.xz"; + locale = "scn"; + arch = "linux-x86_64"; + sha256 = "1487280795ec63cf95df8aa086ce47f344db0e68114eb3c0d1bb7e9d6952b324"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sco/firefox-150.0.1.tar.xz"; locale = "sco"; arch = "linux-x86_64"; - sha256 = "434a248ede9771a58f7315585609b659287dacfd2f077b3b7726f17d3f32817b"; + sha256 = "f2892f2af3fc11a9850cbc3cd35efea9303631265b83af5df4c9b491a7725cbd"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/si/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/si/firefox-150.0.1.tar.xz"; locale = "si"; arch = "linux-x86_64"; - sha256 = "9eea0ae86f75db6996f5bd2030f5edff11e9071f294ff4bac39cbf1405cab6bd"; + sha256 = "22b3677a751ec0ecfbba034727ee3422c455e06b3c4bf1689c6078d5bf4f5621"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sk/firefox-150.0.1.tar.xz"; locale = "sk"; arch = "linux-x86_64"; - sha256 = "76393f918ffbf5697ac29eb5548545ac3f81d26d1fd126d434eef22037525c9e"; + sha256 = "be838c44417a55bda3daa5b32d1319f366659c84f718bbd47877e7aeaae4b4c9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/skr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/skr/firefox-150.0.1.tar.xz"; locale = "skr"; arch = "linux-x86_64"; - sha256 = "47b2a99f38081ecaebd470c9c92c3764dc22a0d5e8a5b5d1ebd3ef8a5778c6ed"; + sha256 = "116eabc0df45208024ad748dccd0560d402ef0e07120668cf38f460752dacf93"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sl/firefox-150.0.1.tar.xz"; locale = "sl"; arch = "linux-x86_64"; - sha256 = "58fb7c5d61b347c1ecb6273f95345fc45adf3cc82951faa3a6704fe0d97475db"; + sha256 = "1d9cd0ee1d9c1ee32836dfd2528df34b20b58a6f7b048ac992856239b6c9f45a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/son/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/son/firefox-150.0.1.tar.xz"; locale = "son"; arch = "linux-x86_64"; - sha256 = "d3eff42279227c045c0c5deeecc2955c316639a1c624d2f431be9eb8dc208981"; + sha256 = "d664e04da60898edc227eb6c978c94d09d9c704186ab11c7f1b3d069d371ee0e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sq/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sq/firefox-150.0.1.tar.xz"; locale = "sq"; arch = "linux-x86_64"; - sha256 = "01223c61da469892fee98effddd3d8c862f2037e1fe0f9a063c0f8d54ca45f66"; + sha256 = "1809114fcc1f39a7cf5fba17c7cdb7c388d7db200140e72e43eb68cf51e56ede"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sr/firefox-150.0.1.tar.xz"; locale = "sr"; arch = "linux-x86_64"; - sha256 = "7341c99e41b96ae73b3eca82aaed9a53d9d7f93148511598a340f2df2c5f1bd7"; + sha256 = "721c182205e4117a8d361e1b7b01e5544b6883c08c55baa0228ee220414fbd00"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/sv-SE/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/sv-SE/firefox-150.0.1.tar.xz"; locale = "sv-SE"; arch = "linux-x86_64"; - sha256 = "534c40d3b5187ea53514457b74c84e9221fe0e59b7a9c7a543ebb00f2c6b0ebc"; + sha256 = "47f22dc1ea086df633dbc2cbc4e758a6cbc9d54b01e0c90904a3d0d4cf4b3d79"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/szl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/szl/firefox-150.0.1.tar.xz"; locale = "szl"; arch = "linux-x86_64"; - sha256 = "89059713ba528500e256bf36b59b3b29b518e2fe6a1cce387765b5668d377899"; + sha256 = "f87f2c5233d5ae337c0e7e495636b40279fa94c5d193b0f1f81dd3457e7a9e29"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ta/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ta/firefox-150.0.1.tar.xz"; locale = "ta"; arch = "linux-x86_64"; - sha256 = "819e223804e6bf19269556a603f5e1de22864973aeb6c02b07dbf5883bddec65"; + sha256 = "c1b15e4ee9698f76104efbff260cd74a3ce94a6511f4f4c3117291dbbb624309"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/te/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/te/firefox-150.0.1.tar.xz"; locale = "te"; arch = "linux-x86_64"; - sha256 = "d0d619885daa8b580cceb419267b213bcb428f240cf33b5cddbb56a371b7b5a2"; + sha256 = "dd0dc5f8dd74e75104054f1f654adaefcac5bae0f1c41bf516c4962e9d9aa9f9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/tg/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/tg/firefox-150.0.1.tar.xz"; locale = "tg"; arch = "linux-x86_64"; - sha256 = "de0a569e50ea10f2581292f91c87b6c9e589c8eaaa925a9154d3c99ef2970fa2"; + sha256 = "1d304edba33e9dca7e72905593de1d3e14ebbd56602ba43c00450e9a13cd34a2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/th/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/th/firefox-150.0.1.tar.xz"; locale = "th"; arch = "linux-x86_64"; - sha256 = "e24b9a1c30995b3edcea1c62eeaa16d24fe51a917dfd5d77bbb4f28a88298316"; + sha256 = "73ca92e278c3eaf6598a76679f47b6efc4d617686247ba1fe2f19acdd30668ba"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/tl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/tl/firefox-150.0.1.tar.xz"; locale = "tl"; arch = "linux-x86_64"; - sha256 = "572e70a6f3f5095c00ef5c5381f4ed3d686f0cda2b754dd80b2b7f475e36b882"; + sha256 = "fa1fcddcb3f1d87d326f05613de3a99ab3d4f445b4b14245c5ea4e308020fc70"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/tr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/tr/firefox-150.0.1.tar.xz"; locale = "tr"; arch = "linux-x86_64"; - sha256 = "491929752bf6aad4637418779679e09fd4c11831c5c9ae8e5ebe54ec07524bac"; + sha256 = "e3f709f5180be6086baf6ecaa3aaeb1acf0760ab37ae7a31b733ab0b974b5848"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/trs/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/trs/firefox-150.0.1.tar.xz"; locale = "trs"; arch = "linux-x86_64"; - sha256 = "38ff7c7e4e0296a8774c2fd51b68c966f9c0a9d2b80cb66f3ece90f0b9f3c2b5"; + sha256 = "aae7fdb048cc4bc752070183d24db7acd19f41545e4dff1448274d161a72dbb1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/uk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/uk/firefox-150.0.1.tar.xz"; locale = "uk"; arch = "linux-x86_64"; - sha256 = "477afc4e02ce89b72e999237d36f2088e89abdb9a6e6afb199e1a4ede58d48ee"; + sha256 = "acb0a8a039bb68c7dcf7447c2166c3b38b0adc8d2b06647cb88fb8cdacb5265c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/ur/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/ur/firefox-150.0.1.tar.xz"; locale = "ur"; arch = "linux-x86_64"; - sha256 = "ff286564a782108c772c8b050464499f08b97e40c108ebbde703de5c539b240e"; + sha256 = "4203ffc02c641c0418b32a542c3e17ee79b37cfe0f84daa6c5be1222dd078916"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/uz/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/uz/firefox-150.0.1.tar.xz"; locale = "uz"; arch = "linux-x86_64"; - sha256 = "88178214e9aa0e4e00b6c7bab3651efe4bf9fbc552b2e3a5fe6374aa4d9c3f79"; + sha256 = "49c275a012b480aee408f3f4e344f2e7c94e1944dfa897ff12e957ad2faaea68"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/vi/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/vi/firefox-150.0.1.tar.xz"; locale = "vi"; arch = "linux-x86_64"; - sha256 = "7f8823ed0456189dc3ee7e42ecc605c3445fdab99a82aacb9ce6d7ed5ad9d15b"; + sha256 = "b899bef5925fe50e87d9b035ef4f74b9346fcee88d8a71da56aafec924abfb5b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/xh/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/wo/firefox-150.0.1.tar.xz"; + locale = "wo"; + arch = "linux-x86_64"; + sha256 = "81d19e8b73c5400067b6c10d822389227b362ba8e0b4a5f259ad5180d44e8e53"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/xh/firefox-150.0.1.tar.xz"; locale = "xh"; arch = "linux-x86_64"; - sha256 = "8988a0e5547a5039bdafd01193e3159d96757a36630420f7d5f2ee6e350df329"; + sha256 = "93550d5d0fc22862165f7ea6be56866184c0e9682ddd78fe9c2e39bb8ee91429"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/zh-CN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/zh-CN/firefox-150.0.1.tar.xz"; locale = "zh-CN"; arch = "linux-x86_64"; - sha256 = "c4ec491f484bf7ee35e91f89e297a943b785ab2d657de3e1352320b7de967b01"; + sha256 = "6e636a89f9b8b5843a0771be51019cbed3e423b54ccf5343f571afa10c55bdbb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-x86_64/zh-TW/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-x86_64/zh-TW/firefox-150.0.1.tar.xz"; locale = "zh-TW"; arch = "linux-x86_64"; - sha256 = "dd81e74e904f74b72247f56d92b180bfe8fecec5732f76d3650ebbd5d8051944"; + sha256 = "ae716b38a97120a13bc0d83a1eb8645ba7e172ae7a6e9bb154923ad42d195650"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ach/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ach/firefox-150.0.1.tar.xz"; locale = "ach"; arch = "linux-aarch64"; - sha256 = "bfb5d97c838501a93f4a8148ecc00de102a51f8d2bfb2019da7e331ea9fbd7b5"; + sha256 = "910dd87259210daba781325b2e50c546ead88bb15f94f7e516f5c8bc52038acd"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/af/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/af/firefox-150.0.1.tar.xz"; locale = "af"; arch = "linux-aarch64"; - sha256 = "f2e2444bce5853d147ebfd62b6663b626207964a3cb34558865a27aa9a499cc7"; + sha256 = "dbe844fe5cc2f8584bc066ccb3edca2d1114730155802ac3b43d6e2c7bfa916d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/an/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/an/firefox-150.0.1.tar.xz"; locale = "an"; arch = "linux-aarch64"; - sha256 = "773d7793172b12ca5ef9931bfdfe45527332b8214a47aa8cce7cec056b9e5ba5"; + sha256 = "459950fdeae20b8ea1ba5eb33a34fcfb68e1dde611e37432acbbfa5d35d2b412"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ar/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ar/firefox-150.0.1.tar.xz"; locale = "ar"; arch = "linux-aarch64"; - sha256 = "fe2c2721d91dfbf210b2f965abd49ffa0853a9f3ffb7245e09d4b5c432977608"; + sha256 = "908d14dc45cfebaf9ad6109640931d325cb7f3dd3ebcda18e367f762114f2ddb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ast/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ast/firefox-150.0.1.tar.xz"; locale = "ast"; arch = "linux-aarch64"; - sha256 = "3d2a9d32b4b65c9d820c7369acf38abd7601fafb2762c8450666bf14cb60fb62"; + sha256 = "b138b3ae317e1af4846a348428752a5f3d81133bb3ca7d0cb4cac78a671455e0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/az/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/az/firefox-150.0.1.tar.xz"; locale = "az"; arch = "linux-aarch64"; - sha256 = "d85d3df76c17e39520f81fbeb763c73ed5f8208a40d91aec2fe73e4b4ef8bd73"; + sha256 = "8d05dc93c246be985255edcff836b3a4dcb00c5e4d18ebb5ddf90b2b0245ed04"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/be/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/be/firefox-150.0.1.tar.xz"; locale = "be"; arch = "linux-aarch64"; - sha256 = "ff61b2f17609e9088765a8c2c27c73aefe679ab364178be923e9bd79e7e82c64"; + sha256 = "700cdb0e00e83b606158fd7a3008e3df758af53131f525a1f2c61128d3c57559"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/bg/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/bg/firefox-150.0.1.tar.xz"; locale = "bg"; arch = "linux-aarch64"; - sha256 = "24d052f7057bd679445abdadf3594ee298913b25d7b6d037c46a4a3d817c2580"; + sha256 = "fad7345dc157a279a45c14f5cf6ae5375ec647718bb407647ad05c4481c32829"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/bn/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/bn/firefox-150.0.1.tar.xz"; locale = "bn"; arch = "linux-aarch64"; - sha256 = "d6753fb7c487243faa6767c30d459c69a2c5b922f0b448efe31e17a0f7228050"; + sha256 = "3634edd19c446c4a0467f8f3854ddf7a81e30656aeaf9d4561ab0c653d5b6089"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/br/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/bo/firefox-150.0.1.tar.xz"; + locale = "bo"; + arch = "linux-aarch64"; + sha256 = "b8105ebcf2d955572f7a36bf9a03f4c05d63a11df83baec3496769dfe97acdc7"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/bqi/firefox-150.0.1.tar.xz"; + locale = "bqi"; + arch = "linux-aarch64"; + sha256 = "44fc51ff937c71ce644bfef7a942731b2a47ee66a34bf24d9438588cb8b224e5"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/br/firefox-150.0.1.tar.xz"; locale = "br"; arch = "linux-aarch64"; - sha256 = "01c695d79b76c7b688dbdce4c7be454562b048900a6170ce1831f644cdb2649d"; + sha256 = "6d2bf509548feeace1904f6e0d9fdf035372777062c4f1c84c085875b7224d17"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/bs/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/brx/firefox-150.0.1.tar.xz"; + locale = "brx"; + arch = "linux-aarch64"; + sha256 = "b935ea946b2f6955a4302cd22a204538ae96e674aafb217f2bc26c2d7da7c828"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/bs/firefox-150.0.1.tar.xz"; locale = "bs"; arch = "linux-aarch64"; - sha256 = "53ef34e6bde6bd751dfca50e833ce7662cbd916c1202885f560cf0880fb05d4e"; + sha256 = "e3e9d0e21b157948294403b1714c07d1cbdbb5254b2f1032d032784b28ddb80d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ca-valencia/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ca-valencia/firefox-150.0.1.tar.xz"; locale = "ca-valencia"; arch = "linux-aarch64"; - sha256 = "169695d4ac628ff56655e37dfce77dafb7f4d52f02f76dfd9791b2ceacf5faff"; + sha256 = "32610991c8831417b8df60b57f01743692809fe439833b99e6579738720988e8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ca/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ca/firefox-150.0.1.tar.xz"; locale = "ca"; arch = "linux-aarch64"; - sha256 = "54ecf88b598f7a0ff1f75a575b09ab6ce210eaf606b85be137282c301fc9a0e2"; + sha256 = "111f8191b7584db3e84ccfb1138c36dd11a385bf00281b99f74e5ed32aaa1a95"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/cak/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/cak/firefox-150.0.1.tar.xz"; locale = "cak"; arch = "linux-aarch64"; - sha256 = "7d68e7c8307f72b14f588f35f7ea8d4570d28e07c1a779c025be01a8b54a7ab5"; + sha256 = "e81a113824976a5a9eeb531e91040e1b7c904a66fc480b013ea6f409a171041b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/cs/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ckb/firefox-150.0.1.tar.xz"; + locale = "ckb"; + arch = "linux-aarch64"; + sha256 = "579f0f3bd781d8cade5be3e5b3b4826b3ff65135cded7e24395a11d6bcc274d1"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/cs/firefox-150.0.1.tar.xz"; locale = "cs"; arch = "linux-aarch64"; - sha256 = "1d0d62000802d037a2386f5375bfcb924ec7830c9822390ccf18097dde958a99"; + sha256 = "03e7b4241c6ba9bb91ce71702d7affa989e9c505ac9cd79d78ed392f4a394a55"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/cy/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/cy/firefox-150.0.1.tar.xz"; locale = "cy"; arch = "linux-aarch64"; - sha256 = "96afc930c806785ef41a37bd6fe1c52746289efb311eaba17af187c76e8aaf88"; + sha256 = "c7f966b86291160687e79c105d1d3f5203386112e171511d80d065a663b05bd7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/da/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/da/firefox-150.0.1.tar.xz"; locale = "da"; arch = "linux-aarch64"; - sha256 = "0519613f94868e1a0a6e07d646c0ff0ca606a6b1d7c850d7f4496f774fa86353"; + sha256 = "4b8cc62221236e8d698505ec650bc42cf6bd08fbe8f8537d5ce6d703a1a45836"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/de/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/de/firefox-150.0.1.tar.xz"; locale = "de"; arch = "linux-aarch64"; - sha256 = "f6cc63dee1b96ed41d60934e002a44a4a16da79f15c06297fba10f13abcc7d13"; + sha256 = "607fe83aaa513237cca04bab5425c97911fc34d89a53fdcc13f53b1a7e5c9e53"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/dsb/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/dsb/firefox-150.0.1.tar.xz"; locale = "dsb"; arch = "linux-aarch64"; - sha256 = "692524f3a8df532855c2880ac2e4bba10637d79cfec3e687664afc285d919c20"; + sha256 = "b0223639f7373c0cc5b675e89e31a77d9f59b7c559da49cf866a16919a79f508"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/el/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/el/firefox-150.0.1.tar.xz"; locale = "el"; arch = "linux-aarch64"; - sha256 = "8c33b155683938adb80db55ea6a6db6df233382d38c75f99288653c2a00fe2c4"; + sha256 = "3c97360ac2afeb34cb15dfb5755d7c89b320f69deb1564bc4ac07d3c3958a141"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/en-CA/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/en-CA/firefox-150.0.1.tar.xz"; locale = "en-CA"; arch = "linux-aarch64"; - sha256 = "df7400d44670569befe8695660885e42ffb31a4eaee7e3c822bf01ddcdcce39d"; + sha256 = "493a0a53f94c3a964a471d4b72163babf2ba456dcbf983cb1b53dc3063ae0fb4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/en-GB/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/en-GB/firefox-150.0.1.tar.xz"; locale = "en-GB"; arch = "linux-aarch64"; - sha256 = "ab5c228fea3531abaaa5f80b25cae5fddb56e8f94f795d44985319e1510625aa"; + sha256 = "0bf22734ba59b5bfe8bfe7115688c7bff15f7a145b94245b0f2e929a2d7f9af3"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/en-US/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/en-US/firefox-150.0.1.tar.xz"; locale = "en-US"; arch = "linux-aarch64"; - sha256 = "9e6e2974ddfa840544caf26efda765c4988931bf2ada85c6b107500cd916cee7"; + sha256 = "518c3bcfe5b859a2fe0405f9fc9ac4271072dd68f3164629c4ecc14729ed9c7f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/eo/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/eo/firefox-150.0.1.tar.xz"; locale = "eo"; arch = "linux-aarch64"; - sha256 = "c70bd558e0566d7c42467a7c950ff3df8a8db4d7ebedcc987464d48fa56def5f"; + sha256 = "e4a4eb335a85640bf9723e0a63aa66713cc96aaa55696e43de887b6355b3fe80"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/es-AR/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/es-AR/firefox-150.0.1.tar.xz"; locale = "es-AR"; arch = "linux-aarch64"; - sha256 = "967de64c73a667ac467fa94a821f50c0cf18993353a1882cf6f297a9d894d5ce"; + sha256 = "78873ac54608fd436220415e225be4d6ef37229cc0af116164f927aca3b430c2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/es-CL/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/es-CL/firefox-150.0.1.tar.xz"; locale = "es-CL"; arch = "linux-aarch64"; - sha256 = "30bcbb562ff20cf4d6d69a22507efe1882e6afb76580cd73c770b41df81cf996"; + sha256 = "add480f9e15598a1cbed863aa7acf4c76ff703a9fd56c6695394561e231d4ede"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/es-ES/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/es-ES/firefox-150.0.1.tar.xz"; locale = "es-ES"; arch = "linux-aarch64"; - sha256 = "95b6502bb5c79a86790444e9047ebfbcc0da1bfd4a139b1118af9a3d6034c803"; + sha256 = "48cb9dedceb524023bc70145d685259a3e743b117fa7a7743aeebff2a07937f8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/es-MX/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/es-MX/firefox-150.0.1.tar.xz"; locale = "es-MX"; arch = "linux-aarch64"; - sha256 = "d14341b9dbdf69bd26f7020aea990e7b1260798b2126edb12f26130112ec676f"; + sha256 = "096731da41334f1ec3112fa5b07b0c5335c358fe932155b78736eb05f56d8edf"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/et/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/et/firefox-150.0.1.tar.xz"; locale = "et"; arch = "linux-aarch64"; - sha256 = "090fdb54b57196bfe50d95703fd891fc45e5b61a71f01d9f387a4ea090cf185b"; + sha256 = "790eb765d8a1ad0d50d03c82a35345a65a7ab5ba0f0c71bf1ed249f0bd65d2e6"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/eu/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/eu/firefox-150.0.1.tar.xz"; locale = "eu"; arch = "linux-aarch64"; - sha256 = "17f09f54c040a86218503a963871e9009ec91ff808cb83544de76978b74e32a0"; + sha256 = "19bdb6d0b9e28572440c1eb9cada15cf7b129e366781fb90de8087c8ea58f8bb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/fa/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/fa/firefox-150.0.1.tar.xz"; locale = "fa"; arch = "linux-aarch64"; - sha256 = "2ba0a879cb17e11cdd40f4db120b6c4ce96ef3534427603055224600f3e0eea4"; + sha256 = "b23b79cef42c1daf3b190e14bdc7b52eb9bdde17a19dfc0bc36074ffe9868d73"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ff/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ff/firefox-150.0.1.tar.xz"; locale = "ff"; arch = "linux-aarch64"; - sha256 = "968a570398cd970f1884b49e17aa2ed245f59b70f9c7d3c807ec7f75259d5e43"; + sha256 = "d8726f896933022054b95bbc29da0a616d1094528bb1c1a77d1bd54ec57aa8f8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/fi/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/fi/firefox-150.0.1.tar.xz"; locale = "fi"; arch = "linux-aarch64"; - sha256 = "e7f8a50883183b11cdbbee3ec3f31b8efa72571a0e5235a13ced94a756d98ff5"; + sha256 = "76a5db7fe2709e68074e80823151eaaddd7460e29fab797bf657c2b9db023fac"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/fr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/fr/firefox-150.0.1.tar.xz"; locale = "fr"; arch = "linux-aarch64"; - sha256 = "b8abb61dd340aff2d0812e3fe22b128ccacaba4acc8e2c670df99627af5c09b9"; + sha256 = "574c9aa9e8806cd4bb60f86503be11a0ee6914a1f0710433717fce0c880352f9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/fur/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/fur/firefox-150.0.1.tar.xz"; locale = "fur"; arch = "linux-aarch64"; - sha256 = "37877b40446d443941f174d26735b50c8b3680e33fac023e97632c056533f586"; + sha256 = "46239042deb73913442236ab5c49b1486d996078710fe537ae73ed11ad1d4b1c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/fy-NL/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/fy-NL/firefox-150.0.1.tar.xz"; locale = "fy-NL"; arch = "linux-aarch64"; - sha256 = "15e36db60b6b31648163dc8f740c6fc91373daa8d39ce573bb3c51bd22aa86db"; + sha256 = "efcf678e26f400072f3976004c44c0d9236bbfe6fe0a42f335d1ba2faf4d728a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ga-IE/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ga-IE/firefox-150.0.1.tar.xz"; locale = "ga-IE"; arch = "linux-aarch64"; - sha256 = "80e113f41aba04d445315c3d27766e107e27b01598451eb7f293b7f1a176adb3"; + sha256 = "80260ae606e9656c85ac24ea9404ac5cde7e88b531f26fa904c3c70268698e28"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/gd/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/gd/firefox-150.0.1.tar.xz"; locale = "gd"; arch = "linux-aarch64"; - sha256 = "50e0a2530aae063cd0928e6d1123eefb275c722b81b29649cdae2a2a9f5f59f2"; + sha256 = "31e77e7c5b4ec9303bf46af168a53bb360249ed87cd1f18095e50d1750dab150"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/gl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/gl/firefox-150.0.1.tar.xz"; locale = "gl"; arch = "linux-aarch64"; - sha256 = "35f9737a3576583e0c3f70df8d7deb96918648b35722bc87e82eae86054ddf25"; + sha256 = "b3189d324834fd21107a82fde12bd2be0e4dfd29017328fff6a276af8322a118"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/gn/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/gn/firefox-150.0.1.tar.xz"; locale = "gn"; arch = "linux-aarch64"; - sha256 = "beed54e00bef3e35625583175a338d652e09764df312752403a7b3d7402c1d33"; + sha256 = "9c3283d98b8716d6a2a11261eccba29d6cec6dcb7b8f4e190ecdced7e6dd7262"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/gu-IN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/gu-IN/firefox-150.0.1.tar.xz"; locale = "gu-IN"; arch = "linux-aarch64"; - sha256 = "b85e6dddf1c4d854502724c6f661da6dc28c2f15504ff0509299ae75feae97fd"; + sha256 = "bb6b2b8cc620e328deb9dcff90e671c5cafe702b19fafbc9af81764429ed07b1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/he/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/he/firefox-150.0.1.tar.xz"; locale = "he"; arch = "linux-aarch64"; - sha256 = "815f9e01499dbb83df62380bee2ed0b5a6bee368f00a51cb14e178465135e3a9"; + sha256 = "55b9954cfde56434b8c0dab9e76c409246cc66f6a9dc69ed0d42d7da93a6cae8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/hi-IN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/hi-IN/firefox-150.0.1.tar.xz"; locale = "hi-IN"; arch = "linux-aarch64"; - sha256 = "ccb8169a407e548ec662e2149bcd848fc19b8bb6fb7559afff412456c3fb1596"; + sha256 = "2ec0590056f85476199e9f61a4a59e297f53a4793aad749bc88e5479a6bbb5cf"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/hr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/hr/firefox-150.0.1.tar.xz"; locale = "hr"; arch = "linux-aarch64"; - sha256 = "66e17b54c9ca0275dcc0dc17a57b64eac0360587f4d80caaf5a8f904bd9f3fbc"; + sha256 = "bfb02b878e13f4a1d98b9631659a07ae075a607bc328c3ee5aa5ac86bd42f6d2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/hsb/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/hsb/firefox-150.0.1.tar.xz"; locale = "hsb"; arch = "linux-aarch64"; - sha256 = "001ab0ccbfe3fdbc6b057664d02929dc3ebc4e9567684749f05f483cb3ebf369"; + sha256 = "e6d5e54117250e22c6c2329a4b8c98546d65cb27797c9a42f69cfc92c72cdb1d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/hu/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/hu/firefox-150.0.1.tar.xz"; locale = "hu"; arch = "linux-aarch64"; - sha256 = "16babc87894317efe88d6234762b6f0c14db62323b20987abcb95d9f639f32bb"; + sha256 = "3903debfd0638dda86b13d27c92585fa3e8fdbb750366d77d83bbe1f6b29b29e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/hy-AM/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/hy-AM/firefox-150.0.1.tar.xz"; locale = "hy-AM"; arch = "linux-aarch64"; - sha256 = "419d551fca7fc4066303b980e7fff9585f7115270fbbadab3f487b559e88170a"; + sha256 = "624f032b814ba01334ec52727bf9cbd3805cf94488994f0e1076ebeca21e8bbe"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ia/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/hye/firefox-150.0.1.tar.xz"; + locale = "hye"; + arch = "linux-aarch64"; + sha256 = "ffc537707535c9a19ae66ac684c4792882da0986eac643d118614c67bb3eed10"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ia/firefox-150.0.1.tar.xz"; locale = "ia"; arch = "linux-aarch64"; - sha256 = "d6bddb0e06ebb26dad4fbec0589c550c0a4644133ae915a801419b8c5083e5dd"; + sha256 = "51f84bf0c6cf4c8783553d113ce079153225e3df8c0c45462e3df70af4b31b79"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/id/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/id/firefox-150.0.1.tar.xz"; locale = "id"; arch = "linux-aarch64"; - sha256 = "02da44560c02c186417906254dd427213aac0f923c17499a89cdb169832069e8"; + sha256 = "7613525439e39b7275887b6dcd100b7bf2d3b9fb4ee0c43525974376b1040243"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/is/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/is/firefox-150.0.1.tar.xz"; locale = "is"; arch = "linux-aarch64"; - sha256 = "acc08d39f248b5b799aa5f2631eaea6a0778157887fb5c0926ff42e7b1145b8b"; + sha256 = "c2a85e67d6bee9d9149badc4489a4d70a8716e278819e03379c309471ed93ef5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/it/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/it/firefox-150.0.1.tar.xz"; locale = "it"; arch = "linux-aarch64"; - sha256 = "96f389427893b009b4b00c0426d7c1e44f4edfe4f85c954665798273dd24cf6c"; + sha256 = "b2847b5bd62d3551c6cea210fed3a42f67c44ea500d1d007b574f8958aa8759a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ja/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ja/firefox-150.0.1.tar.xz"; locale = "ja"; arch = "linux-aarch64"; - sha256 = "a28a5dc44c81b8d7bbb36e8529ec12b9eb93a4dbbb315e510591f57df70e431d"; + sha256 = "56620a77759b736c554a3f825b8d8e643e8d943e5330a4b2d378a6ec618a8f9a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ka/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ka/firefox-150.0.1.tar.xz"; locale = "ka"; arch = "linux-aarch64"; - sha256 = "e749135cafc5505f32832b36053a7c1179d3b10ecd00bf22856855e1aa595385"; + sha256 = "11b0d303dcd30bbcff1e918446cb0e2134ff58adf33f8836e53ba743832ebe36"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/kab/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/kab/firefox-150.0.1.tar.xz"; locale = "kab"; arch = "linux-aarch64"; - sha256 = "56289ea469839fb14e1755b807c8590fdfec417e3ba3e167977d0a775d47ddfa"; + sha256 = "d2ef86d352a2a9ac56f25368f9174a152b781305055725e796118e2600b86a3f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/kk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/kk/firefox-150.0.1.tar.xz"; locale = "kk"; arch = "linux-aarch64"; - sha256 = "cf264d6c21e67632ee81eb808a52b624a3a994c6b6075aa93be0fc8cf8867d5a"; + sha256 = "b143536df5ed2798a836306c3bc677490050f37a11b1027a03b061c136e36e4d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/km/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/km/firefox-150.0.1.tar.xz"; locale = "km"; arch = "linux-aarch64"; - sha256 = "fd96e17527b863213e311ee9e3221b64c6dc44db4465d926afc17cde37970f37"; + sha256 = "e4d4285bd3ec06cc6183957d7c21374661945575bbf89815fab92211b1f4f142"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/kn/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/kn/firefox-150.0.1.tar.xz"; locale = "kn"; arch = "linux-aarch64"; - sha256 = "7a47e0e8cf8917bc9626dc0ba59ef7425be9cbcdf54e2b31954402d1cc3988d9"; + sha256 = "3d62a8980af44837d04946fecb786869583951887804791496ed9b407388df1d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ko/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ko/firefox-150.0.1.tar.xz"; locale = "ko"; arch = "linux-aarch64"; - sha256 = "a90d9216e1112bb9639f536e6752e8a7f0afc5f19748e4544140096b4b7d1bee"; + sha256 = "7c3013343f1d52b2345983452bda56dab05460f374dddd03e1d198ee92d537de"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/lij/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/lij/firefox-150.0.1.tar.xz"; locale = "lij"; arch = "linux-aarch64"; - sha256 = "c9868c2d93656facbef63bd0267870ca145efb0860063870b13c011debcc0570"; + sha256 = "71211c4c8dee826dae432f77d7d26e4da19c939714890b11abcd628c9443bcad"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/lt/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/lo/firefox-150.0.1.tar.xz"; + locale = "lo"; + arch = "linux-aarch64"; + sha256 = "e78b38500aff29d791eef802e7bd328f9b961d53c276ea625cb36156126df70a"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/lt/firefox-150.0.1.tar.xz"; locale = "lt"; arch = "linux-aarch64"; - sha256 = "8fc2b840950ad2593876794170575af91c04ad334552404f5460a5d006e9d594"; + sha256 = "d88dc2b7e1331de2ef82a6960020b7a0f27dcf8fb4c9de4de199c66ba6fc51b0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/lv/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ltg/firefox-150.0.1.tar.xz"; + locale = "ltg"; + arch = "linux-aarch64"; + sha256 = "45086a95b8166412ab51a8db6446c540b9dab49a779eea8656e010a5d31fca4c"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/lv/firefox-150.0.1.tar.xz"; locale = "lv"; arch = "linux-aarch64"; - sha256 = "a534d5e8e12e57a3b288ca1b12be61fb270da791f6ccd33938233eb1c0f3fc07"; + sha256 = "2bbf06086aab432fd384416da0d5ca872df102bc88d9006ddd83dd6757c5ef3d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/mk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/meh/firefox-150.0.1.tar.xz"; + locale = "meh"; + arch = "linux-aarch64"; + sha256 = "7b7fe732cf7246d11b2fe5c889546abfec1649e06cac3df3212c36a65e5edc87"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/mk/firefox-150.0.1.tar.xz"; locale = "mk"; arch = "linux-aarch64"; - sha256 = "101f937a0a64cc4aeb71ecc0b76334bdcf3c4bc41bc2923a845df89e1b1e4475"; + sha256 = "3bd132654564c9d6da1fe962bb4ffa24db04e0c5cc10909312bd892bdee805f8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/mr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ml/firefox-150.0.1.tar.xz"; + locale = "ml"; + arch = "linux-aarch64"; + sha256 = "c2a533d488c0b1a41380aab5e8adf24bf4d228f2c3bf9105a5ca06ae598e13bc"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/mr/firefox-150.0.1.tar.xz"; locale = "mr"; arch = "linux-aarch64"; - sha256 = "e9f8226415d5aa07faf0a9493d247c98f20ac1cfd64ad45dffa5b101470f266c"; + sha256 = "584cb5c0ce829333b8789c5c0e3b0b92e360528525d1b7b26095e9aa7451ade7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ms/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ms/firefox-150.0.1.tar.xz"; locale = "ms"; arch = "linux-aarch64"; - sha256 = "4860eaef1ffcc84c776645d46d09d05f792b5c939447b5e5cae5015080cba254"; + sha256 = "a0e657870a6727167b9d09ca64a290240ad70603dd1f00041c98567cde2ac79f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/my/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/my/firefox-150.0.1.tar.xz"; locale = "my"; arch = "linux-aarch64"; - sha256 = "365b05ab1bb379d6fe3a7d47f4cad780fd06e8e4cf2d97be8b454e557b549f5d"; + sha256 = "0be94e433659efa1195fbbd7cc3dda57a27ad792d6f27fcc3fbb4ef568c6ba24"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/nb-NO/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/nb-NO/firefox-150.0.1.tar.xz"; locale = "nb-NO"; arch = "linux-aarch64"; - sha256 = "26da7d07de34b248bf31b46456be7db188819782de4be81c3102936ce7a7c147"; + sha256 = "13a7c44869ad992b3b5e5d96bd728da805c008ddd6911a9a0b02080c0043b1ad"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ne-NP/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ne-NP/firefox-150.0.1.tar.xz"; locale = "ne-NP"; arch = "linux-aarch64"; - sha256 = "f18c403279ab4355f3c3af7df37917ddee15cf12d5702ee3631416094e34e29e"; + sha256 = "239cb386656b0b399a28fd255e5e8f87dd8cf88494ae6d2d68e9bffddd8aff82"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/nl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/nl/firefox-150.0.1.tar.xz"; locale = "nl"; arch = "linux-aarch64"; - sha256 = "3af9e6a79b151deb9edbe20637b484763682ce129e19c62bf64d75c1c8b3e3b3"; + sha256 = "7d8b35934fbede88f8fe419db69823fae84ec0fe76b975ac0b91684148fdb1d2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/nn-NO/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/nn-NO/firefox-150.0.1.tar.xz"; locale = "nn-NO"; arch = "linux-aarch64"; - sha256 = "ced05bce994800f362e23305269324bff93363f6971a6fb3dcd50fd6695b46a6"; + sha256 = "8a5cb9d59f364915ccfa2422cf0b89eeb0cea0955e6104634f982c7e6c03a0d1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/oc/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/oc/firefox-150.0.1.tar.xz"; locale = "oc"; arch = "linux-aarch64"; - sha256 = "001a3236dc3221693f00ccf7d3ef9a772a9f85e956086113f2d5ec00097764be"; + sha256 = "c79e5e732756d38f55b41ad41292b094c24f39d6babd3b49650ca9fbd71b8606"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/pa-IN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/pa-IN/firefox-150.0.1.tar.xz"; locale = "pa-IN"; arch = "linux-aarch64"; - sha256 = "ed8e49b3bad3263620c3335079c72bd01c12b5ec19bf5d2a3ee2501cc9bdfc3d"; + sha256 = "6e8f56c5b989333fb0a38bc4cda2cad8822b622dcc46614a634f4e508973f631"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/pl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/pl/firefox-150.0.1.tar.xz"; locale = "pl"; arch = "linux-aarch64"; - sha256 = "3b1518027b323cfdfdc4bb95f66bd75dc43ce387a75fade39f8cdcd789483f55"; + sha256 = "9552d9903201258af9ae36a7e83b33593280ebb560e2c43e03b0210fcc0aec5d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/pt-BR/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/pt-BR/firefox-150.0.1.tar.xz"; locale = "pt-BR"; arch = "linux-aarch64"; - sha256 = "07decb7d696a9cecf4130352c77bdacf23fd0c7b486889fa40f5cf1faff22b5d"; + sha256 = "aa0a2910705bf3ad409289403a2a53c99f050020e233c94055dc9256b7a81dbe"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/pt-PT/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/pt-PT/firefox-150.0.1.tar.xz"; locale = "pt-PT"; arch = "linux-aarch64"; - sha256 = "cb011d2ba53d7eaf9d8065fbcf8a0a599ebd46d63a140af48aa68be90e2e89b8"; + sha256 = "9c779f7c6ba13d77878cf5d3677bd8a079f30cfc69c9f140a6f4d6a31dc3ec5d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/rm/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/rm/firefox-150.0.1.tar.xz"; locale = "rm"; arch = "linux-aarch64"; - sha256 = "059036333a669b2e332bd1c91f8462f8f2c9197dd200686c93e8bc9c98d9a3e1"; + sha256 = "f90c9cd8cd7d8adbc235fc6b8c7bb009e91101473f4a2e722d4746b29534daca"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ro/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ro/firefox-150.0.1.tar.xz"; locale = "ro"; arch = "linux-aarch64"; - sha256 = "dc0424e5288f25cf15e9dde77d21ee8b4819f2f3efcfb1a7f9759db38de69435"; + sha256 = "b5cfb3ceee3ff68a831f4251fe653ec080b3921656814b4c8f034058ba8ead9f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ru/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ru/firefox-150.0.1.tar.xz"; locale = "ru"; arch = "linux-aarch64"; - sha256 = "acc30078a9be326d58972b4ec86abde7d829309915f573ff930d07453497bde0"; + sha256 = "72c877dc903a52d2375348a16fad7ded617ba199016d6f22aada1f28c5035b62"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sat/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sat/firefox-150.0.1.tar.xz"; locale = "sat"; arch = "linux-aarch64"; - sha256 = "64fe33329ccf4e46a7c83eba9ace506fb0f1eaa77f84e4fe0fe2a4b79adafe04"; + sha256 = "ac17c01232d386ae52eaa504f05b70a22db1dfcbdf463e1020b5351e07265a9d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sc/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sc/firefox-150.0.1.tar.xz"; locale = "sc"; arch = "linux-aarch64"; - sha256 = "6865e09f8ac77bcb4f07f9adbb6d8db55d265d60bddd589c8fffd74fe08b88c0"; + sha256 = "a7809ab6f568896beb07b1ad7106ac6f514af736a40b5d91fe351968c421bdaa"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sco/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/scn/firefox-150.0.1.tar.xz"; + locale = "scn"; + arch = "linux-aarch64"; + sha256 = "e6d09b48c3ab312504f932319b4b0fb5389ac282be44221db222837f129bd3fc"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sco/firefox-150.0.1.tar.xz"; locale = "sco"; arch = "linux-aarch64"; - sha256 = "aa391d7766f94b938e70c1b25c6a94e37c89d0ff9dae04b194aa9f9cb05c6bce"; + sha256 = "139aedbb5d6293fd939ab84a9bc45980987a1e7015d0696d66bb76dd726cee44"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/si/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/si/firefox-150.0.1.tar.xz"; locale = "si"; arch = "linux-aarch64"; - sha256 = "6724d82646c653cefeadf1170ed0e137541631536d282a7e11ccfd0066f17dbf"; + sha256 = "7c78c58f7ff019fbd9ae99fdd71085511f8469b47624bb9794b5a19c96c92373"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sk/firefox-150.0.1.tar.xz"; locale = "sk"; arch = "linux-aarch64"; - sha256 = "c660a9a3fc60a8dec171931f8dc42eab78f2e8eac052ad38b234f27c1cdaaf69"; + sha256 = "015c865fcd5ce8cb3da3bc055146ad1e3d84ac2ba034dad8db1cf5c40458ea93"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/skr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/skr/firefox-150.0.1.tar.xz"; locale = "skr"; arch = "linux-aarch64"; - sha256 = "c4c02f3a144f70bd0ee2e9ad112e523bd5962253afbf72b7c672cbacb09f7f69"; + sha256 = "0886595e8ae4776a83ddcddd6c2d8bf2257f8fc7b37693b3a517c66d154527c2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sl/firefox-150.0.1.tar.xz"; locale = "sl"; arch = "linux-aarch64"; - sha256 = "5734549558ace1c969ed2e2b4375a08f8869b25ab560d706bb60ddb4193590c9"; + sha256 = "96541bb42b73f27162a85b9318ced66dacee185b2d76831416453859eebd82cb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/son/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/son/firefox-150.0.1.tar.xz"; locale = "son"; arch = "linux-aarch64"; - sha256 = "a5d560cea663dc82152ab9bcf7d2733396254c02dd7308709d74264553e1ae15"; + sha256 = "84f42c1c8a6b28408dc19b9c8153d1e8b4e2f578d60b5dec175250015ab41dd6"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sq/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sq/firefox-150.0.1.tar.xz"; locale = "sq"; arch = "linux-aarch64"; - sha256 = "3eb5c4b583205380c13eb99c13df361db7adb46324ab37e4405b892f5c923d21"; + sha256 = "6ffeb766f19b53763691e902f6a01584720a248b52cbe08bdb530ba7f9c65971"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sr/firefox-150.0.1.tar.xz"; locale = "sr"; arch = "linux-aarch64"; - sha256 = "83b9a7cc9b19d82771f29f2fc2f20e76b04c0778d51644a3ab38223d46c51c2f"; + sha256 = "ba6d4769fe30ca2c6dafbb9d9acb18defe2c2b7c48bb80a9d7a7579d23b236ff"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/sv-SE/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/sv-SE/firefox-150.0.1.tar.xz"; locale = "sv-SE"; arch = "linux-aarch64"; - sha256 = "d60f17565af94a7bac9b4188a036844b170a2183d1adb9323cc0e297121007d9"; + sha256 = "9f3b81e42d918cb964c6ecd5887658704d8192fcec57123edea739ae617cd02c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/szl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/szl/firefox-150.0.1.tar.xz"; locale = "szl"; arch = "linux-aarch64"; - sha256 = "0ab6422102620f7a2f8a3109e4a1ad7cefcba8692c3ab561cc218b71134fbe16"; + sha256 = "9deb181dcc5d6bf24c2e14cc690cd867a7c3ffa6589899a7bd98021137c0da36"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ta/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ta/firefox-150.0.1.tar.xz"; locale = "ta"; arch = "linux-aarch64"; - sha256 = "7e6b81fe4bf32f20d6d63b624cfbbdc4534ad39908b9057ee7ec18d90fa0f006"; + sha256 = "00987b9eedef78a5611860970d54c567cf441f333b1fe2d8a279b0babf1cdc85"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/te/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/te/firefox-150.0.1.tar.xz"; locale = "te"; arch = "linux-aarch64"; - sha256 = "5c66682d957e02c9f93eb248bdec5787a2397099b1ec63d5bfe62e15fee8a616"; + sha256 = "68a41103ae728f3bddc4632814fb4e9cc37d338ac171903b8fc51c18e6610d4d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/tg/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/tg/firefox-150.0.1.tar.xz"; locale = "tg"; arch = "linux-aarch64"; - sha256 = "6151d4822fb5085e2743ace099c3fb5b06b11b10e9aaf48cd100da19e452701e"; + sha256 = "48db88f96b0bd6719005a1e240988955b85489662957f77752e283d8eef8f5ca"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/th/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/th/firefox-150.0.1.tar.xz"; locale = "th"; arch = "linux-aarch64"; - sha256 = "de1cccee3e3f2734e011dde3aa4c564fefa43a493fa682b631c4f7a81c15260a"; + sha256 = "18bb5d344710cf0a66d23fd221c55fab6c80932e4023301dcee928d48362cf91"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/tl/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/tl/firefox-150.0.1.tar.xz"; locale = "tl"; arch = "linux-aarch64"; - sha256 = "816f2620046c878db2f2d91ba859b8db6657dfab0f48bf12f9956247edb43ced"; + sha256 = "a1a8beaf1a316e38282c0f1478f6b6e82ab84a341a88c0edc8e446f53b201839"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/tr/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/tr/firefox-150.0.1.tar.xz"; locale = "tr"; arch = "linux-aarch64"; - sha256 = "c3e21bed21f1d8ded7b8f67fb6a5b971aaedf982358cc2adaa1d22830cd3d4b6"; + sha256 = "1cff2234f98902f95688bbd91411d65fd577164413c6de781d34c2275d74a517"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/trs/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/trs/firefox-150.0.1.tar.xz"; locale = "trs"; arch = "linux-aarch64"; - sha256 = "2e34b768fb5ade0ded463a23278e779f726dc8a98ba50640b4c11d1dd9f439cb"; + sha256 = "3c07eafec76bf6fd6a4f50476fe81b4eae905175c05365b97107e835c2b2051e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/uk/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/uk/firefox-150.0.1.tar.xz"; locale = "uk"; arch = "linux-aarch64"; - sha256 = "2d3668f7dd2250b87d3568ea9a24fd9d56eece1087f0933bb41754f39f1d563e"; + sha256 = "bd182a49930c4627bd2ca3f83eba539fa176a5061bc7b3187991b7d068b5406c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/ur/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/ur/firefox-150.0.1.tar.xz"; locale = "ur"; arch = "linux-aarch64"; - sha256 = "f5b1c24d9d01ad2aa80d83312cb5a149bbb60aa08213ab53cafbb6c5c816055d"; + sha256 = "0554f5d004570663b78e171eb009bbaa94683adec2af2516c2dfa0646737f0d9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/uz/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/uz/firefox-150.0.1.tar.xz"; locale = "uz"; arch = "linux-aarch64"; - sha256 = "6185d107063cb3d37dd57b9931cbd7880c6119bf85c381aa90115fa2b4c69d6b"; + sha256 = "efa72ea250f4d8db45e13f6a609c46ee2fa6f86aa13c577292f169ed9c5788eb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/vi/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/vi/firefox-150.0.1.tar.xz"; locale = "vi"; arch = "linux-aarch64"; - sha256 = "97a3ec310672fcb164205418b4a5d253a7e8b7c45798022233f4296c24f77e5f"; + sha256 = "3d16128d05374def7a12783a323d0ceb7ae0f547c981d81227a951155437a706"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/xh/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/wo/firefox-150.0.1.tar.xz"; + locale = "wo"; + arch = "linux-aarch64"; + sha256 = "aef236467b43f37f98e867c4f75ab0da3d7d96149eaf323b8a8c9209a4305b7e"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/xh/firefox-150.0.1.tar.xz"; locale = "xh"; arch = "linux-aarch64"; - sha256 = "04ff21fad2cbf864fe975706f955f98bed94a731aefa9c50e04804471ba961b6"; + sha256 = "d6bb489a2d1cacb4ef1f1d43b04ec8c4edc4b4ab1d7bd734824b93279a39f47d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/zh-CN/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/zh-CN/firefox-150.0.1.tar.xz"; locale = "zh-CN"; arch = "linux-aarch64"; - sha256 = "b2c97b5d0b1c84fd75f52c7480b262c2f6ce9a951ad30f8ce6c985f6f78b91d8"; + sha256 = "055524b16616bc351b18cb9d3307adf1f78887fe3f2e1f686149d04809cdeee7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/linux-aarch64/zh-TW/firefox-150.0.tar.xz"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/linux-aarch64/zh-TW/firefox-150.0.1.tar.xz"; locale = "zh-TW"; arch = "linux-aarch64"; - sha256 = "91ed18bc6d5d9d9422f07f51b0c2e5e231431facb2871d413b5da61cc4119fa6"; + sha256 = "7d7b833febb3d1d60d62bf54a26cb6a47406b3bfb1b0f8e72657e220a2335b6c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ach/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ach/Firefox%20150.0.1.dmg"; locale = "ach"; arch = "mac"; - sha256 = "e2f99ffde15698e329db9e7fc0ba6cf50179f5b4246b0af824c694e861c8859d"; + sha256 = "c2518f81742075eaf16f2630799397c7627f1e1df8d79f93c81cbbcc33a409a2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/af/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/af/Firefox%20150.0.1.dmg"; locale = "af"; arch = "mac"; - sha256 = "f36f2dd4c98d0cad0edd619c2e7aec22f7a86893f79407e96fd49b9b309f1a8b"; + sha256 = "e9a78ec3e57ae2c56dca47597a452fb68d8f8f16aa10dbccf1dbb334b6c09064"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/an/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/an/Firefox%20150.0.1.dmg"; locale = "an"; arch = "mac"; - sha256 = "dfa35cf323f25d1eb7ee8e95fd4ce1a28d1201e1082af5782ee53a6e2831472f"; + sha256 = "c883a4c46ddf15d287afe2067dae819071bd3d4ec8f88d01685d3d4903567cd6"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ar/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ar/Firefox%20150.0.1.dmg"; locale = "ar"; arch = "mac"; - sha256 = "afeec7930073b35949ed52303b3efcb0874f7ece39c697f89aaa78d4c36bad82"; + sha256 = "567d0bdd4dec097d078e1d88d04148585bb4d35257a1cce2a47bdeff33e807e3"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ast/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ast/Firefox%20150.0.1.dmg"; locale = "ast"; arch = "mac"; - sha256 = "59611ab660fd04204462ecd7c0f5378539cb32ea65ad9bf009837a52a79c742f"; + sha256 = "ec991c807d01840f7f9e45701b682158d64850e70328337b8e1e28169d7b3831"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/az/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/az/Firefox%20150.0.1.dmg"; locale = "az"; arch = "mac"; - sha256 = "ad3573544a5856de13c62b2fe44351d6dd72f7d4a620492d6d5095fa495fca31"; + sha256 = "80c669b37157511082d2d08e9280fe0a187868a09ecd1cc98834117c6bf73151"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/be/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/be/Firefox%20150.0.1.dmg"; locale = "be"; arch = "mac"; - sha256 = "2745f823e387caa1a511a0e4a9480ad00413eb97ca1ff775113f4f0cf4da4d15"; + sha256 = "815d972f549f82b81159f001fb9a68815256d1517c5104b1707c1220850e3532"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/bg/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/bg/Firefox%20150.0.1.dmg"; locale = "bg"; arch = "mac"; - sha256 = "1566dfe0d417ea0b5fe474454f6ace8a30e673d61f940bb4e2f522e77ec21e64"; + sha256 = "cc03e352f0e17a1788b017b70cf4f473fa4fa0000855ed84c796ac581d8447a2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/bn/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/bn/Firefox%20150.0.1.dmg"; locale = "bn"; arch = "mac"; - sha256 = "509e9b7f2a205bdc985413e963aca3d56e32fceff571e1d290fc47d218838b91"; + sha256 = "3d6b15cfc2383396b409701b21dc57420fffefa8966d760145cc748d7329f3f7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/br/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/bo/Firefox%20150.0.1.dmg"; + locale = "bo"; + arch = "mac"; + sha256 = "e28d2a4485e5a030a89319e6e09fc5d3f8f6957b8eaddd6fcb0b469bb1fb17f5"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/bqi/Firefox%20150.0.1.dmg"; + locale = "bqi"; + arch = "mac"; + sha256 = "10c37d15762fd6850fed848415faad8d53652e0386c78d35d33e0adc2db5f1e0"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/br/Firefox%20150.0.1.dmg"; locale = "br"; arch = "mac"; - sha256 = "3046278dcc38b3454e8946797669d742b845f435fbed655309205dca6d4bcfb2"; + sha256 = "265115a1802bf1ad659a38452204125df68fe5d840c5020b1e2a6b9e373ada96"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/bs/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/brx/Firefox%20150.0.1.dmg"; + locale = "brx"; + arch = "mac"; + sha256 = "b9c3b988b55270a39ddce604ede130c3919f09128da5ff5749ccab95806c7d98"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/bs/Firefox%20150.0.1.dmg"; locale = "bs"; arch = "mac"; - sha256 = "05e4a787bf8a8778035b9ada4a31fcf3bd03bb6178592ce47782baa7caa876ec"; + sha256 = "91e872c8e38fab0a20defe160d485ba12552403eaf0dfae1d536c35e06a80ecb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ca-valencia/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ca-valencia/Firefox%20150.0.1.dmg"; locale = "ca-valencia"; arch = "mac"; - sha256 = "913bcc960aebfb8bec9553308cb2e016bb9c1fe01a82f5440425480844f49717"; + sha256 = "fad07a890ddcab9835a48cab50df18563ce25250d046ec61a5d09d55a29e9dd9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ca/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ca/Firefox%20150.0.1.dmg"; locale = "ca"; arch = "mac"; - sha256 = "a7efad433f593638bf2c8c9e72fb1f8bf57850ae2349638bbdec0c4180bbce3c"; + sha256 = "e53369cfcff306e4a4e3343a5982c120108b168c0d80b0ca0915f536fb35cd01"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/cak/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/cak/Firefox%20150.0.1.dmg"; locale = "cak"; arch = "mac"; - sha256 = "318b0df6f127c4f064304f3b26a708592d1c47a03c61d20f66661eba747eb2b6"; + sha256 = "090adb887dd541a165ee8a6a6e4be79ee96eb491e3d96e5504795304b6f5e5ad"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/cs/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ckb/Firefox%20150.0.1.dmg"; + locale = "ckb"; + arch = "mac"; + sha256 = "bec340f210f21848a3c8862500ae349ec65ff3ac62de9ac64607f4c76ce44d66"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/cs/Firefox%20150.0.1.dmg"; locale = "cs"; arch = "mac"; - sha256 = "071bf4034d1e1a7a1dccb90bec227ee4789a58500db939990c984e823a3c73a0"; + sha256 = "01079e246026659b3c2da4e1b66141d5c597117f37e2719b409d1f595d7947fd"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/cy/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/cy/Firefox%20150.0.1.dmg"; locale = "cy"; arch = "mac"; - sha256 = "f62445587949d8e6d0ffbbc13d16be51be48b1bd1cbd947f05b7b73e94d1cbda"; + sha256 = "7ef6d16950f8fad526606e6589bd2cba94c4da692aad3be717b113bb209eb6ec"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/da/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/da/Firefox%20150.0.1.dmg"; locale = "da"; arch = "mac"; - sha256 = "0bba3653fa7789ea14f51d16152fc9289b9a12ecb0a375da18fa2cbc738471c1"; + sha256 = "78c6684b85e8b3f4ad6bfc8da763782e06cf1e9018f996ef623c464dd1c02d25"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/de/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/de/Firefox%20150.0.1.dmg"; locale = "de"; arch = "mac"; - sha256 = "ab4a318fc950826e7e2d174c42c36f4d5f7311199dbebdc48ee5a0e0f8e2354d"; + sha256 = "f0d6f01a6819fc6ec3c7472372c322b387d00eb7ed3408a89d864d1a73d75631"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/dsb/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/dsb/Firefox%20150.0.1.dmg"; locale = "dsb"; arch = "mac"; - sha256 = "2945d491b0aaf17f86e4b6e63a28d089246cb2cd0b0fa900cda1a73b1ed92837"; + sha256 = "ad8b5d6bbb429b40761e71dca6636108c38143a5a35abce3399b55179fa0b99c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/el/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/el/Firefox%20150.0.1.dmg"; locale = "el"; arch = "mac"; - sha256 = "3bcb364362142750d764812c2d86077cf87b592c4a72baccbb1a18e8de6c09c0"; + sha256 = "218149aecc7f2b0c03b16d115aea8b71ab083c004c8e172189e07002f5c1aea7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/en-CA/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/en-CA/Firefox%20150.0.1.dmg"; locale = "en-CA"; arch = "mac"; - sha256 = "088bdd837a5771b4aed7686f2e847867a5a1534bbcb983eac6ffac954ec1c079"; + sha256 = "9afc261a0c5e2f9807b9263dbc9a7da516a44e1e259c4a785c8d4df2f424d5f0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/en-GB/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/en-GB/Firefox%20150.0.1.dmg"; locale = "en-GB"; arch = "mac"; - sha256 = "59ce8018013a9a647c91bffa9c0637821524b677ceb78542b983d6bc88c41649"; + sha256 = "129f84a7f63d0f1774d747fe74203422a83c38350ca915bdc74ddc81df4b22ac"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/en-US/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/en-US/Firefox%20150.0.1.dmg"; locale = "en-US"; arch = "mac"; - sha256 = "203667ff6b0920f89973d477b1394d99b4b78807a613914c97bb1b3200e6da1b"; + sha256 = "4221ec4972cb385042354b25940728e5eb7ececce7c95d2ec3f83d2323673d6a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/eo/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/eo/Firefox%20150.0.1.dmg"; locale = "eo"; arch = "mac"; - sha256 = "e6fec1759803d73fc22797cf99334f1eac4da522dbae4ec8b06abe6747880d34"; + sha256 = "a91efa6dc567a9f927fc018d8f35cd28f35938eea18276c036c1304ef768b943"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/es-AR/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/es-AR/Firefox%20150.0.1.dmg"; locale = "es-AR"; arch = "mac"; - sha256 = "8752226080d09bdc42bfd8b91ed7e694159401837b5aa3218fd595872d3dd926"; + sha256 = "a5b719c37ed2602359f9de55d76afd032d71292ce366e6aee7da34c3089c52b4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/es-CL/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/es-CL/Firefox%20150.0.1.dmg"; locale = "es-CL"; arch = "mac"; - sha256 = "406bfe67e7d92a3b365a314bfce1453c937d950cce47924eff577e924e28557c"; + sha256 = "6682776a4062713cc117bd136a0336ddba951d79c53ed994b49d4a80eabfb272"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/es-ES/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/es-ES/Firefox%20150.0.1.dmg"; locale = "es-ES"; arch = "mac"; - sha256 = "0a14361560e5393d41f805bbcbac2dc24c3da16d218a18ca042d7913a552c679"; + sha256 = "95594f5f6ede6be45cb6b41dbac1637c43efbcefd36b47bd34d350aee1d35fd3"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/es-MX/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/es-MX/Firefox%20150.0.1.dmg"; locale = "es-MX"; arch = "mac"; - sha256 = "4a6b627fc6804ed5a6fa4d797cf203690461d9cdb7faa6671ec11314114e867f"; + sha256 = "98222582878630d280e889403a7f120339c5932904602cd538c758accec2719c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/et/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/et/Firefox%20150.0.1.dmg"; locale = "et"; arch = "mac"; - sha256 = "bd970085f5a9825ec8f4d96c9370a7b89a098f3812e8de27498ba497ea687499"; + sha256 = "9036fa35657a551940f2a630be91f954b7c22ea2200b91a3cbc103ae57787a68"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/eu/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/eu/Firefox%20150.0.1.dmg"; locale = "eu"; arch = "mac"; - sha256 = "520f5732ca766b542c43e8fe520ce5b9e709b66b60d3cf71d36c5565a7f0a9f9"; + sha256 = "f23ac467f480cc92bd1a32dc0d9385daf7cca1817c05b41a99707f8f6ac27ec4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/fa/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/fa/Firefox%20150.0.1.dmg"; locale = "fa"; arch = "mac"; - sha256 = "6d082bca5b04d9951d9bacc89b1b33f08758c695058a8adc3814c1a362f9520b"; + sha256 = "1979583c9084856c9ddb41faf699166dd134549e5a880dc6189b07602540a40c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ff/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ff/Firefox%20150.0.1.dmg"; locale = "ff"; arch = "mac"; - sha256 = "16bb5c8740943579fdb32e82d5ff2b8498fde6251afd2778acfca74a8fe74b45"; + sha256 = "a54b68ea9b7e365d66400cfce048fc8967e81dd9ba3f88c9dddbcd0ab8f12263"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/fi/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/fi/Firefox%20150.0.1.dmg"; locale = "fi"; arch = "mac"; - sha256 = "4119a5949a8602cd3d472342f63b0d9aeb0707e509b07db6aca8ec01aae09220"; + sha256 = "3b744401a99db610e7d656435f584e81a5ef2a460b85c71a559777fbe2c1083d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/fr/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/fr/Firefox%20150.0.1.dmg"; locale = "fr"; arch = "mac"; - sha256 = "cdacb332809c8c1862ccb1623031a296357ba6a53d288403445be93ca319a62f"; + sha256 = "0ea7b30b41db56ad0faf5167019555d22fd526dc59c2591321398a7c12d9f3ac"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/fur/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/fur/Firefox%20150.0.1.dmg"; locale = "fur"; arch = "mac"; - sha256 = "82f6933e7e04e434904d7e7bc473097200ef071b8c1f59456c0f9f01afa9bef9"; + sha256 = "3540e96329ef85636112a66a375081f67c67d99243eb7b8606aeb89b45a495a5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/fy-NL/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/fy-NL/Firefox%20150.0.1.dmg"; locale = "fy-NL"; arch = "mac"; - sha256 = "dfc61dba9a4cd772be21c656e04da55ff6eed85adfe38d7cd752d139de7d813e"; + sha256 = "176d78af8e7d7d91aef342ee7e49df1806fd60f5cbf21627b6a625583885f9d0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ga-IE/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ga-IE/Firefox%20150.0.1.dmg"; locale = "ga-IE"; arch = "mac"; - sha256 = "5ac1ec34a95244839f896b5d9e9f3b89b4276a5ef660880f7ccdf5466938dbfb"; + sha256 = "4b268ecc43e3c88fe81f4ee16d186dd91d41a26c79cdb69d0eb42fca20603e6a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/gd/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/gd/Firefox%20150.0.1.dmg"; locale = "gd"; arch = "mac"; - sha256 = "a5fe8008b3406793d673100d7d0ec6785a8c878015c11e9c064496547013c204"; + sha256 = "d6860f98e4ed711b075d32f21a66dfd60aaa1c5fd25660c862b06691d45f9f73"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/gl/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/gl/Firefox%20150.0.1.dmg"; locale = "gl"; arch = "mac"; - sha256 = "7a2fa34d2526f047b3649b480e0d5046a46a8fdbdfe05a393bcd3b513ec416d0"; + sha256 = "227b89b5785598db1edf8b6099ab92d6bf460725fc93abd7c2afce1155879ef1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/gn/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/gn/Firefox%20150.0.1.dmg"; locale = "gn"; arch = "mac"; - sha256 = "b6d7bc020d2551632c0063528a35bd9c71dceaf437703f25676663b34e5a9030"; + sha256 = "ca7b15b96a45b1209e332f3182e2440088a63d206154542a69b0f94822ce1fe3"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/gu-IN/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/gu-IN/Firefox%20150.0.1.dmg"; locale = "gu-IN"; arch = "mac"; - sha256 = "deced77571f57a83661c4ebe430bb945ad5135a3137524bee7cdfb39c9837150"; + sha256 = "33ad8602102ba910bb699e008c2b3dbe1fe7dcea8d176aa074be6dc5e4d2b4cb"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/he/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/he/Firefox%20150.0.1.dmg"; locale = "he"; arch = "mac"; - sha256 = "147b97dbe732977acbc792956f82cc954d5891ba22717a533fc429f3061c1a07"; + sha256 = "e7651ce1935ec3dc560429a8b883f2a181efd4b01d0c91986aeb7ca65f49ec80"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/hi-IN/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/hi-IN/Firefox%20150.0.1.dmg"; locale = "hi-IN"; arch = "mac"; - sha256 = "2625dc7f5959adbc72391e20abd839f6f0bd12b1a0a9d6775e0d270dd43f5f03"; + sha256 = "cb9dbb3ca3a1d7dcb4ba8e425ee8d0445236fc4163f503bfeb8dc000daad407d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/hr/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/hr/Firefox%20150.0.1.dmg"; locale = "hr"; arch = "mac"; - sha256 = "7d1bcc51e2660c132fb880dc2678cc7c4342ec891177f25dc33206e1bf78182a"; + sha256 = "f68d0e7950c7ea00b0621951a5e98162c7722b5c4fcf127a53704a989ee8ee93"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/hsb/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/hsb/Firefox%20150.0.1.dmg"; locale = "hsb"; arch = "mac"; - sha256 = "b63fc4a6ce0bfb1af6d7698b0ecd0dedbb3f79b4cbb5b4037b04eaf566a41aab"; + sha256 = "b8f76b886d5678dd0391399cb0da049f5a3615c0621235501ecc3ef11bd2f476"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/hu/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/hu/Firefox%20150.0.1.dmg"; locale = "hu"; arch = "mac"; - sha256 = "48629e9ae8212e03f2d9aa7c6d9bfc531218db350076161ae99808b9abf9069f"; + sha256 = "8026c72dbcdd0b81782f05707f43b37a75ee15a60ed1a490d69d7f17d860f44f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/hy-AM/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/hy-AM/Firefox%20150.0.1.dmg"; locale = "hy-AM"; arch = "mac"; - sha256 = "249bc6e8fa8e2a46e00d13552d0ea4be0117a608f8d2a70578cbd2372465da22"; + sha256 = "bf7f92dca25bfd91e7b5f4148b8e745dd4b37482bc5ec07a527b18d634359f46"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ia/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/hye/Firefox%20150.0.1.dmg"; + locale = "hye"; + arch = "mac"; + sha256 = "99b8c1127a5473c7aa4788806cce2c8b557158b13c87d66f075b50bb72e8a369"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ia/Firefox%20150.0.1.dmg"; locale = "ia"; arch = "mac"; - sha256 = "8f223ce9c7f32ca477bb9f1bc340e572ea2310f97ca0a04c02cbb811c17ec2b4"; + sha256 = "bd70ef1f71281a9cd9e10a344652403a12d58311ccac0278e48c2323a3c48a29"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/id/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/id/Firefox%20150.0.1.dmg"; locale = "id"; arch = "mac"; - sha256 = "bcb61e41d888ab6de6854086cbe1bbe3701a8709a48b84170264ab6576aebb73"; + sha256 = "80995a7ee82bf576a850dbdcb79d9950b9cbdd6dc797072646d2913b02292dff"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/is/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/is/Firefox%20150.0.1.dmg"; locale = "is"; arch = "mac"; - sha256 = "79becad3d33edd9beb8ea1bf7dd20320b359020815fb41f07181a3e11c95fb20"; + sha256 = "9cce4f5520c014cc6f248abfa99672dc6bc9ffd484e7535fc4c53f8de9e4845a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/it/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/it/Firefox%20150.0.1.dmg"; locale = "it"; arch = "mac"; - sha256 = "6ef5871c8951a69ff4f013f6c69d360d613fa01563318b08d98f079b7070b461"; + sha256 = "cfba534a808acb011bbc5d5597fa0faaa13bd5f2c8ebe8777926211cc48a74ae"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ja-JP-mac/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ja-JP-mac/Firefox%20150.0.1.dmg"; locale = "ja-JP-mac"; arch = "mac"; - sha256 = "48d16cfd50ac3101e248c6c3a61d029a5573284bf47baea329427e7338b54685"; + sha256 = "ce9ba0877ca07b14dbc8447637ab5fe543e7352d3eb334180794374326235a5b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ka/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ka/Firefox%20150.0.1.dmg"; locale = "ka"; arch = "mac"; - sha256 = "e0b956a354597d8f4e258f12193476bda64d3e3853528c9a28e3e3573abe64f1"; + sha256 = "234e6fec77e8e59c7bc31d2c10fe88ce223ace6ce9f7a2d99334202bcdf1d6e7"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/kab/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/kab/Firefox%20150.0.1.dmg"; locale = "kab"; arch = "mac"; - sha256 = "975021e54d958973ed42c9f51067f083885534b44701c4f27d671bfbffd929b9"; + sha256 = "1d98a7597b449c1cf78ead0fd074522a11d31cc400a77c3169a6344178cfbc83"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/kk/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/kk/Firefox%20150.0.1.dmg"; locale = "kk"; arch = "mac"; - sha256 = "832e6b87e2543d88ca3fa737e12cee984572eddba6dbd9a641a1452809259c84"; + sha256 = "713b74d9de35b634cfe6786a828f44824b67806e3366117fa4bca0d15b1f99a9"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/km/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/km/Firefox%20150.0.1.dmg"; locale = "km"; arch = "mac"; - sha256 = "bd9ebf1c384f0f50738eae6a2eea9fed6dc4f9044ac040a01acf6e9a7f7e6b85"; + sha256 = "60a1ed56bbce21d3e4e8aa6f10f1dd52f49d42dd8882e5564bc38c2f07baa2b5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/kn/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/kn/Firefox%20150.0.1.dmg"; locale = "kn"; arch = "mac"; - sha256 = "2223200b5fd4e96bef71c619255e4431f0162782ce71f4dfc7e0969d6273be10"; + sha256 = "203220d6f154b887abe35353d1c4b257e76f9e07d648091d1d6d07fd9970c5e4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ko/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ko/Firefox%20150.0.1.dmg"; locale = "ko"; arch = "mac"; - sha256 = "78e4bf62066f0608a218baf53ab0eae7e0c9214f335e7cb1a38072afb567513d"; + sha256 = "42ad6d86cbec0471a71487f1eaa4abd9e652a708d5f372f10838c6f263f5a12d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/lij/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/lij/Firefox%20150.0.1.dmg"; locale = "lij"; arch = "mac"; - sha256 = "ac4a69804ac2938a4756774180f0cf56d4587757cef872b8d825502d2f1965fb"; + sha256 = "c91d3a5d6c6e89865766e3fa6a5f8d266327775e8511620ca94dac482522a60e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/lt/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/lo/Firefox%20150.0.1.dmg"; + locale = "lo"; + arch = "mac"; + sha256 = "18e69fb04a70af32460bd0cd16d2f1fa26264adaa75be372625700d92e8ddbac"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/lt/Firefox%20150.0.1.dmg"; locale = "lt"; arch = "mac"; - sha256 = "60a74fcf7a1d7ba9f7eb1cd27360ec32c45016c9c0c9c70dd8d73ceb5fe1d994"; + sha256 = "cba75728c41dce858e6df6f079f930c9545efcffbffa5ed941bffb757db73f36"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/lv/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ltg/Firefox%20150.0.1.dmg"; + locale = "ltg"; + arch = "mac"; + sha256 = "f59c199a9cae7517b2321f215e8b45acfd21cc31f6aa6013d6322e903228fb92"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/lv/Firefox%20150.0.1.dmg"; locale = "lv"; arch = "mac"; - sha256 = "aadbaab1bd91fbd442b8827591250ef5cff9040c21fd97d4285ba5d81d4457d8"; + sha256 = "187119046ddbd6659f5fd6c64c5cd3a1e2ce4d82753c8e11f32c5f2e54b6b566"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/mk/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/meh/Firefox%20150.0.1.dmg"; + locale = "meh"; + arch = "mac"; + sha256 = "0717720e48246523513df9a7af59080acfe238b04de5284a4ae3536dc66057d6"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/mk/Firefox%20150.0.1.dmg"; locale = "mk"; arch = "mac"; - sha256 = "cee675f21a7d2ebf2f402270aee057ed8f0ce0092da12ae7cdd0fc85e3b18758"; + sha256 = "730f901596e01172902e790c01b808dd1c8451e2b32597d12e39201b146e319d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/mr/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ml/Firefox%20150.0.1.dmg"; + locale = "ml"; + arch = "mac"; + sha256 = "5de15615b7ef2d142b16c75034227e8810820cc5e810ea3c2030b3dbeee78df6"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/mr/Firefox%20150.0.1.dmg"; locale = "mr"; arch = "mac"; - sha256 = "8868a5d395347301c55c5f78f697a1bb52de47253b7245589f34fe464c9a1c40"; + sha256 = "0d71ad1a2ca07f2c7448e81dc7d25fad30ef169eaf075f6053099668308c7ad5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ms/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ms/Firefox%20150.0.1.dmg"; locale = "ms"; arch = "mac"; - sha256 = "750bc64c2ab827826aed35b6da9cca647399e3294df2cf630f5cc636d5da61bf"; + sha256 = "f96944452b3dfc3444ce52019aa039716e911c4a7432154bca5a9b6fbbddc0b1"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/my/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/my/Firefox%20150.0.1.dmg"; locale = "my"; arch = "mac"; - sha256 = "038b6bcbb2721c70cfd33cdf879e83f8e5fb307c7c9cbec8ce907fb6e617730d"; + sha256 = "8ec34d7c59ceb09a85c44e69339c649874cd0c13d3c3fb0ebc3c7f516f32a8f2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/nb-NO/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/nb-NO/Firefox%20150.0.1.dmg"; locale = "nb-NO"; arch = "mac"; - sha256 = "bc8935903eeea49bd45e8275f03e9e740c592e5a8169dce577dba14c1d1732a1"; + sha256 = "178fed09b47d686a3f1cc8b49a9aeb0716d3a386cf300b096f6ff1259662677f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ne-NP/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ne-NP/Firefox%20150.0.1.dmg"; locale = "ne-NP"; arch = "mac"; - sha256 = "811c118292c752ad5fe1d1f253c47ed2d7f25c23d82eaaa4b20d19b5d0ced135"; + sha256 = "2fad9a1283c1388bc8409ff09ef51d85f35c3e94e93d4f1209eeeac7ee9dd7c5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/nl/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/nl/Firefox%20150.0.1.dmg"; locale = "nl"; arch = "mac"; - sha256 = "41c818ea0b92df3e600c3c645f818645aa2e456f40734663fd9281b0732c4c51"; + sha256 = "b98841b24abc26bda166f47756c91e18b779ae772dc498d173d0496b07bff636"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/nn-NO/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/nn-NO/Firefox%20150.0.1.dmg"; locale = "nn-NO"; arch = "mac"; - sha256 = "3184e233f39b648dd7580262ef66591180a92ce9e1596989f195ab5e4e2cda61"; + sha256 = "fee8e673d778c2f5a31422cc24db010a3eef70a56f0281e794fbfd24b52257e4"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/oc/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/oc/Firefox%20150.0.1.dmg"; locale = "oc"; arch = "mac"; - sha256 = "c53ccceb610e24be9130fdbf4f603d7010a9dac35e5d914842ea4f676ddc3e74"; + sha256 = "e5fc44dad1c91d43fa110370771602e67729a5968d3dea3e8d14733bf6a95eef"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/pa-IN/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/pa-IN/Firefox%20150.0.1.dmg"; locale = "pa-IN"; arch = "mac"; - sha256 = "0b99e9868f1a8881fddc1cba7e22ed997edc2df4d719a3dc5641cbcab0def7ee"; + sha256 = "7b204e5d1ce67ccc4874b8e3612f21de7b2b38ff211ecbff0d0532fa27569879"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/pl/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/pl/Firefox%20150.0.1.dmg"; locale = "pl"; arch = "mac"; - sha256 = "02d38b35d439946e1cc06e341b82206a36face5a98d699ef4d525aa43ceb782a"; + sha256 = "7dfd2b8f893e320ff60f6c841f39cbfd79e55e551f04338bf1cecbb2f2de3163"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/pt-BR/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/pt-BR/Firefox%20150.0.1.dmg"; locale = "pt-BR"; arch = "mac"; - sha256 = "ee872bc7eccb06694ebb40dac937c56968b25a33d11ffffe9b1792fb304dc4f3"; + sha256 = "bf3cd9091da8ca07c81bdf40659d9a1ea36513cceb9dad064fb832fdfaba1afd"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/pt-PT/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/pt-PT/Firefox%20150.0.1.dmg"; locale = "pt-PT"; arch = "mac"; - sha256 = "8d44bb2dd36833035935bb29fd2006da070dd61b3017e1db3da950908eeeabfb"; + sha256 = "4854d3b9fbab99e8665e46471b93c670c479feb72610d6464e6fdc045795bce2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/rm/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/rm/Firefox%20150.0.1.dmg"; locale = "rm"; arch = "mac"; - sha256 = "ecec9f55bfd0f42466eab33a9dacfa936188e82418a38ad41becf76ec26f4190"; + sha256 = "73231634123b3c65eac7a58765408b10803f3bcf717feba31113cef3867c65e0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ro/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ro/Firefox%20150.0.1.dmg"; locale = "ro"; arch = "mac"; - sha256 = "e6ca0b18792b55afd20aba6014cd2678fc091d6e772760a2ff14e2d39e1f6ab3"; + sha256 = "05e53fa5b5e8177c26ee80a1fbda1890b4786ca263112a64059885004021b921"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ru/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ru/Firefox%20150.0.1.dmg"; locale = "ru"; arch = "mac"; - sha256 = "f009ae9bfd40cb6cf6a52ea952cd63c363acd1133fa80bb2536aff48412709fe"; + sha256 = "d9ecff067f59b72d09a21424fbb47ac1ea7c5cfa28439dd3dc8de13415d2afb0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sat/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sat/Firefox%20150.0.1.dmg"; locale = "sat"; arch = "mac"; - sha256 = "c6e6eed4908b8ee44d8c9d5726c93b19ed6a4c9d931b4a9caae9de842ff899b3"; + sha256 = "d2f2e07a1401197ec19e5cebf0e8ee146429acb41287be6c555b7e20e3ac18ff"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sc/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sc/Firefox%20150.0.1.dmg"; locale = "sc"; arch = "mac"; - sha256 = "451744f61ac1bfd93fd3faf09f7a7570ee828a70191ab5290717cc28ae1e2c37"; + sha256 = "af044d75600b326856de2b96df71f5029534614cb3b348cff831c431151d23d6"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sco/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/scn/Firefox%20150.0.1.dmg"; + locale = "scn"; + arch = "mac"; + sha256 = "f31813be578e7ea4ef71ef4db382491b37dbad190d2d6764514acc5edb20988f"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sco/Firefox%20150.0.1.dmg"; locale = "sco"; arch = "mac"; - sha256 = "3f7dd6d01c68ca4cae050e44ede5b870341e66e5ff90156ff9ab083edb5605cd"; + sha256 = "ee43e020caf91f2dfee081ffe041b0931cb8993c6c6d3d9e637001ce98151a76"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/si/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/si/Firefox%20150.0.1.dmg"; locale = "si"; arch = "mac"; - sha256 = "ddab892764e2019cfe657a794188808f6167bff7c32357a671a057aa0dc63e8e"; + sha256 = "fe18a56b01250a295e73da07dbd5c4dffcaed63079d24458794c6c318ecc3c71"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sk/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sk/Firefox%20150.0.1.dmg"; locale = "sk"; arch = "mac"; - sha256 = "afccb64c6be439428912bb49f880c3491bd8666cfecd7ad26fcd2d410fdf1a24"; + sha256 = "836e6fb298c7652775dbde8b326ca9290c17e4d1ccb8882cec7b099a3b991b86"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/skr/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/skr/Firefox%20150.0.1.dmg"; locale = "skr"; arch = "mac"; - sha256 = "e765f6c3844f21111f249a79610837d56237b99419bba3ee17c9b145ec35d396"; + sha256 = "55f11b8de296808cf29906452074cd077b442fdaf6d6cf83570fbfd9e46a7dab"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sl/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sl/Firefox%20150.0.1.dmg"; locale = "sl"; arch = "mac"; - sha256 = "f621e3fd3e525d52758a4f43537176e740e1fd90207da8eab0215fecb01600d5"; + sha256 = "47d9b4c35e5e9652f7f89ee23478cabc3f4c0c2e5240692eaa06ea3082d4a5d2"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/son/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/son/Firefox%20150.0.1.dmg"; locale = "son"; arch = "mac"; - sha256 = "b2ae31affc04473ee6174b7cb08d49bda96e968d2918e363ea9c3ecdcdfcc420"; + sha256 = "cdc6253145b79f98c9565c9480b132d00e3040e734ab6bf05535817b0c32e62b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sq/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sq/Firefox%20150.0.1.dmg"; locale = "sq"; arch = "mac"; - sha256 = "5d921780265bf24a565fee901b2c41aecedc87ad53f7410dd14265c5cae9fb9f"; + sha256 = "51a2e17ce3a891ed97ff2c3d33b860594467282e79191c1811d522513e0a2d6b"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sr/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sr/Firefox%20150.0.1.dmg"; locale = "sr"; arch = "mac"; - sha256 = "8c867b4e486d8b9753b4201f8a939c31710fc6bb315eacc5a079d89f2626d4ca"; + sha256 = "230ca74cefa96cfccb1e827ca95dbe0fbb7e691af2f20f0eea6656dafcedf6b8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/sv-SE/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/sv-SE/Firefox%20150.0.1.dmg"; locale = "sv-SE"; arch = "mac"; - sha256 = "c70e230922d4ae6ae8f4ab5e73d4b38a11c74c6fccb14782d58ba19ae1bd5e4f"; + sha256 = "4a352287203afbf0b48f65178a96c510e4d20e77d82c5e664c7ae4635e380a3c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/szl/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/szl/Firefox%20150.0.1.dmg"; locale = "szl"; arch = "mac"; - sha256 = "3b33c959100bf3856ed18c3985e39fc044376c1eb8d96a8313a3813468810574"; + sha256 = "8cf05c5f74a0223008c816592cf6409ea564addc30536d3cedaf7ef24d2fe036"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ta/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ta/Firefox%20150.0.1.dmg"; locale = "ta"; arch = "mac"; - sha256 = "db395f1b99caa216113dbc504a109c4e4b8c59e644d7652c54064aced8bd4735"; + sha256 = "0e2c1a570b51a36ed18d24872a2956c73cf7efdb1698436bad78aa2f28cabd8e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/te/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/te/Firefox%20150.0.1.dmg"; locale = "te"; arch = "mac"; - sha256 = "800c86a587c6414d0e102d92dcd2e9e41919c6ce6fccc9a63cf0e02edf72b2d4"; + sha256 = "2e6d6b13d894096c8b3a9b509954c73fd21781a1d68feaa20915107068a15ccc"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/tg/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/tg/Firefox%20150.0.1.dmg"; locale = "tg"; arch = "mac"; - sha256 = "756a3e76cdba1e34455b7ac3c637020232f7099918b804bce489258d0a621dfe"; + sha256 = "f4eeacae46aae68850828458e0e86ffca9bfee716735dabf853acb3d8118f571"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/th/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/th/Firefox%20150.0.1.dmg"; locale = "th"; arch = "mac"; - sha256 = "dad99883df22810004a23231b3c0bf261742de0ae8300a5a347334c295c59303"; + sha256 = "8785e060463c7901d96d10bb69383efbd7d288820cccd0b52b24bba2078e9df5"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/tl/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/tl/Firefox%20150.0.1.dmg"; locale = "tl"; arch = "mac"; - sha256 = "afc55a8ec60c36b98d4729a99567af1e9174088c9e886b8c1699395ef94840f4"; + sha256 = "50bc2996c1a2d0b882b46b0a0ad453ceb514ada7e8f9f17cd4041b3b50ec8e6d"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/tr/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/tr/Firefox%20150.0.1.dmg"; locale = "tr"; arch = "mac"; - sha256 = "567a203a8372b78ee0b8d1a8a2ae38834bd5bc33ff0c75a547dd3d766588c6e3"; + sha256 = "fbd033e40a0f870d7a471a56c563323ba56d6136a9594176023f307173ce3635"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/trs/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/trs/Firefox%20150.0.1.dmg"; locale = "trs"; arch = "mac"; - sha256 = "7fbb43a8fc8830a3de6618c36861cd4ae31263df065663be4b3de78720911636"; + sha256 = "8011f29a2b5e610c040cce3ddb7ed57bd8f9f35a121ff51a9e5c4ae6cc42ec2f"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/uk/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/uk/Firefox%20150.0.1.dmg"; locale = "uk"; arch = "mac"; - sha256 = "a1e99a73327e9cc5dc910a85f859d4a8d17ee56db837926195432832936bf338"; + sha256 = "12dc63014ac7b506ada38021c32fa3f014f3f532c5580df00a521a2e2efd191e"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/ur/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/ur/Firefox%20150.0.1.dmg"; locale = "ur"; arch = "mac"; - sha256 = "dea1ca0d4db9cf690a0fc0cd09e54d61c3348331edb6b53708993ce7c9c33c41"; + sha256 = "3d7c494e14425a9988816083fda6de822b74bdf13358278c2fda704855a6a23c"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/uz/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/uz/Firefox%20150.0.1.dmg"; locale = "uz"; arch = "mac"; - sha256 = "1a711465583bec0d94dad20da45d3c78b068b117bfa5602e3b69dc9c6da25a96"; + sha256 = "7d3dcf3ff39d043b700212ab6bcbb10562596fb655b1c1b3949f3d2811159477"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/vi/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/vi/Firefox%20150.0.1.dmg"; locale = "vi"; arch = "mac"; - sha256 = "22c6a53d890f66b01e47965f9ce9a0db22c71c0d722ad336bcf5dce930a4600d"; + sha256 = "7335573a841a00ca790854c9fafcf151b813e4d496afec447c23558e5463e2d0"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/xh/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/wo/Firefox%20150.0.1.dmg"; + locale = "wo"; + arch = "mac"; + sha256 = "0089bf8dcd9bcce824975b6b2d24e17ad6e1881c84248815a99452e8e3e0f24a"; + } + { + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/xh/Firefox%20150.0.1.dmg"; locale = "xh"; arch = "mac"; - sha256 = "253552c147b314f419c6a7ada0512e357b91b69331f817709d57849d543acffb"; + sha256 = "138cc152b5c1a87e29840222729b505958a4bb5a65659ddf0cbc3e789d0ad7c8"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/zh-CN/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/zh-CN/Firefox%20150.0.1.dmg"; locale = "zh-CN"; arch = "mac"; - sha256 = "858c6f75ed5c40e062dac3267d2e7b559af6f0618206a1f9b3be841bee6f4882"; + sha256 = "11b9671aca9071f24c22af18d6dc822c6185829818b27fba28f61df1e59d6d4a"; } { - url = "https://archive.mozilla.org/pub/firefox/releases/150.0/mac/zh-TW/Firefox%20150.0.dmg"; + url = "https://archive.mozilla.org/pub/firefox/releases/150.0.1/mac/zh-TW/Firefox%20150.0.1.dmg"; locale = "zh-TW"; arch = "mac"; - sha256 = "45360816b33a3e30eac95e845e9aa5bcb9f012f19fbae2aca3a8b80b74c2d4ae"; + sha256 = "7aa5f608da115a55c5589554315710f877c8a289c82e9ff2f460330f9552cfbe"; } ]; } From dde7ee1b67b8532e3ebd1339e571af038d87177f Mon Sep 17 00:00:00 2001 From: Kerstin Humm Date: Tue, 28 Apr 2026 12:15:47 +0200 Subject: [PATCH 45/73] python3Packages.siphashc: fetch sources from GitHub, fix changelog --- .../python-modules/siphashc/default.nix | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/siphashc/default.nix b/pkgs/development/python-modules/siphashc/default.nix index 2e491f43b024..8e274550fb89 100644 --- a/pkgs/development/python-modules/siphashc/default.nix +++ b/pkgs/development/python-modules/siphashc/default.nix @@ -1,20 +1,22 @@ { lib, - fetchPypi, + fetchFromGitHub, buildPythonPackage, setuptools, pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "siphashc"; version = "2.7"; pyproject = true; build-system = [ setuptools ]; - src = fetchPypi { - inherit pname version; - sha256 = "sha256-ppRNc3aM9So6g0LunBka2UBFWQAvck9E4Ot6sOC96jM="; + src = fetchFromGitHub { + owner = "WeblateOrg"; + repo = "siphashc"; + tag = "v${finalAttrs.version}"; + hash = "sha256-Rj+0oIlGs2Xs2TTN0PIwcVUlTgd1AZITC8xBf/Hn31Q="; }; nativeCheckInputs = [ pytestCheckHook ]; @@ -24,8 +26,8 @@ buildPythonPackage rec { meta = { description = "Python c-module for siphash"; homepage = "https://github.com/WeblateOrg/siphashc"; - changelog = "https://github.com/WeblateOrg/siphashc/blob/${version}/CHANGES.rst"; + changelog = "https://github.com/WeblateOrg/siphashc/blob/${finalAttrs.src.tag}/CHANGES.rst"; license = lib.licenses.isc; maintainers = with lib.maintainers; [ erictapen ]; }; -} +}) From 1944a4bc5ca976eb3addf3b4cf304cf01efad14c Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 10:34:09 +0000 Subject: [PATCH 46/73] mullvad-browser: 15.0.10 -> 15.0.11 --- pkgs/by-name/mu/mullvad-browser/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mu/mullvad-browser/package.nix b/pkgs/by-name/mu/mullvad-browser/package.nix index 6af59cfa77ea..612db76033b0 100644 --- a/pkgs/by-name/mu/mullvad-browser/package.nix +++ b/pkgs/by-name/mu/mullvad-browser/package.nix @@ -97,7 +97,7 @@ let ++ lib.optionals mediaSupport [ ffmpeg_7 ] ); - version = "15.0.10"; + version = "15.0.11"; sources = { x86_64-linux = fetchurl { @@ -109,7 +109,7 @@ let "https://tor.eff.org/dist/mullvadbrowser/${version}/mullvad-browser-linux-x86_64-${version}.tar.xz" "https://tor.calyxinstitute.org/dist/mullvadbrowser/${version}/mullvad-browser-linux-x86_64-${version}.tar.xz" ]; - hash = "sha256-1XUWPS7GZ+V9iHRGuNGpFxCP0IKPdMIUt3rLLsD4yQ8="; + hash = "sha256-+skGid5BYrptv3aHLPogxew28DNFArV6kEDhCTxD2Ic="; }; }; From ce80ed6c2aa869fdc83b95065e3d8270a8aa61b9 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 11:22:13 +0000 Subject: [PATCH 47/73] fairywren: 0-unstable-2026-04-17 -> 0-unstable-2026-04-27 --- pkgs/by-name/fa/fairywren/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/fa/fairywren/package.nix b/pkgs/by-name/fa/fairywren/package.nix index 281b44cf8b19..bfd0043cffd6 100644 --- a/pkgs/by-name/fa/fairywren/package.nix +++ b/pkgs/by-name/fa/fairywren/package.nix @@ -22,13 +22,13 @@ lib.checkListOfEnum "${pname}: colorVariants" colorVariantList colorVariants stdenvNoCC.mkDerivation { inherit pname; - version = "0-unstable-2026-04-17"; + version = "0-unstable-2026-04-27"; src = fetchFromGitLab { owner = "aiyahm"; repo = "FairyWren-Icons"; - rev = "c55f846436b13fcc0c5ee745eead9bf8e3bcb0bf"; - hash = "sha256-ESh/3PNprmD0ecSoH9JVw1r0VsWoQDw4ujpmSaoyhoM="; + rev = "480e57a9ee90f8de05189f92dc5651fced9bc913"; + hash = "sha256-1iz7Sv4XjoFcpo7XqB5iRHmki0hPE0kqqkH+ATVTPpY="; }; propagatedBuildInputs = [ From 941d14ddfd1fee5b4177f975d2461f559454b19a Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 11:23:16 +0000 Subject: [PATCH 48/73] websurfx: 1.28.0 -> 1.29.0 --- pkgs/by-name/we/websurfx/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/we/websurfx/package.nix b/pkgs/by-name/we/websurfx/package.nix index 30afcecce649..7c471c622968 100644 --- a/pkgs/by-name/we/websurfx/package.nix +++ b/pkgs/by-name/we/websurfx/package.nix @@ -6,7 +6,7 @@ pkg-config, }: let - version = "1.28.0"; + version = "1.29.0"; in rustPlatform.buildRustPackage { pname = "websurfx"; @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage { owner = "neon-mmd"; repo = "websurfx"; tag = "v${version}"; - hash = "sha256-FQkwRRa4QmkDZ7JIxFjumCDLgzREVQm3K4U1ACpiZX0="; + hash = "sha256-F9tXo+DjLR7v6z3BtV/sO/gGlV9aBXgcXRMHEFki98Q="; }; nativeBuildInputs = [ @@ -27,7 +27,7 @@ rustPlatform.buildRustPackage { openssl ]; - cargoHash = "sha256-3wq9KN1n0XCXF9b2VldtlW6DeYt2euBoSIThLWeGCWk="; + cargoHash = "sha256-nSZ1sOVsIGdxXuR61R/seW7UX17Kx67f6Sm77GDtLQE="; postPatch = '' substituteInPlace src/handler.rs \ From 94eeb591f435d7cf045f6d495b9dd02e22aecca6 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 11:52:52 +0000 Subject: [PATCH 49/73] python3Packages.python-bsblan: 5.1.4 -> 5.2.0 --- pkgs/development/python-modules/python-bsblan/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/python-bsblan/default.nix b/pkgs/development/python-modules/python-bsblan/default.nix index c651fdbf4326..59b44dfbec9a 100644 --- a/pkgs/development/python-modules/python-bsblan/default.nix +++ b/pkgs/development/python-modules/python-bsblan/default.nix @@ -19,14 +19,14 @@ buildPythonPackage (finalAttrs: { pname = "python-bsblan"; - version = "5.1.4"; + version = "5.2.0"; pyproject = true; src = fetchFromGitHub { owner = "liudger"; repo = "python-bsblan"; tag = "v${finalAttrs.version}"; - hash = "sha256-97Hgsu0ipX5oSAZdCikaWhj6g3gEom/Is2wnm6vpblY="; + hash = "sha256-rp75cUDlciibMCpEEXn6zta6kquwCwXstRkA9A7JJYc="; }; postPatch = '' From 0b49f96ac912608d0f68fc7b43d184f2597acdf0 Mon Sep 17 00:00:00 2001 From: ekzyis Date: Tue, 28 Apr 2026 14:21:47 +0200 Subject: [PATCH 50/73] maintainers: Add ekzyis --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 5f0b6961d5e9..f57aa9fe72fa 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -7757,6 +7757,12 @@ githubId = 411447; name = "Leo Gaspard"; }; + ekzyis = { + email = "ramdip.singhgill@gmail.com"; + github = "ekzyis"; + githubId = 27162016; + name = "Ramdip Gill"; + }; elasticdog = { email = "aaron@elasticdog.com"; github = "elasticdog"; From eafb6980f9ce0c25c626aa3ba3262af598fc5f70 Mon Sep 17 00:00:00 2001 From: Vonfry Date: Wed, 22 Apr 2026 21:16:53 +0800 Subject: [PATCH 51/73] emacsPackages.ghostel: build module locally --- .../manual-packages/ghostel/package.nix | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix diff --git a/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix new file mode 100644 index 000000000000..7d93f45ed037 --- /dev/null +++ b/pkgs/applications/editors/emacs/elisp-packages/manual-packages/ghostel/package.nix @@ -0,0 +1,69 @@ +{ + lib, + fetchFromGitHub, + melpaBuild, + nix-update-script, + stdenv, + zig_0_15, + emacs, +}: + +let + zig = zig_0_15; + + pname = "ghostel"; + + version = "0.18.1-unstable-2026-04-24"; + + src = fetchFromGitHub { + owner = "dakra"; + repo = "ghostel"; + rev = "fdfb68f70ca6f43277ef8a0ba4103631857e4ad4"; + hash = "sha256-u3zUj5uUHqFEP7mjmADNB6n6n/LmGR6ne0ylalop8WI="; + }; + + module = stdenv.mkDerivation (finalAttrs: { + inherit pname version src; + + deps = zig.fetchDeps { + inherit (finalAttrs) src pname version; + fetchAll = true; + hash = "sha256-ghN/UMACgkFQQEr4nH5gbbJbt/+2bz6tL2bJpbw9mGE="; + }; + + nativeBuildInputs = [ zig ]; + + env.EMACS_INCLUDE_DIR = "${emacs}/include"; + + postConfigure = '' + cp -rLT ${finalAttrs.deps} "$ZIG_GLOBAL_CACHE_DIR/p" + chmod -R u+w "$ZIG_GLOBAL_CACHE_DIR/p" + ''; + }); + + libExt = stdenv.hostPlatform.extensions.sharedLibrary; +in +melpaBuild { + inherit pname version src; + + files = '' + (:defaults "etc" "ghostel-module${libExt}") + ''; + + preBuild = '' + install ${module}/lib/libghostel-module${libExt} ghostel-module${libExt} + ''; + + passthru = { + updateScript = nix-update-script { extraArgs = [ "--version=branch=main" ]; }; + + inherit module; + }; + + meta = { + homepage = "https://github.com/dakra/ghostel"; + description = "Terminal emulator powered by libghostty"; + maintainers = with lib.maintainers; [ vonfry ]; + license = lib.licenses.gpl3Plus; + }; +} From 68625cb1188cd15ade9944e28d57220692447366 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 12:47:40 +0000 Subject: [PATCH 52/73] clever-tools: 4.8.0 -> 4.9.0 --- pkgs/by-name/cl/clever-tools/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/cl/clever-tools/package.nix b/pkgs/by-name/cl/clever-tools/package.nix index 7335c70aa945..1122b623877f 100644 --- a/pkgs/by-name/cl/clever-tools/package.nix +++ b/pkgs/by-name/cl/clever-tools/package.nix @@ -11,7 +11,7 @@ buildNpmPackage rec { pname = "clever-tools"; - version = "4.8.0"; + version = "4.9.0"; nodejs = nodejs_22; @@ -19,10 +19,10 @@ buildNpmPackage rec { owner = "CleverCloud"; repo = "clever-tools"; rev = version; - hash = "sha256-ei5wwx9rUfKe6hGbHuNU65kGo5quvTtRKb6sHjkEzQE="; + hash = "sha256-O/Uz+eG8FT3nsXGRqcRdREXNaGlTpyVgUBmNsH7tLJA="; }; - npmDepsHash = "sha256-3gmDTBi0WpmtN+qTQXDvuXGkw0g/wdxuruMdyD4UMIc="; + npmDepsHash = "sha256-aps8j9Vx1LZQAWHuWmnAusCJfAuzREM+GyKdybw+Hcc="; nativeBuildInputs = [ installShellFiles From ca22beab6e6e89102b84651fd669b57d33c397fd Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 12:54:13 +0000 Subject: [PATCH 53/73] nfs-ganesha: 9.11 -> 9.13 --- pkgs/by-name/nf/nfs-ganesha/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/nf/nfs-ganesha/package.nix b/pkgs/by-name/nf/nfs-ganesha/package.nix index 1019c211f3c9..50fe1d124c05 100644 --- a/pkgs/by-name/nf/nfs-ganesha/package.nix +++ b/pkgs/by-name/nf/nfs-ganesha/package.nix @@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "nfs-ganesha"; - version = "9.11"; + version = "9.13"; outputs = [ "out" @@ -37,7 +37,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "nfs-ganesha"; repo = "nfs-ganesha"; tag = "V${finalAttrs.version}"; - hash = "sha256-5nDYJXOaceghkaTqRjy6DPsbmnyOOiANo3EMrnOgKsY="; + hash = "sha256-e6BDxb4Dt8xp9KdOcjxZKzRiKYPe+GP1UPvK/DAdX6M="; }; patches = lib.optional useDbus ./allow-bypassing-dbus-pkg-config-test.patch; From c89f0cb004417298e1339072467bbbbf54463bad Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 13:19:18 +0000 Subject: [PATCH 54/73] balena-cli: 24.1.3 -> 24.1.4 --- pkgs/by-name/ba/balena-cli/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ba/balena-cli/package.nix b/pkgs/by-name/ba/balena-cli/package.nix index 20ccf82b3bdd..657bfffe3b30 100644 --- a/pkgs/by-name/ba/balena-cli/package.nix +++ b/pkgs/by-name/ba/balena-cli/package.nix @@ -21,16 +21,16 @@ let in buildNpmPackage' rec { pname = "balena-cli"; - version = "24.1.3"; + version = "24.1.4"; src = fetchFromGitHub { owner = "balena-io"; repo = "balena-cli"; rev = "v${version}"; - hash = "sha256-omx6nGHoo0yfmSTe4ikVQZ4zWU0drDzuM3gEKZo4G+k="; + hash = "sha256-NFZoJVhixD67dqLq0tVB2GtMHl0n6qngw1uj/Qqxz8w="; }; - npmDepsHash = "sha256-sCQgzXUuJtM5CfHb2czvdn7ZoyME3dWz96wmvJopsCk="; + npmDepsHash = "sha256-yGPn9sJ5dsNIvrofqL1/F9E3T/vhI04RmZEQwjsHQa0="; makeCacheWritable = true; From 4a2ca67771e1505fd25ee6e3ccea12412dd863a1 Mon Sep 17 00:00:00 2001 From: ekzyis Date: Thu, 26 Mar 2026 15:19:17 +0100 Subject: [PATCH 55/73] aflplusplus: Add optional build with nyx mode This enables building the `aflplusplus` package with nyx mode via a new `withNyx` boolean flag. If it's set, the dependencies for nyx mode (libnyx, packer, QEMU-Nyx) will be built in separate derivations. --- pkgs/tools/security/aflplusplus/default.nix | 49 +- .../nyx_mode/QEMU-Nyx/qemu-nyx.nix | 77 + .../aflplusplus/nyx_mode/libnyx/Cargo.lock | 1242 +++++++++++++++++ .../aflplusplus/nyx_mode/libnyx/libnyx.nix | 39 + .../aflplusplus/nyx_mode/nyx_mode.patch | 98 ++ .../aflplusplus/nyx_mode/packer/packer.nix | 156 +++ .../aflplusplus/nyx_mode/packer/packer.patch | 103 ++ 7 files changed, 1761 insertions(+), 3 deletions(-) create mode 100644 pkgs/tools/security/aflplusplus/nyx_mode/QEMU-Nyx/qemu-nyx.nix create mode 100644 pkgs/tools/security/aflplusplus/nyx_mode/libnyx/Cargo.lock create mode 100644 pkgs/tools/security/aflplusplus/nyx_mode/libnyx/libnyx.nix create mode 100644 pkgs/tools/security/aflplusplus/nyx_mode/nyx_mode.patch create mode 100644 pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.nix create mode 100644 pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.patch diff --git a/pkgs/tools/security/aflplusplus/default.nix b/pkgs/tools/security/aflplusplus/default.nix index b3e2e5e3fbb1..9e92be083985 100644 --- a/pkgs/tools/security/aflplusplus/default.nix +++ b/pkgs/tools/security/aflplusplus/default.nix @@ -17,6 +17,7 @@ wine ? null, cmocka, llvmPackages, + withNyx ? false, }: # wine fuzzing is only known to work for win32 binaries, and using a mixture of @@ -24,6 +25,10 @@ # a full 32bit version of this package if you want to do wine fuzzing assert (wine != null) -> (stdenv.targetPlatform.system == "i686-linux"); +# nyx mode is only available on x86_64-linux, +# see nyx_mode/build_nyx_support.sh in source code of aflplusplus +assert withNyx -> (stdenv.targetPlatform.system == "x86_64-linux"); + let aflplusplus-qemu = callPackage ./qemu.nix { }; qemu-exe-name = @@ -35,6 +40,17 @@ let throw "aflplusplus: no support for ${stdenv.targetPlatform.system}!"; libdislocator = callPackage ./libdislocator.nix { inherit aflplusplus; }; libtokencap = callPackage ./libtokencap.nix { inherit aflplusplus; }; + + libnyx = + if withNyx then callPackage ./nyx_mode/libnyx/libnyx.nix { inherit aflplusplus; } else null; + qemu-nyx = + if withNyx then callPackage ./nyx_mode/QEMU-Nyx/qemu-nyx.nix { inherit aflplusplus; } else null; + nyx-packer = + if withNyx then + callPackage ./nyx_mode/packer/packer.nix { inherit aflplusplus qemu-nyx; } + else + null; + aflplusplus = stdenvNoCC.mkDerivation rec { pname = "aflplusplus"; version = "4.35c"; @@ -43,7 +59,12 @@ let owner = "AFLplusplus"; repo = "AFLplusplus"; tag = "v${version}"; - hash = "sha256-j5YH39JKcjYuDqyl+KRMtgn3UoeWEW1z7m4ysf2uilc="; + hash = + if withNyx then + "sha256-srHrYPEb0UAP/G9cOxJOZ9D6v9pxqez28suPsa70E2M=" + else + "sha256-j5YH39JKcjYuDqyl+KRMtgn3UoeWEW1z7m4ysf2uilc="; + fetchSubmodules = withNyx; }; enableParallelBuilding = true; @@ -68,6 +89,10 @@ let # warning: "_FORTIFY_SOURCE" redefined hardeningDisable = [ "fortify" ]; + # We build nyx mode dependencies ourselves, so this patch skips + # build_nyx_support.sh in the aflplusplus source code. It also skips + # test-nyx-mode.sh because we can't test nyx mode in the sandbox. + patches = lib.optional withNyx ./nyx_mode/nyx_mode.patch; postPatch = '' # Don't care about this. rm Android.bp @@ -94,6 +119,9 @@ let substituteInPlace GNUmakefile.llvm \ --replace-fail "\$(LLVM_BINDIR)/clang" "${clang}/bin/clang" + '' + + lib.optionalString withNyx '' + patchShebangs nyx_mode/build_nyx_support.sh ''; env.NIX_CFLAGS_COMPILE = toString [ @@ -145,7 +173,15 @@ let --replace-fail "cgdelete" "${libcgroup}/bin/cgdelete" patchShebangs $out/bin - + '' + + lib.optionalString withNyx '' + # Use same FHS as if built from source using build_nyx_support.sh. This + # means libnyx.so must be next to afl binaries and nyx_mode dependencies + # are in nyx_mode/. + cp ${libnyx}/lib/libnyx.so $out/bin + mkdir $out/nyx_mode + ln -s ${nyx-packer} $out/nyx_mode/packer + ln -s ${qemu-nyx} $out/nyx_mode/QEMU-Nyx '' + lib.optionalString (wine != null) '' substitute afl-wine-trace $out/bin/afl-wine-trace \ @@ -166,6 +202,7 @@ let file cmocka ]; + doInstallCheck = true; installCheckPhase = '' runHook preInstallCheck @@ -191,7 +228,13 @@ let ''; passthru = { - inherit libdislocator libtokencap; + inherit + libdislocator + libtokencap + libnyx + nyx-packer + qemu-nyx + ; qemu = aflplusplus-qemu; }; diff --git a/pkgs/tools/security/aflplusplus/nyx_mode/QEMU-Nyx/qemu-nyx.nix b/pkgs/tools/security/aflplusplus/nyx_mode/QEMU-Nyx/qemu-nyx.nix new file mode 100644 index 000000000000..ee4e9bcb1ba6 --- /dev/null +++ b/pkgs/tools/security/aflplusplus/nyx_mode/QEMU-Nyx/qemu-nyx.nix @@ -0,0 +1,77 @@ +{ + stdenv, + lib, + fetchFromGitHub, + python3, + pkg-config, + flex, + bison, + glib, + pixman, + aflplusplus, +}: + +# this derivation assumes x86_64-linux +assert stdenv.targetPlatform.system == "x86_64-linux"; + +stdenv.mkDerivation { + version = builtins.readFile (aflplusplus.src + "/nyx_mode/QEMU_NYX_VERSION"); + pname = "QEMU-Nyx"; + + src = aflplusplus.src; + postUnpack = '' + sourceRoot="$sourceRoot/nyx_mode/QEMU-Nyx" + ''; + + # same flags for ./configure as ./compile_qemu_nyx.sh static would set + configureFlags = [ + "--target-list=x86_64-softmmu" + "--disable-docs" + "--disable-gtk" + "--disable-werror" + "--disable-capstone" + "--disable-libssh" + "--disable-tools" + "--enable-nyx" + "--enable-nyx-static" + ]; + + nativeBuildInputs = [ + python3 + pkg-config + flex + bison + ]; + + buildInputs = [ + glib + pixman + ]; + + enableParallelBuilding = true; + + preConfigure = '' + CAPSTONE_ROOT=$PWD/capstone_v4 + LIBXDC_ROOT=$PWD/libxdc + + make -C $CAPSTONE_ROOT -j$(nproc) + make -C $LIBXDC_ROOT -j$(nproc) clean + + # For some reason the Makefile of libxdc clears LDFLAGS; we remove that line + # so ld can find libcapstone.so.4 + sed -i '3d' $LIBXDC_ROOT/Makefile + + NO_LTO=1 LDFLAGS="-L$CAPSTONE_ROOT -L$LIBXDC_ROOT" CFLAGS="-I$CAPSTONE_ROOT/include/" make -C $LIBXDC_ROOT -j$(nproc) + + export LIBS="-L$CAPSTONE_ROOT -L$LIBXDC_ROOT/" + export QEMU_CFLAGS="-I$CAPSTONE_ROOT/include/ -I$LIBXDC_ROOT/ $QEMU_CFLAGS" + ''; + + meta = { + homepage = "https://github.com/nyx-fuzz/QEMU-Nyx"; + description = "Nyx's fork of QEMU"; + license = lib.licenses.gpl2Only; + platforms = lib.platforms.x86_64; + maintainers = with lib.maintainers; [ ekzyis ]; + }; +} diff --git a/pkgs/tools/security/aflplusplus/nyx_mode/libnyx/Cargo.lock b/pkgs/tools/security/aflplusplus/nyx_mode/libnyx/Cargo.lock new file mode 100644 index 000000000000..bb830117fea8 --- /dev/null +++ b/pkgs/tools/security/aflplusplus/nyx_mode/libnyx/Cargo.lock @@ -0,0 +1,1242 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "anstream" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "824a212faf96e9acacdbd09febd34438f8f711fb84e09a8916013cd7815ca28d" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "940b3a0ca603d1eade50a4846a2afffd5ef57a9feac2c0e2ec2e14f9ead76000" + +[[package]] +name = "anstyle-parse" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ce7f38b242319f7cabaa6813055467063ecdc9d355bbb4ce0c68908cd8130e" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40c48f72fd53cd289104fc64099abca73db4166ad86ea0b4341abe65af83dadc" +dependencies = [ + "windows-sys 0.61.2", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "291e6a250ff86cd4a820112fb8898808a366d8f9f58ce16d1f538353ad55747d" +dependencies = [ + "anstyle", + "once_cell_polyfill", + "windows-sys 0.61.2", +] + +[[package]] +name = "anyhow" +version = "1.0.102" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" + +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + +[[package]] +name = "base-x" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cbbc9d0964165b47557570cce6c952866c2678457aca742aafc9fb771d30270" + +[[package]] +name = "base64" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bitflags" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843867be96c8daad0d758b57df9392b6d8d271134fce549de6ce169ff98a92af" + +[[package]] +name = "bumpalo" +version = "3.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d20789868f4b01b2f2caec9f5c4e0213b41e3e5702a50157d699ae31ced2fcb" + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cbindgen" +version = "0.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eadd868a2ce9ca38de7eeafdcec9c7065ef89b42b32f0839278d55f35c54d1ff" +dependencies = [ + "clap", + "heck 0.4.1", + "indexmap", + "log", + "proc-macro2", + "quote", + "serde", + "serde_json", + "syn 2.0.117", + "tempfile", + "toml", +] + +[[package]] +name = "cfg-if" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" + +[[package]] +name = "clap" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b193af5b67834b676abd72466a96c1024e6a6ad978a1f484bd90b85c94041351" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_lex" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8d4a3bb8b1e0c1050499d1815f5ab16d04f0959b233085fb31653fbfc9d98f9" + +[[package]] +name = "colorchoice" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" + +[[package]] +name = "colored" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "117725a109d387c937a1533ce01b450cbde6b88abceea8473c4d7a85853cda3c" +dependencies = [ + "lazy_static", + "windows-sys 0.59.0", +] + +[[package]] +name = "config" +version = "0.1.0" +dependencies = [ + "libc", + "ron", + "serde", + "serde_derive", +] + +[[package]] +name = "const_fn" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413d67b29ef1021b4d60f4aa1e925ca031751e213832b4b1d588fae623c05c60" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "discard" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "212d0f5754cb6769937f4501cc0e67f4f4483c8d2c3e1e922ee9edbe4ab4c7c0" + +[[package]] +name = "doc-comment" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "780955b8b195a21ab8e4ac6b60dd1dbdcec1dc6c51c0617964b08c81785e12c9" + +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" +dependencies = [ + "libc", + "windows-sys 0.61.2", +] + +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + +[[package]] +name = "fs4" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cef5c93884e5cef757f63446122c2f420713c3e03f85540d09485b9415983b4a" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "fuzz_runner" +version = "0.1.0" +dependencies = [ + "byteorder", + "colored", + "config", + "derivative", + "fs4", + "glob", + "libc", + "nix", + "quick-error", + "rand", + "serde", + "serde_derive", + "snafu", + "subprocess", + "time", + "timeout-readwrite", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "getrandom" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasip2", + "wasip3", +] + +[[package]] +name = "glob" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" + +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + +[[package]] +name = "heck" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6cb138bb79a146c1bd460005623e142ef0181e3d0219cb493e02f7d08a35695" + +[[package]] +name = "itoa" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f42a60cbdf9a97f5d2305f08a87dc4e09308d1276d28c869c684d7777685682" + +[[package]] +name = "lazy_static" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" + +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + +[[package]] +name = "libc" +version = "0.2.183" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b646652bf6661599e1da8901b3b9522896f01e736bad5f723fe7a3a27f899d" + +[[package]] +name = "libnyx" +version = "0.1.0" +dependencies = [ + "cbindgen", + "config", + "fuzz_runner", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + +[[package]] +name = "log" +version = "0.4.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" + +[[package]] +name = "memchr" +version = "2.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" + +[[package]] +name = "memoffset" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5de893c32cde5f383baa4c04c5d6dbdd735cfd4a794b0debdb2bb1b421da5ff4" +dependencies = [ + "autocfg", +] + +[[package]] +name = "nix" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "598beaf3cc6fdd9a5dfb1630c2800c7acd31df7aaf0f565796fba2b53ca1af1b" +dependencies = [ + "bitflags 1.3.2", + "cfg-if", + "libc", + "memoffset", + "pin-utils", +] + +[[package]] +name = "once_cell" +version = "1.21.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f7c3e4beb33f85d45ae3e3a1792185706c8e16d043238c593331cc7cd313b50" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "384b8ab6d37215f3c5301a95a4accb5d64aa607f1fcb26a11b5303878451b4fe" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "ppv-lite86" +version = "0.2.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "prettyplease" +version = "0.2.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +dependencies = [ + "proc-macro2", + "syn 2.0.117", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.20+deprecated" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" + +[[package]] +name = "proc-macro2" +version = "1.0.106" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quick-error" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" + +[[package]] +name = "quote" +version = "1.0.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha", + "rand_core", + "rand_hc", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core", +] + +[[package]] +name = "ron" +version = "0.6.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86018df177b1beef6c7c8ef949969c4f7cb9a9344181b92486b23c79995bdaa4" +dependencies = [ + "base64", + "bitflags 1.3.2", + "serde", +] + +[[package]] +name = "rustc_version" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" +dependencies = [ + "semver 0.9.0", +] + +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags 2.11.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustversion" +version = "1.0.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" + +[[package]] +name = "semver" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" +dependencies = [ + "semver-parser", +] + +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + +[[package]] +name = "semver-parser" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" + +[[package]] +name = "serde" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +dependencies = [ + "serde_core", + "serde_derive", +] + +[[package]] +name = "serde_core" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.228" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "serde_json" +version = "1.0.149" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" +dependencies = [ + "itoa", + "memchr", + "serde", + "serde_core", + "zmij", +] + +[[package]] +name = "serde_spanned" +version = "0.6.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +dependencies = [ + "serde", +] + +[[package]] +name = "sha1" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1da05c97445caa12d05e848c4a4fcbbea29e748ac28f7e80e9b010392063770" +dependencies = [ + "sha1_smol", +] + +[[package]] +name = "sha1_smol" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" + +[[package]] +name = "snafu" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eab12d3c261b2308b0d80c26fffb58d17eba81a4be97890101f416b478c79ca7" +dependencies = [ + "doc-comment", + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.6.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1508efa03c362e23817f96cde18abed596a25219a8b2c66e8db33c03543d315b" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "standback" +version = "0.2.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e113fb6f3de07a243d434a56ec6f186dfd51cb08448239fe7bcae73f87ff28ff" +dependencies = [ + "version_check", +] + +[[package]] +name = "stdweb" +version = "0.4.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d022496b16281348b52d0e30ae99e01a73d737b2f45d38fed4edf79f9325a1d5" +dependencies = [ + "discard", + "rustc_version", + "stdweb-derive", + "stdweb-internal-macros", + "stdweb-internal-runtime", + "wasm-bindgen", +] + +[[package]] +name = "stdweb-derive" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "serde_derive", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-macros" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" +dependencies = [ + "base-x", + "proc-macro2", + "quote", + "serde", + "serde_derive", + "serde_json", + "sha1", + "syn 1.0.109", +] + +[[package]] +name = "stdweb-internal-runtime" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213701ba3370744dcd1a12960caa4843b3d68b4d1c0a5d575e0d65b2ee9d16c0" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subprocess" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c56e8662b206b9892d7a5a3f2ecdbcb455d3d6b259111373b7e08b8055158a8" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "syn" +version = "1.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.117" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.27.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" +dependencies = [ + "fastrand", + "getrandom 0.4.2", + "once_cell", + "rustix", + "windows-sys 0.61.2", +] + +[[package]] +name = "time" +version = "0.2.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4752a97f8eebd6854ff91f1c1824cd6160626ac4bd44287f7f4ea2035a02a242" +dependencies = [ + "const_fn", + "libc", + "standback", + "stdweb", + "time-macros", + "version_check", + "winapi", +] + +[[package]] +name = "time-macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "957e9c6e26f12cb6d0dd7fc776bb67a706312e7299aed74c8dd5b17ebb27e2f1" +dependencies = [ + "proc-macro-hack", + "time-macros-impl", +] + +[[package]] +name = "time-macros-impl" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" +dependencies = [ + "proc-macro-hack", + "proc-macro2", + "quote", + "standback", + "syn 1.0.109", +] + +[[package]] +name = "timeout-readwrite" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37312ddc0adbd0f112618a4250ac586448151ff6d69241ff061b29b883349f3e" +dependencies = [ + "nix", +] + +[[package]] +name = "toml" +version = "0.8.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "toml_write", + "winnow", +] + +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + +[[package]] +name = "unicode-ident" +version = "1.0.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6e4313cd5fcd3dad5cafa179702e2b244f760991f45397d14d4ebf38247da75" + +[[package]] +name = "unicode-xid" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasip2" +version = "1.0.2+wasi-0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", +] + +[[package]] +name = "wasm-bindgen" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6532f9a5c1ece3798cb1c2cfdba640b9b3ba884f5db45973a6f442510a87d38e" +dependencies = [ + "cfg-if", + "once_cell", + "rustversion", + "wasm-bindgen-macro", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a2d50fcf105fb33bb15f00e7a77b772945a2ee45dcf454961fd843e74c18e6" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03ce4caeaac547cdf713d280eda22a730824dd11e6b8c3ca9e42247b25c631e3" +dependencies = [ + "bumpalo", + "proc-macro2", + "quote", + "syn 2.0.117", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.114" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75a326b8c223ee17883a4251907455a2431acc2791c98c26279376490c378c16" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags 2.11.0", + "hashbrown 0.15.5", + "indexmap", + "semver 1.0.27", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-link" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "winnow" +version = "0.7.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df79d97927682d2fd8adb29682d1140b343be4ac0f08fd68b7765d9c059d3945" +dependencies = [ + "memchr", +] + +[[package]] +name = "wit-bindgen" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" +dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck 0.5.0", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck 0.5.0", + "indexmap", + "prettyplease", + "syn 2.0.117", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn 2.0.117", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", + "bitflags 2.11.0", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver 1.0.27", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", +] + +[[package]] +name = "zerocopy" +version = "0.8.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "efbb2a062be311f2ba113ce66f697a4dc589f85e78a4aea276200804cea0ed87" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.117", +] + +[[package]] +name = "zmij" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" diff --git a/pkgs/tools/security/aflplusplus/nyx_mode/libnyx/libnyx.nix b/pkgs/tools/security/aflplusplus/nyx_mode/libnyx/libnyx.nix new file mode 100644 index 000000000000..5a7649691575 --- /dev/null +++ b/pkgs/tools/security/aflplusplus/nyx_mode/libnyx/libnyx.nix @@ -0,0 +1,39 @@ +{ + lib, + stdenv, + rustPlatform, + aflplusplus, + python3, +}: + +rustPlatform.buildRustPackage { + version = builtins.readFile (aflplusplus.src + "/nyx_mode/LIBNYX_VERSION"); + pname = "libnyx"; + + src = aflplusplus.src; + postUnpack = '' + sourceRoot="$sourceRoot/nyx_mode/libnyx/libnyx" + cp ${./Cargo.lock} "$sourceRoot/Cargo.lock" + ''; + + cargoLock = { + lockFile = ./Cargo.lock; + }; + + doCheck = false; + + installPhase = '' + runHook preInstall + mkdir -p $out/lib + cp "target/${stdenv.hostPlatform.rust.rustcTarget}/release/liblibnyx.so" $out/lib/libnyx.so + runHook postInstall + ''; + + meta = { + homepage = "https://github.com/nyx-fuzz/libnyx"; + description = "Rust library to build hypervisor-based snapshot fuzzers"; + license = lib.licenses.gpl2Only; + platforms = lib.platforms.linux; + maintainers = with lib.maintainers; [ ekzyis ]; + }; +} diff --git a/pkgs/tools/security/aflplusplus/nyx_mode/nyx_mode.patch b/pkgs/tools/security/aflplusplus/nyx_mode/nyx_mode.patch new file mode 100644 index 000000000000..9e47fb8fa380 --- /dev/null +++ b/pkgs/tools/security/aflplusplus/nyx_mode/nyx_mode.patch @@ -0,0 +1,98 @@ +diff --git a/nyx_mode/build_nyx_support.sh b/nyx_mode/build_nyx_support.sh +index 9b75b7bf..b7ec92e8 100755 +--- a/nyx_mode/build_nyx_support.sh ++++ b/nyx_mode/build_nyx_support.sh +@@ -7,7 +7,8 @@ echo " Nyx build script" + echo "=================================================" + echo + +-echo "[*] Performing basic sanity checks..." ++echo "[+] Nyx mode dependencies are built in other derivations, skipping ..." ++exit 1 + + if [ "$CI" = "true" ]; then + +diff --git a/test/test-nyx-mode.sh b/test/test-nyx-mode.sh +index 7aaa8c5b..5f624ada 100755 +--- a/test/test-nyx-mode.sh ++++ b/test/test-nyx-mode.sh +@@ -4,78 +4,7 @@ + + $ECHO "$BLUE[*] Testing: nyx_mode" + +-test "$CI" = "true" && { +- $ECHO "$YELLOW[-] nyx_mode cannot be tested in the Github CI, skipping ..." +-} || { +- +- unset AFL_CC +- +- test -e ../libnyx.so && { +- ../afl-cc -o test-instr ../test-instr.c > errors 2>&1 +- test -e test-instr && { +- { +- rm -rf nyx-test in out +- $ECHO "$GREY[*] running nyx_packer" +- python3 ../nyx_mode/packer/packer/nyx_packer.py \ +- ./test-instr \ +- nyx-test \ +- afl \ +- instrumentation \ +- --fast_reload_mode \ +- --purge > /dev/null 2>&1 +- +- test -e nyx-test/test-instr && { +- +- $ECHO "$GREY[*] running nyx_config_gen" +- python3 ../nyx_mode/packer/packer/nyx_config_gen.py nyx-test Kernel > /dev/null 2>&1 +- +- test -e nyx-test/config.ron && { +- sudo modprobe -r kvm-intel +- sudo modprobe -r kvm +- sudo modprobe kvm enable_vmware_backdoor=y +- sudo modprobe kvm-intel +- #cat /sys/module/kvm/parameters/enable_vmware_backdoor +- +- mkdir -p in +- echo 00000 > in/in +- $ECHO "$GREY[*] running afl-fuzz for nyx_mode, this will take approx 10 seconds" +- { +- AFL_DEBUG=1 ../afl-fuzz -i in -o out -V05 -X -- ./nyx-test >>errors 2>&1 +- } >>errors 2>&1 +- test -n "$( ls out/default/queue/id:000002* 2>/dev/null )" && { +- $ECHO "$GREEN[+] afl-fuzz is working correctly with nyx_mode" +- RUNTIME=`grep execs_done out/default/fuzzer_stats | awk '{print$3}'` +- rm -rf errors nyx-test test-instr in out +- } || { +- echo CUT------------------------------------------------------------------CUT +- cat errors +- echo CUT------------------------------------------------------------------CUT +- $ECHO "$RED[!] afl-fuzz is not working correctly with nyx_mode" +- CODE=1 +- } +- } || { +- $ECHO "$RED[!] nyx_packer failed, likely install requirements not met." +- CODE=1 +- } +- } || { +- $ECHO "$RED[!] nyx_packer failed, likely install requirements not met." +- CODE=1 +- } +- #rm -rf test-instr in out errors nyx-test +- } +- } || { +- echo CUT------------------------------------------------------------------CUT +- cat errors +- echo CUT------------------------------------------------------------------CUT +- $ECHO "$RED[!] afl-cc compilation of test targets failed - what is going on??" +- CODE=1 +- } +- } || { +- $ECHO "$YELLOW[-] nyx_mode is not compiled, cannot test" +- INCOMPLETE=1 +- } +- +-} ++$ECHO "$GREY[-] nyx_mode cannot be tested inside the sandbox" + + . ./test-post.sh + diff --git a/pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.nix b/pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.nix new file mode 100644 index 000000000000..a91a24b0cc28 --- /dev/null +++ b/pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.nix @@ -0,0 +1,156 @@ +{ + stdenv, + lib, + callPackage, + fetchFromGitHub, + cpio, + gzip, + glibc, + pkgsi686Linux, + pax-utils, + makeWrapper, + python3, + aflplusplus, + qemu-nyx, +}: + +# this derivation assumes x86_64-linux +assert stdenv.targetPlatform.system == "x86_64-linux"; + +let + python3WithPkgs = python3.withPackages (ps: [ + ps.msgpack + ps.jinja2 + ]); +in +stdenv.mkDerivation { + version = builtins.readFile (aflplusplus.src + "/nyx_mode/PACKER_VERSION"); + pname = "nyx-packer"; + + src = aflplusplus.src; + postUnpack = '' + sourceRoot="$sourceRoot/nyx_mode/packer" + ''; + + patches = [ + # this patch does following things: + # * write default config to ~/.nyx/nyx.ini because nix store is read-only + # * fix https://github.com/nyx-fuzz/packer/issues/35 + # * apply Matt Morehouse's patch (https://github.com/nyx-fuzz/packer/pull/34) + ./packer.patch + ]; + + strictDeps = true; + + # compile_64.sh / compile_loader use -O0; _FORTIFY_SOURCE needs optimization + hardeningDisable = [ "fortify" ]; + + nativeBuildInputs = [ + cpio + gzip + makeWrapper + ]; + + buildInputs = [ + glibc + glibc.static + pkgsi686Linux.glibc + ]; + + dontConfigure = true; + + postPatch = '' + substituteInPlace packer/common/config.py \ + --replace-fail \ + '"QEMU-PT_PATH": "../../QEMU-Nyx/x86_64-softmmu/qemu-system-x86_64"' \ + '"QEMU-PT_PATH": "${qemu-nyx}/bin/qemu-system-x86_64"' + + # fix paths to shared libraries that assume debian FHS + substituteInPlace linux_initramfs/pack.sh \ + --replace-fail \ + 'cp -L /lib/ld-linux.so.2' \ + 'cp -L ${pkgsi686Linux.glibc}/lib/ld-linux.so.2' \ + --replace-fail \ + 'cp -L /lib/x86_64-linux-gnu/libdl.so.2' \ + 'cp -L ${glibc}/lib/libdl.so.2' \ + --replace-fail \ + 'cp -L /lib/x86_64-linux-gnu/libc.so.6' \ + 'cp -L ${glibc}/lib/libc.so.6' \ + --replace-fail \ + 'cp -L /lib64/ld-linux-x86-64.so.2' \ + 'cp -L ${glibc}/lib/ld-linux-x86-64.so.2' \ + --replace-fail \ + 'cp -L /lib64/libdl.so.2' \ + 'cp -L ${glibc}/lib/libdl.so.2' \ + --replace-fail \ + 'cp -L /lib64/libc.so.6' \ + 'cp -L ${glibc}/lib/libc.so.6' \ + --replace-fail \ + 'cp -L /lib32/libc.so.6' \ + 'cp -L ${pkgsi686Linux.glibc}/lib/libc.so.6' \ + --replace-fail \ + 'cp -L /lib32/libdl.so.2' \ + 'cp -L ${pkgsi686Linux.glibc}/lib/libdl.so.2' \ + --replace-fail \ + 'cp /lib/x86_64-linux-gnu/libnss_compat.so.2' \ + 'cp -L ${glibc}/lib/libnss_compat.so.2' \ + --replace-fail \ + 'cp /lib64/libnss_compat.so.2' \ + 'cp ${glibc}/lib/libnss_compat.so.2' + ''; + + buildPhase = '' + runHook preBuild + + pushd packer/linux_x86_64-userspace + echo "+ bash -e compile_64.sh" + bash -e compile_64.sh + popd + + pushd linux_initramfs + echo "+ bash -e pack.sh" + bash -e pack.sh + popd + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + # copy build tree so python scripts can assume regular relative paths + cp -r . "$out" && chmod -R u+w "$out" + + PATH="${python3WithPkgs}/bin:$PATH" patchShebangs --build $out/packer + wrapProgram $out/packer/nyx_packer.py \ + --suffix PATH : ${ + lib.makeBinPath [ + pax-utils + qemu-nyx + ] + } + wrapProgram $out/packer/nyx_config_gen.py \ + --suffix PATH : ${ + lib.makeBinPath [ + pax-utils + qemu-nyx + ] + } + + runHook postInstall + ''; + + postFixup = '' + # packer binaries are meant to run inside the vm + find "$out/packer/linux_x86_64-userspace/bin64" -type f \ + -exec patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 {} \; + ''; + + meta = { + homepage = "https://github.com/nyx-fuzz/packer"; + description = "image packer for Nyx VMs"; + license = lib.licenses.gpl2Only; + platforms = lib.platforms.x86_64; + maintainers = with lib.maintainers; [ ekzyis ]; + }; +} diff --git a/pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.patch b/pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.patch new file mode 100644 index 000000000000..b91ee31dc30c --- /dev/null +++ b/pkgs/tools/security/aflplusplus/nyx_mode/packer/packer.patch @@ -0,0 +1,103 @@ +diff --git a/linux_initramfs/pack.sh b/linux_initramfs/pack.sh +index e042bb5..f04c0a1 100644 +--- a/linux_initramfs/pack.sh ++++ b/linux_initramfs/pack.sh +@@ -40,15 +40,17 @@ mkdir rootTemplate/lib/i386-linux-gnu/ + mkdir rootTemplate/lib/x86_64-linux-gnu/ + + cp -L /lib/ld-linux.so.2 rootTemplate/lib/ld-linux.so.2 +-cp -L /lib64/ld-linux-x86-64.so.2 rootTemplate/lib64/ld-linux-x86-64.so.2 + cp -L /lib/x86_64-linux-gnu/libdl.so.2 rootTemplate/lib/x86_64-linux-gnu/libdl.so.2 + cp -L /lib/x86_64-linux-gnu/libc.so.6 rootTemplate//lib/x86_64-linux-gnu/libc.so.6 ++cp -L /lib64/ld-linux-x86-64.so.2 rootTemplate/lib64/ld-linux-x86-64.so.2 ++cp -L /lib64/libdl.so.2 rootTemplate/lib64/libdl.so.2 ++cp -L /lib64/libc.so.6 rootTemplate/lib64/libc.so.6 + cp -L /lib32/libc.so.6 rootTemplate//lib32/libc.so.6 +-cp -L /lib/ld-linux.so.2 rootTemplate/lib/ld-linux.so.2 + cp -L /lib32/libdl.so.2 rootTemplate/lib32/libdl.so.2 + + # fix nasty nss bugs (getpwnam_r, ...) + cp /lib/x86_64-linux-gnu/libnss_compat.so.2 rootTemplate//lib/x86_64-linux-gnu/ ++cp /lib64/libnss_compat.so.2 rootTemplate/lib64/ + + cp -r "rootTemplate" "init" + sed '/START/c\./loader' init/init_template > init/init +diff --git a/linux_initramfs/rootTemplate/init_template b/linux_initramfs/rootTemplate/init_template +index 0d29602..f555082 100755 +--- a/linux_initramfs/rootTemplate/init_template ++++ b/linux_initramfs/rootTemplate/init_template +@@ -19,7 +19,7 @@ adduser --gecos "ubuntu" --disabled-password --ingroup ubuntu ubuntu + echo "ubuntu:ubuntu" | chpasswd + + # multiarch support +-export LD_LIBRARY_PATH=/lib32 ++export LD_LIBRARY_PATH=/lib64:/lib32 + + START + #./loader +diff --git a/packer/common/config.py b/packer/common/config.py +index 74f2b2e..e0fcf3a 100644 +--- a/packer/common/config.py ++++ b/packer/common/config.py +@@ -39,7 +39,7 @@ default_config = { + "QEMU-PT_PATH": "../../QEMU-Nyx/x86_64-softmmu/qemu-system-x86_64", + "KERNEL": "../linux_initramfs/bzImage-linux-4.15-rc7", + "INIT_RAMFS": "../linux_initramfs/init.cpio.gz", +- "DEFAULT_FUZZER_CONFIG_FOLDER": "./fuzzer_configs/", ++ "DEFAULT_FUZZER_CONFIG_FOLDER": os.path.expanduser("~/.nyx/fuzzer_configs/"), + "DEFAULT_VM_HDA": "", + "DEFAULT_VM_PRESNAPSHOT": "", + } +@@ -149,6 +149,9 @@ class ConfigReader(object): + def __init_config(self, config_file): + if not os.path.exists(config_file): + print("Configuration \"%s\" not found -> Creating..."%(os.path.realpath(config_file))) ++ config_dir = os.path.dirname(os.path.abspath(config_file)) ++ os.makedirs(config_dir, exist_ok=True) ++ os.makedirs(config_dir+"/fuzzer_configs/", exist_ok=True) + f = open(config_file, "w") + config = configparser.ConfigParser() + config["Packer"] = {} +@@ -261,7 +264,7 @@ class PackerConfiguration: + self.load_old_state = False + + def __load_config(self): +- self.config_values = ConfigReader(os.path.dirname(os.path.realpath(__file__))+"/../nyx.ini", self.__config_section, self.__config_default).get_values() ++ self.config_values = ConfigReader(os.path.expanduser("~/.nyx/nyx.ini"), self.__config_section, self.__config_default).get_values() + + def __load_arguments(self): + modes = ["afl", "spec"] +@@ -344,7 +347,7 @@ class ConfigGeneratorConfiguration: + self.load_old_state = False + + def __load_config(self): +- self.config_values = ConfigReader(os.path.dirname(os.path.realpath(__file__)) +"/../nyx.ini", self.__config_section, self.__config_default).get_values() ++ self.config_values = ConfigReader(os.path.expanduser("~/.nyx/nyx.ini"), self.__config_section, self.__config_default).get_values() + + def __load_arguments(self): + +diff --git a/packer/common/self_check.py b/packer/common/self_check.py +index 10f2405..e16ac37 100644 +--- a/packer/common/self_check.py ++++ b/packer/common/self_check.py +@@ -170,12 +170,14 @@ def check_apple_ignore_msrs(config): + + + def check_nyx_ini(): +- if not os.path.exists(os.path.dirname(sys.argv[0])+"/nyx.ini") and not os.path.exists("nyx.ini"): +- from common.config import FuzzerConfiguration +- FuzzerConfiguration(skip_args=True).create_initial_config() +- print(WARNING + WARNING_PREFIX + "nyx.ini file does not exist. Creating..." + ENDC) +- return False +- return True ++ # comment this code out because FuzzerConfiguration does not exist ++ # see https://github.com/nyx-fuzz/packer/issues/35 ++ # if not os.path.exists(os.path.dirname(sys.argv[0])+"/nyx.ini") and not os.path.exists("nyx.ini"): ++ # from common.config import FuzzerConfiguration ++ # FuzzerConfiguration(skip_args=True).create_initial_config() ++ # print(WARNING + WARNING_PREFIX + "nyx.ini file does not exist. Creating..." + ENDC) ++ # return False ++ return os.path.exists(os.path.expanduser("~/.nyx/nyx.ini")) + + + def check_qemu_version(config): From 4cd7bada9b779213fda8fe3ee963841b19482c74 Mon Sep 17 00:00:00 2001 From: Fernando Rodrigues Date: Wed, 29 Apr 2026 00:49:53 +1000 Subject: [PATCH 56/73] starship: disable fish test The Fish test no longer functions, as Starship is not displayed inside the test environment. Given that Starship on Fish works otherwise, it is safe to temporarily disable the test until a suitable fix is identified. Signed-off-by: Fernando Rodrigues --- nixos/tests/starship.nix | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/nixos/tests/starship.nix b/nixos/tests/starship.nix index 382666d8f176..bfa758218d55 100644 --- a/nixos/tests/starship.nix +++ b/nixos/tests/starship.nix @@ -45,7 +45,8 @@ machine.wait_for_unit("default.target") machine.succeed("expect-bash") - machine.succeed("expect-fish") + # FIXME: Fish test fails to display Starship while inside the test environment; works on real systems. + # machine.succeed("expect-fish") machine.succeed("expect-zsh") ''; } From 986e3edb2749d0318e955a0642a4a605b2029c14 Mon Sep 17 00:00:00 2001 From: Christoph Heiss Date: Tue, 28 Apr 2026 09:37:27 +0200 Subject: [PATCH 57/73] floorp-bin: update changelog url The old URL wasn't broken completely per se, as the user was redirected to the correct page using JavaScript. But the initial request still returned 404. See #514132 w.r.t to floorp-bin / floorp-bin-unwrapped. Signed-off-by: Christoph Heiss --- pkgs/by-name/fl/floorp-bin-unwrapped/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/fl/floorp-bin-unwrapped/package.nix b/pkgs/by-name/fl/floorp-bin-unwrapped/package.nix index 35b874442f70..239e5cbbc80b 100644 --- a/pkgs/by-name/fl/floorp-bin-unwrapped/package.nix +++ b/pkgs/by-name/fl/floorp-bin-unwrapped/package.nix @@ -120,7 +120,7 @@ stdenv.mkDerivation (finalAttrs: { }; meta = { - changelog = "https://blog.floorp.app/en/release/${finalAttrs.version}.html"; + changelog = "https://blog.floorp.app/en/release/${finalAttrs.version}/"; description = "Fork of Firefox that seeks balance between versatility, privacy and web openness"; homepage = "https://floorp.app/"; # https://github.com/Floorp-Projects/Floorp#-floorp-license-notices- From 46450f556c593fc0d19319ced0c71460124d707a Mon Sep 17 00:00:00 2001 From: Lucas Savva Date: Tue, 31 Mar 2026 23:23:40 +0100 Subject: [PATCH 58/73] switch-to-configuration-ng: Reload when ExecReload changes Instead of triggering a restart when the reload script changes, signal that the unit only needs to be reloaded instead. This is an important optimisation for systemd-nspawn containers where the reload script can house the container's config activation script and we want to explicitly avoid restarting. --- .../sw/switch-to-configuration-ng/src/main.rs | 52 ++++++++++++++++++- 1 file changed, 51 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs index 22b340895f56..aa0d6e6b6012 100644 --- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs +++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs @@ -576,6 +576,12 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison } } + // If this is a service unit, check if it was only `ExecReload` + if section_name == "Service" && ini_key == "ExecReload" { + ret = UnitComparison::UnequalNeedsReload; + continue; + } + // If this is a mount unit, check if it was only `Options` if section_name == "Mount" && ini_key == "Options" { ret = UnitComparison::UnequalNeedsReload; @@ -598,6 +604,10 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison return UnitComparison::UnequalNeedsRestart; } } + } else if section_name == "Exec" && ini_cmp.len() == 1 + && ini_cmp.contains_key("ExecReload") { + ret = UnitComparison::UnequalNeedsReload; + continue; } else { return UnitComparison::UnequalNeedsRestart; } @@ -606,7 +616,7 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison // A section was introduced that was missing in the previous unit if !section_cmp.is_empty() { - if section_cmp.keys().len() == 1 && section_cmp.contains_key("Unit") { + if section_cmp.keys().len() == 1 && (section_cmp.contains_key("Unit") || section_cmp.contains_key("Service")) { if let Some(new_unit_unit) = new_unit.get("Unit") { for ini_key in new_unit_unit.keys() { if !unit_section_ignores.contains_key(ini_key.as_str()) { @@ -615,6 +625,14 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison ret = UnitComparison::UnequalNeedsReload; } } + } else if let Some(new_unit_service) = new_unit.get("Service") { + if new_unit_service.len() == 1 && new_unit_service.contains_key("ExecReload") { + ret = UnitComparison::UnequalNeedsReload; + } else { + return UnitComparison::UnequalNeedsRestart; + } + } else { + return UnitComparison::UnequalNeedsRestart; } } else { return UnitComparison::UnequalNeedsRestart; @@ -2623,6 +2641,38 @@ invalid ) == super::UnitComparison::UnequalNeedsReload ); + assert!( + super::compare_units( + &HashMap::from([]), + &HashMap::from([( + "Service".to_string(), + HashMap::from([( + "ExecReload".to_string(), + vec!["foobar".to_string()] + )]) + )]) + ) == super::UnitComparison::UnequalNeedsReload + ); + + assert!( + super::compare_units( + &HashMap::from([( + "Service".to_string(), + HashMap::from([( + "ExecReload".to_string(), + vec!["foobar".to_string()] + )]) + )]), + &HashMap::from([( + "Service".to_string(), + HashMap::from([( + "ExecReload".to_string(), + vec!["barfoo".to_string()] + )]) + )]) + ) == super::UnitComparison::UnequalNeedsReload + ); + assert!( super::compare_units( &HashMap::from([( From bb97db3918f6313f1bfda4c22c4ba8c1754230b8 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Thu, 23 Apr 2026 09:26:51 +0200 Subject: [PATCH 59/73] switch-to-configuration-ng: rustfmt --- .../sw/switch-to-configuration-ng/src/main.rs | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs index aa0d6e6b6012..348f7cae5d65 100644 --- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs +++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs @@ -604,8 +604,10 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison return UnitComparison::UnequalNeedsRestart; } } - } else if section_name == "Exec" && ini_cmp.len() == 1 - && ini_cmp.contains_key("ExecReload") { + } else if section_name == "Exec" + && ini_cmp.len() == 1 + && ini_cmp.contains_key("ExecReload") + { ret = UnitComparison::UnequalNeedsReload; continue; } else { @@ -616,7 +618,9 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison // A section was introduced that was missing in the previous unit if !section_cmp.is_empty() { - if section_cmp.keys().len() == 1 && (section_cmp.contains_key("Unit") || section_cmp.contains_key("Service")) { + if section_cmp.keys().len() == 1 + && (section_cmp.contains_key("Unit") || section_cmp.contains_key("Service")) + { if let Some(new_unit_unit) = new_unit.get("Unit") { for ini_key in new_unit_unit.keys() { if !unit_section_ignores.contains_key(ini_key.as_str()) { @@ -2646,10 +2650,7 @@ invalid &HashMap::from([]), &HashMap::from([( "Service".to_string(), - HashMap::from([( - "ExecReload".to_string(), - vec!["foobar".to_string()] - )]) + HashMap::from([("ExecReload".to_string(), vec!["foobar".to_string()])]) )]) ) == super::UnitComparison::UnequalNeedsReload ); @@ -2658,17 +2659,11 @@ invalid super::compare_units( &HashMap::from([( "Service".to_string(), - HashMap::from([( - "ExecReload".to_string(), - vec!["foobar".to_string()] - )]) + HashMap::from([("ExecReload".to_string(), vec!["foobar".to_string()])]) )]), &HashMap::from([( "Service".to_string(), - HashMap::from([( - "ExecReload".to_string(), - vec!["barfoo".to_string()] - )]) + HashMap::from([("ExecReload".to_string(), vec!["barfoo".to_string()])]) )]) ) == super::UnitComparison::UnequalNeedsReload ); From 1086ea49e0d70da5627873753dc1febdd114d41b Mon Sep 17 00:00:00 2001 From: r-vdp Date: Thu, 23 Apr 2026 09:27:05 +0200 Subject: [PATCH 60/73] switch-to-configuration-ng: Fix ExecReload check for added key The branch handling "a key was added to an existing section" compared the section name against "Exec" (the .nspawn section header) instead of "Service", so adding ExecReload= to a [Service] that previously lacked it still triggered a restart instead of a reload. Add a unit test covering this path. --- .../sw/switch-to-configuration-ng/src/main.rs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs index 348f7cae5d65..fce4abcd997c 100644 --- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs +++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs @@ -604,7 +604,7 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison return UnitComparison::UnequalNeedsRestart; } } - } else if section_name == "Exec" + } else if section_name == "Service" && ini_cmp.len() == 1 && ini_cmp.contains_key("ExecReload") { @@ -2668,6 +2668,23 @@ invalid ) == super::UnitComparison::UnequalNeedsReload ); + // ExecReload added to an existing [Service] section + assert!( + super::compare_units( + &HashMap::from([( + "Service".to_string(), + HashMap::from([("ExecStart".to_string(), vec!["x".to_string()])]) + )]), + &HashMap::from([( + "Service".to_string(), + HashMap::from([ + ("ExecStart".to_string(), vec!["x".to_string()]), + ("ExecReload".to_string(), vec!["y".to_string()]), + ]) + )]), + ) == super::UnitComparison::UnequalNeedsReload + ); + assert!( super::compare_units( &HashMap::from([( From ea3ca97b366a1fe188febe18b1e29bcc645e6fb7 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Thu, 23 Apr 2026 09:27:31 +0200 Subject: [PATCH 61/73] switch-to-configuration-ng: Dispatch on new section in compare_units When exactly one section was newly introduced, the code looked up new_unit.get("Unit") first regardless of which section was actually new. If [Service] was the new section but the unit also had an unchanged [Unit] section, the [Service] contents were never inspected and a newly added ExecStart= would not trigger a restart. Dispatch on section_cmp instead and add unit tests for both the restart and reload cases. --- .../sw/switch-to-configuration-ng/src/main.rs | 70 +++++++++++++++---- 1 file changed, 56 insertions(+), 14 deletions(-) diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs index fce4abcd997c..175b295a71f8 100644 --- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs +++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs @@ -618,22 +618,25 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison // A section was introduced that was missing in the previous unit if !section_cmp.is_empty() { - if section_cmp.keys().len() == 1 - && (section_cmp.contains_key("Unit") || section_cmp.contains_key("Service")) - { - if let Some(new_unit_unit) = new_unit.get("Unit") { - for ini_key in new_unit_unit.keys() { - if !unit_section_ignores.contains_key(ini_key.as_str()) { - return UnitComparison::UnequalNeedsRestart; - } else if ini_key == "X-Reload-Triggers" { - ret = UnitComparison::UnequalNeedsReload; + if section_cmp.keys().len() == 1 { + // Dispatch on which section is actually new. + if section_cmp.contains_key("Unit") { + if let Some(new_unit_unit) = new_unit.get("Unit") { + for ini_key in new_unit_unit.keys() { + if !unit_section_ignores.contains_key(ini_key.as_str()) { + return UnitComparison::UnequalNeedsRestart; + } else if ini_key == "X-Reload-Triggers" { + ret = UnitComparison::UnequalNeedsReload; + } } } - } else if let Some(new_unit_service) = new_unit.get("Service") { - if new_unit_service.len() == 1 && new_unit_service.contains_key("ExecReload") { - ret = UnitComparison::UnequalNeedsReload; - } else { - return UnitComparison::UnequalNeedsRestart; + } else if section_cmp.contains_key("Service") { + if let Some(new_unit_service) = new_unit.get("Service") { + if new_unit_service.len() == 1 && new_unit_service.contains_key("ExecReload") { + ret = UnitComparison::UnequalNeedsReload; + } else { + return UnitComparison::UnequalNeedsRestart; + } } } else { return UnitComparison::UnequalNeedsRestart; @@ -2668,6 +2671,45 @@ invalid ) == super::UnitComparison::UnequalNeedsReload ); + // New [Service] section while [Unit] already existed: must inspect + // the [Service] section, not the (unchanged) [Unit] one. + assert!( + super::compare_units( + &HashMap::from([( + "Unit".to_string(), + HashMap::from([("Description".to_string(), vec!["x".to_string()])]) + )]), + &HashMap::from([ + ( + "Unit".to_string(), + HashMap::from([("Description".to_string(), vec!["x".to_string()])]) + ), + ( + "Service".to_string(), + HashMap::from([("ExecStart".to_string(), vec!["y".to_string()])]) + ), + ]), + ) == super::UnitComparison::UnequalNeedsRestart + ); + assert!( + super::compare_units( + &HashMap::from([( + "Unit".to_string(), + HashMap::from([("Description".to_string(), vec!["x".to_string()])]) + )]), + &HashMap::from([ + ( + "Unit".to_string(), + HashMap::from([("Description".to_string(), vec!["x".to_string()])]) + ), + ( + "Service".to_string(), + HashMap::from([("ExecReload".to_string(), vec!["y".to_string()])]) + ), + ]), + ) == super::UnitComparison::UnequalNeedsReload + ); + // ExecReload added to an existing [Service] section assert!( super::compare_units( From da43acd6e7fe55f9d929e61fd50a21f78faf8a17 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Thu, 23 Apr 2026 09:28:38 +0200 Subject: [PATCH 62/73] switch-to-configuration-ng: Ignore removal of ExecReload Adding or changing ExecReload now triggers a reload, but removing it still triggered a restart. The running process is unaffected by the removal and the new unit no longer has a reload command to invoke, so treat it like the other ignored [Unit] keys and take no action. Covers both "key removed from existing [Service]" and "[Service] section removed that only contained ExecReload". --- .../sw/switch-to-configuration-ng/src/main.rs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs index 175b295a71f8..1085e75674ce 100644 --- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs +++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs @@ -532,6 +532,13 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison } } continue; // check the next section + } else if section_name == "Service" + && section_val.len() == 1 + && section_val.contains_key("ExecReload") + { + // Dropping ExecReload does not affect the running process and the + // new unit can no longer be reloaded, so there is nothing to do. + continue; } else { return UnitComparison::UnequalNeedsRestart; } @@ -562,6 +569,11 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison if section_name == "Unit" && unit_section_ignores.contains_key(ini_key.as_str()) { continue; } + // Dropping ExecReload does not affect the running process and the + // new unit can no longer be reloaded, so there is nothing to do. + if section_name == "Service" && ini_key == "ExecReload" { + continue; + } return UnitComparison::UnequalNeedsRestart; }; @@ -2710,6 +2722,33 @@ invalid ) == super::UnitComparison::UnequalNeedsReload ); + // ExecReload removed: running process is unaffected and the new + // unit cannot be reloaded, so no action is needed. + assert!( + super::compare_units( + &HashMap::from([( + "Service".to_string(), + HashMap::from([ + ("ExecStart".to_string(), vec!["x".to_string()]), + ("ExecReload".to_string(), vec!["y".to_string()]), + ]) + )]), + &HashMap::from([( + "Service".to_string(), + HashMap::from([("ExecStart".to_string(), vec!["x".to_string()])]) + )]), + ) == super::UnitComparison::Equal + ); + assert!( + super::compare_units( + &HashMap::from([( + "Service".to_string(), + HashMap::from([("ExecReload".to_string(), vec!["y".to_string()])]) + )]), + &HashMap::from([]), + ) == super::UnitComparison::Equal + ); + // ExecReload added to an existing [Service] section assert!( super::compare_units( From 2f5b053b9e337a3fedf2c99a1d1cc69f0dbf30e7 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Thu, 23 Apr 2026 09:49:51 +0200 Subject: [PATCH 63/73] switch-to-configuration-ng: Document ExecReload reload semantics Update the compare_units doc comment and add a release-notes entry covering the new reload-instead-of-restart behaviour. --- nixos/doc/manual/release-notes/rl-2605.section.md | 2 ++ pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs | 7 ++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index ed4559794686..a652c7a3657c 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -347,6 +347,8 @@ See . +- `switch-to-configuration` now reloads a service instead of restarting it when the only change to its unit is `ExecReload=`, and takes no action when `ExecReload=` is removed. Previously both cases triggered a restart. + - [`hardware.nvidia.branch`](#opt-hardware.nvidia.branch) was added to select the NVIDIA driver branch; setting [`hardware.nvidia.package`](#opt-hardware.nvidia.package) overrides this. - The NixOS NVIDIA module wiring has been updated to match the new `nvidia-x11` output layout. diff --git a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs index 1085e75674ce..f084f27b9ae2 100644 --- a/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs +++ b/pkgs/by-name/sw/switch-to-configuration-ng/src/main.rs @@ -489,9 +489,10 @@ enum UnitComparison { // Compare the contents of two unit files and return whether the unit needs to be restarted or // reloaded. If the units differ, the service is restarted unless the only difference is -// `X-Reload-Triggers` in the `Unit` section. If this is the only modification, the unit is -// reloaded instead of restarted. If the only difference is `Options` in the `[Mount]` section, the -// unit is reloaded rather than restarted. +// `X-Reload-Triggers` in the `[Unit]` section, `Options` in the `[Mount]` section, or `ExecReload` +// in the `[Service]` section, in which case the unit is reloaded rather than restarted. Removing +// `ExecReload` is treated as a no-op since the running process is unaffected and the new unit can +// no longer be reloaded. fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison { let mut ret = UnitComparison::Equal; From 3a60d5b32fe75ba139a912b461bbbd72a4e0c5d6 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 28 Apr 2026 11:24:22 +0300 Subject: [PATCH 64/73] castget: fix changelog url --- pkgs/by-name/ca/castget/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/ca/castget/package.nix b/pkgs/by-name/ca/castget/package.nix index 11c3b63a416a..62af0e893b79 100644 --- a/pkgs/by-name/ca/castget/package.nix +++ b/pkgs/by-name/ca/castget/package.nix @@ -59,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: { primarily intended for automatic, unattended downloading of podcasts. ''; homepage = "https://castget.johndal.com/"; - changelog = "https://github.com/mlj/castget/blob/${finalAttrs.version}/CHANGES.md"; + changelog = "https://github.com/mlj/castget/blob/${finalAttrs.src.rev}/CHANGES.md"; maintainers = with lib.maintainers; [ doronbehar ]; license = lib.licenses.gpl2; platforms = lib.platforms.linux; From ed754caf2a989768d8665c5fef820f9b779ed3b7 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 28 Apr 2026 11:26:13 +0300 Subject: [PATCH 65/73] python31{3,4}.pkgs.crate: fix changelog url --- pkgs/development/python-modules/crate/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/crate/default.nix b/pkgs/development/python-modules/crate/default.nix index f0f36c5833d8..854b034af747 100644 --- a/pkgs/development/python-modules/crate/default.nix +++ b/pkgs/development/python-modules/crate/default.nix @@ -67,7 +67,7 @@ buildPythonPackage rec { meta = { homepage = "https://github.com/crate/crate-python"; description = "Python client library for CrateDB"; - changelog = "https://github.com/crate/crate-python/blob/${version}/CHANGES.txt"; + changelog = "https://github.com/crate/crate-python/blob/${version}/CHANGES.rst"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ doronbehar ]; }; From 2d142832c7e534f66315468d832abfd3f39ecb74 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 28 Apr 2026 11:34:12 +0300 Subject: [PATCH 66/73] python31{3,4}.pkgs.plotpy: fix changelog URL --- pkgs/development/python-modules/plotpy/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/plotpy/default.nix b/pkgs/development/python-modules/plotpy/default.nix index a19f4809f582..bd3e06c0913e 100644 --- a/pkgs/development/python-modules/plotpy/default.nix +++ b/pkgs/development/python-modules/plotpy/default.nix @@ -117,7 +117,12 @@ buildPythonPackage rec { meta = { description = "Curve and image plotting tools for Python/Qt applications"; homepage = "https://github.com/PlotPyStack/PlotPy"; - changelog = "https://github.com/PlotPyStack/PlotPy/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/PlotPyStack/PlotPy/blob/master/doc/release_notes/release_${lib.versions.major version}.${ + lib.pipe version [ + lib.versions.minor + (lib.fixedWidthString 2 "0") + ] + }.md"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ doronbehar ]; }; From 391ba7ed215b973177946a253aa59b6a34840bda Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 28 Apr 2026 11:28:49 +0300 Subject: [PATCH 67/73] python31{3,4}.pkgs.guidata: fix changelog URL --- pkgs/development/python-modules/guidata/default.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/guidata/default.nix b/pkgs/development/python-modules/guidata/default.nix index e0466e7b83f8..bb6d80bdd483 100644 --- a/pkgs/development/python-modules/guidata/default.nix +++ b/pkgs/development/python-modules/guidata/default.nix @@ -113,7 +113,12 @@ buildPythonPackage rec { meta = { description = "Python library generating graphical user interfaces for easy dataset editing and display"; homepage = "https://github.com/PlotPyStack/guidata"; - changelog = "https://github.com/PlotPyStack/guidata/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/PlotPyStack/guidata/blob/master/doc/release_notes/release_${lib.versions.major version}.${ + lib.pipe version [ + lib.versions.minor + (lib.fixedWidthString 2 "0") + ] + }.md"; license = lib.licenses.bsd3; maintainers = with lib.maintainers; [ doronbehar ]; }; From a19c689f2e54ead6e420d091223990df0d6542f1 Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 28 Apr 2026 11:36:31 +0300 Subject: [PATCH 68/73] yudit: remove gone meta.changelog address --- pkgs/by-name/yu/yudit/package.nix | 1 - 1 file changed, 1 deletion(-) diff --git a/pkgs/by-name/yu/yudit/package.nix b/pkgs/by-name/yu/yudit/package.nix index 4fb8cbd24ba9..51f34e80b4a9 100644 --- a/pkgs/by-name/yu/yudit/package.nix +++ b/pkgs/by-name/yu/yudit/package.nix @@ -21,7 +21,6 @@ stdenv.mkDerivation (finalAttrs: { meta = { description = "Free Unicode plain-text editor for Unix-like systems"; homepage = "https://www.yudit.org/"; - changelog = "https://www.yudit.org/download/CHANGELOG.TXT"; mainProgram = "yudit"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ doronbehar ]; From baa2722e3c798c0097a78a47d7037d315468dd2d Mon Sep 17 00:00:00 2001 From: Doron Behar Date: Tue, 28 Apr 2026 19:25:41 +0300 Subject: [PATCH 69/73] castget: 2.0.1-unstable-{2025-01-25->2026-02-04} Diff: https://github.com/mlj/castget/compare/e97b179227b4fc7e2e2bc5a373933624c0467daa...218734296e2efc53071e0dbd3c4d59930b571aae Changelog: https://github.com/mlj/castget/blob/218734296e2efc53071e0dbd3c4d59930b571aae/CHANGES.md --- pkgs/by-name/ca/castget/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/ca/castget/package.nix b/pkgs/by-name/ca/castget/package.nix index 62af0e893b79..ea63f33a8c38 100644 --- a/pkgs/by-name/ca/castget/package.nix +++ b/pkgs/by-name/ca/castget/package.nix @@ -19,14 +19,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "castget"; # Using unstable version since it doesn't require `ronn`, see: - # https://github.com/mlj/castget/commit/e97b179227b4fc7e2e2bc5a373933624c0467daa - version = "2.0.1-unstable-2025-01-25"; + # https://github.com/mlj/castget/commit/218734296e2efc53071e0dbd3c4d59930b571aae + version = "2.0.1-unstable-2026-02-04"; src = fetchFromGitHub { owner = "mlj"; repo = "castget"; - rev = "e97b179227b4fc7e2e2bc5a373933624c0467daa"; - hash = "sha256-3t/N8JO36wjHuzIdWNstRWphC/ZR6KkZX0l9yKarS7c="; + rev = "218734296e2efc53071e0dbd3c4d59930b571aae"; + hash = "sha256-GEfsGOTBkorPWLGP3eNbuiGFwDUgb4Gu6ykyS3/RNOg="; }; # without this, the build fails because of an encoding issue with the manual page. From c25481961b8e264a3d1e5f5942eecf59970e3977 Mon Sep 17 00:00:00 2001 From: Stig Palmquist Date: Sun, 16 Nov 2025 14:50:17 +0100 Subject: [PATCH 70/73] netfoil: init at 0.2.1 --- pkgs/by-name/ne/netfoil/package.nix | 39 +++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 pkgs/by-name/ne/netfoil/package.nix diff --git a/pkgs/by-name/ne/netfoil/package.nix b/pkgs/by-name/ne/netfoil/package.nix new file mode 100644 index 000000000000..d841981a0296 --- /dev/null +++ b/pkgs/by-name/ne/netfoil/package.nix @@ -0,0 +1,39 @@ +{ + lib, + buildGoModule, + fetchFromGitHub, + nix-update-script, +}: + +buildGoModule rec { + pname = "netfoil"; + version = "0.2.1"; + + src = fetchFromGitHub { + owner = "tinfoil-factory"; + repo = "netfoil"; + tag = "v${version}"; + hash = "sha256-1JpnVaU17uxQu0O8R0kfl7lCE3YMd/XFmbq9KUMAKqY="; + }; + + __structuredAttrs = true; + + env.CGO_ENABLED = 0; + + proxyVendor = true; + + vendorHash = "sha256-xtc1zCSLuez9POx/jEjre0uVmvWvCW0TpXPFVi2p+CY="; + + passthru.updateScript = nix-update-script { }; + + meta = with lib; { + description = "Minimal, filtering, DNS proxy"; + homepage = "https://github.com/tinfoil-factory/netfoil"; + license = licenses.asl20; + maintainers = with maintainers; [ + sgo + marcusramberg + ]; + mainProgram = "netfoil"; + }; +} From fbd32585c848d0087fcf4c31247902550cc2b5e8 Mon Sep 17 00:00:00 2001 From: Marcus Ramberg Date: Sun, 16 Nov 2025 21:31:47 +0100 Subject: [PATCH 71/73] nixos/netfoil: init --- nixos/modules/module-list.nix | 1 + nixos/modules/services/networking/netfoil.nix | 263 ++++++++++++++++++ nixos/tests/all-tests.nix | 1 + nixos/tests/netfoil.nix | 28 ++ 4 files changed, 293 insertions(+) create mode 100644 nixos/modules/services/networking/netfoil.nix create mode 100644 nixos/tests/netfoil.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 774140f86d92..99dcc808ff83 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1306,6 +1306,7 @@ ./services/networking/netbird.nix ./services/networking/netbird/server.nix ./services/networking/netclient.nix + ./services/networking/netfoil.nix ./services/networking/networkd-dispatcher.nix ./services/networking/networkmanager.nix ./services/networking/newt.nix diff --git a/nixos/modules/services/networking/netfoil.nix b/nixos/modules/services/networking/netfoil.nix new file mode 100644 index 000000000000..df5c5a5e1d6e --- /dev/null +++ b/nixos/modules/services/networking/netfoil.nix @@ -0,0 +1,263 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.services.netfoil; +in +{ + options = { + services.netfoil = { + enable = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Enable Netfoil, a minimal, filtering, DNS proxy"; + }; + listen = { + port = lib.mkOption { + type = lib.types.int; + default = 53; + description = "Port on which Netfoil listens for incoming connections"; + }; + ipAddress = lib.mkOption { + type = lib.types.str; + default = "127.0.0.1"; + description = "IP address on which Netfoil listens for incoming connections"; + }; + }; + logAllowed = lib.mkOption { + type = lib.types.bool; + default = false; + description = "Log allowed DNS queries"; + }; + doHUrl = lib.mkOption { + type = lib.types.str; + default = "https://security.cloudflare-dns.com/dns-query"; + description = "The DoH URL to use for upstream DNS queries"; + }; + doHIPs = lib.mkOption { + type = lib.types.str; + default = "1.1.1.2,1.0.0.2"; + description = "The DoH IPs to use for upstream DNS queries"; + }; + logDenied = lib.mkOption { + type = lib.types.bool; + default = true; + description = "Log denied DNS queries"; + }; + config = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + default = { }; + description = "Additional configuration options for Netfoil"; + }; + rules = { + allow = { + exact = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of exact domain names to allow"; + }; + ipv4 = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of ipv4 CIDR ranges to allow"; + }; + ipv6 = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of ipv6 CIDR ranges to allow"; + }; + tld = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of TLDs to allow"; + }; + }; + deny = { + exact = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of exact domain names to deny"; + }; + ipv4 = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of ipv4 CIDR ranges to deny"; + }; + ipv6 = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of ipv6 CIDR ranges to deny"; + }; + tld = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of TLDs to deny"; + }; + }; + known = { + knownTlds = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ + ".com" + ".net" + ".org" + ".edu" + ".gov" + ".mil" + ".int" + ]; + description = "List of known TLDs"; + }; + }; + pin = { + a = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of A records to pin "; + }; + responseDomain = lib.mkOption { + type = lib.types.listOf lib.types.str; + default = [ ]; + description = "List of domains to pin "; + }; + }; + }; + }; + }; + + config = lib.mkIf cfg.enable ( + let + configFile = lib.concatStringsSep "\n" ( + [ + "LogAllowed=${lib.boolToString cfg.logAllowed}" + "LogDenied=${lib.boolToString cfg.logDenied}" + "DoHURL=${cfg.doHUrl}" + "DoHIPs=${cfg.doHIPs}" + ] + ++ (map (key: "${key} = \"${cfg.config.${key}}\"") (lib.attrNames cfg.config)) + ++ lib.optional ((lib.length cfg.rules.pin.responseDomain) != 0) "PinResponseDomain=true" + ); + configDir = pkgs.buildEnv { + name = "netfoil-config"; + paths = [ + (pkgs.writeTextDir "config" configFile) + (pkgs.writeTextDir "allow.exact" (lib.concatStringsSep "\n" cfg.rules.allow.exact)) + (pkgs.writeTextDir "allow.ipv4" (lib.concatStringsSep "\n" cfg.rules.allow.ipv4)) + (pkgs.writeTextDir "allow.ipv6" (lib.concatStringsSep "\n" cfg.rules.allow.ipv6)) + (pkgs.writeTextDir "allow.suffix" (lib.concatStringsSep "\n" cfg.rules.allow.tld)) + (pkgs.writeTextDir "allow.tld" (lib.concatStringsSep "\n" cfg.rules.allow.tld)) + (pkgs.writeTextDir "deny.exact" (lib.concatStringsSep "\n" cfg.rules.deny.exact)) + (pkgs.writeTextDir "deny.ipv4" (lib.concatStringsSep "\n" cfg.rules.deny.ipv4)) + (pkgs.writeTextDir "deny.ipv6" (lib.concatStringsSep "\n" cfg.rules.deny.ipv6)) + (pkgs.writeTextDir "deny.suffix" (lib.concatStringsSep "\n" cfg.rules.deny.tld)) + (pkgs.writeTextDir "deny.tld" (lib.concatStringsSep "\n" cfg.rules.deny.tld)) + (pkgs.writeTextDir "known.tld" (lib.concatStringsSep "\n" cfg.rules.known.knownTlds)) + (pkgs.writeTextDir "pin.a" (lib.concatStringsSep "\n" cfg.rules.pin.a)) + (pkgs.writeTextDir "pin.response-domain" (lib.concatStringsSep "\n" cfg.rules.pin.responseDomain)) + ]; + }; + in + { + systemd = { + services.netfoil = { + enable = true; + description = "Netfoil DNS proxy"; + after = [ "network.target" ]; + requires = [ "netfoil.socket" ]; + wantedBy = [ "multi-user.target" ]; + serviceConfig = { + Type = "simple"; + ExecStart = "${pkgs.netfoil}/bin/netfoil --config-directory ${configDir}"; + Restart = "always"; + RestartSec = "5"; + DynamicUser = true; + BindReadOnlyPaths = [ + "${pkgs.netfoil}" + "${configDir}" + "/etc/ssl" + builtins.storeDir + ]; + Slice = "netfoil.slice"; + AmbientCapabilities = ""; + CapabilityBoundingSet = [ ]; + SystenCallArchitectures = "native"; + SystemCallFilter = [ + "@basic-io" + "@file-system" + "@network-io" + "@signal" + "@process" + "@io-event" + "@system-service" + "@resources" + ]; + RuntimeDirectory = "netfoil"; + RuntimeDirectoryMode = "0755"; + RootDirectory = "/run/netfoil"; + RestrictAddressFamilies = "AF_INET AF_INET6"; + RestrictNamespaces = true; + RestrictRealtime = true; + RestrictSUIDSGID = true; + + # This might set AllowDevices=char-rtc r + ProtectClock = true; + + ProtectKernelModules = true; + ProtectKernelLogs = true; + + LockPersonality = true; + MemoryDenyWriteExecute = true; + + RemoveIPC = true; + UMask = "0077"; + + # IPC namespace + PrivateIPC = true; + + # UTS namespace + ProtectHostname = true; + + # Changes mounts (custom is more strict) + # https://github.com/systemd/systemd/blob/main/src/core/namespace.c + # + ProtectControlGroups = true; + ProtectHome = true; + ProtectProc = "invisible"; + ProcSubset = "pid"; + ProtectSystem = "strict"; + PrivateTmp = true; + + # + # seccomp _sysctl (custom filter does not allow it anyway) + # /proc and /sys mounts (custom is more strict) + ProtectKernelTunables = true; + # + # seccomp @raw-io (custom filter does not allow it anyway) + PrivateDevices = true; + DevicePolicy = "closed"; + + SocketBindDeny = "any"; + + CPUQuota = "50%"; + MemoryMax = "100M"; + TasksMax = "100"; + }; + }; + slices.netfoil = { + description = "Slice for Netfoil DNS proxy"; + }; + sockets.netfoil = { + description = "Netfoil DNS proxy socket"; + wantedBy = [ "sockets.target" ]; + socketConfig = { + ListenDatagram = "${cfg.listen.ipAddress}:${toString cfg.listen.port}"; + Service = "netfoil.service"; + }; + }; + }; + } + ); +} diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 767da3a67b16..074487b2e75e 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1064,6 +1064,7 @@ in netbox_4_4 = handleTest ./web-apps/netbox/default.nix { netbox = pkgs.netbox_4_4; }; netbox_4_5 = handleTest ./web-apps/netbox/default.nix { netbox = pkgs.netbox_4_5; }; netdata = runTest ./netdata.nix; + netfoil = runTest ./netfoil.nix; networking.networkd = handleTest ./networking/networkd-and-scripted.nix { networkd = true; }; networking.networkmanager = handleTest ./networking/networkmanager.nix { }; networking.scripted = handleTest ./networking/networkd-and-scripted.nix { networkd = false; }; diff --git a/nixos/tests/netfoil.nix b/nixos/tests/netfoil.nix new file mode 100644 index 000000000000..8697de95bdec --- /dev/null +++ b/nixos/tests/netfoil.nix @@ -0,0 +1,28 @@ +{ lib, ... }: +{ + name = "netfoil"; + meta.maintainers = with lib.maintainers; [ + marcusramberg + sgo + ]; + + nodes = { + one = + { config, ... }: + { + services.netfoil = { + enable = true; + listen.port = 6353; + }; + }; + }; + interactive.sshBackdoor.enable = true; + + testScript = '' + start_all() + + with subtest("ensure netfoil starts and listens on 6353"): + one.wait_for_unit("netfoil.service") + one.wait_for_open_port(6353) + ''; +} From 527e71dfbfb7239a68d4215d2d74d68f47f2eff1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 16:56:45 +0000 Subject: [PATCH 72/73] warmup-s3-archives: 1.1.0 -> 1.1.4 --- pkgs/by-name/wa/warmup-s3-archives/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/wa/warmup-s3-archives/package.nix b/pkgs/by-name/wa/warmup-s3-archives/package.nix index 0f81dac52b8a..4371ab758bfe 100644 --- a/pkgs/by-name/wa/warmup-s3-archives/package.nix +++ b/pkgs/by-name/wa/warmup-s3-archives/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "warmup-s3-archives"; - version = "1.1.0"; + version = "1.1.4"; src = fetchFromGitLab { owner = "philipmw"; repo = "warmup-s3-archives"; tag = "v${finalAttrs.version}"; - hash = "sha256-0moqSc87B3LFL7P5qoSqvdkf+RwLbiWkzGhjR2jgTR4="; + hash = "sha256-O2gLnCQ7Y7PKFeXlQqzL6FAoj7m7UI5NpKcYTexaKo4="; }; - cargoHash = "sha256-sWSsxGj8+tSNs2JlhDZt+ulo89rPqZM8FjHpbUdeC5w="; + cargoHash = "sha256-cOUIbeGAhAiAPbXU8OxCuaczJcUGkjPaTKRvMceeM+Y="; passthru.updateScript = nix-update-script { }; From 57c2f90f11bef4241d25aa3b65c7bce3da99cea0 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 28 Apr 2026 17:47:48 +0000 Subject: [PATCH 73/73] mojoshader: 0-unstable-2026-02-10 -> 0-unstable-2026-04-28 --- pkgs/by-name/mo/mojoshader/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/mo/mojoshader/package.nix b/pkgs/by-name/mo/mojoshader/package.nix index 3c5e42cad066..44d4c461d6e0 100644 --- a/pkgs/by-name/mo/mojoshader/package.nix +++ b/pkgs/by-name/mo/mojoshader/package.nix @@ -23,14 +23,14 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "mojoshader"; - version = "0-unstable-2026-02-10"; + version = "0-unstable-2026-04-28"; src = fetchFromGitHub { owner = "icculus"; repo = "mojoshader"; - rev = "abdc80360c1d4560ab8f356035dcd53ae6e9b87f"; + rev = "6333f74dbd5644789a63e903816441b16c1e8b60"; postCheckout = "git -C $out rev-parse HEAD > $out/.gitrev"; - hash = "sha256-NWXJfi12zLDDg8jvC+G/Dxf2CZPWtSjYFSo/6EV6qxY="; + hash = "sha256-32gRoYFGzQksOccpM9qvhd4Q6PyyH3EpQ2rcOI7qfp4="; }; buildInputs = [ SDL2 ];