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); 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 diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index c02e19e3231c..c78ed6c5fa76 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -7764,6 +7764,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"; diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 94d746430110..a18d791e4d14 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -358,6 +358,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/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 3545ca080531..c39975840d2c 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1309,6 +1309,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/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/nixos/modules/programs/fish.nix b/nixos/modules/programs/fish.nix index dac854aeb4f3..979001725413 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 ''; } @@ -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; }; }) 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 783098ea4b2a..afad90d18705 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1068,6 +1068,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) + ''; +} 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") ''; } 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; + }; +} 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"; } ]; } 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 = { diff --git a/pkgs/build-support/rust/build-rust-package/default.nix b/pkgs/build-support/rust/build-rust-package/default.nix index 06f96b75ce05..ab0fec1a2a95 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, @@ -115,17 +111,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; } 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=" } } } 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. 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; diff --git a/pkgs/by-name/ca/castget/package.nix b/pkgs/by-name/ca/castget/package.nix index 11c3b63a416a..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. @@ -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; 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 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"; 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 = [ 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"; 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 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- 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 ]; }; 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 = [ 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 = [ 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"; 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"; 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"; 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 = [ 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"; 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 ]; 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; 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="; }; }; 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" 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"; + }; +} 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; 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; 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 ]; 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 { 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 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" ]; 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/"; 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 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; 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..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; @@ -532,6 +533,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 +570,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; }; @@ -576,6 +589,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 +617,12 @@ fn compare_units(current_unit: &UnitInfo, new_unit: &UnitInfo) -> UnitComparison return UnitComparison::UnequalNeedsRestart; } } + } else if section_name == "Service" + && ini_cmp.len() == 1 + && ini_cmp.contains_key("ExecReload") + { + ret = UnitComparison::UnequalNeedsReload; + continue; } else { return UnitComparison::UnequalNeedsRestart; } @@ -606,15 +631,28 @@ 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 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 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; } } else { return UnitComparison::UnequalNeedsRestart; @@ -2623,6 +2661,112 @@ 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 + ); + + // 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 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( + &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([( 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 { }; 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 \ 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="; }; }; 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 ]; 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" 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"; 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 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 ''; 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 ]; }; 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()}} 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" ]; 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 ]; 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 ]; }; 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 ]; }; 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 ]; }; 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 = '' 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 = [ 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 = { 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 ]; }; -} +}) 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 ]; 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 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): 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"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 74542d928492..3417e246fffc 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 { });