From 911e1d9892caf3ffc64748ff3904658759e1ef77 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 16 Mar 2026 13:39:31 +0000 Subject: [PATCH 001/112] mullvad: 2025.14 -> 2026.1 --- pkgs/applications/networking/mullvad/mullvad.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/mullvad/mullvad.nix b/pkgs/applications/networking/mullvad/mullvad.nix index 78a3c36cd698..7ba5ce0be5e2 100644 --- a/pkgs/applications/networking/mullvad/mullvad.nix +++ b/pkgs/applications/networking/mullvad/mullvad.nix @@ -27,17 +27,17 @@ let in rustPlatform.buildRustPackage rec { pname = "mullvad"; - version = "2025.14"; + version = "2026.1"; src = fetchFromGitHub { owner = "mullvad"; repo = "mullvadvpn-app"; tag = version; fetchSubmodules = true; - hash = "sha256-9HPOhhtbo7BocycuO7IgjyfWHXBh/5YQDNJ/VwKnKG0="; + hash = "sha256-gQpeCcSHxvdyWpzHESHHRkYaGlJxl1UwYawX+1rfHlI="; }; - cargoHash = "sha256-PzUVwx72qkUDKCZ8hfpVT0bqnuakaitPedInn/EfW3o="; + cargoHash = "sha256-L07dNs9OBFFpwo3uOKoACqRIHY/MZv2ESYrequJGD3U="; cargoBuildFlags = [ "-p mullvad-daemon --bin mullvad-daemon" From 601566155bc2d4689bd97d7ca1fe30489fcb6ee9 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 16 Mar 2026 17:40:05 +0000 Subject: [PATCH 002/112] dhcpcd: 10.3.0 -> 10.3.1 --- pkgs/by-name/dh/dhcpcd/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/dh/dhcpcd/package.nix b/pkgs/by-name/dh/dhcpcd/package.nix index 87cc09b8c36f..fd0119918706 100644 --- a/pkgs/by-name/dh/dhcpcd/package.nix +++ b/pkgs/by-name/dh/dhcpcd/package.nix @@ -15,13 +15,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "dhcpcd"; - version = "10.3.0"; + version = "10.3.1"; src = fetchFromGitHub { owner = "NetworkConfiguration"; repo = "dhcpcd"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-XbXZkws1eHvN7OEq7clq2kziwwdk04lNrWbJ9RdHExU="; + sha256 = "sha256-L2rR6/qMHWVth2GR3VAoBZmhA6lmCLddbi0VvEG5r70="; }; nativeBuildInputs = [ pkg-config ]; From ef102bed75b9625eebe54d8aa9f82fb17978d8e5 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 10 Mar 2026 17:30:39 +0000 Subject: [PATCH 003/112] proj: 9.7.1 -> 9.8.0 --- pkgs/by-name/pr/proj/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/pr/proj/package.nix b/pkgs/by-name/pr/proj/package.nix index 7c2529f008fe..daa00097c6df 100644 --- a/pkgs/by-name/pr/proj/package.nix +++ b/pkgs/by-name/pr/proj/package.nix @@ -17,13 +17,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "proj"; - version = "9.7.1"; + version = "9.8.0"; src = fetchFromGitHub { owner = "OSGeo"; repo = "PROJ"; tag = finalAttrs.version; - hash = "sha256-xXtqbLPS2Hu9gC06b72HDjnNRh4m0ism97hP8FFYOMo="; + hash = "sha256-LvzQ2sW+h5uHJg+6z8/Nf99EVIPUQfWoaNr0iFUpD/0="; }; patches = [ From b6300674121d5cf4b917fddca4fd0e9d21302949 Mon Sep 17 00:00:00 2001 From: Augustin Trancart Date: Thu, 19 Mar 2026 14:27:08 +0100 Subject: [PATCH 004/112] python3Packages.pyproj: fix build with proj 9.8.0 --- .../python-modules/pyproj/default.nix | 21 ++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/pyproj/default.nix b/pkgs/development/python-modules/pyproj/default.nix index fe3f754b0ea6..08af3c39b38c 100644 --- a/pkgs/development/python-modules/pyproj/default.nix +++ b/pkgs/development/python-modules/pyproj/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + fetchpatch2, pytestCheckHook, replaceVars, @@ -33,6 +34,23 @@ buildPythonPackage rec { proj = proj; projdev = proj.dev; }) + # PROJ 9.8.0 compatibility + (fetchpatch2 { + url = "https://github.com/pyproj4/pyproj/pull/1557.diff?full_index=1"; + hash = "sha256-3iK/JaQEgyQvPjybJF/ATxOy3fFl7q6aa9tdfsrhajM="; + }) + (fetchpatch2 { + url = "https://github.com/pyproj4/pyproj/pull/1560.diff?full_index=1"; + hash = "sha256-fr+lvDeVFDagc9aHzaQhyZtWK2sy5kR7iImJsuxW8Z4="; + }) + (fetchpatch2 { + url = "https://github.com/pyproj4/pyproj/pull/1568.diff?full_index=1"; + hash = "sha256-fVFg3/ikOk6LiRHA/u14g+ZFsROGE7me878Vvq4mxG4="; + }) + (fetchpatch2 { + url = "https://github.com/pyproj4/pyproj/pull/1581.diff?full_index=1"; + hash = "sha256-EdzUCt4P99ENS2qCBU30FUNnJYD0B2CqcmZXwEYLdVA="; + }) ]; build-system = [ @@ -72,9 +90,6 @@ buildPythonPackage rec { "test_sync__source_id__list" "test_sync_download" "test_transformer_group__download_grids" - # https://github.com/pyproj4/pyproj/issues/1553 - "test_datum_horizontal" - "test_sub_crs" ]; pythonImportsCheck = [ From faa5144a470d4a2ce8b6cc905cec89220e6ffde3 Mon Sep 17 00:00:00 2001 From: Marcel Date: Sun, 8 Mar 2026 16:02:05 +0100 Subject: [PATCH 005/112] motioneye: init at 0.43.1 --- pkgs/by-name/mo/motioneye/package.nix | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 pkgs/by-name/mo/motioneye/package.nix diff --git a/pkgs/by-name/mo/motioneye/package.nix b/pkgs/by-name/mo/motioneye/package.nix new file mode 100644 index 000000000000..7a5ee72311ef --- /dev/null +++ b/pkgs/by-name/mo/motioneye/package.nix @@ -0,0 +1,57 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + fetchpatch, +}: + +python3Packages.buildPythonApplication rec { + pname = "motioneye"; + version = "0.43.1"; + pyproject = true; + + src = fetchFromGitHub { + owner = "motioneye-project"; + repo = "motioneye"; + tag = version; + hash = "sha256-ckOgYmOP5irjNutcC3FMZPBexn/CldG0UtFZ+tPYNJ4="; + }; + + patches = [ + # fix pytest + # https://github.com/motioneye-project/motioneye/pull/3271 + (fetchpatch { + url = "https://github.com/motioneye-project/motioneye/commit/41c0727e2872af1b758743c41b529e76dcac6f84.patch"; + hash = "sha256-0zDveoAN1T0SuCob0U/9GEGTh7pj2CXH/j4YrjO0VE0="; + includes = [ "conftest.py" ]; + }) + ]; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = with python3Packages; [ + babel + boto3 + jinja2 + pillow + pycurl + tornado + ]; + + nativeCheckInputs = with python3Packages; [ + pytestCheckHook + ]; + + pythonImportsCheck = [ + "motioneye" + ]; + + meta = { + description = "Web frontend for the motion daemon"; + homepage = "https://github.com/motioneye-project/motioneye"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ marcel ]; + }; +} From 7508a0338e13e9068e70df45b31f104ef9fdfb6a Mon Sep 17 00:00:00 2001 From: r-vdp Date: Wed, 4 Mar 2026 23:01:43 +0100 Subject: [PATCH 006/112] nixos/qemu-vm: replace postBootCommands by a systemd service Reapply the systemd service approach for registering nix store paths in QEMU VMs that was introduced in #490967, fixing the ordering issue that caused it to be reverted in #496623. The service previously ran in multi-user.target with After=nix-daemon, racing with the test backdoor and other services. nix-store --load-db writes directly to the SQLite DB without needing the daemon, so move the service to sysinit.target with DefaultDependencies=false. This ensures the store DB is populated before any regular service starts. Requires the accompanying channel.nix change to also convert the channel init from boot.postBootCommands to a systemd service, since postBootCommands runs before systemd and can no longer rely on the store DB being loaded at that point. --- nixos/modules/virtualisation/qemu-vm.nix | 37 ++++++++++++++++++++---- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/nixos/modules/virtualisation/qemu-vm.nix b/nixos/modules/virtualisation/qemu-vm.nix index 5f001e05aa47..f0ff6fb1d475 100644 --- a/nixos/modules/virtualisation/qemu-vm.nix +++ b/nixos/modules/virtualisation/qemu-vm.nix @@ -1236,11 +1236,38 @@ in # allow `system.build.toplevel' to be included. (If we had a direct # reference to ${regInfo} here, then we would get a cyclic # dependency.) - boot.postBootCommands = lib.mkIf config.nix.enable '' - if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then - ${config.nix.package.out}/bin/nix-store --load-db < ''${BASH_REMATCH[1]} - fi - ''; + systemd.services.register-nix-paths = lib.mkIf config.nix.enable { + # Run early during boot so the nix store DB is populated before any + # service (or test backdoor) tries to use nix commands. + # nix-store --load-db writes to the SQLite DB directly, so it does not + # need the nix-daemon. + unitConfig.DefaultDependencies = false; + wantedBy = [ + "sysinit.target" + ]; + before = [ + "sysinit.target" + "shutdown.target" + "nix-daemon.socket" + "nix-daemon.service" + ]; + after = [ + "local-fs.target" + ]; + conflicts = [ + "shutdown.target" + ]; + restartIfChanged = false; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + if [[ "$(cat /proc/cmdline)" =~ regInfo=([^ ]*) ]]; then + ${lib.getExe' config.nix.package.out "nix-store"} --load-db < "''${BASH_REMATCH[1]}" + fi + ''; + }; boot.initrd.availableKernelModules = optional (cfg.qemu.diskInterface == "scsi") "sym53c8xx" ++ optional (cfg.tpm.enable) "tpm_tis"; From d292d475265fa54d56a69408a23b6f27535f9af1 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Wed, 4 Mar 2026 23:01:52 +0100 Subject: [PATCH 007/112] nixos/channel: convert postBootCommands to a systemd service Replace boot.postBootCommands with a nix-channel-init systemd service. This is needed because the nix store DB registration in QEMU VMs now happens in a systemd service (register-nix-paths) rather than in postBootCommands, so the channel init must also be a systemd service to express the ordering dependency. The service runs in sysinit.target, after local-fs.target and (when present) register-nix-paths.service, but before nix-daemon.socket. Since nix-env is invoked as root before the daemon socket exists, it accesses the store directly. --- nixos/modules/installer/cd-dvd/channel.nix | 58 ++++++++++++++++------ 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/nixos/modules/installer/cd-dvd/channel.nix b/nixos/modules/installer/cd-dvd/channel.nix index e5fa5db420be..ef8606bfc977 100644 --- a/nixos/modules/installer/cd-dvd/channel.nix +++ b/nixos/modules/installer/cd-dvd/channel.nix @@ -54,19 +54,49 @@ in }; # Provide the NixOS/Nixpkgs sources in /etc/nixos. This is required - # for nixos-install. - boot.postBootCommands = lib.mkAfter '' - if ! [ -e /var/lib/nixos/did-channel-init ]; then - echo "unpacking the NixOS/Nixpkgs sources..." - mkdir -p /nix/var/nix/profiles/per-user/root - ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/per-user/root/channels \ - -i ${channelSources} --quiet --option build-use-substitutes false \ - ${lib.optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root - mkdir -m 0700 -p /root/.nix-defexpr - ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels - mkdir -m 0755 -p /var/lib/nixos - touch /var/lib/nixos/did-channel-init - fi - ''; + # for nixos-install. We use a systemd service rather than + # boot.postBootCommands so that ordering relative to other + # early-boot services (e.g. register-nix-paths in QEMU VMs) is + # explicit. + systemd.services.nix-channel-init = { + description = "Initialize NixOS Channel"; + # Run early so the channel is available before regular services. + # nix-env is invoked before nix-daemon.socket is up, so it + # accesses the store directly (we are root). + unitConfig.DefaultDependencies = false; + wantedBy = [ "sysinit.target" ]; + before = [ + "sysinit.target" + "shutdown.target" + "nix-daemon.socket" + "nix-daemon.service" + ]; + after = [ + "local-fs.target" + # In QEMU VMs the store DB is populated by register-nix-paths. + # On real hardware this unit does not exist and the dependency + # is silently ignored by systemd. + "register-nix-paths.service" + ]; + conflicts = [ "shutdown.target" ]; + restartIfChanged = false; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + if ! [ -e /var/lib/nixos/did-channel-init ]; then + echo "unpacking the NixOS/Nixpkgs sources..." + mkdir -p /nix/var/nix/profiles/per-user/root + ${lib.getExe' config.nix.package.out "nix-env"} -p /nix/var/nix/profiles/per-user/root/channels \ + -i ${channelSources} --quiet --option build-use-substitutes false \ + ${lib.optionalString config.boot.initrd.systemd.enable "--option sandbox false"} # There's an issue with pivot_root + mkdir -m 0700 -p /root/.nix-defexpr + ln -s /nix/var/nix/profiles/per-user/root/channels /root/.nix-defexpr/channels + mkdir -m 0755 -p /var/lib/nixos + touch /var/lib/nixos/did-channel-init + fi + ''; + }; }; } From 6ab12a513a4debf1443a583fb5b2a3a072d561a7 Mon Sep 17 00:00:00 2001 From: r-vdp Date: Wed, 4 Mar 2026 23:11:08 +0100 Subject: [PATCH 008/112] nixos: convert remaining postBootCommands that load the nix DB to systemd services Convert all remaining boot.postBootCommands that call nix-store --load-db into register-nix-paths systemd services for consistency with qemu-vm.nix and to make the ordering dependency with nix-channel-init explicit. All services use the same unit name (register-nix-paths) and the same sysinit.target ordering, so nix-channel-init's after=register-nix-paths.service dependency works uniformly across all platforms. Platform-specific logic (netboot password setup, sd-image partition expansion) is kept in the service script or in boot.postBootCommands as appropriate. --- nixos/modules/installer/cd-dvd/iso-image.nix | 35 ++++++-- nixos/modules/installer/netboot/netboot.nix | 41 ++++++--- nixos/modules/installer/sd-card/sd-image.nix | 85 +++++++++++++------ nixos/modules/profiles/docker-container.nix | 42 ++++++--- .../modules/virtualisation/lxc-container.nix | 35 ++++++-- nixos/modules/virtualisation/proxmox-lxc.nix | 41 ++++++--- 6 files changed, 202 insertions(+), 77 deletions(-) diff --git a/nixos/modules/installer/cd-dvd/iso-image.nix b/nixos/modules/installer/cd-dvd/iso-image.nix index cf96b1abe880..0e519feca76a 100644 --- a/nixos/modules/installer/cd-dvd/iso-image.nix +++ b/nixos/modules/installer/cd-dvd/iso-image.nix @@ -1054,16 +1054,33 @@ in } ); - boot.postBootCommands = '' - # After booting, register the contents of the Nix store on the - # CD in the Nix database in the tmpfs. - ${config.nix.package.out}/bin/nix-store --load-db < /nix/store/nix-path-registration + systemd.services.register-nix-paths = { + description = "Register Nix Store Paths"; + unitConfig.DefaultDependencies = false; + wantedBy = [ "sysinit.target" ]; + before = [ + "sysinit.target" + "shutdown.target" + "nix-daemon.socket" + "nix-daemon.service" + ]; + after = [ "local-fs.target" ]; + conflicts = [ "shutdown.target" ]; + restartIfChanged = false; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + # After booting, register the contents of the Nix store on the + # CD in the Nix database in the tmpfs. + ${lib.getExe' config.nix.package.out "nix-store"} --load-db < /nix/store/nix-path-registration - # nixos-rebuild also requires a "system" profile and an - # /etc/NIXOS tag. - touch /etc/NIXOS - ${config.nix.package.out}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system - ''; + # nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag. + touch /etc/NIXOS + ${lib.getExe' config.nix.package.out "nix-env"} -p /nix/var/nix/profiles/system --set /run/current-system + ''; + }; # Add vfat support to the initrd to enable people to copy the # contents of the CD to a bootable USB stick. diff --git a/nixos/modules/installer/netboot/netboot.nix b/nixos/modules/installer/netboot/netboot.nix index a4d9664a5531..4b5593d37d88 100644 --- a/nixos/modules/installer/netboot/netboot.nix +++ b/nixos/modules/installer/netboot/netboot.nix @@ -166,27 +166,46 @@ with lib; boot.loader.timeout = 10; + systemd.services.register-nix-paths = { + description = "Register Nix Store Paths"; + unitConfig.DefaultDependencies = false; + wantedBy = [ "sysinit.target" ]; + before = [ + "sysinit.target" + "shutdown.target" + "nix-daemon.socket" + "nix-daemon.service" + ]; + after = [ "local-fs.target" ]; + conflicts = [ "shutdown.target" ]; + restartIfChanged = false; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; + script = '' + # After booting, register the contents of the Nix store + # in the Nix database in the tmpfs. + ${lib.getExe' config.nix.package "nix-store"} --load-db < /nix/store/nix-path-registration + + # nixos-rebuild also requires a "system" profile and an /etc/NIXOS tag. + touch /etc/NIXOS + ${lib.getExe' config.nix.package "nix-env"} -p /nix/var/nix/profiles/system --set /run/current-system + ''; + }; + boot.postBootCommands = '' - # After booting, register the contents of the Nix store - # in the Nix database in the tmpfs. - ${config.nix.package}/bin/nix-store --load-db < /nix/store/nix-path-registration - - # nixos-rebuild also requires a "system" profile and an - # /etc/NIXOS tag. - touch /etc/NIXOS - ${config.nix.package}/bin/nix-env -p /nix/var/nix/profiles/system --set /run/current-system - # Set password for user nixos if specified on cmdline # Allows using nixos-anywhere in headless environments for o in $( Date: Mon, 23 Mar 2026 18:06:06 +0000 Subject: [PATCH 009/112] buildRustCrate: support Cargo.toml [lints] table MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cargo's `[lints]` table is a cargo-only feature: cargo translates the entries into `-A`/`-W`/`-D`/`-F` rustc flags before invoking the compiler. Since buildRustCrate calls rustc directly, these lints were silently ignored, forcing users to duplicate them as raw flags in `extraRustcOpts`. Accept a `lints` attr with the same shape as the Cargo.toml section (tool → lint name → level string or `{ level, priority }` attrset), translate it to rustc flags in Nix, and append to the rustc command line. Entries are sorted by ascending priority so lower-priority lint groups are emitted first and can be overridden by more specific lints, matching cargo's behaviour. The `capLints` default changes from `"allow"` to `null`, resolved to `"allow"` when `lints` is empty (the usual case for third-party dependencies) and `"forbid"` when `lints` is set — otherwise a `deny`/`forbid` lint would be silently capped and the table would be a no-op. Explicit `capLints` still overrides. This is the same model cargo uses: your own crate's `[lints]` always apply; only dependencies get `--cap-lints allow`. Generators like crate2nix can populate `lints` directly from the manifest at generation time. --- doc/languages-frameworks/rust.section.md | 33 +++++- .../rust/build-rust-crate/default.nix | 108 +++++++++++++++++- .../rust/build-rust-crate/test/default.nix | 40 +++++++ 3 files changed, 171 insertions(+), 10 deletions(-) diff --git a/doc/languages-frameworks/rust.section.md b/doc/languages-frameworks/rust.section.md index f78ff222ba0d..1c199ac3f26e 100644 --- a/doc/languages-frameworks/rust.section.md +++ b/doc/languages-frameworks/rust.section.md @@ -842,17 +842,38 @@ general. A number of other parameters can be overridden: (hello { }).override { extraRustcOpts = "-Z debuginfo=2"; } ``` -- The lint level cap passed to `rustc` (`allow` by default, which - silences all lints). Because `rustc` only honours the first - `--cap-lints` it receives, this cannot be changed via - `extraRustcOpts`; use this attribute instead. Useful when overriding - the `rust` attribute to point at `clippy-driver`, since clippy lints - are also capped by this flag: +- The lint level cap passed to `rustc`. Defaults to `null`, which + auto-resolves to `"allow"` (silences all lints) when `lints` is + empty, or `"forbid"` (no cap) when `lints` is set. Because `rustc` + only honours the first `--cap-lints` it receives, this cannot be + changed via `extraRustcOpts`; use this attribute instead. Useful + when overriding the `rust` attribute to point at `clippy-driver`, + since clippy lints are also capped by this flag: ```nix (hello { }).override { capLints = "warn"; } ``` +- Lint configuration mirroring Cargo.toml's `[lints]` table. Keys are + tool names (`rust`, `clippy`, `rustdoc`); values map lint names to + either a level string (`"allow"`, `"warn"`, `"deny"`, `"forbid"`) or + `{ level = "..."; priority = ; }`. Lower priorities are emitted + first so that more specific lints can override them. Setting a + non-empty `lints` raises the default `capLints` to `"forbid"` so the + lints actually apply: + + ```nix + (hello { }).override { + lints.rust = { + unsafe_code = "forbid"; + unused = { + level = "deny"; + priority = -1; + }; + }; + } + ``` + - Phases, just like in any other derivation, can be specified using the following attributes: `preUnpack`, `postUnpack`, `prePatch`, `patches`, `postPatch`, `preConfigure` (in the case of a Rust crate, diff --git a/pkgs/build-support/rust/build-rust-crate/default.nix b/pkgs/build-support/rust/build-rust-crate/default.nix index 276e51d01b48..ca0d7331daaf 100644 --- a/pkgs/build-support/rust/build-rust-crate/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/default.nix @@ -62,6 +62,65 @@ let # Create feature arguments for rustc. mkRustcFeatureArgs = lib.concatMapStringsSep " " (f: ''--cfg feature=\"${f}\"''); + # Translate a Cargo.toml `[lints]` table into rustc flags. + # + # See . + # + # Cargo normally translates `[lints.]` entries into `-A`/`-W`/`-D`/`-F` + # flags when invoking rustc. Since buildRustCrate calls rustc directly we + # must perform that translation ourselves. + # + # Example: + # + # lintsToRustcFlags { + # rust = { + # unsafe_code = "forbid"; + # unused = { level = "deny"; priority = -1; }; + # }; + # clippy.all = "warn"; + # } + # => [ "-D unused" "-W clippy::all" "-F unsafe_code" ] + # + # Entries are sorted by ascending priority (default 0) so that lower-priority + # groups are emitted first and can be overridden by higher-priority specific + # lints — matching cargo's behaviour where later rustc flags win. + lintsToRustcFlags = + lints: + let + levelFlag = { + allow = "-A"; + warn = "-W"; + force-warn = "--force-warn"; + deny = "-D"; + forbid = "-F"; + }; + toolPrefix = tool: if tool == "rust" then "" else "${tool}::"; + normalize = + val: + if builtins.isString val then + { + level = val; + priority = 0; + } + else + { priority = 0; } // val; + entries = lib.concatMap ( + tool: + lib.mapAttrsToList ( + name: val: + let + e = normalize val; + in + { + inherit (e) priority; + flag = "${levelFlag.${e.level}} ${toolPrefix tool}${name}"; + } + ) lints.${tool} + ) (builtins.attrNames lints); + sorted = lib.sort (a: b: a.priority < b.priority) entries; + in + map (e: e.flag) sorted; + # Whether we need to use unstable command line flags # # Currently just needed for standard library dependencies, which have a @@ -203,9 +262,35 @@ lib.makeOverridable # second one via `extraRustcOpts` has no effect. Use this parameter # instead if you need lints to fire (e.g. when running clippy). # + # When left at `null`, resolves to `"allow"` if `lints` is empty (the + # usual case for third-party dependencies), or `"forbid"` if `lints` + # is set (so your own crate's lint policy actually applies). + # # Example: "warn" - # Default: "allow" + # Default: null (auto: "allow" or "forbid" depending on `lints`) capLints, + # Lint configuration mirroring Cargo.toml's `[lints]` table. + # See . + # + # Keys are tool names (`rust`, `clippy`, `rustdoc`); values are attrsets + # mapping lint names to either a level string (`"allow"`, `"warn"`, + # `"force-warn"`, `"deny"`, `"forbid"`) or an attrset + # `{ level = "..."; priority = ; }`. Lower priorities are emitted + # first so that higher-priority (more specific) lints can override them. + # + # Setting a non-empty `lints` raises the default `capLints` from + # `"allow"` to `"forbid"` so the lints actually fire. + # + # Example: + # { + # rust = { + # unsafe_code = "forbid"; + # unused = { level = "deny"; priority = -1; }; + # }; + # clippy.all = "warn"; + # } + # Default: {} + lints, # Whether to enable building tests. # Use true to enable. # Default: false @@ -260,14 +345,26 @@ lib.makeOverridable "codegenUnits" "links" "capLints" + "lints" ]; extraDerivationAttrs = removeAttrs crate processedAttrs; nativeBuildInputs_ = nativeBuildInputs; buildInputs_ = buildInputs; extraRustcOpts_ = extraRustcOpts; extraRustcOptsForBuildRs_ = extraRustcOptsForBuildRs; - capLints_ = capLints; buildTests_ = buildTests; + resolvedLints = crate.lints or lints; + lintFlags = lintsToRustcFlags resolvedLints; + resolvedCapLints = + let + requested = crate.capLints or capLints; + in + if requested != null then + requested + else if resolvedLints != { } then + "forbid" + else + "allow"; # crate2nix has a hack for the old bash based build script that did split # entries at `,`. No we have to work around that hack. @@ -390,12 +487,14 @@ lib.makeOverridable extraRustcOpts = lib.optionals (crate ? extraRustcOpts) crate.extraRustcOpts ++ extraRustcOpts_ + ++ lintFlags ++ (lib.optional (edition != null) "--edition ${edition}"); extraRustcOptsForBuildRs = lib.optionals (crate ? extraRustcOptsForBuildRs) crate.extraRustcOptsForBuildRs ++ extraRustcOptsForBuildRs_ + ++ lintFlags ++ (lib.optional (edition != null) "--edition ${edition}"); - capLints = crate.capLints or capLints_; + capLints = resolvedCapLints; configurePhase = configureCrate { inherit @@ -487,7 +586,8 @@ lib.makeOverridable verbose = crate_.verbose or true; extraRustcOpts = [ ]; extraRustcOptsForBuildRs = [ ]; - capLints = "allow"; + capLints = null; + lints = { }; features = [ ]; nativeBuildInputs = [ ]; buildInputs = [ ]; diff --git a/pkgs/build-support/rust/build-rust-crate/test/default.nix b/pkgs/build-support/rust/build-rust-crate/test/default.nix index d5c56858c6a4..ee51b9173df0 100644 --- a/pkgs/build-support/rust/build-rust-crate/test/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/test/default.nix @@ -8,6 +8,7 @@ runCommandCC, stdenv, symlinkJoin, + testers, writeTextFile, pkgsCross, }: @@ -726,6 +727,26 @@ rec { ]; }; }; + # The `lints` attr mirrors Cargo.toml's `[lints]` table and is + # translated to rustc `-A`/`-W`/`-D`/`-F` flags. Lower-priority + # entries are emitted first so that higher-priority specific lints + # can override them. Here `-D unused` (priority -1) is followed by + # `-A dead_code` (default priority 0); the build only succeeds if + # both flags reach rustc in that order. + lintsPriority = { + lints.rust = { + unused = { + level = "deny"; + priority = -1; + }; + dead_code = "allow"; + }; + src = mkFile "src/lib.rs" '' + #![allow(nonstandard_style)] + fn dead() {} + pub fn alive() {} + ''; + }; }; brotliCrates = (callPackage ./brotli-crates.nix { }); rcgenCrates = callPackage ./rcgen-crates.nix { @@ -893,6 +914,25 @@ rec { test -e ${pkg}/bin/brotli-decompressor && touch $out ''; + # A `deny` lint from the lints table should actually fail the build. + lintsDenyFails = + let + crate = mkHostCrate { + crateName = "lintsDenyFails"; + lints.rust.dead_code = "deny"; + src = mkFile "src/lib.rs" '' + fn dead() {} + pub fn alive() {} + ''; + }; + failed = testers.testBuildFailure crate; + in + runCommand "assert-lintsDenyFails" { inherit failed; } '' + grep -q 'function .dead. is never used' "$failed/testBuildFailure.log" + grep -q '\-D dead.code' "$failed/testBuildFailure.log" + touch $out + ''; + rcgenTest = let pkg = rcgenCrates.rootCrate.build; From 0283946b367803d4bc0bea5621aed1897e56d4ea Mon Sep 17 00:00:00 2001 From: Marcel Date: Tue, 17 Mar 2026 00:33:25 +0100 Subject: [PATCH 010/112] nixos/motioneye: init --- nixos/modules/module-list.nix | 1 + nixos/modules/services/video/motioneye.nix | 122 +++++++++++++++++++++ 2 files changed, 123 insertions(+) create mode 100644 nixos/modules/services/video/motioneye.nix diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 9201540632cb..38534fe4c2ae 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -1586,6 +1586,7 @@ ./services/video/go2rtc/default.nix ./services/video/mediamtx.nix ./services/video/mirakurun.nix + ./services/video/motioneye.nix ./services/video/photonvision.nix ./services/video/ustreamer.nix ./services/video/v4l2-relayd.nix diff --git a/nixos/modules/services/video/motioneye.nix b/nixos/modules/services/video/motioneye.nix new file mode 100644 index 000000000000..0dc5ad21bf54 --- /dev/null +++ b/nixos/modules/services/video/motioneye.nix @@ -0,0 +1,122 @@ +{ + config, + pkgs, + lib, + ... +}: + +let + cfg = config.services.motioneye; +in +{ + options.services.motioneye = { + enable = lib.mkEnableOption "motionEye"; + + packages = { + motioneye = lib.mkPackageOption pkgs "motioneye" { }; + motion = lib.mkPackageOption pkgs "motion" { }; + ffmpeg = lib.mkPackageOption pkgs "ffmpeg" { }; + }; + + user = lib.mkOption { + type = lib.types.str; + default = "motioneye"; + description = "User to run motionEye under."; + }; + + group = lib.mkOption { + type = lib.types.str; + default = "motioneye"; + description = "Group to run motionEye under."; + }; + + settings = lib.mkOption { + type = lib.types.attrsOf lib.types.str; + default = { }; + defaultText = lib.literalExpression /* nix */ '' + { + conf_path = lib.mkDefault "/var/lib/motioneye/conf"; + run_path = lib.mkDefault "/run/motioneye"; + log_path = lib.mkDefault "/var/log/motioneye"; + media_path = lib.mkDefault "/var/lib/motioneye/media"; + } + ''; + description = '' + Configuration to put in motioneye.conf. + See for more details. + ''; + }; + }; + + config = lib.mkIf cfg.enable { + services.motioneye.settings = { + conf_path = lib.mkDefault "/var/lib/motioneye/conf"; + run_path = lib.mkDefault "/run/motioneye"; + log_path = lib.mkDefault "/var/log/motioneye"; + media_path = lib.mkDefault "/var/lib/motioneye/media"; + }; + + users = { + groups.${cfg.group} = { }; + users.${cfg.user} = { + inherit (cfg) group; + isSystemUser = true; + + # allow v4l access + extraGroups = [ "video" ]; + }; + }; + + systemd.tmpfiles.settings.motioneye = + let + config = { + d = { + inherit (cfg) user group; + mode = "0750"; + }; + }; + in + { + "${cfg.settings.conf_path}" = config; + "${cfg.settings.run_path}" = config; + "${cfg.settings.log_path}" = config; + "${cfg.settings.media_path}" = config; + }; + + environment.etc."motioneye/motioneye.conf".text = lib.concatMapAttrsStringSep "\n" ( + key: value: "${key} ${lib.escapeShellArg value}" + ) cfg.settings; + + # https://github.com/motioneye-project/motioneye/blob/main/motioneye/extra/motioneye.systemd + systemd.services.motioneye = { + description = "motionEye Server"; + after = [ + "network.target" + "local-fs.target" + "remote-fs.target" + ]; + wantedBy = [ "multi-user.target" ]; + path = + (with pkgs; [ + which + v4l-utils + ]) + ++ [ + cfg.packages.motion + cfg.packages.ffmpeg + ]; + restartTriggers = [ + config.environment.etc."motioneye/motioneye.conf".source + ]; + serviceConfig = { + User = cfg.user; + Group = cfg.group; + RuntimeDirectory = "motioneye"; + LogsDirectory = "motioneye"; + StateDirectory = "motioneye"; + ExecStart = "${lib.getExe' cfg.packages.motioneye "meyectl"} startserver -c /etc/motioneye/motioneye.conf"; + Restart = "on-abort"; + }; + }; + }; +} From 9fd2b8c767a416bd5be8289c531b7ea2584121a1 Mon Sep 17 00:00:00 2001 From: Bernardo Meurer Costa Date: Mon, 23 Mar 2026 18:00:15 +0000 Subject: [PATCH 011/112] buildRustCrate: set CARGO_BIN_EXE_ for integration tests Cargo sets `CARGO_BIN_EXE_` when compiling integration tests so they can locate the crate's own binaries via `env!()` and exec them as subprocesses. buildRustCrate previously compiled bin targets as test harnesses only (via `--test`) when buildTests=true, so the real binary never existed and the env var was never set. When buildTests is set, now first build the real (non-test) binaries to `target/cargo-bin-exe/`, install them to `$out/bin/`, and expose `CARGO_BIN_EXE_` to subsequent rustc invocations via an `env` prefix. Using `env` rather than bash `export` is necessary because hyphenated binary names (`CARGO_BIN_EXE_my-crate`) produce env var names that bash rejects as invalid identifiers; `env` sets them via execve's envp array directly and has no such restriction. The env array is populated by iterating `target/cargo-bin-exe/` at build time, so it covers all binary-target shapes: explicit `crateBin` entries, auto-detected `src/main.rs`, and auto-detected `src/bin/*.rs`. `build_bin` in lib.sh gains an optional third argument for the output directory so the real binary and the `--test` harness can coexist without colliding in `target/bin/`. The lib-test build is reordered to after the real-bin build so its compilation also sees the env vars. --- .../rust/build-rust-crate/build-crate.nix | 70 ++++++++++++++++++- .../rust/build-rust-crate/install-crate.nix | 6 ++ .../rust/build-rust-crate/lib.sh | 15 ++-- .../rust/build-rust-crate/test/default.nix | 68 ++++++++++++++++++ 4 files changed, 150 insertions(+), 9 deletions(-) diff --git a/pkgs/build-support/rust/build-rust-crate/build-crate.nix b/pkgs/build-support/rust/build-rust-crate/build-crate.nix index 94fc853c663a..d5b7166207fa 100644 --- a/pkgs/build-support/rust/build-rust-crate/build-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/build-crate.nix @@ -70,6 +70,25 @@ let binRustcOpts = lib.concatStringsSep " " baseRustcOpts; build_bin = if buildTests then "build_bin_test" else "build_bin"; + + # Shell snippet that builds a binary target to target/cargo-bin-exe/ + # so integration tests can exec it via CARGO_BIN_EXE_. + buildBinForTests = bin: '' + mkdir -p target/cargo-bin-exe + BIN_NAME='${bin.name or crateName}' + ${ + if !bin ? path then + '' + BIN_PATH="" + search_for_bin_path "$BIN_NAME" + '' + else + '' + BIN_PATH='${bin.path}' + '' + } + build_bin "$BIN_NAME" "$BIN_PATH" target/cargo-bin-exe + ''; in '' runHook preBuild @@ -88,13 +107,60 @@ in if [[ -e "$LIB_PATH" ]]; then build_lib "$LIB_PATH" - ${lib.optionalString buildTests ''build_lib_test "$LIB_PATH"''} elif [[ -e src/lib.rs ]]; then build_lib src/lib.rs - ${lib.optionalString buildTests "build_lib_test src/lib.rs"} fi + ${ + # When building tests, first build the real (non-test) binaries so + # integration tests can exec them via CARGO_BIN_EXE_. They go + # to target/cargo-bin-exe/ to avoid colliding with the --test + # harnesses written to target/bin/. After building, populate the + # CARGO_BIN_EXE_ENV array so subsequent rustc invocations see the + # env vars (via `env` prefix in lib.sh, which unlike bash `export` + # accepts hyphenated names). + lib.optionalString buildTests ( + lib.concatMapStringsSep "\n" ( + bin: + let + haveRequiredFeature = + if bin ? requiredFeatures then + lib.intersectLists bin.requiredFeatures crateFeatures == bin.requiredFeatures + else + true; + in + lib.optionalString haveRequiredFeature (buildBinForTests bin) + ) crateBin + + lib.optionalString (lib.length crateBin == 0 && !hasCrateBin) '' + if [[ -e src/main.rs ]]; then + mkdir -p target/cargo-bin-exe + build_bin ${crateName} src/main.rs target/cargo-bin-exe + fi + for i in src/bin/*.rs; do + [ -e "$i" ] || continue + mkdir -p target/cargo-bin-exe + build_bin "$(basename $i .rs)" "$i" target/cargo-bin-exe + done + '' + + '' + if [ -d target/cargo-bin-exe ]; then + for b in target/cargo-bin-exe/*; do + [ -x "$b" ] || continue + name=$(basename "$b") + CARGO_BIN_EXE_ENV+=("CARGO_BIN_EXE_$name=$out/bin/$name") + done + fi + '' + ) + } + ${lib.optionalString buildTests '' + if [[ -e "$LIB_PATH" ]]; then + build_lib_test "$LIB_PATH" + elif [[ -e src/lib.rs ]]; then + build_lib_test src/lib.rs + fi + ''} ${lib.optionalString (lib.length crateBin > 0) ( lib.concatMapStringsSep "\n" ( diff --git a/pkgs/build-support/rust/build-rust-crate/install-crate.nix b/pkgs/build-support/rust/build-rust-crate/install-crate.nix index b35652ad454a..4c67dd977696 100644 --- a/pkgs/build-support/rust/build-rust-crate/install-crate.nix +++ b/pkgs/build-support/rust/build-rust-crate/install-crate.nix @@ -48,6 +48,12 @@ else -executable \ -print0 | xargs --no-run-if-empty --null install --target $out/tests; fi + # Real (non-test) binaries that integration tests may exec via + # CARGO_BIN_EXE_. + if [ -d target/cargo-bin-exe ]; then + mkdir -p $out/bin + cp -rP target/cargo-bin-exe/* $out/bin + fi runHook postInstall '' diff --git a/pkgs/build-support/rust/build-rust-crate/lib.sh b/pkgs/build-support/rust/build-rust-crate/lib.sh index 09731f29f0c3..4d736302a0c9 100644 --- a/pkgs/build-support/rust/build-rust-crate/lib.sh +++ b/pkgs/build-support/rust/build-rust-crate/lib.sh @@ -10,7 +10,7 @@ build_lib() { lib_src=$1 echo_build_heading $lib_src ${libName} - noisily rustc \ + noisily env "${CARGO_BIN_EXE_ENV[@]}" rustc \ --crate-name $CRATE_NAME \ $lib_src \ --out-dir target/lib \ @@ -36,17 +36,18 @@ build_bin() { local crate_name=$1 local crate_name_=$(echo $crate_name | tr '-' '_') local main_file="" + local out_dir="${3:-target/bin}" if [[ ! -z $2 ]]; then main_file=$2 fi - echo_build_heading $@ - noisily rustc \ + echo_build_heading $crate_name $main_file + noisily env "${CARGO_BIN_EXE_ENV[@]}" rustc \ --crate-name $crate_name_ \ $main_file \ --crate-type bin \ $BIN_RUSTC_OPTS \ - --out-dir target/bin \ + --out-dir "$out_dir" \ -L dependency=target/deps \ $LINK \ $EXTRA_LINK_ARGS \ @@ -60,10 +61,10 @@ build_bin() { --color ${colors} \ if [ "$crate_name_" != "$crate_name" ]; then - if [ -f "target/bin/$crate_name_.wasm" ]; then - mv target/bin/$crate_name_.wasm target/bin/$crate_name.wasm + if [ -f "$out_dir/$crate_name_.wasm" ]; then + mv "$out_dir/$crate_name_.wasm" "$out_dir/$crate_name.wasm" else - mv target/bin/$crate_name_ target/bin/$crate_name + mv "$out_dir/$crate_name_" "$out_dir/$crate_name" fi fi } diff --git a/pkgs/build-support/rust/build-rust-crate/test/default.nix b/pkgs/build-support/rust/build-rust-crate/test/default.nix index 854aec414466..b1cbaffb49ca 100644 --- a/pkgs/build-support/rust/build-rust-crate/test/default.nix +++ b/pkgs/build-support/rust/build-rust-crate/test/default.nix @@ -457,6 +457,74 @@ rec { "test flat_test ... ok" ]; }; + rustBinTestsCargoBinExe = { + # Integration tests locate the crate's own binary via + # `env!("CARGO_BIN_EXE_")`, which cargo sets automatically. + crateName = "my-crate"; + src = symlinkJoin { + name = "rust-bin-tests-cargo-bin-exe"; + paths = [ + (mkFile "src/main.rs" '' + fn main() { println!("hello from my-crate"); } + '') + (mkFile "tests/run_bin.rs" '' + #[test] + fn runs_binary() { + let bin = env!("CARGO_BIN_EXE_my-crate"); + let out = std::process::Command::new(bin) + .output() + .expect("spawn"); + assert!(out.status.success()); + assert_eq!( + String::from_utf8_lossy(&out.stdout).trim(), + "hello from my-crate" + ); + } + '') + ]; + }; + buildTests = true; + expectedTestOutputs = [ + "test runs_binary ... ok" + ]; + }; + rustBinTestsCargoBinExeAutoDetect = { + # Verify CARGO_BIN_EXE_ is also set for auto-detected + # src/bin/*.rs binaries, not just src/main.rs or explicit + # crateBin entries. + crateName = "multi-bin"; + src = symlinkJoin { + name = "rust-bin-tests-cargo-bin-exe-auto"; + paths = [ + (mkFile "src/lib.rs" "") + (mkFile "src/bin/tool-a.rs" '' + fn main() { println!("tool-a ran"); } + '') + (mkFile "src/bin/tool-b.rs" '' + fn main() { println!("tool-b ran"); } + '') + (mkFile "tests/run_tools.rs" '' + #[test] + fn runs_both() { + for (bin, want) in [ + (env!("CARGO_BIN_EXE_tool-a"), "tool-a ran"), + (env!("CARGO_BIN_EXE_tool-b"), "tool-b ran"), + ] { + let out = std::process::Command::new(bin) + .output() + .expect("spawn"); + assert!(out.status.success()); + assert_eq!(String::from_utf8_lossy(&out.stdout).trim(), want); + } + } + '') + ]; + }; + buildTests = true; + expectedTestOutputs = [ + "test runs_both ... ok" + ]; + }; linkAgainstRlibCrate = { crateName = "foo"; src = mkFile "src/main.rs" '' From 64aefa9ccb54f8bd48cea383041574d0d98cdf05 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 30 Mar 2026 11:00:51 +0000 Subject: [PATCH 012/112] graphite: 0-unstable-2026-03-13 -> 0-unstable-2026-03-29 --- pkgs/by-name/gr/graphite/package.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/gr/graphite/package.nix b/pkgs/by-name/gr/graphite/package.nix index 11cad3d79527..df9c0ef9d7a4 100644 --- a/pkgs/by-name/gr/graphite/package.nix +++ b/pkgs/by-name/gr/graphite/package.nix @@ -31,13 +31,13 @@ }: let - version = "0-unstable-2026-03-13"; - rev = "eb30ee78bcf8971dc0098f07bdef1fef9d4a7e19"; + version = "0-unstable-2026-03-29"; + rev = "203910a92f20b9bc4127eac4c5bb4a5492c8c293"; - srcHash = "sha256-cQ6dLoFoNyiFFD/JVZ+U9kHrk2ZTcBxBCf8c3sMjCfQ="; + srcHash = "sha256-WBPRI5FQ17ZioSHzOZf0ChuxVtyniuez1OaSo66KqGg="; shaderHash = "sha256-uc6FU0df5Xqp6YXEwODULhgUjSQvjRFGvdk+uFB7II0="; - cargoHash = "sha256-GvKUZrrLYR2J4CnAbMs4TS6eOxSCq4AMecPGp6+008s="; - npmHash = "sha256-r9jfk/fs6mL9L/7heelamOKzlCEu23UWId0kX35mOgE="; + cargoHash = "sha256-h6FtvgzAPCtdRaFoGZBVcXGDLOt12IFk1CSW8nwZB94="; + npmHash = "sha256-WF6MuiCIW/vWpTN9Jj5srClUNJTVIgxfqna6/y1N9kE="; brandingRev = "8ae15dc9c51a3855475d8cab1d0f29d9d9bc622c"; brandingHash = "sha256-mHdwHK2lEeFQWNrjbusvRULEmm03dP+0JM5bnUgHcF8="; From 5f298cd77de05f3acda2448c74ab87ea00b011c1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 30 Mar 2026 19:41:34 +0000 Subject: [PATCH 013/112] libblake3: 1.8.3 -> 1.8.4 --- pkgs/by-name/li/libblake3/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/li/libblake3/package.nix b/pkgs/by-name/li/libblake3/package.nix index da12d4c73181..d2d392071d73 100644 --- a/pkgs/by-name/li/libblake3/package.nix +++ b/pkgs/by-name/li/libblake3/package.nix @@ -10,7 +10,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "libblake3"; - version = "1.8.3"; + version = "1.8.4"; outputs = [ "out" @@ -21,7 +21,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "BLAKE3-team"; repo = "BLAKE3"; tag = finalAttrs.version; - hash = "sha256-aj+fru2saqWxDDiV3mNCZZeZIGTxSgta/X50R87hoko="; + hash = "sha256-Xz0LH0YpUjDishvXsW6VNK8msFlPXg08wFoSfbgws0g="; }; sourceRoot = finalAttrs.src.name + "/c"; From 6a3412b49a0a482453d55dbcdac2866a20cbe2c9 Mon Sep 17 00:00:00 2001 From: Sigmanificient Date: Sat, 4 Apr 2026 02:39:41 +0200 Subject: [PATCH 014/112] fteqw: fix build --- pkgs/games/fteqw/default.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/games/fteqw/default.nix b/pkgs/games/fteqw/default.nix index 93ad0c86a695..6f010ee3f1e4 100644 --- a/pkgs/games/fteqw/default.nix +++ b/pkgs/games/fteqw/default.nix @@ -17,6 +17,7 @@ speex, libopus, libxscrnsaver, + libxcb, libxrandr, libxcursor, libGL, @@ -46,6 +47,7 @@ vulkan-loader speex libopus + libxcb libxrandr libxcursor libxscrnsaver From 9aa3f533abe8c4f6236ee5fd369468c76c054d61 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 4 Apr 2026 18:47:37 +0000 Subject: [PATCH 015/112] tflint-plugins.tflint-ruleset-aws: 0.46.0 -> 0.47.0 --- .../tools/analysis/tflint-plugins/tflint-ruleset-aws.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/tools/analysis/tflint-plugins/tflint-ruleset-aws.nix b/pkgs/development/tools/analysis/tflint-plugins/tflint-ruleset-aws.nix index 16eef58076a2..039114f5df18 100644 --- a/pkgs/development/tools/analysis/tflint-plugins/tflint-ruleset-aws.nix +++ b/pkgs/development/tools/analysis/tflint-plugins/tflint-ruleset-aws.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "tflint-ruleset-aws"; - version = "0.46.0"; + version = "0.47.0"; src = fetchFromGitHub { owner = "terraform-linters"; repo = pname; rev = "v${version}"; - hash = "sha256-PRJ0rQIBIREIbJ8DHe+llxknQEopMVNO7yPYQbOFKjs="; + hash = "sha256-QHAa8kbTZRSS5qLpX5zk4Fcal2Ah6yXv6satwfNFVLo="; }; - vendorHash = "sha256-PScCXLqBlM2+pzSubuDoZ1QWdWLCuN/l5V7DIrlwL+w="; + vendorHash = "sha256-+FxNOrC5iYVb+PPIPTClXmnPTrm7hqT+VLrgcBHWWD4="; postPatch = '' # some automation for creating new releases on GitHub, which we don't need From 1b37cdb689d223398a94aeb529f305a67ca82564 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 5 Apr 2026 01:12:49 +0000 Subject: [PATCH 016/112] ankiAddons.fsrs4anki-helper: 24.06.3-unstable-2026-03-27 -> 24.06.3-unstable-2026-03-30 --- pkgs/by-name/an/anki/addons/fsrs4anki-helper/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/an/anki/addons/fsrs4anki-helper/default.nix b/pkgs/by-name/an/anki/addons/fsrs4anki-helper/default.nix index 03db1aedc527..d907594e3796 100644 --- a/pkgs/by-name/an/anki/addons/fsrs4anki-helper/default.nix +++ b/pkgs/by-name/an/anki/addons/fsrs4anki-helper/default.nix @@ -8,13 +8,13 @@ anki-utils.buildAnkiAddon (finalAttrs: { pname = "fsrs4anki-helper"; - version = "24.06.3-unstable-2026-03-27"; + version = "24.06.3-unstable-2026-03-30"; src = fetchFromGitHub { owner = "open-spaced-repetition"; repo = "fsrs4anki-helper"; - rev = "de3adb6e4dd15f38e2d2e9ffc5217a86987cda87"; - hash = "sha256-oW3mWjKno/dTWTurBgiYtTKWdNK4aymmGt+qnNAIh9Y="; + rev = "9823596b25e08e41dac06b3a24537dce6538f018"; + hash = "sha256-Lcl2uNnjw83ShMQaYEniYGi8hyOl3J7H+YR0jaLb5xY="; }; postFixup = '' From f655b835a08bd4d7534aef86c17820fa7fb2868c Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 5 Apr 2026 01:42:04 +0000 Subject: [PATCH 017/112] bind: 9.20.21 -> 9.20.22 --- pkgs/by-name/bi/bind/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/bi/bind/package.nix b/pkgs/by-name/bi/bind/package.nix index 0c4a7dd86461..aa435fcb2feb 100644 --- a/pkgs/by-name/bi/bind/package.nix +++ b/pkgs/by-name/bi/bind/package.nix @@ -29,11 +29,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "bind"; - version = "9.20.21"; + version = "9.20.22"; src = fetchurl { url = "https://downloads.isc.org/isc/bind9/${finalAttrs.version}/bind-${finalAttrs.version}.tar.xz"; - hash = "sha256-FeG1oifSiQ98ToI6bqAY3nDuLzoOhZy/89gqrYWQ3gM="; + hash = "sha256-y6kv9jG5SWVfR1/ktUKQ9oYP0AcNOZ8iefZDfA04PsY="; }; outputs = [ From 2c537a6ed07b878dec079339befc393aa6467fd3 Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Mon, 6 Apr 2026 00:17:21 +0000 Subject: [PATCH 018/112] androidenv: build-tools: 36.1.0 -> 37.0.0; cmdline-tools: 19.0 -> 20.0; emulator: 36.3.10 -> 36.5.10; platform-tools: 36.0.0 -> 37.0.0; platforms: 36.1 -> 37.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Performed the following automatic androidenv updates: - build-tools: 36.1.0 -> 37.0.0 - cmdline-tools: 19.0 -> 20.0 - emulator: 36.3.10 -> 36.5.10 - platform-tools: 36.0.0 -> 37.0.0 - platforms: 36.1 -> 37.0 Tests exited with status: 1 Last 100 lines of output: ``` warning: unknown experimental feature 'parallel-eval' warning: unknown setting 'eval-cores' error: … while calling the 'derivationStrict' builtin at :37:12: 36| 37| strict = derivationStrict drvAttrs; | ^ 38| … while evaluating derivation 'androidenv-test-suite-bf29939be4d269fd' whose name attribute is located at /tmp/nix-shell-3418431-3082936275/tmph4iklmqn/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:541:11 … while evaluating attribute 'buildInputs' of derivation 'androidenv-test-suite-bf29939be4d269fd' at /tmp/nix-shell-3418431-3082936275/tmph4iklmqn/nixpkgs/pkgs/stdenv/generic/make-derivation.nix:593:11: 592| depsHostHost = elemAt (elemAt dependencies 1) 0; 593| buildInputs = elemAt (elemAt dependencies 1) 1; | ^ 594| depsTargetTarget = elemAt (elemAt dependencies 2) 0; (stack trace truncated; use '--show-trace' to show the full, detailed trace) error: The version 37 is missing in package platforms. The only available versions are 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 2, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 3, 30, 31, 32, 33, 33x, 34, 34x, 35, 35x, 36, 36.1, 36x, 37.0, 4, 5, 6, 7, 8, 9, Baklava, CANARY, CinnamonBun, TiramisuPrivacySandbox, UpsideDownCake, UpsideDownCakePrivacySandbox, VanillaIceCream. ``` --- pkgs/development/mobile/androidenv/repo.json | 2511 +++++++++++++----- 1 file changed, 1838 insertions(+), 673 deletions(-) diff --git a/pkgs/development/mobile/androidenv/repo.json b/pkgs/development/mobile/androidenv/repo.json index 612f5b94a8b0..ce9701d123ec 100644 --- a/pkgs/development/mobile/androidenv/repo.json +++ b/pkgs/development/mobile/androidenv/repo.json @@ -12,7 +12,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-10", @@ -91,7 +91,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-11", @@ -156,7 +156,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-12", @@ -233,7 +233,7 @@ } ], "displayName": "Google TV Addon", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-googletv-license", "name": "google_tv_addon", "path": "add-ons/addon-google_tv_addon-google-12", @@ -280,7 +280,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-13", @@ -357,7 +357,7 @@ } ], "displayName": "Google TV Addon", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-googletv-license", "name": "google_tv_addon", "path": "add-ons/addon-google_tv_addon-google-13", @@ -404,7 +404,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-14", @@ -483,7 +483,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-15", @@ -576,7 +576,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-16", @@ -669,7 +669,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-17", @@ -762,7 +762,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-18", @@ -855,7 +855,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-19", @@ -948,7 +948,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-21", @@ -1041,7 +1041,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-22", @@ -1134,7 +1134,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-23", @@ -1227,7 +1227,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-24", @@ -1320,7 +1320,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-25", @@ -1413,7 +1413,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-3", @@ -1478,7 +1478,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-4", @@ -1543,7 +1543,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-5", @@ -1608,7 +1608,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-6", @@ -1673,7 +1673,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-7", @@ -1738,7 +1738,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-8", @@ -1803,7 +1803,7 @@ } ], "displayName": "Google APIs", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "google_apis", "path": "add-ons/addon-google_apis-google-9", @@ -1869,7 +1869,7 @@ } ], "displayName": "Android Support Repository", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-android-m2repository", "path": "extras/android/m2repository", @@ -1900,7 +1900,7 @@ } ], "displayName": "Android Emulator hypervisor driver (installer)", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-Android_Emulator_Hypervisor_Driver", "path": "extras/google/Android_Emulator_Hypervisor_Driver", @@ -1931,7 +1931,7 @@ } ], "displayName": "Google AdMob Ads SDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-admob_ads_sdk", "path": "extras/google/admob_ads_sdk", @@ -1960,7 +1960,7 @@ } ], "displayName": "Google Analytics App Tracking SDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-analytics_sdk_v2", "path": "extras/google/analytics_sdk_v2", @@ -2010,7 +2010,7 @@ } ], "displayName": "Android Auto Desktop Head Unit Emulator", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-auto", "path": "extras/google/auto", @@ -2036,7 +2036,7 @@ } ], "displayName": "Google Cloud Messaging for Android Library", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-gcm", "path": "extras/google/gcm", @@ -2072,7 +2072,7 @@ } }, "displayName": "Google Play services", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-google_play_services", "path": "extras/google/google_play_services", @@ -2101,7 +2101,7 @@ } ], "displayName": "Google Play services for Froyo", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-google_play_services_froyo", "path": "extras/google/google_play_services_froyo", @@ -2130,7 +2130,7 @@ } ], "displayName": "Google Play Instant Development SDK (Deprecated)", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-instantapps", "path": "extras/google/instantapps", @@ -2168,7 +2168,7 @@ } }, "displayName": "Google Repository", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-m2repository", "path": "extras/google/m2repository", @@ -2197,7 +2197,7 @@ } ], "displayName": "Google Play APK Expansion library", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-market_apk_expansion", "path": "extras/google/market_apk_expansion", @@ -2226,7 +2226,7 @@ } ], "displayName": "Google Play Licensing Library", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-market_licensing", "path": "extras/google/market_licensing", @@ -2256,7 +2256,7 @@ } ], "displayName": "Android Auto API Simulators", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-simulators", "path": "extras/google/simulators", @@ -2285,7 +2285,7 @@ } ], "displayName": "Google USB Driver", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-usb_driver", "path": "extras/google/usb_driver", @@ -2314,7 +2314,7 @@ } ], "displayName": "Google Web Driver", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "extras-google-webdriver", "path": "extras/google/webdriver", @@ -2984,7 +2984,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-10-default-armeabi-v7a", "path": "system-images/android-10/default/armeabi-v7a", @@ -3030,7 +3030,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-10-default-x86", "path": "system-images/android-10/default/x86", @@ -3078,7 +3078,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-10-google_apis-armeabi-v7a", "path": "system-images/android-10/google_apis/armeabi-v7a", @@ -3130,7 +3130,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-10-google_apis-x86", "path": "system-images/android-10/google_apis/x86", @@ -3179,7 +3179,7 @@ } ], "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-14-default-armeabi-v7a", "path": "system-images/android-14/default/armeabi-v7a", @@ -3229,7 +3229,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-15-default-armeabi-v7a", "path": "system-images/android-15/default/armeabi-v7a", @@ -3275,7 +3275,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-15-default-x86", "path": "system-images/android-15/default/x86", @@ -3323,7 +3323,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-15-google_apis-armeabi-v7a", "path": "system-images/android-15/google_apis/armeabi-v7a", @@ -3375,7 +3375,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-15-google_apis-x86", "path": "system-images/android-15/google_apis/x86", @@ -3431,7 +3431,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-16-default-armeabi-v7a", "path": "system-images/android-16/default/armeabi-v7a", @@ -3470,7 +3470,7 @@ } ], "displayName": "MIPS System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "mips-android-sysimage-license", "name": "system-image-16-default-mips", "path": "system-images/android-16/default/mips", @@ -3516,7 +3516,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-16-default-x86", "path": "system-images/android-16/default/x86", @@ -3564,7 +3564,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-16-google_apis-armeabi-v7a", "path": "system-images/android-16/google_apis/armeabi-v7a", @@ -3616,7 +3616,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-16-google_apis-x86", "path": "system-images/android-16/google_apis/x86", @@ -3672,7 +3672,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-17-default-armeabi-v7a", "path": "system-images/android-17/default/armeabi-v7a", @@ -3711,7 +3711,7 @@ } ], "displayName": "MIPS System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "mips-android-sysimage-license", "name": "system-image-17-default-mips", "path": "system-images/android-17/default/mips", @@ -3757,7 +3757,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-17-default-x86", "path": "system-images/android-17/default/x86", @@ -3811,7 +3811,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-17-google_apis-armeabi-v7a", "path": "system-images/android-17/google_apis/armeabi-v7a", @@ -3863,7 +3863,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-17-google_apis-x86", "path": "system-images/android-17/google_apis/x86", @@ -3919,7 +3919,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-18-default-armeabi-v7a", "path": "system-images/android-18/default/armeabi-v7a", @@ -3965,7 +3965,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-18-default-x86", "path": "system-images/android-18/default/x86", @@ -4013,7 +4013,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-18-google_apis-armeabi-v7a", "path": "system-images/android-18/google_apis/armeabi-v7a", @@ -4065,7 +4065,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-18-google_apis-x86", "path": "system-images/android-18/google_apis/x86", @@ -4121,7 +4121,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-19-default-armeabi-v7a", "path": "system-images/android-19/default/armeabi-v7a", @@ -4167,7 +4167,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-19-default-x86", "path": "system-images/android-19/default/x86", @@ -4215,7 +4215,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-19-google_apis-armeabi-v7a", "path": "system-images/android-19/google_apis/armeabi-v7a", @@ -4267,7 +4267,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-19-google_apis-x86", "path": "system-images/android-19/google_apis/x86", @@ -4316,7 +4316,7 @@ } ], "displayName": "Android TV ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-android-tv-armeabi-v7a", "path": "system-images/android-21/android-tv/armeabi-v7a", @@ -4353,7 +4353,7 @@ } ], "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-android-tv-x86", "path": "system-images/android-21/android-tv/x86", @@ -4392,7 +4392,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-default-arm64-v8a", "path": "system-images/android-21/default/arm64-v8a", @@ -4438,7 +4438,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-default-armeabi-v7a", "path": "system-images/android-21/default/armeabi-v7a", @@ -4484,7 +4484,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-default-x86", "path": "system-images/android-21/default/x86", @@ -4530,7 +4530,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-default-x86_64", "path": "system-images/android-21/default/x86_64", @@ -4571,7 +4571,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-google_apis-arm64-v8a", "path": "system-images/android-21/google_apis/arm64-v8a", @@ -4623,7 +4623,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-google_apis-armeabi-v7a", "path": "system-images/android-21/google_apis/armeabi-v7a", @@ -4675,7 +4675,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-google_apis-x86", "path": "system-images/android-21/google_apis/x86", @@ -4727,7 +4727,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-21-google_apis-x86_64", "path": "system-images/android-21/google_apis/x86_64", @@ -4776,7 +4776,7 @@ } ], "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-android-tv-x86", "path": "system-images/android-22/android-tv/x86", @@ -4815,7 +4815,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-default-arm64-v8a", "path": "system-images/android-22/default/arm64-v8a", @@ -4861,7 +4861,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-default-armeabi-v7a", "path": "system-images/android-22/default/armeabi-v7a", @@ -4907,7 +4907,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-default-x86", "path": "system-images/android-22/default/x86", @@ -4953,7 +4953,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-default-x86_64", "path": "system-images/android-22/default/x86_64", @@ -4994,7 +4994,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-google_apis-arm64-v8a", "path": "system-images/android-22/google_apis/arm64-v8a", @@ -5046,7 +5046,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-google_apis-armeabi-v7a", "path": "system-images/android-22/google_apis/armeabi-v7a", @@ -5098,7 +5098,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-google_apis-x86", "path": "system-images/android-22/google_apis/x86", @@ -5150,7 +5150,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-22-google_apis-x86_64", "path": "system-images/android-22/google_apis/x86_64", @@ -5199,7 +5199,7 @@ } ], "displayName": "Android TV ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-android-tv-armeabi-v7a", "path": "system-images/android-23/android-tv/armeabi-v7a", @@ -5243,7 +5243,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-android-tv-x86", "path": "system-images/android-23/android-tv/x86", @@ -5282,7 +5282,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-default-arm64-v8a", "path": "system-images/android-23/default/arm64-v8a", @@ -5328,7 +5328,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-default-armeabi-v7a", "path": "system-images/android-23/default/armeabi-v7a", @@ -5374,7 +5374,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-default-x86", "path": "system-images/android-23/default/x86", @@ -5420,7 +5420,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-default-x86_64", "path": "system-images/android-23/default/x86_64", @@ -5461,7 +5461,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-google_apis-arm64-v8a", "path": "system-images/android-23/google_apis/arm64-v8a", @@ -5513,7 +5513,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-google_apis-armeabi-v7a", "path": "system-images/android-23/google_apis/armeabi-v7a", @@ -5565,7 +5565,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-google_apis-x86", "path": "system-images/android-23/google_apis/x86", @@ -5617,7 +5617,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-23-google_apis-x86_64", "path": "system-images/android-23/google_apis/x86_64", @@ -5673,7 +5673,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-android-tv-x86", "path": "system-images/android-24/android-tv/x86", @@ -5712,7 +5712,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-default-arm64-v8a", "path": "system-images/android-24/default/arm64-v8a", @@ -5758,7 +5758,7 @@ } }, "displayName": "ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-default-armeabi-v7a", "path": "system-images/android-24/default/armeabi-v7a", @@ -5804,7 +5804,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-default-x86", "path": "system-images/android-24/default/x86", @@ -5850,7 +5850,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-default-x86_64", "path": "system-images/android-24/default/x86_64", @@ -5898,7 +5898,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-google_apis-arm64-v8a", "path": "system-images/android-24/google_apis/arm64-v8a", @@ -5950,7 +5950,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-google_apis-x86", "path": "system-images/android-24/google_apis/x86", @@ -6002,7 +6002,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-google_apis-x86_64", "path": "system-images/android-24/google_apis/x86_64", @@ -6056,7 +6056,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-24-google_apis_playstore-x86", "path": "system-images/android-24/google_apis_playstore/x86", @@ -6112,7 +6112,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-android-tv-x86", "path": "system-images/android-25/android-tv/x86", @@ -6158,7 +6158,7 @@ } }, "displayName": "Android Wear ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-android-wear-armeabi-v7a", "path": "system-images/android-25/android-wear/armeabi-v7a", @@ -6202,7 +6202,7 @@ } }, "displayName": "Android Wear Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-android-wear-x86", "path": "system-images/android-25/android-wear/x86", @@ -6241,7 +6241,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-default-arm64-v8a", "path": "system-images/android-25/default/arm64-v8a", @@ -6287,7 +6287,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-default-x86", "path": "system-images/android-25/default/x86", @@ -6333,7 +6333,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-default-x86_64", "path": "system-images/android-25/default/x86_64", @@ -6374,7 +6374,7 @@ } ], "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-google_apis-arm64-v8a", "path": "system-images/android-25/google_apis/arm64-v8a", @@ -6426,7 +6426,7 @@ } }, "displayName": "Google APIs ARM EABI v7a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-google_apis-armeabi-v7a", "path": "system-images/android-25/google_apis/armeabi-v7a", @@ -6478,7 +6478,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-google_apis-x86", "path": "system-images/android-25/google_apis/x86", @@ -6530,7 +6530,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-google_apis-x86_64", "path": "system-images/android-25/google_apis/x86_64", @@ -6584,7 +6584,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-25-google_apis_playstore-x86", "path": "system-images/android-25/google_apis_playstore/x86", @@ -6655,7 +6655,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-26-android-tv-x86", "path": "system-images/android-26/android-tv/x86", @@ -6701,7 +6701,7 @@ } }, "displayName": "Android Wear Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-android-wear-x86", "path": "system-images/android-26/android-wear/x86", @@ -6752,7 +6752,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-default-arm64-v8a", "path": "system-images/android-26/default/arm64-v8a", @@ -6796,7 +6796,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-default-x86", "path": "system-images/android-26/default/x86", @@ -6840,7 +6840,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-default-x86_64", "path": "system-images/android-26/default/x86_64", @@ -6891,7 +6891,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-google_apis-arm64-v8a", "path": "system-images/android-26/google_apis/arm64-v8a", @@ -6958,7 +6958,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-google_apis-x86", "path": "system-images/android-26/google_apis/x86", @@ -7025,7 +7025,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-26-google_apis-x86_64", "path": "system-images/android-26/google_apis/x86_64", @@ -7094,7 +7094,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-26-google_apis_playstore-x86", "path": "system-images/android-26/google_apis_playstore/x86", @@ -7150,7 +7150,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-27-android-tv-x86", "path": "system-images/android-27/android-tv/x86", @@ -7201,7 +7201,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-27-default-arm64-v8a", "path": "system-images/android-27/default/arm64-v8a", @@ -7245,7 +7245,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-27-default-x86", "path": "system-images/android-27/default/x86", @@ -7289,7 +7289,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-27-default-x86_64", "path": "system-images/android-27/default/x86_64", @@ -7340,7 +7340,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-27-google_apis-arm64-v8a", "path": "system-images/android-27/google_apis/arm64-v8a", @@ -7407,7 +7407,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-27-google_apis-x86", "path": "system-images/android-27/google_apis/x86", @@ -7476,7 +7476,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-27-google_apis_playstore-x86", "path": "system-images/android-27/google_apis_playstore/x86", @@ -7537,7 +7537,7 @@ } }, "displayName": "Automotive Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-android-automotive-playstore-x86", "path": "system-images/android-28/android-automotive-playstore/x86", @@ -7582,7 +7582,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-28-android-tv-x86", "path": "system-images/android-28/android-tv/x86", @@ -7628,7 +7628,7 @@ } }, "displayName": "Wear OS Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-android-wear-x86", "path": "system-images/android-28/android-wear/x86", @@ -7679,7 +7679,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-default-arm64-v8a", "path": "system-images/android-28/default/arm64-v8a", @@ -7716,7 +7716,7 @@ } ], "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-28-default-x86", "path": "system-images/android-28/default/x86", @@ -7753,7 +7753,7 @@ } ], "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-28-default-x86_64", "path": "system-images/android-28/default/x86_64", @@ -7804,7 +7804,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-google_apis-arm64-v8a", "path": "system-images/android-28/google_apis/arm64-v8a", @@ -7871,7 +7871,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-28-google_apis-x86", "path": "system-images/android-28/google_apis/x86", @@ -7938,7 +7938,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-google_apis-x86_64", "path": "system-images/android-28/google_apis/x86_64", @@ -7997,7 +7997,7 @@ } }, "displayName": "Google ARM64-V8a Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-28-google_apis_playstore-arm64-v8a", "path": "system-images/android-28/google_apis_playstore/arm64-v8a", @@ -8064,7 +8064,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-google_apis_playstore-x86", "path": "system-images/android-28/google_apis_playstore/x86", @@ -8131,7 +8131,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-28-google_apis_playstore-x86_64", "path": "system-images/android-28/google_apis_playstore/x86_64", @@ -8192,7 +8192,7 @@ } }, "displayName": "Automotive with Play Store Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-android-automotive-playstore-x86", "path": "system-images/android-29/android-automotive-playstore/x86", @@ -8252,7 +8252,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-29-android-tv-x86", "path": "system-images/android-29/android-tv/x86", @@ -8291,7 +8291,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-default-arm64-v8a", "path": "system-images/android-29/default/arm64-v8a", @@ -8354,7 +8354,7 @@ } }, "displayName": "Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-default-x86", "path": "system-images/android-29/default/x86", @@ -8417,7 +8417,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-default-x86_64", "path": "system-images/android-29/default/x86_64", @@ -8468,7 +8468,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-29-google_apis-arm64-v8a", "path": "system-images/android-29/google_apis/arm64-v8a", @@ -8525,7 +8525,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-google_apis-x86", "path": "system-images/android-29/google_apis/x86", @@ -8582,7 +8582,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-google_apis-x86_64", "path": "system-images/android-29/google_apis/x86_64", @@ -8641,7 +8641,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-29-google_apis_playstore-arm64-v8a", "path": "system-images/android-29/google_apis_playstore/arm64-v8a", @@ -8722,7 +8722,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-google_apis_playstore-x86", "path": "system-images/android-29/google_apis_playstore/x86", @@ -8803,7 +8803,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-29-google_apis_playstore-x86_64", "path": "system-images/android-29/google_apis_playstore/x86_64", @@ -8864,7 +8864,7 @@ } }, "displayName": "Automotive with Play Store Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-android-automotive-playstore-x86_64", "path": "system-images/android-30/android-automotive-playstore/x86_64", @@ -8924,7 +8924,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-30-android-tv-x86", "path": "system-images/android-30/android-tv/x86", @@ -8970,7 +8970,7 @@ } }, "displayName": "China version of Wear OS 3 ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-android-wear-arm64-v8a", "path": "system-images/android-30/android-wear-cn/arm64-v8a", @@ -9014,7 +9014,7 @@ } }, "displayName": "China version of Wear OS 3 Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-android-wear-x86", "path": "system-images/android-30/android-wear-cn/x86", @@ -9053,7 +9053,7 @@ } ], "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-default-arm64-v8a", "path": "system-images/android-30/default/arm64-v8a", @@ -9102,7 +9102,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-default-x86_64", "path": "system-images/android-30/default/x86_64", @@ -9153,7 +9153,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-30-google_apis-arm64-v8a", "path": "system-images/android-30/google_apis/arm64-v8a", @@ -9220,7 +9220,7 @@ } }, "displayName": "Google APIs Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-google_apis-x86", "path": "system-images/android-30/google_apis/x86", @@ -9287,7 +9287,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-google_apis-x86_64", "path": "system-images/android-30/google_apis/x86_64", @@ -9353,7 +9353,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-30-google_apis_playstore-arm64-v8a", "path": "system-images/android-30/google_apis_playstore/arm64-v8a", @@ -9434,7 +9434,7 @@ } }, "displayName": "Google Play Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-30-google_apis_playstore-x86", "path": "system-images/android-30/google_apis_playstore/x86", @@ -9515,7 +9515,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-30-google_apis_playstore-x86_64", "path": "system-images/android-30/google_apis_playstore/x86_64", @@ -9586,7 +9586,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-31-android-tv-arm64-v8a", "path": "system-images/android-31/android-tv/arm64-v8a", @@ -9645,7 +9645,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-31-android-tv-x86", "path": "system-images/android-31/android-tv/x86", @@ -9696,7 +9696,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-31-default-arm64-v8a", "path": "system-images/android-31/default/arm64-v8a", @@ -9745,7 +9745,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-31-default-x86_64", "path": "system-images/android-31/default/x86_64", @@ -9806,7 +9806,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-31-google_apis-arm64-v8a", "path": "system-images/android-31/google_apis/arm64-v8a", @@ -9873,7 +9873,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-31-google_apis-x86_64", "path": "system-images/android-31/google_apis/x86_64", @@ -9949,7 +9949,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-31-google_apis_playstore-arm64-v8a", "path": "system-images/android-31/google_apis_playstore/arm64-v8a", @@ -10016,7 +10016,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-31-google_apis_playstore-x86_64", "path": "system-images/android-31/google_apis_playstore/x86_64", @@ -10077,7 +10077,7 @@ } }, "displayName": "Android Automotive with Google Play arm64-v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-32-android-automotive-playstore-arm64-v8a", "path": "system-images/android-32/android-automotive-playstore/arm64-v8a", @@ -10130,7 +10130,7 @@ } }, "displayName": "Android Automotive with Google Play x86_64 System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-32-android-automotive-playstore-x86_64", "path": "system-images/android-32/android-automotive-playstore/x86_64", @@ -10185,7 +10185,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-32-default-arm64-v8a", "path": "system-images/android-32/default/arm64-v8a", @@ -10234,7 +10234,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-32-default-x86_64", "path": "system-images/android-32/default/x86_64", @@ -10295,7 +10295,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-32-google_apis-arm64-v8a", "path": "system-images/android-32/google_apis/arm64-v8a", @@ -10362,7 +10362,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-32-google_apis-x86_64", "path": "system-images/android-32/google_apis/x86_64", @@ -10438,7 +10438,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-32-google_apis_playstore-arm64-v8a", "path": "system-images/android-32/google_apis_playstore/arm64-v8a", @@ -10519,7 +10519,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-32-google_apis_playstore-x86_64", "path": "system-images/android-32/google_apis_playstore/x86_64", @@ -10580,7 +10580,7 @@ } }, "displayName": "Android Automotive with Google APIs arm64-v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-android-automotive-arm64-v8a", "path": "system-images/android-33/android-automotive/arm64-v8a", @@ -10633,7 +10633,7 @@ } }, "displayName": "Android Automotive with Google APIs x86_64 System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-android-automotive-x86_64", "path": "system-images/android-33/android-automotive/x86_64", @@ -10698,7 +10698,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-android-tv-arm64-v8a", "path": "system-images/android-33/android-tv/arm64-v8a", @@ -10757,7 +10757,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-android-tv-x86", "path": "system-images/android-33/android-tv/x86", @@ -10803,7 +10803,7 @@ } }, "displayName": "Wear OS 4 ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-android-wear-arm64-v8a", "path": "system-images/android-33/android-wear/arm64-v8a", @@ -10847,7 +10847,7 @@ } }, "displayName": "Wear OS 4 Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-android-wear-x86_64", "path": "system-images/android-33/android-wear/x86_64", @@ -10898,7 +10898,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-default-arm64-v8a", "path": "system-images/android-33/default/arm64-v8a", @@ -10947,7 +10947,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-default-x86_64", "path": "system-images/android-33/default/x86_64", @@ -11008,7 +11008,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-33-google_apis-arm64-v8a", "path": "system-images/android-33/google_apis/arm64-v8a", @@ -11075,7 +11075,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-google_apis-x86_64", "path": "system-images/android-33/google_apis/x86_64", @@ -11144,7 +11144,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-33-google_apis_playstore-arm64-v8a", "path": "system-images/android-33/google_apis_playstore/arm64-v8a", @@ -11211,7 +11211,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-33-google_apis_playstore-x86_64", "path": "system-images/android-33/google_apis_playstore/x86_64", @@ -11286,7 +11286,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-33x-google_apis_playstore-arm64-v8a", "path": "system-images/android-33-ext4/google_apis_playstore/arm64-v8a", @@ -11335,7 +11335,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-33x-google_apis_playstore-x86_64", "path": "system-images/android-33-ext4/google_apis_playstore/x86_64", @@ -11398,7 +11398,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-android-tv-arm64-v8a", "path": "system-images/android-34/android-tv/arm64-v8a", @@ -11458,7 +11458,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-android-tv-x86", "path": "system-images/android-34/android-tv/x86", @@ -11498,7 +11498,7 @@ } ], "displayName": "Wear OS 5 ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-android-wear-arm64-v8a", "path": "system-images/android-34/android-wear/arm64-v8a", @@ -11535,7 +11535,7 @@ } ], "displayName": "Wear OS 5 Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-android-wear-x86_64", "path": "system-images/android-34/android-wear/x86_64", @@ -11586,7 +11586,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-default-arm64-v8a", "path": "system-images/android-34/default/arm64-v8a", @@ -11635,7 +11635,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-default-x86_64", "path": "system-images/android-34/default/x86_64", @@ -11696,7 +11696,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-34-google_apis-arm64-v8a", "path": "system-images/android-34/google_apis/arm64-v8a", @@ -11764,7 +11764,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-google_apis-x86_64", "path": "system-images/android-34/google_apis/x86_64", @@ -11834,7 +11834,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-34-google_apis_playstore-arm64-v8a", "path": "system-images/android-34/google_apis_playstore/arm64-v8a", @@ -11903,7 +11903,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34-google_apis_playstore-x86_64", "path": "system-images/android-34/google_apis_playstore/x86_64", @@ -11966,7 +11966,7 @@ } }, "displayName": "Android Automotive with Google APIs arm64-v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34x-android-automotive-arm64-v8a", "path": "system-images/android-34-ext9/android-automotive/arm64-v8a", @@ -12019,7 +12019,7 @@ } }, "displayName": "Android Automotive with Google APIs x86_64 System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34x-android-automotive-x86_64", "path": "system-images/android-34-ext9/android-automotive/x86_64", @@ -12088,7 +12088,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-34x-google_apis_playstore-arm64-v8a", "path": "system-images/android-34-ext12/google_apis_playstore/arm64-v8a", @@ -12137,7 +12137,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-34x-google_apis_playstore-x86_64", "path": "system-images/android-34-ext12/google_apis_playstore/x86_64", @@ -12178,7 +12178,7 @@ } ], "displayName": "Wear OS 5.1 - Preview ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-35-android-wear-arm64-v8a", "path": "system-images/android-35/android-wear/arm64-v8a", @@ -12210,7 +12210,7 @@ } ], "displayName": "Wear OS 5.1 - Preview Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "system-image-35-android-wear-x86_64", "path": "system-images/android-35/android-wear/x86_64", @@ -12256,7 +12256,7 @@ } }, "displayName": "ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35-default-arm64-v8a", "path": "system-images/android-35/default/arm64-v8a", @@ -12301,7 +12301,7 @@ } }, "displayName": "Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35-default-x86_64", "path": "system-images/android-35/default/x86_64", @@ -12348,7 +12348,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-35-google_apis-arm64-v8a", "path": "system-images/android-35/google_apis/arm64-v8a", @@ -12406,7 +12406,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35-google_apis-x86_64", "path": "system-images/android-35/google_apis/x86_64", @@ -12466,7 +12466,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-35-google_apis_playstore-arm64-v8a", "path": "system-images/android-35/google_apis_playstore/arm64-v8a", @@ -12524,7 +12524,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35-google_apis_playstore-x86_64", "path": "system-images/android-35/google_apis_playstore/x86_64", @@ -12584,7 +12584,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-35-page_size_16kb-arm64-v8a", "path": "system-images/android-35/google_apis_playstore_ps16k/arm64-v8a", @@ -12646,7 +12646,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35-page_size_16kb-x86_64", "path": "system-images/android-35/google_apis_playstore_ps16k/x86_64", @@ -12688,6 +12688,114 @@ } }, "35x": { + "android-automotive": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "7062de5c4d849728d9e5e06b1f189c1dd1e341e4", + "size": 1485616113, + "url": "https://dl.google.com/android/repository/sys-img/android-automotive/arm64-v8a-35-ext15_playstore_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "36", + "micro:2": "1", + "minor:1": "3" + } + } + }, + "displayName": "Android Automotive with Google APIs arm64-v8a System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-35x-android-automotive-arm64-v8a", + "path": "system-images/android-35-ext15/android-automotive/arm64-v8a", + "revision": "35x-android-automotive-arm64-v8a", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:6": "arm64-v8a", + "api-level:0": "35x", + "base-extension:2": "false", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "15", + "tag:3": { + "display:1": "Automotive", + "id:0": "android-automotive" + }, + "tag:4": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "7487c1fca63109186fdbce4f50e67c228b6a0db1", + "size": 1537658008, + "url": "https://dl.google.com/android/repository/sys-img/android-automotive/x86_64-35-ext15_playstore_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "36", + "micro:2": "1", + "minor:1": "3" + } + } + }, + "displayName": "Android Automotive with Google APIs x86_64 System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-35x-android-automotive-x86_64", + "path": "system-images/android-35-ext15/android-automotive/x86_64", + "revision": "35x-android-automotive-x86_64", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:6": "x86_64", + "api-level:0": "35x", + "base-extension:2": "false", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "15", + "tag:3": { + "display:1": "Automotive", + "id:0": "android-automotive" + }, + "tag:4": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + }, "android-wear": { "arm64-v8a": { "archives": [ @@ -12700,7 +12808,7 @@ } ], "displayName": "Wear OS 5.1 ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35x-android-wear-arm64-v8a", "path": "system-images/android-35-ext15/android-wear/arm64-v8a", @@ -12733,7 +12841,7 @@ } ], "displayName": "Wear OS 5.1 Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35x-android-wear-x86_64", "path": "system-images/android-35-ext15/android-wear/x86_64", @@ -12780,7 +12888,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-35x-google_apis-arm64-v8a", "path": "system-images/android-35-ext15/google_apis/arm64-v8a", @@ -12829,7 +12937,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35x-google_apis-x86_64", "path": "system-images/android-35-ext15/google_apis/x86_64", @@ -12880,7 +12988,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-35x-google_apis_playstore-arm64-v8a", "path": "system-images/android-35-ext15/google_apis_playstore/arm64-v8a", @@ -12929,7 +13037,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-35x-google_apis_playstore-x86_64", "path": "system-images/android-35-ext15/google_apis_playstore/x86_64", @@ -12982,7 +13090,7 @@ } }, "displayName": "Android TV ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-android-tv-arm64-v8a", "path": "system-images/android-36/android-tv/arm64-v8a", @@ -13027,7 +13135,7 @@ } }, "displayName": "Android TV Intel x86 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-android-tv-x86", "path": "system-images/android-36/android-tv/x86", @@ -13062,7 +13170,7 @@ } ], "displayName": "Wear OS 6.0 ARM 64 v8a System Image (signed)", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-android-wear-arm64-v8a", "path": "system-images/android-36/android-wear-signed/arm64-v8a", @@ -13095,7 +13203,7 @@ } ], "displayName": "Wear OS 6.0 Intel x86_64 Atom System Image (signed)", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-android-wear-x86_64", "path": "system-images/android-36/android-wear-signed/x86_64", @@ -13118,6 +13226,98 @@ } } }, + "default": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "62ad6714df790f89c8a8ad32552ffe20bb16fe87", + "size": 810736863, + "url": "https://dl.google.com/android/repository/sys-img/android/arm64-v8a-36_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "ARM 64 v8a System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-36-default-arm64-v8a", + "path": "system-images/android-36/default/arm64-v8a", + "revision": "36-default-arm64-v8a", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:4": "arm64-v8a", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "Default Android System Image", + "id:0": "default" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "829c076e8ff448a336097ae25a355b495ba36e2c", + "size": 844217077, + "url": "https://dl.google.com/android/repository/sys-img/android/x86_64-36_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Intel x86_64 Atom System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-36-default-x86_64", + "path": "system-images/android-36/default/x86_64", + "revision": "36-default-x86_64", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:4": "x86_64", + "api-level:0": "36", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "17", + "tag:3": { + "display:1": "Default Android System Image", + "id:0": "default" + } + } + } + }, "google_apis": { "arm64-v8a": { "archives": [ @@ -13142,7 +13342,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36-google_apis-arm64-v8a", "path": "system-images/android-36/google_apis/arm64-v8a", @@ -13191,7 +13391,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-google_apis-x86_64", "path": "system-images/android-36/google_apis/x86_64", @@ -13242,7 +13442,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36-google_apis_playstore-arm64-v8a", "path": "system-images/android-36/google_apis_playstore/arm64-v8a", @@ -13291,7 +13491,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-google_apis_playstore-x86_64", "path": "system-images/android-36/google_apis_playstore/x86_64", @@ -13342,7 +13542,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36-page_size_16kb-arm64-v8a", "path": "system-images/android-36/google_apis_playstore_ps16k/arm64-v8a", @@ -13395,7 +13595,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36-page_size_16kb-x86_64", "path": "system-images/android-36/google_apis_playstore_ps16k/x86_64", @@ -13428,15 +13628,83 @@ } }, "36.1": { + "android-wear": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "745dd39a3a18e59b7636b9cdfc8326de3c42f989", + "size": 1258760868, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/arm64-v8a-36.1_signed_r01.zip" + } + ], + "displayName": "Wear OS 6.1 ARM 64 v8a System Image (signed)", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-36.1-android-wear-arm64-v8a", + "path": "system-images/android-36.1/android-wear-signed/arm64-v8a", + "revision": "36.1-android-wear-arm64-v8a", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "abi:4": "arm64-v8a", + "api-level:0": "36.1", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "20", + "tag:3": { + "display:1": "Wear OS 6.1", + "id:0": "android-wear" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "4cf09d620a70295b46de2ad16c0104589f0a4737", + "size": 1234838800, + "url": "https://dl.google.com/android/repository/sys-img/android-wear/x86_64-36.1_signed_r01.zip" + } + ], + "displayName": "Wear OS 6.1 Intel x86_64 Atom System Image (signed)", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-36.1-android-wear-x86_64", + "path": "system-images/android-36.1/android-wear-signed/x86_64", + "revision": "36.1-android-wear-x86_64", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "abi:4": "x86_64", + "api-level:0": "36.1", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "20", + "tag:3": { + "display:1": "Wear OS 6.1", + "id:0": "android-wear" + } + } + } + }, "google_apis": { "arm64-v8a": { "archives": [ { "arch": "all", "os": "all", - "sha1": "4b3c296dfa125a03944317da5c3b9c852e384a95", - "size": 1931618675, - "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-36.1_r03.zip" + "sha1": "da1c7ab56c651637cef86736d2ef59ef2bf52549", + "size": 1933985844, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-36.1_r04.zip" } ], "dependencies": { @@ -13451,17 +13719,18 @@ } } }, - "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google APIs ARM 64 v8a System Image", + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36.1-google_apis-arm64-v8a", - "path": "system-images/android-36.1/google_apis/arm64-v8a", + "path": "system-images/android-36.1/google_apis_ps16k/arm64-v8a", "revision": "36.1-google_apis-arm64-v8a", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:5": "arm64-v8a", + "abi:6": "arm64-v8a", "api-level:0": "36.1", "base-extension:2": "true", "element-attributes": { @@ -13472,9 +13741,17 @@ "display:1": "Google APIs", "id:0": "google_apis" }, + "tag:4": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, "vendor:4": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" } } }, @@ -13483,9 +13760,9 @@ { "arch": "all", "os": "all", - "sha1": "e7c2ee3e0efcdc79e13b8c40d93629c83741c143", - "size": 1958060347, - "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-36.1_r03.zip" + "sha1": "15261872d5f0ae4b5728faefd0380d51b61a5b23", + "size": 1960532087, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-36.1_r04.zip" } ], "dependencies": { @@ -13500,17 +13777,18 @@ } } }, - "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google APIs Intel x86_64 Atom System Image", + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36.1-google_apis-x86_64", - "path": "system-images/android-36.1/google_apis/x86_64", + "path": "system-images/android-36.1/google_apis_ps16k/x86_64", "revision": "36.1-google_apis-x86_64", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:5": "x86_64", + "abi:6": "x86_64", "api-level:0": "36.1", "base-extension:2": "true", "element-attributes": { @@ -13521,9 +13799,17 @@ "display:1": "Google APIs", "id:0": "google_apis" }, + "tag:4": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, "vendor:4": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" } } } @@ -13534,9 +13820,9 @@ { "arch": "all", "os": "all", - "sha1": "240c7164dd250be3c096dd62801e96f7b144bc2f", - "size": 1955944487, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-36.1_r03.zip" + "sha1": "193d86bad80d9ff79fe4272304f3193e7c097e1e", + "size": 1958370801, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-36.1_r04.zip" } ], "dependencies": { @@ -13551,17 +13837,18 @@ } } }, - "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36.1-google_apis_playstore-arm64-v8a", - "path": "system-images/android-36.1/google_apis_playstore/arm64-v8a", + "path": "system-images/android-36.1/google_apis_playstore_ps16k/arm64-v8a", "revision": "36.1-google_apis_playstore-arm64-v8a", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:5": "arm64-v8a", + "abi:6": "arm64-v8a", "api-level:0": "36.1", "base-extension:2": "true", "element-attributes": { @@ -13569,12 +13856,20 @@ }, "extension-level:1": "20", "tag:3": { - "display:1": "Google Play", + "display:1": "Google APIs PlayStore", "id:0": "google_apis_playstore" }, + "tag:4": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, "vendor:4": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" } } }, @@ -13583,9 +13878,9 @@ { "arch": "all", "os": "all", - "sha1": "4931dd84c74db66b29c934b313d407faf3298921", - "size": 1998865059, - "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-36.1_r03.zip" + "sha1": "ab58abb8dbbc8a00c9437c30c210e8b6a5286795", + "size": 2001299692, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-36.1_r04.zip" } ], "dependencies": { @@ -13600,17 +13895,18 @@ } } }, - "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36.1-google_apis_playstore-x86_64", - "path": "system-images/android-36.1/google_apis_playstore/x86_64", + "path": "system-images/android-36.1/google_apis_playstore_ps16k/x86_64", "revision": "36.1-google_apis_playstore-x86_64", "revision-details": { - "major:0": "3" + "major:0": "4" }, "type-details": { "abi:5": "x86_64", + "abi:6": "x86_64", "api-level:0": "36.1", "base-extension:2": "true", "element-attributes": { @@ -13618,12 +13914,20 @@ }, "extension-level:1": "20", "tag:3": { - "display:1": "Google Play", + "display:1": "Google APIs PlayStore", "id:0": "google_apis_playstore" }, + "tag:4": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, "vendor:4": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:5": { + "display:1": "Google Inc.", + "id:0": "google" } } } @@ -13762,7 +14066,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36x-google_apis-arm64-v8a", "path": "system-images/android-36-ext19/google_apis/arm64-v8a", @@ -13811,7 +14115,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36x-google_apis-x86_64", "path": "system-images/android-36-ext19/google_apis/x86_64", @@ -13862,7 +14166,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-36x-google_apis_playstore-arm64-v8a", "path": "system-images/android-36-ext19/google_apis_playstore/arm64-v8a", @@ -13911,7 +14215,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-36x-google_apis_playstore-x86_64", "path": "system-images/android-36-ext19/google_apis_playstore/x86_64", @@ -13939,6 +14243,240 @@ } } }, + "37.0": { + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "04ed7e1ab0cde1397365cc44b711686797e14d29", + "size": 2106860933, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-ps16k-37.0_r03.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google APIs ARM 64 v8a System Image", + "last-available-day": 20549, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-37.0-google_apis-arm64-v8a", + "path": "system-images/android-37.0/google_apis_ps16k/arm64-v8a", + "revision": "37.0-google_apis-arm64-v8a", + "revision-details": { + "major:0": "3" + }, + "type-details": { + "abi:7": "arm64-v8a", + "api-level:0": "37.0", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "22", + "tag:3": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "tag:4": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:5": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:6": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "b89a6686f9a9e9942d596bed45d422cbccb70c98", + "size": 2097719373, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-ps16k-37.0_r03.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google APIs Intel x86_64 Atom System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-37.0-google_apis-x86_64", + "path": "system-images/android-37.0/google_apis_ps16k/x86_64", + "revision": "37.0-google_apis-x86_64", + "revision-details": { + "major:0": "3" + }, + "type-details": { + "abi:7": "x86_64", + "api-level:0": "37.0", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "22", + "tag:3": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "tag:4": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:5": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:6": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + }, + "google_apis_playstore": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "af41f56168a8a0f8a8018b2afd9423b2f1303d35", + "size": 2221330318, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-playstore-ps16k-37.0_r03.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", + "last-available-day": 20549, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-37.0-google_apis_playstore-arm64-v8a", + "path": "system-images/android-37.0/google_apis_playstore_ps16k/arm64-v8a", + "revision": "37.0-google_apis_playstore-arm64-v8a", + "revision-details": { + "major:0": "3" + }, + "type-details": { + "abi:7": "arm64-v8a", + "api-level:0": "37.0", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "22", + "tag:3": { + "display:1": "Google APIs PlayStore", + "id:0": "google_apis_playstore" + }, + "tag:4": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, + "tag:5": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:6": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "f3f64bbefb58a681614f61de5a752795eff74b95", + "size": 2225510754, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-playstore-ps16k-37.0_r03.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-37.0-google_apis_playstore-x86_64", + "path": "system-images/android-37.0/google_apis_playstore_ps16k/x86_64", + "revision": "37.0-google_apis_playstore-x86_64", + "revision-details": { + "major:0": "3" + }, + "type-details": { + "abi:7": "x86_64", + "api-level:0": "37.0", + "base-extension:2": "true", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:1": "22", + "tag:3": { + "display:1": "Google APIs PlayStore", + "id:0": "google_apis_playstore" + }, + "tag:4": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, + "tag:5": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:6": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + } + }, "Baklava": { "google_apis": { "arm64-v8a": { @@ -13964,7 +14502,7 @@ } }, "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-Baklava-google_apis-arm64-v8a", "path": "system-images/android-36.0-Baklava/google_apis/arm64-v8a", @@ -14014,7 +14552,7 @@ } }, "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-Baklava-google_apis-x86_64", "path": "system-images/android-36.0-Baklava/google_apis/x86_64", @@ -14066,7 +14604,7 @@ } }, "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-Baklava-google_apis_playstore-arm64-v8a", "path": "system-images/android-36.0-Baklava/google_apis_playstore/arm64-v8a", @@ -14116,7 +14654,7 @@ } }, "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-Baklava-google_apis_playstore-x86_64", "path": "system-images/android-36.0-Baklava/google_apis_playstore/x86_64", @@ -14168,7 +14706,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-Baklava-page_size_16kb-arm64-v8a", "path": "system-images/android-36.0-Baklava/google_apis_playstore_ps16k/arm64-v8a", @@ -14222,7 +14760,7 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-Baklava-page_size_16kb-x86_64", "path": "system-images/android-36.0-Baklava/google_apis_playstore_ps16k/x86_64", @@ -14279,31 +14817,44 @@ } } }, - "displayName": "Google APIs ARM 64 v8a System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google APIs ARM 64 v8a System Image", + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-CANARY-google_apis-arm64-v8a", - "path": "system-images/android-CANARY/google_apis/arm64-v8a", + "path": "system-images/android-CANARY/google_apis_ps16k/arm64-v8a", "revision": "CANARY-google_apis-arm64-v8a", "revision-details": { - "major:0": "5" + "major:0": "9" }, "type-details": { "abi:6": "arm64-v8a", + "abi:8": "arm64-v8a", "api-level:0": "36.1", "base-extension:3": "true", "codename:1": "CANARY", "element-attributes": { "xsi:type": "ns12:sysImgDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "21", "tag:4": { "display:1": "Google APIs", "id:0": "google_apis" }, + "tag:5": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, "vendor:5": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" } } }, @@ -14329,31 +14880,44 @@ } } }, - "displayName": "Google APIs Intel x86_64 Atom System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google APIs Intel x86_64 Atom System Image", + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-CANARY-google_apis-x86_64", - "path": "system-images/android-CANARY/google_apis/x86_64", + "path": "system-images/android-CANARY/google_apis_ps16k/x86_64", "revision": "CANARY-google_apis-x86_64", "revision-details": { - "major:0": "5" + "major:0": "9" }, "type-details": { "abi:6": "x86_64", + "abi:8": "x86_64", "api-level:0": "36.1", "base-extension:3": "true", "codename:1": "CANARY", "element-attributes": { "xsi:type": "ns12:sysImgDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "21", "tag:4": { "display:1": "Google APIs", "id:0": "google_apis" }, + "tag:5": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, "vendor:5": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" } } } @@ -14381,31 +14945,44 @@ } } }, - "displayName": "Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-CANARY-google_apis_playstore-arm64-v8a", - "path": "system-images/android-CANARY/google_apis_playstore/arm64-v8a", + "path": "system-images/android-CANARY/google_apis_playstore_ps16k/arm64-v8a", "revision": "CANARY-google_apis_playstore-arm64-v8a", "revision-details": { - "major:0": "5" + "major:0": "9" }, "type-details": { "abi:6": "arm64-v8a", + "abi:8": "arm64-v8a", "api-level:0": "36.1", "base-extension:3": "true", "codename:1": "CANARY", "element-attributes": { "xsi:type": "ns12:sysImgDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "21", "tag:4": { - "display:1": "Google Play", + "display:1": "Google APIs PlayStore", "id:0": "google_apis_playstore" }, + "tag:5": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, "vendor:5": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" } } }, @@ -14431,31 +15008,44 @@ } } }, - "displayName": "Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, + "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", + "last-available-day": 20549, "license": "android-sdk-license", "name": "system-image-CANARY-google_apis_playstore-x86_64", - "path": "system-images/android-CANARY/google_apis_playstore/x86_64", + "path": "system-images/android-CANARY/google_apis_playstore_ps16k/x86_64", "revision": "CANARY-google_apis_playstore-x86_64", "revision-details": { - "major:0": "5" + "major:0": "9" }, "type-details": { "abi:6": "x86_64", + "abi:8": "x86_64", "api-level:0": "36.1", "base-extension:3": "true", "codename:1": "CANARY", "element-attributes": { "xsi:type": "ns12:sysImgDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "21", "tag:4": { - "display:1": "Google Play", + "display:1": "Google APIs PlayStore", "id:0": "google_apis_playstore" }, + "tag:5": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, "vendor:5": { "display:1": "Google Inc.", "id:0": "google" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" } } } @@ -14484,23 +15074,23 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-arm-dbt-license", "name": "system-image-CANARY-page_size_16kb-arm64-v8a", - "path": "system-images/android-CANARY/google_apis_playstore_ps16k/arm64-v8a", + "path": "system-images/android-36.0-CANARY/google_apis_playstore_ps16k/arm64-v8a", "revision": "CANARY-page_size_16kb-arm64-v8a", "revision-details": { - "major:0": "6" + "major:0": "3" }, "type-details": { "abi:7": "arm64-v8a", - "api-level:0": "36.1", + "api-level:0": "36.0", "base-extension:3": "true", "codename:1": "CANARY", "element-attributes": { "xsi:type": "ns12:sysImgDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "19", "tag:4": { "display:1": "16 KB Page Size", "id:0": "page_size_16kb" @@ -14538,23 +15128,23 @@ } }, "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", - "last-available-day": 20429, - "license": "android-sdk-license", + "last-available-day": 20549, + "license": "android-sdk-preview-license", "name": "system-image-CANARY-page_size_16kb-x86_64", - "path": "system-images/android-CANARY/google_apis_playstore_ps16k/x86_64", + "path": "system-images/android-36.0-CANARY/google_apis_playstore_ps16k/x86_64", "revision": "CANARY-page_size_16kb-x86_64", "revision-details": { - "major:0": "6" + "major:0": "3" }, "type-details": { "abi:7": "x86_64", - "api-level:0": "36.1", + "api-level:0": "36.0", "base-extension:3": "true", "codename:1": "CANARY", "element-attributes": { "xsi:type": "ns12:sysImgDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "19", "tag:4": { "display:1": "16 KB Page Size", "id:0": "page_size_16kb" @@ -14571,6 +15161,244 @@ } } }, + "CinnamonBun": { + "google_apis": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "f86850ed7f5f6f8833ead78c6eec75eeb23ddea4", + "size": 2083840044, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/arm64-v8a-ps16k-CinnamonBun_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google APIs ARM 64 v8a System Image", + "last-available-day": 20549, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-CinnamonBun-google_apis-arm64-v8a", + "path": "system-images/android-CinnamonBun/google_apis_ps16k/arm64-v8a", + "revision": "CinnamonBun-google_apis-arm64-v8a", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:8": "arm64-v8a", + "api-level:0": "36.1", + "base-extension:3": "true", + "codename:1": "CinnamonBun", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:2": "21", + "tag:4": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "tag:5": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "99f81267df3c5c0d978609a5b2b286034bd93d3e", + "size": 2073828390, + "url": "https://dl.google.com/android/repository/sys-img/google_apis/x86_64-ps16k-CinnamonBun_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google APIs Intel x86_64 Atom System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-CinnamonBun-google_apis-x86_64", + "path": "system-images/android-CinnamonBun/google_apis_ps16k/x86_64", + "revision": "CinnamonBun-google_apis-x86_64", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:8": "x86_64", + "api-level:0": "36.1", + "base-extension:3": "true", + "codename:1": "CinnamonBun", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:2": "21", + "tag:4": { + "display:1": "Google APIs", + "id:0": "google_apis" + }, + "tag:5": { + "display:1": "16 KB Page Size", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + }, + "google_apis_playstore": { + "arm64-v8a": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "ba064e28780a5a156a85116d741234eac4e7bb37", + "size": 2171953354, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/arm64-v8a-playstore-ps16k-CinnamonBun_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google Play ARM 64 v8a System Image", + "last-available-day": 20549, + "license": "android-sdk-arm-dbt-license", + "name": "system-image-CinnamonBun-google_apis_playstore-arm64-v8a", + "path": "system-images/android-CinnamonBun/google_apis_playstore_ps16k/arm64-v8a", + "revision": "CinnamonBun-google_apis_playstore-arm64-v8a", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:8": "arm64-v8a", + "api-level:0": "36.1", + "base-extension:3": "true", + "codename:1": "CinnamonBun", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:2": "21", + "tag:4": { + "display:1": "Google APIs PlayStore", + "id:0": "google_apis_playstore" + }, + "tag:5": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + }, + "x86_64": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "dc918be7e86d342ed7e3e174bbb62223ac8a06a9", + "size": 2173131758, + "url": "https://dl.google.com/android/repository/sys-img/google_apis_playstore/x86_64-playstore-ps16k-CinnamonBun_r02.zip" + } + ], + "dependencies": { + "dependency:0": { + "element-attributes": { + "path": "emulator" + }, + "min-revision:0": { + "major:0": "35", + "micro:2": "9", + "minor:1": "4" + } + } + }, + "displayName": "Pre-Release 16 KB Page Size Google Play Intel x86_64 Atom System Image", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "system-image-CinnamonBun-google_apis_playstore-x86_64", + "path": "system-images/android-CinnamonBun/google_apis_playstore_ps16k/x86_64", + "revision": "CinnamonBun-google_apis_playstore-x86_64", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "abi:8": "x86_64", + "api-level:0": "36.1", + "base-extension:3": "true", + "codename:1": "CinnamonBun", + "element-attributes": { + "xsi:type": "ns12:sysImgDetailsType" + }, + "extension-level:2": "21", + "tag:4": { + "display:1": "Google APIs PlayStore", + "id:0": "google_apis_playstore" + }, + "tag:5": { + "display:1": "Page Size 16KB", + "id:0": "page_size_16kb" + }, + "tag:6": { + "display:1": "AI Glasses Compatible", + "id:0": "ai_glasses_compatible" + }, + "vendor:7": { + "display:1": "Google Inc.", + "id:0": "google" + } + } + } + } + }, "TiramisuPrivacySandbox": { "google_apis": { "arm64-v8a": { @@ -15145,18 +15973,18 @@ } }, "latest": { - "build-tools": "36.1.0", + "build-tools": "37.0.0", "cmake": "4.1.2", - "cmdline-tools": "19.0", - "emulator": "36.3.10", + "cmdline-tools": "20.0", + "emulator": "36.5.10", "ndk": "29.0.14206865", "ndk-bundle": "22.1.7171670", - "platform-tools": "36.0.0", - "platforms": "36.1", + "platform-tools": "37.0.0", + "platforms": "37.0", "skiaparser": "8", "sources": "36.1", "tools": "26.1.1", - "fingerprint": "aeb6a1bcc1fd6600" + "fingerprint": "bf29939be4d269fd" }, "licenses": { "android-googletv-license": [ @@ -15224,7 +16052,7 @@ } }, "displayName": "Android SDK Build-Tools 17", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15273,7 +16101,7 @@ } }, "displayName": "Android SDK Build-Tools 18.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15322,7 +16150,7 @@ } }, "displayName": "Android SDK Build-Tools 18.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15371,7 +16199,7 @@ } }, "displayName": "Android SDK Build-Tools 18.1.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15420,7 +16248,7 @@ } }, "displayName": "Android SDK Build-Tools 19", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15469,7 +16297,7 @@ } }, "displayName": "Android SDK Build-Tools 19.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15518,7 +16346,7 @@ } }, "displayName": "Android SDK Build-Tools 19.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15567,7 +16395,7 @@ } }, "displayName": "Android SDK Build-Tools 19.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15616,7 +16444,7 @@ } }, "displayName": "Android SDK Build-Tools 19.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/19.1.0", @@ -15664,7 +16492,7 @@ } }, "displayName": "Android SDK Build-Tools 20", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/20.0.0", @@ -15712,7 +16540,7 @@ } }, "displayName": "Android SDK Build-Tools 21", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15761,7 +16589,7 @@ } }, "displayName": "Android SDK Build-Tools 21.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15810,7 +16638,7 @@ } }, "displayName": "Android SDK Build-Tools 21.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15859,7 +16687,7 @@ } }, "displayName": "Android SDK Build-Tools 21.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15908,7 +16736,7 @@ } }, "displayName": "Android SDK Build-Tools 21.1.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -15957,7 +16785,7 @@ } }, "displayName": "Android SDK Build-Tools 21.1.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/21.1.2", @@ -16005,7 +16833,7 @@ } }, "displayName": "Android SDK Build-Tools 22", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -16054,7 +16882,7 @@ } }, "displayName": "Android SDK Build-Tools 22.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/22.0.1", @@ -16102,7 +16930,7 @@ } }, "displayName": "Android SDK Build-Tools 23", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "obsolete": "true", @@ -16151,7 +16979,7 @@ } }, "displayName": "Android SDK Build-Tools 23.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/23.0.1", @@ -16199,7 +17027,7 @@ } }, "displayName": "Android SDK Build-Tools 23.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/23.0.2", @@ -16247,7 +17075,7 @@ } }, "displayName": "Android SDK Build-Tools 23.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/23.0.3", @@ -16295,7 +17123,7 @@ } }, "displayName": "Android SDK Build-Tools 24", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.0", @@ -16343,7 +17171,7 @@ } }, "displayName": "Android SDK Build-Tools 24.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.1", @@ -16391,7 +17219,7 @@ } }, "displayName": "Android SDK Build-Tools 24.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.2", @@ -16439,7 +17267,7 @@ } }, "displayName": "Android SDK Build-Tools 24.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/24.0.3", @@ -16487,7 +17315,7 @@ } }, "displayName": "Android SDK Build-Tools 25", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.0", @@ -16535,7 +17363,7 @@ } }, "displayName": "Android SDK Build-Tools 25.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.1", @@ -16583,7 +17411,7 @@ } }, "displayName": "Android SDK Build-Tools 25.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.2", @@ -16631,7 +17459,7 @@ } }, "displayName": "Android SDK Build-Tools 25.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/25.0.3", @@ -16679,7 +17507,7 @@ } }, "displayName": "Android SDK Build-Tools 26", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.0", @@ -16727,7 +17555,7 @@ } }, "displayName": "Android SDK Build-Tools 26.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.1", @@ -16775,7 +17603,7 @@ } }, "displayName": "Android SDK Build-Tools 26.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.2", @@ -16823,7 +17651,7 @@ } }, "displayName": "Android SDK Build-Tools 26.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/26.0.3", @@ -16871,7 +17699,7 @@ } }, "displayName": "Android SDK Build-Tools 27", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.0", @@ -16919,7 +17747,7 @@ } }, "displayName": "Android SDK Build-Tools 27.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.1", @@ -16967,7 +17795,7 @@ } }, "displayName": "Android SDK Build-Tools 27.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.2", @@ -17015,7 +17843,7 @@ } }, "displayName": "Android SDK Build-Tools 27.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/27.0.3", @@ -17063,7 +17891,7 @@ } }, "displayName": "Android SDK Build-Tools 28", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.0", @@ -17111,7 +17939,7 @@ } }, "displayName": "Android SDK Build-Tools 28-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -17161,7 +17989,7 @@ } }, "displayName": "Android SDK Build-Tools 28-rc2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -17211,7 +18039,7 @@ } }, "displayName": "Android SDK Build-Tools 28.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.1", @@ -17259,7 +18087,7 @@ } }, "displayName": "Android SDK Build-Tools 28.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.2", @@ -17307,7 +18135,7 @@ } }, "displayName": "Android SDK Build-Tools 28.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/28.0.3", @@ -17355,7 +18183,7 @@ } }, "displayName": "Android SDK Build-Tools 29", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.0", @@ -17403,7 +18231,7 @@ } }, "displayName": "Android SDK Build-Tools 29-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -17453,7 +18281,7 @@ } }, "displayName": "Android SDK Build-Tools 29-rc2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -17503,7 +18331,7 @@ } }, "displayName": "Android SDK Build-Tools 29-rc3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "obsolete": "true", @@ -17553,7 +18381,7 @@ } }, "displayName": "Android SDK Build-Tools 29.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.1", @@ -17601,7 +18429,7 @@ } }, "displayName": "Android SDK Build-Tools 29.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.2", @@ -17649,7 +18477,7 @@ } }, "displayName": "Android SDK Build-Tools 29.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/29.0.3", @@ -17697,7 +18525,7 @@ } }, "displayName": "Android SDK Build-Tools 30", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.0", @@ -17745,7 +18573,7 @@ } }, "displayName": "Android SDK Build-Tools 30.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.1", @@ -17793,7 +18621,7 @@ } }, "displayName": "Android SDK Build-Tools 30.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.2", @@ -17841,7 +18669,7 @@ } }, "displayName": "Android SDK Build-Tools 30.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/30.0.3", @@ -17882,7 +18710,7 @@ } ], "displayName": "Android SDK Build-Tools 31", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/31.0.0", @@ -17923,7 +18751,7 @@ } ], "displayName": "Android SDK Build-Tools 32", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/32.0.0", @@ -17964,7 +18792,7 @@ } ], "displayName": "Android SDK Build-Tools 32.1-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/32.1.0-rc1", @@ -18006,7 +18834,7 @@ } ], "displayName": "Android SDK Build-Tools 33", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.0", @@ -18047,7 +18875,7 @@ } ], "displayName": "Android SDK Build-Tools 33.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.1", @@ -18088,7 +18916,7 @@ } ], "displayName": "Android SDK Build-Tools 33.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.2", @@ -18129,7 +18957,7 @@ } ], "displayName": "Android SDK Build-Tools 33.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/33.0.3", @@ -18170,7 +18998,7 @@ } ], "displayName": "Android SDK Build-Tools 34", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/34.0.0", @@ -18211,7 +19039,7 @@ } ], "displayName": "Android SDK Build-Tools 34-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/34.0.0-rc1", @@ -18253,7 +19081,7 @@ } ], "displayName": "Android SDK Build-Tools 34-rc2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/34.0.0-rc2", @@ -18295,7 +19123,7 @@ } ], "displayName": "Android SDK Build-Tools 34-rc3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/34.0.0-rc3", @@ -18337,7 +19165,7 @@ } ], "displayName": "Android SDK Build-Tools 35", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/35.0.0", @@ -18378,7 +19206,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc1", @@ -18420,7 +19248,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc2", @@ -18462,7 +19290,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc3", @@ -18504,7 +19332,7 @@ } ], "displayName": "Android SDK Build-Tools 35-rc4", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/35.0.0-rc4", @@ -18546,7 +19374,7 @@ } ], "displayName": "Android SDK Build-Tools 35.0.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/35.0.1", @@ -18587,7 +19415,7 @@ } ], "displayName": "Android SDK Build-Tools 36", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/36.0.0", @@ -18628,7 +19456,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc1", @@ -18670,7 +19498,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc3", @@ -18712,7 +19540,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc4", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc4", @@ -18754,7 +19582,7 @@ } ], "displayName": "Android SDK Build-Tools 36-rc5", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.0.0-rc5", @@ -18796,7 +19624,7 @@ } ], "displayName": "Android SDK Build-Tools 36.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "build-tools", "path": "build-tools/36.1.0", @@ -18837,7 +19665,7 @@ } ], "displayName": "Android SDK Build-Tools 36.1-rc1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "build-tools", "path": "build-tools/36.1.0-rc1", @@ -18853,6 +19681,131 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "37.0.0": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "70954e99f4c3d9d46ee70fa32624672fe7cd6ebe", + "size": 66135704, + "url": "https://dl.google.com/android/repository/build-tools_r37_linux.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "e9c97e26b5b5678002e9d3fed632c841ae62d99f", + "size": 61077164, + "url": "https://dl.google.com/android/repository/build-tools_r37_windows.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "eb080751b2b2028eb3604f571027d6f7b3c46321", + "size": 81933386, + "url": "https://dl.google.com/android/repository/build-tools_r37_macosx.zip" + } + ], + "displayName": "Android SDK Build-Tools 37", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "build-tools", + "path": "build-tools/37.0.0", + "revision": "37.0.0", + "revision-details": { + "major:0": "37", + "micro:2": "0", + "minor:1": "0" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, + "37.0.0-rc1": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "c036221340ef6d39ad7adae6befc260beaa54085", + "size": 64355745, + "url": "https://dl.google.com/android/repository/build-tools_r37-rc1_linux.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "70447369a17f8b4687e7237733d024dfb8c5a797", + "size": 59343079, + "url": "https://dl.google.com/android/repository/build-tools_r37-rc1_windows.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "0e6aad38e1ad4d4c6ac24332942a2007f4b50779", + "size": 80130907, + "url": "https://dl.google.com/android/repository/build-tools_r37-rc1_macosx.zip" + } + ], + "displayName": "Android SDK Build-Tools 37-rc1", + "last-available-day": 20549, + "license": "android-sdk-preview-license", + "name": "build-tools", + "path": "build-tools/37.0.0-rc1", + "revision": "37.0.0-rc1", + "revision-details": { + "major:0": "37", + "micro:2": "0", + "minor:1": "0", + "preview:3": "1" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, + "37.0.0-rc2": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "3ffc47b1aefa6b7c457e0d84958a804ba5b8fc83", + "size": 64585510, + "url": "https://dl.google.com/android/repository/build-tools_r37-rc2_linux.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "c76a22fee5b2f04b355ecd13e84abd594f83841f", + "size": 59571314, + "url": "https://dl.google.com/android/repository/build-tools_r37-rc2_windows.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "88c354b73d57df160d59b5935e2716bbb570c60e", + "size": 80361572, + "url": "https://dl.google.com/android/repository/build-tools_r37-rc2_macosx.zip" + } + ], + "displayName": "Android SDK Build-Tools 37-rc2", + "last-available-day": 20549, + "license": "android-sdk-preview-license", + "name": "build-tools", + "path": "build-tools/37.0.0-rc2", + "revision": "37.0.0-rc2", + "revision-details": { + "major:0": "37", + "micro:2": "0", + "minor:1": "0", + "preview:3": "2" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "cmake": { @@ -18888,7 +19841,7 @@ } ], "displayName": "CMake 3.10.2.4988404", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.10.2.4988404", @@ -18929,7 +19882,7 @@ } ], "displayName": "CMake 3.18.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.18.1", @@ -18970,7 +19923,7 @@ } ], "displayName": "CMake 3.22.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.22.1", @@ -19011,7 +19964,7 @@ } ], "displayName": "CMake 3.30.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.30.3", @@ -19052,7 +20005,7 @@ } ], "displayName": "CMake 3.30.4", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.30.4", @@ -19093,7 +20046,7 @@ } ], "displayName": "CMake 3.30.5", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.30.5", @@ -19134,7 +20087,7 @@ } ], "displayName": "CMake 3.31.0", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.0", @@ -19175,7 +20128,7 @@ } ], "displayName": "CMake 3.31.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.1", @@ -19216,7 +20169,7 @@ } ], "displayName": "CMake 3.31.4", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.4", @@ -19257,7 +20210,7 @@ } ], "displayName": "CMake 3.31.5", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.5", @@ -19298,7 +20251,7 @@ } ], "displayName": "CMake 3.31.6", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.31.6", @@ -19346,7 +20299,7 @@ } ], "displayName": "CMake 3.6.4111459", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/3.6.4111459", @@ -19387,7 +20340,7 @@ } ], "displayName": "CMake 4.0.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/4.0.2", @@ -19428,7 +20381,7 @@ } ], "displayName": "CMake 4.0.3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/4.0.3", @@ -19469,7 +20422,7 @@ } ], "displayName": "CMake 4.1.0", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/4.1.0", @@ -19510,7 +20463,7 @@ } ], "displayName": "CMake 4.1.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/4.1.1", @@ -19551,7 +20504,7 @@ } ], "displayName": "CMake 4.1.2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmake", "path": "cmake/4.1.2", @@ -19594,7 +20547,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/1.0", @@ -19634,7 +20587,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/10.0", @@ -19674,7 +20627,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/11.0", @@ -19714,7 +20667,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/12.0", @@ -19754,7 +20707,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/13.0", @@ -19794,7 +20747,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/13.0-rc01", @@ -19835,7 +20788,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/14.0-alpha01", @@ -19876,7 +20829,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/16.0", @@ -19916,7 +20869,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/16.0-alpha01", @@ -19957,7 +20910,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/17.0", @@ -19997,7 +20950,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/19.0", @@ -20037,7 +20990,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "cmdline-tools", "path": "cmdline-tools/19.0-alpha01", @@ -20078,7 +21031,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "obsolete": "true", @@ -20119,7 +21072,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/2.1", @@ -20134,6 +21087,46 @@ } } }, + "20.0": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "48833c34b761c10cb20bcd16582129395d121b27", + "size": 172789259, + "url": "https://dl.google.com/android/repository/commandlinetools-linux-14742923_latest.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "cc27cca4b84bfdbc7df17e3d0a01d0c640d8ee71", + "size": 150703968, + "url": "https://dl.google.com/android/repository/commandlinetools-mac-14742923_latest.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "16b3f45ddb3d85ea6bbe6a1c0b47146daf0db450", + "size": 150532528, + "url": "https://dl.google.com/android/repository/commandlinetools-win-14742923_latest.zip" + } + ], + "displayName": "Android SDK Command-line Tools", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "cmdline-tools", + "path": "cmdline-tools/20.0", + "revision": "20.0", + "revision-details": { + "major:0": "20", + "minor:1": "0" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, "3.0": { "archives": [ { @@ -20159,7 +21152,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/3.0", @@ -20199,7 +21192,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/4.0", @@ -20239,7 +21232,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/5.0", @@ -20279,7 +21272,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/6.0", @@ -20319,7 +21312,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/7.0", @@ -20359,7 +21352,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/8.0", @@ -20399,7 +21392,7 @@ } ], "displayName": "Android SDK Command-line Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "cmdline-tools", "path": "cmdline-tools/9.0", @@ -20416,44 +21409,6 @@ } }, "emulator": { - "34.1.19": { - "archives": [ - { - "os": "linux", - "sha1": "d6cc94109b081c5f6042dcb71a453144f7e62ce7", - "size": 249458354, - "url": "https://dl.google.com/android/repository/emulator-linux_x64-11525734.zip" - }, - { - "os": "macosx", - "sha1": "cc0736b8af11d1e74e03ab13dfc214217d06626b", - "size": 324283427, - "url": "https://dl.google.com/android/repository/emulator-darwin_x64-11525734.zip" - }, - { - "os": "windows", - "sha1": "089de1942b9cc5d96c60c92fdad286434c340124", - "size": 363522255, - "url": "https://dl.google.com/android/repository/emulator-windows_x64-11525734.zip" - } - ], - "displayName": "Android Emulator", - "last-available-day": 19813, - "license": "android-sdk-license", - "name": "emulator", - "path": "emulator", - "revision": "34.1.19", - "revision-details": { - "major:0": "34", - "micro:2": "19", - "minor:1": "1" - }, - "type-details": { - "element-attributes": { - "xsi:type": "ns5:genericDetailsType" - } - } - }, "34.2.11": { "archives": [ { @@ -20568,44 +21523,6 @@ } } }, - "35.1.2": { - "archives": [ - { - "os": "linux", - "sha1": "c066c3d65b5a7454e039516ecc6a73b0ab754c17", - "size": 298454913, - "url": "https://dl.google.com/android/repository/emulator-linux_x64-11616444.zip" - }, - { - "os": "macosx", - "sha1": "bf5eaf896dbfdbb832fd38255bace1658e524534", - "size": 394769949, - "url": "https://dl.google.com/android/repository/emulator-darwin_x64-11616444.zip" - }, - { - "os": "windows", - "sha1": "dd37d4ab4e4655aea04b1ecc66fe4e4187b382e9", - "size": 423453316, - "url": "https://dl.google.com/android/repository/emulator-windows_x64-11616444.zip" - } - ], - "displayName": "Android Emulator", - "last-available-day": 19813, - "license": "android-sdk-preview-license", - "name": "emulator", - "path": "emulator", - "revision": "35.1.2", - "revision-details": { - "major:0": "35", - "micro:2": "2", - "minor:1": "1" - }, - "type-details": { - "element-attributes": { - "xsi:type": "ns5:genericDetailsType" - } - } - }, "35.1.3": { "archives": [ { @@ -21775,6 +22692,102 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "36.5.10": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "9f03296214df837c608d0d101e5e03ebcebb4343", + "size": 331543272, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-15081367.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "3ad9f81115436aed6b4feb76f8e5d3e356f2f6e0", + "size": 449808912, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-15081367.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "0093f579e798c91b589a8d7bc84e1ca7ee528624", + "size": 384550690, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-15081367.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "1d5cc76415b9717cec08694d171ceb526b1dedb7", + "size": 418622111, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-15081367.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "emulator", + "path": "emulator", + "revision": "36.5.10", + "revision-details": { + "major:0": "36", + "micro:2": "10", + "minor:1": "5" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } + }, + "36.6.2": { + "archives": [ + { + "arch": "x64", + "os": "linux", + "sha1": "dd54bbe318cb070b2f8de3de3ee347de13eab611", + "size": 346489008, + "url": "https://dl.google.com/android/repository/emulator-linux_x64-15098414.zip" + }, + { + "arch": "x64", + "os": "macosx", + "sha1": "c6b41397c64a05d9cc3b8a0432dbe2a14acd3a8f", + "size": 462238423, + "url": "https://dl.google.com/android/repository/emulator-darwin_x64-15098414.zip" + }, + { + "arch": "aarch64", + "os": "macosx", + "sha1": "08d485c88de5770f4f36bd06de5d2fc36bbc2620", + "size": 395994578, + "url": "https://dl.google.com/android/repository/emulator-darwin_aarch64-15098414.zip" + }, + { + "arch": "x64", + "os": "windows", + "sha1": "f4666edf8e729236ab32221d5a5cad23ee051610", + "size": 428574271, + "url": "https://dl.google.com/android/repository/emulator-windows_x64-15098414.zip" + } + ], + "displayName": "Android Emulator", + "last-available-day": 20549, + "license": "android-sdk-preview-license", + "name": "emulator", + "path": "emulator", + "revision": "36.6.2", + "revision-details": { + "major:0": "36", + "micro:2": "2", + "minor:1": "6" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "extras": { @@ -21900,7 +22913,7 @@ } }, "displayName": "NDK (Side by side) 16.1.4479499", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/16.1.4479499", @@ -21962,7 +22975,7 @@ } }, "displayName": "NDK (Side by side) 17.2.4988734", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/17.2.4988734", @@ -22024,7 +23037,7 @@ } }, "displayName": "NDK (Side by side) 18.1.5063045", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/18.1.5063045", @@ -22086,7 +23099,7 @@ } }, "displayName": "NDK (Side by side) 19.0.5232133", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "obsolete": "true", @@ -22149,7 +23162,7 @@ } }, "displayName": "NDK (Side by side) 19.2.5345600", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/19.2.5345600", @@ -22211,7 +23224,7 @@ } }, "displayName": "NDK (Side by side) 20.0.5392854", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "obsolete": "true", @@ -22275,7 +23288,7 @@ } }, "displayName": "NDK (Side by side) 20.0.5471264", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "obsolete": "true", @@ -22339,7 +23352,7 @@ } }, "displayName": "NDK (Side by side) 20.0.5594570", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/20.0.5594570", @@ -22401,7 +23414,7 @@ } }, "displayName": "NDK (Side by side) 20.1.5948944", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/20.1.5948944", @@ -22449,7 +23462,7 @@ } }, "displayName": "NDK (Side by side) 21.0.6011959", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.0.6011959", @@ -22498,7 +23511,7 @@ } }, "displayName": "NDK (Side by side) 21.0.6113669", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.0.6113669", @@ -22546,7 +23559,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6210238", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.1.6210238", @@ -22602,7 +23615,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6273396", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.1.6273396", @@ -22658,7 +23671,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6352462", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.1.6352462", @@ -22713,7 +23726,7 @@ } }, "displayName": "NDK (Side by side) 21.1.6363665", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/21.1.6363665", @@ -22769,7 +23782,7 @@ } }, "displayName": "NDK (Side by side) 21.2.6472646", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.2.6472646", @@ -22824,7 +23837,7 @@ } }, "displayName": "NDK (Side by side) 21.3.6528147", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.3.6528147", @@ -22879,7 +23892,7 @@ } }, "displayName": "NDK (Side by side) 21.4.7075529", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/21.4.7075529", @@ -22934,7 +23947,7 @@ } }, "displayName": "NDK (Side by side) 22.0.6917172", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/22.0.6917172", @@ -22990,7 +24003,7 @@ } }, "displayName": "NDK (Side by side) 22.0.7026061", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/22.0.7026061", @@ -23045,7 +24058,7 @@ } }, "displayName": "NDK (Side by side) 22.1.7171670", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/22.1.7171670", @@ -23100,7 +24113,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7123448", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7123448", @@ -23156,7 +24169,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7196353", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7196353", @@ -23212,7 +24225,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7272597", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7272597", @@ -23268,7 +24281,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7344513", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7344513", @@ -23317,7 +24330,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7421159", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7421159", @@ -23366,7 +24379,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7530507", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/23.0.7530507", @@ -23415,7 +24428,7 @@ } }, "displayName": "NDK (Side by side) 23.0.7599858", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/23.0.7599858", @@ -23463,7 +24476,7 @@ } }, "displayName": "NDK (Side by side) 23.1.7779620", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/23.1.7779620", @@ -23511,7 +24524,7 @@ } }, "displayName": "NDK (Side by side) 23.2.8568313", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/23.2.8568313", @@ -23559,7 +24572,7 @@ } }, "displayName": "NDK (Side by side) 24.0.7856742", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/24.0.7856742", @@ -23608,7 +24621,7 @@ } }, "displayName": "NDK (Side by side) 24.0.7956693", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/24.0.7956693", @@ -23657,7 +24670,7 @@ } }, "displayName": "NDK (Side by side) 24.0.8079956", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/24.0.8079956", @@ -23706,7 +24719,7 @@ } }, "displayName": "NDK (Side by side) 24.0.8215888", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/24.0.8215888", @@ -23754,7 +24767,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8151533", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8151533", @@ -23803,7 +24816,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8221429", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8221429", @@ -23852,7 +24865,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8355429", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8355429", @@ -23901,7 +24914,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8528842", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/25.0.8528842", @@ -23950,7 +24963,7 @@ } }, "displayName": "NDK (Side by side) 25.0.8775105", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/25.0.8775105", @@ -23998,7 +25011,7 @@ } }, "displayName": "NDK (Side by side) 25.1.8937393", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/25.1.8937393", @@ -24046,7 +25059,7 @@ } }, "displayName": "NDK (Side by side) 25.2.9519653", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/25.2.9519653", @@ -24094,7 +25107,7 @@ } }, "displayName": "NDK (Side by side) 26.0.10404224", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/26.0.10404224", @@ -24136,7 +25149,7 @@ } ], "displayName": "NDK (Side by side) 26.0.10636728", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/26.0.10636728", @@ -24178,7 +25191,7 @@ } ], "displayName": "NDK (Side by side) 26.0.10792818", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.0.10792818", @@ -24219,7 +25232,7 @@ } ], "displayName": "NDK (Side by side) 26.1.10909125", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.1.10909125", @@ -24260,7 +25273,7 @@ } ], "displayName": "NDK (Side by side) 26.2.11394342", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.2.11394342", @@ -24301,7 +25314,7 @@ } ], "displayName": "NDK (Side by side) 26.3.11579264", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/26.3.11579264", @@ -24342,7 +25355,7 @@ } ], "displayName": "NDK (Side by side) 27.0.11718014", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/27.0.11718014", @@ -24384,7 +25397,7 @@ } ], "displayName": "NDK (Side by side) 27.0.11902837", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/27.0.11902837", @@ -24426,7 +25439,7 @@ } ], "displayName": "NDK (Side by side) 27.0.12077973", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.0.12077973", @@ -24467,7 +25480,7 @@ } ], "displayName": "NDK (Side by side) 27.1.12297006", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.1.12297006", @@ -24508,7 +25521,7 @@ } ], "displayName": "NDK (Side by side) 27.2.12479018", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.2.12479018", @@ -24549,7 +25562,7 @@ } ], "displayName": "NDK (Side by side) 27.3.13750724", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/27.3.13750724", @@ -24590,7 +25603,7 @@ } ], "displayName": "NDK (Side by side) 28.0.12433566", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/28.0.12433566", @@ -24632,7 +25645,7 @@ } ], "displayName": "NDK (Side by side) 28.0.12674087", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/28.0.12674087", @@ -24674,7 +25687,7 @@ } ], "displayName": "NDK (Side by side) 28.0.12916984", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/28.0.12916984", @@ -24716,7 +25729,7 @@ } ], "displayName": "NDK (Side by side) 28.0.13004108", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/28.0.13004108", @@ -24757,7 +25770,7 @@ } ], "displayName": "NDK (Side by side) 28.1.13356709", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/28.1.13356709", @@ -24798,7 +25811,7 @@ } ], "displayName": "NDK (Side by side) 28.2.13676358", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/28.2.13676358", @@ -24839,7 +25852,7 @@ } ], "displayName": "NDK (Side by side) 29.0.13113456", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/29.0.13113456", @@ -24881,7 +25894,7 @@ } ], "displayName": "NDK (Side by side) 29.0.13599879", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/29.0.13599879", @@ -24923,7 +25936,7 @@ } ], "displayName": "NDK (Side by side) 29.0.13846066", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/29.0.13846066", @@ -24965,7 +25978,7 @@ } ], "displayName": "NDK (Side by side) 29.0.14033849", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk", "path": "ndk/29.0.14033849", @@ -25007,7 +26020,7 @@ } ], "displayName": "NDK (Side by side) 29.0.14206865", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk", "path": "ndk/29.0.14206865", @@ -25022,6 +26035,48 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "30.0.14904198-rc1": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "26b746e5a1e7ac3371f2a862a2f52a7c0740aa8a", + "size": 713550176, + "url": "https://dl.google.com/android/repository/android-ndk-r30-beta1-linux.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "61f0ae7b4b6fdb732a642560b19e7fd5680fb257", + "size": 946331314, + "url": "https://dl.google.com/android/repository/android-ndk-r30-beta1-darwin.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "ec410335aac74d182b369a62c18079187b191149", + "size": 714361038, + "url": "https://dl.google.com/android/repository/android-ndk-r30-beta1-windows.zip" + } + ], + "displayName": "NDK (Side by side) 30.0.14904198", + "last-available-day": 20549, + "license": "android-sdk-preview-license", + "name": "ndk", + "path": "ndk/30.0.14904198", + "revision": "30.0.14904198-rc1", + "revision-details": { + "major:0": "30", + "micro:2": "14904198", + "minor:1": "0", + "preview:3": "1" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "ndk-bundle": { @@ -25071,7 +26126,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25133,7 +26188,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25195,7 +26250,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25257,7 +26312,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "obsolete": "true", @@ -25320,7 +26375,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25382,7 +26437,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "obsolete": "true", @@ -25446,7 +26501,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "obsolete": "true", @@ -25510,7 +26565,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25572,7 +26627,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25620,7 +26675,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25669,7 +26724,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25717,7 +26772,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25773,7 +26828,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25829,7 +26884,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25884,7 +26939,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25940,7 +26995,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -25995,7 +27050,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26050,7 +27105,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26105,7 +27160,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26161,7 +27216,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26216,7 +27271,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26271,7 +27326,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26327,7 +27382,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26383,7 +27438,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26439,7 +27494,7 @@ } }, "displayName": "NDK", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-preview-license", "name": "ndk-bundle", "path": "ndk-bundle", @@ -26661,6 +27716,47 @@ "xsi:type": "ns5:genericDetailsType" } } + }, + "37.0.0": { + "archives": [ + { + "arch": "all", + "os": "linux", + "sha1": "bcf323933980a59dccc3f14c339aed5fb2171163", + "size": 9167924, + "url": "https://dl.google.com/android/repository/platform-tools_r37.0.0-linux.zip" + }, + { + "arch": "all", + "os": "macosx", + "sha1": "ff8facde137e57994112672a0d0f411a3ca7b201", + "size": 16442198, + "url": "https://dl.google.com/android/repository/platform-tools_r37.0.0-darwin.zip" + }, + { + "arch": "all", + "os": "windows", + "sha1": "8a8351438a9bde81726129214940e0275f7949c7", + "size": 8092184, + "url": "https://dl.google.com/android/repository/platform-tools_r37.0.0-win.zip" + } + ], + "displayName": "Android SDK Platform-Tools", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "platform-tools", + "path": "platform-tools", + "revision": "37.0.0", + "revision-details": { + "major:0": "37", + "micro:2": "0", + "minor:1": "0" + }, + "type-details": { + "element-attributes": { + "xsi:type": "ns5:genericDetailsType" + } + } } }, "platforms": { @@ -26675,7 +27771,7 @@ } ], "displayName": "Android SDK Platform 10", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-10", @@ -26714,7 +27810,7 @@ } ], "displayName": "Android SDK Platform 11", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-11", @@ -26753,7 +27849,7 @@ } ], "displayName": "Android SDK Platform 12", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-12", @@ -26792,7 +27888,7 @@ } ], "displayName": "Android SDK Platform 13", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-13", @@ -26831,7 +27927,7 @@ } ], "displayName": "Android SDK Platform 14", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-14", @@ -26870,7 +27966,7 @@ } ], "displayName": "Android SDK Platform 15", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-15", @@ -26909,7 +28005,7 @@ } ], "displayName": "Android SDK Platform 16", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-16", @@ -26948,7 +28044,7 @@ } ], "displayName": "Android SDK Platform 17", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-17", @@ -26987,7 +28083,7 @@ } ], "displayName": "Android SDK Platform 18", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-18", @@ -27026,7 +28122,7 @@ } ], "displayName": "Android SDK Platform 19", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-19", @@ -27079,7 +28175,7 @@ } ], "displayName": "Android SDK Platform 2", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -27119,7 +28215,7 @@ } ], "displayName": "Android SDK Platform 20", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-20", @@ -27158,7 +28254,7 @@ } ], "displayName": "Android SDK Platform 21", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-21", @@ -27197,7 +28293,7 @@ } ], "displayName": "Android SDK Platform 22", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-22", @@ -27236,7 +28332,7 @@ } ], "displayName": "Android SDK Platform 23", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-23", @@ -27275,7 +28371,7 @@ } ], "displayName": "Android SDK Platform 24", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-24", @@ -27314,7 +28410,7 @@ } ], "displayName": "Android SDK Platform 25", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-25", @@ -27353,7 +28449,7 @@ } ], "displayName": "Android SDK Platform 26", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-26", @@ -27392,7 +28488,7 @@ } ], "displayName": "Android SDK Platform 27", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-27", @@ -27431,7 +28527,7 @@ } ], "displayName": "Android SDK Platform 28", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-28", @@ -27470,7 +28566,7 @@ } ], "displayName": "Android SDK Platform 29", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-29", @@ -27523,7 +28619,7 @@ } ], "displayName": "Android SDK Platform 3", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -27563,7 +28659,7 @@ } ], "displayName": "Android SDK Platform 30", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-30", @@ -27602,7 +28698,7 @@ } ], "displayName": "Android SDK Platform 31", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-31", @@ -27641,7 +28737,7 @@ } ], "displayName": "Android SDK Platform 32", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-32", @@ -27680,7 +28776,7 @@ } ], "displayName": "Android SDK Platform 33", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-33", @@ -27720,7 +28816,7 @@ } ], "displayName": "Android SDK Platform 33-ext5", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-33-ext5", @@ -27755,7 +28851,7 @@ } ], "displayName": "Android SDK Platform 34", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -27801,7 +28897,7 @@ } ], "displayName": "Android SDK Platform 34-ext12", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-34-ext12", @@ -27834,7 +28930,7 @@ } ], "displayName": "Android SDK Platform 35", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-35", @@ -27872,7 +28968,7 @@ } ], "displayName": "Android SDK Platform 35-ext15", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-35-ext15", @@ -27905,7 +29001,7 @@ } ], "displayName": "Android SDK Platform 36", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-36", @@ -27938,7 +29034,7 @@ } ], "displayName": "Android SDK Platform 36.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-36.1", @@ -27971,7 +29067,7 @@ } ], "displayName": "Android SDK Platform 36-ext19", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-36-ext19", @@ -27993,6 +29089,41 @@ } } }, + "37.0": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "1a9a8c2e2a5ab8cd95f2eded7d9da037e62fbc6f", + "size": 67204348, + "url": "https://dl.google.com/android/repository/platform-37.0_r01.zip" + } + ], + "displayName": "Android SDK Platform 37.0", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "platforms", + "path": "platforms/android-37.0", + "revision": "37.0", + "revision-details": { + "major:0": "1" + }, + "type-details": { + "api-level:0": "37.0", + "base-extension:3": "true", + "codename:1": { + }, + "element-attributes": { + "xsi:type": "ns11:platformDetailsType" + }, + "extension-level:2": "22", + "layoutlib:4": { + "element-attributes": { + "api": "15" + } + } + } + }, "4": { "archives": [ { @@ -28018,7 +29149,7 @@ } ], "displayName": "Android SDK Platform 4", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -28072,7 +29203,7 @@ } ], "displayName": "Android SDK Platform 5", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -28126,7 +29257,7 @@ } ], "displayName": "Android SDK Platform 6", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -28166,7 +29297,7 @@ } ], "displayName": "Android SDK Platform 7", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-7", @@ -28205,7 +29336,7 @@ } ], "displayName": "Android SDK Platform 8", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-8", @@ -28244,7 +29375,7 @@ } ], "displayName": "Android SDK Platform 9", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-9", @@ -28283,7 +29414,7 @@ } ], "displayName": "Android SDK Platform Baklava-ext19", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-Baklava-ext19", @@ -28311,19 +29442,19 @@ { "arch": "all", "os": "all", - "sha1": "a8201ba194c5241bf6e80d9c21f981e502f5d69c", - "size": 66388262, - "url": "https://dl.google.com/android/repository/platform-CANARY_r04.zip" + "sha1": "756112dd034ba5c1fbc995a472fb17d196c21a59", + "size": 66842057, + "url": "https://dl.google.com/android/repository/platform-CANARY_r09.zip" } ], "displayName": "Android SDK Platform CANARY", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "path": "platforms/android-CANARY", "revision": "CANARY", "revision-details": { - "major:0": "6" + "major:0": "9" }, "type-details": { "api-level:0": "36.1", @@ -28332,7 +29463,41 @@ "element-attributes": { "xsi:type": "ns11:platformDetailsType" }, - "extension-level:2": "20", + "extension-level:2": "21", + "layoutlib:4": { + "element-attributes": { + "api": "15" + } + } + } + }, + "CinnamonBun": { + "archives": [ + { + "arch": "all", + "os": "all", + "sha1": "fc958eeaf4d3075d3f0eb8108df883baba9bb419", + "size": 67069204, + "url": "https://dl.google.com/android/repository/platform-CinnamonBun_r02.zip" + } + ], + "displayName": "Android SDK Platform CinnamonBun", + "last-available-day": 20549, + "license": "android-sdk-license", + "name": "platforms", + "path": "platforms/android-CinnamonBun", + "revision": "CinnamonBun", + "revision-details": { + "major:0": "2" + }, + "type-details": { + "api-level:0": "36.1", + "base-extension:3": "true", + "codename:1": "CinnamonBun", + "element-attributes": { + "xsi:type": "ns11:platformDetailsType" + }, + "extension-level:2": "21", "layoutlib:4": { "element-attributes": { "api": "15" @@ -28382,7 +29547,7 @@ } ], "displayName": "Android SDK Platform UpsideDownCake", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "platforms", "obsolete": "true", @@ -28500,7 +29665,7 @@ } ], "displayName": "Layout Inspector image server for API S", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "skiaparser", "path": "skiaparser/2", @@ -28621,7 +29786,7 @@ } ], "displayName": "Layout Inspector image server for API 29-30", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "skiaparser", "path": "skiaparser/1", @@ -28713,7 +29878,7 @@ } ], "displayName": "Layout Inspector image server for API 31-36", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "skiaparser", "path": "skiaparser/3", @@ -28740,7 +29905,7 @@ } ], "displayName": "Sources for Android 14", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "obsolete": "true", @@ -28770,7 +29935,7 @@ } ], "displayName": "Sources for Android 15", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-15", @@ -28799,7 +29964,7 @@ } ], "displayName": "Sources for Android 16", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-16", @@ -28828,7 +29993,7 @@ } ], "displayName": "Sources for Android 17", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-17", @@ -28857,7 +30022,7 @@ } ], "displayName": "Sources for Android 18", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-18", @@ -28886,7 +30051,7 @@ } ], "displayName": "Sources for Android 19", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-19", @@ -28915,7 +30080,7 @@ } ], "displayName": "Sources for Android 20", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-20", @@ -28944,7 +30109,7 @@ } ], "displayName": "Sources for Android 21", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-21", @@ -28973,7 +30138,7 @@ } ], "displayName": "Sources for Android 22", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-22", @@ -29002,7 +30167,7 @@ } ], "displayName": "Sources for Android 23", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-23", @@ -29031,7 +30196,7 @@ } ], "displayName": "Sources for Android 24", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-24", @@ -29060,7 +30225,7 @@ } ], "displayName": "Sources for Android 25", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-25", @@ -29089,7 +30254,7 @@ } ], "displayName": "Sources for Android 26", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-26", @@ -29118,7 +30283,7 @@ } ], "displayName": "Sources for Android 27", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-27", @@ -29147,7 +30312,7 @@ } ], "displayName": "Sources for Android 28", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-28", @@ -29176,7 +30341,7 @@ } ], "displayName": "Sources for Android 29", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-29", @@ -29205,7 +30370,7 @@ } ], "displayName": "Sources for Android 30", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-30", @@ -29234,7 +30399,7 @@ } ], "displayName": "Sources for Android 31", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-31", @@ -29263,7 +30428,7 @@ } ], "displayName": "Sources for Android 32", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-32", @@ -29292,7 +30457,7 @@ } ], "displayName": "Sources for Android 33", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-33", @@ -29322,7 +30487,7 @@ } ], "displayName": "Sources for Android 34", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-34", @@ -29352,7 +30517,7 @@ } ], "displayName": "Sources for Android 35", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-35", @@ -29382,7 +30547,7 @@ } ], "displayName": "Sources for Android 36", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-36", @@ -29410,7 +30575,7 @@ } ], "displayName": "Sources for Android 36.1", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "sources", "path": "sources/android-36.1", @@ -29477,7 +30642,7 @@ } }, "displayName": "Android SDK Tools", - "last-available-day": 20429, + "last-available-day": 20549, "license": "android-sdk-license", "name": "tools", "obsolete": "true", From a1241180d710c986e6de8c6838b830d3c632718d Mon Sep 17 00:00:00 2001 From: Morgan Jones Date: Sun, 5 Apr 2026 17:39:44 -0700 Subject: [PATCH 019/112] androidenv: fix new "37.0" packages with API version ranges Google has seemed to require this suffix on their newer packages, and also doesn't provide sources anymore. Fix both issues. --- .../androidenv/compose-android-packages.nix | 30 ++++++++++++++----- .../mobile/androidenv/emulator.nix | 1 + .../examples/shell-with-emulator.nix | 5 ++-- .../mobile/androidenv/examples/shell.nix | 4 --- 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/pkgs/development/mobile/androidenv/compose-android-packages.nix b/pkgs/development/mobile/androidenv/compose-android-packages.nix index 4c5149032c02..1b735da0b2b6 100644 --- a/pkgs/development/mobile/androidenv/compose-android-packages.nix +++ b/pkgs/development/mobile/androidenv/compose-android-packages.nix @@ -298,7 +298,8 @@ let # Returns true if the given version exists. hasVersion = packages: package: version: - lib.hasAttrByPath [ package (toString version) ] packages; + lib.hasAttrByPath [ package (toString version) ] packages + || lib.hasAttrByPath [ package "${(toString version)}.0" ] packages; # Displays a nice error message that includes the available options if a version doesn't exist. # Note that allPackages can be a list of package sets, or a single package set. Pass a list if @@ -322,7 +323,7 @@ let }. '' else - packageSet.${package}.${toString version}; + packageSet.${package}.${toString version} or packageSet.${package}."${toString version}.0"; # Returns true if we should link the specified plugins. shouldLink = @@ -546,12 +547,25 @@ lib.recurseIntoAttrs rec { } ) platformVersions'; - sources = map ( - version: - deployAndroidPackage { - package = checkVersion allArchives.packages "sources" version; - } - ) platformVersions'; + # Google is not including sources for API 37+. If the user requests them, don't fail. + sources = lib.filter (source: source != null) ( + map ( + version: + let + package = + let + version' = builtins.tryEval (checkVersion allArchives.packages "sources" version); + in + if version'.success then version'.value else null; + in + if package == null then + null + else + deployAndroidPackage { + inherit package; + } + ) platformVersions' + ); system-images = lib.flatten ( map ( diff --git a/pkgs/development/mobile/androidenv/emulator.nix b/pkgs/development/mobile/androidenv/emulator.nix index 154b51d34da4..4de3edd20d01 100644 --- a/pkgs/development/mobile/androidenv/emulator.nix +++ b/pkgs/development/mobile/androidenv/emulator.nix @@ -37,6 +37,7 @@ deployAndroidPackage { nspr alsa-lib waylandpp.lib + libgbm ] ) ++ (with pkgs; [ diff --git a/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix b/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix index 042ff4ef43d1..43d815004c50 100644 --- a/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix +++ b/pkgs/development/mobile/androidenv/examples/shell-with-emulator.nix @@ -128,7 +128,7 @@ pkgs.mkShell rec { packages=( "build-tools" "cmdline-tools" \ "platform-tools" "platforms;android-${toString latestSdkVersion}" \ - "system-images;android-${toString latestSdkVersion};google_apis;x86_64" + "system-images;android-${toString latestSdkVersion};google_apis_ps16k;x86_64" ) ${lib.optionalString emulatorSupported ''packages+=("emulator")''} @@ -158,7 +158,6 @@ pkgs.mkShell rec { for x in $(seq 1 ${lib.versions.major (toString latestSdkVersion)}); do excluded_packages+=( "platforms;android-$x" - "sources;android-$x" "system-images;android-$x" ) done @@ -188,7 +187,7 @@ pkgs.mkShell rec { mkdir -p $ANDROID_USER_HOME avdmanager delete avd -n testAVD || true - echo "" | avdmanager create avd --force --name testAVD --package 'system-images;android-${toString latestSdkVersion};google_apis;x86_64' + { echo "" | avdmanager create avd --force --name testAVD --package 'system-images;android-${toString latestSdkVersion};google_apis_ps16k;x86_64'; } result=$(avdmanager list avd) if [[ ! $result =~ "Name: testAVD" ]]; then diff --git a/pkgs/development/mobile/androidenv/examples/shell.nix b/pkgs/development/mobile/androidenv/examples/shell.nix index 5cf8383388f5..276867ae2bcd 100644 --- a/pkgs/development/mobile/androidenv/examples/shell.nix +++ b/pkgs/development/mobile/androidenv/examples/shell.nix @@ -187,10 +187,6 @@ pkgs.mkShell rec { "extras;google;gcm" ) - for x in $(seq ${toString firstSdkVersion} ${toString latestSdkVersion}); do - packages+=("sources;android-$x") - done - ${lib.optionalString includeAuto ''packages+=("extras;google;auto")''} for package in "''${packages[@]}"; do From aa5028110f3451cc1b7783c853ca957161a4423d Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Sun, 5 Apr 2026 19:46:47 -0400 Subject: [PATCH 020/112] darwin: migrate to by-name --- .../reattach-to-user-namespace/package.nix} | 0 .../ad}/adv_cmds/meson.build.in | 0 .../ad}/adv_cmds/package.nix | 0 .../auto-sign-hook.sh | 0 .../au/autoSignDarwinBinariesHook/package.nix | 6 + .../av}/AvailabilityVersions/package.nix | 0 ...t-setting-an-upper-bound-on-versions.patch | 0 .../ba}/basic_cmds/meson.build.in | 0 .../ba}/basic_cmds/package.nix | 0 .../bi/binutils-unwrapped/package.nix} | 0 .../bo}/bootstrap_cmds/meson.build.in | 0 .../bo}/bootstrap_cmds/package.nix | 0 ...pecify-MIGCC-for-use-with-substitute.patch | 0 ...0002-Always-remove-working-directory.patch | 0 .../co}/copyfile/meson.build.in | 0 .../co}/copyfile/package.nix | 0 .../cs}/Csu/package.nix | 3 +- .../cs}/Csu/setup-hooks/add-Csu-lib-path.sh | 0 .../by-name/cs/Csu/setup-hooks/role.bash | 71 ++++ .../da/DarwinTools/package.nix} | 0 .../da}/DarwinTools/sw_vers-CFPriv.patch | 0 .../de}/developer_cmds/meson.build.in | 0 .../de}/developer_cmds/package.nix | 0 .../di}/diskdev_cmds/meson.build.in | 0 .../di}/diskdev_cmds/package.nix | 0 .../do}/doc_cmds/meson.build.in | 0 .../do}/doc_cmds/package.nix | 0 .../dy}/dyld/meson.build.in | 0 .../dy}/dyld/package.nix | 0 .../patches/0001-Disable-kdebug-trace.patch | 0 .../dyld/patches/0003-Add-weaklinking_h.patch | 0 .../0004-Fix-llvm-op-info-callback-args.patch | 0 ...SL-based-CoreCrypto-digest-functions.patch | 0 .../0006-Add-dsc_extractor_bin_cpp.patch | 0 .../0007-Fix-missing-writeChainEntry.patch | 0 .../fi}/file_cmds/meson.build.in | 0 .../fi}/file_cmds/package.nix | 0 ...missing-extern-unix2003_compat-to-ls.patch | 0 ...-missing-ifdef-for-private-APFS-APIs.patch | 0 .../ic}/ICU/package.nix | 0 .../patches/suppress-icu-check-crash.patch | 0 .../io}/IOKitTools/meson.build.in | 0 .../io}/IOKitTools/package.nix | 0 .../io/iosSdkPkgs/package.nix} | 16 +- .../li/libSystem/package.nix} | 0 .../li/libcxx/package.nix} | 0 .../li}/libffi/package.nix | 0 .../li}/libffi/patches/automake-1.18.patch | 0 .../patches/fix-tramponline-memory-leak.patch | 0 .../li}/libiconv/meson.build.in | 0 .../li}/libiconv/meson.options | 0 .../li}/libiconv/nixpkgs_test.c | 0 .../li}/libiconv/package.nix | 0 .../0001-Support-static-module-loading.patch | 0 ...-of-bounds-write-with-encoded-charac.patch | 0 .../li}/libiconv/static-modules.gperf | 0 .../li}/libpcap/package.nix | 0 .../li}/libresolv/meson.build.in | 0 .../li}/libresolv/package.nix | 0 .../li}/libsbuf/meson.build.in | 0 .../li}/libsbuf/package.nix | 0 .../patches/0001-darwin-compatibility.patch | 0 .../li/libunwind/package.nix} | 0 .../li}/libutil/meson.build.in | 0 .../li}/libutil/package.nix | 0 .../lo}/locale/package.nix | 0 .../ls/lsusb/package.nix} | 0 .../ma}/mail_cmds/meson.build.in | 0 .../ma}/mail_cmds/package.nix | 0 .../mi}/misc_cmds/meson.build.in | 0 .../mi}/misc_cmds/package.nix | 0 .../ne}/network_cmds/meson.build.in | 0 .../ne}/network_cmds/package.nix | 0 ...SL-based-CoreCrypto-digest-functions.patch | 0 .../pa}/patch_cmds/meson.build.in | 0 .../pa}/patch_cmds/package.nix | 0 .../po}/PowerManagement/meson.build.in | 0 .../po}/PowerManagement/package.nix | 0 .../re}/remote_cmds/meson.build.in | 0 .../re}/remote_cmds/package.nix | 0 .../re}/removefile/meson.build.in | 0 .../re}/removefile/package.nix | 0 .../sh}/shell_cmds/meson.build.in | 0 .../sh}/shell_cmds/package.nix | 0 .../si/signingUtils/package.nix} | 0 .../si/signingUtils}/utils.sh | 0 .../si/sigtool/package.nix} | 0 .../sy}/system_cmds/meson.build.in | 0 .../sy}/system_cmds/package.nix | 0 ...itionalize-security-transition-shims.patch | 0 .../te}/text_cmds/meson.build.in | 0 .../te}/text_cmds/package.nix | 0 .../to}/top/meson.build.in | 0 .../to}/top/package.nix | 0 ...-change-that-dropped-aarch64-support.patch | 0 .../tr/trash/package.nix} | 0 .../darwin/{ => by-name/tr}/trash/trash.diff | 0 .../xc/xcodeProjectCheckHook/package.nix | 6 + .../xc/xcodeProjectCheckHook}/setup-hook.sh | 0 .../darwin/ghc-standalone-archive/default.nix | 27 -- .../default.nix} | 12 +- .../update-source-releases.sh | 0 .../versions.json | 0 pkgs/top-level/all-packages.nix | 30 +- pkgs/top-level/darwin-packages.nix | 343 ++++++++---------- 105 files changed, 289 insertions(+), 225 deletions(-) rename pkgs/{os-specific/darwin/reattach-to-user-namespace/default.nix => by-name/re/reattach-to-user-namespace/package.nix} (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ad}/adv_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ad}/adv_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{signing-utils => by-name/au/autoSignDarwinBinariesHook}/auto-sign-hook.sh (100%) create mode 100644 pkgs/os-specific/darwin/by-name/au/autoSignDarwinBinariesHook/package.nix rename pkgs/os-specific/darwin/{apple-source-releases => by-name/av}/AvailabilityVersions/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/av}/AvailabilityVersions/patches/0001-Support-setting-an-upper-bound-on-versions.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ba}/basic_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ba}/basic_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{binutils/default.nix => by-name/bi/binutils-unwrapped/package.nix} (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/bo}/bootstrap_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/bo}/bootstrap_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/bo}/bootstrap_cmds/patches/0001-Specify-MIGCC-for-use-with-substitute.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/bo}/bootstrap_cmds/patches/0002-Always-remove-working-directory.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/co}/copyfile/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/co}/copyfile/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/cs}/Csu/package.nix (86%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/cs}/Csu/setup-hooks/add-Csu-lib-path.sh (100%) create mode 100644 pkgs/os-specific/darwin/by-name/cs/Csu/setup-hooks/role.bash rename pkgs/os-specific/darwin/{DarwinTools/default.nix => by-name/da/DarwinTools/package.nix} (100%) rename pkgs/os-specific/darwin/{ => by-name/da}/DarwinTools/sw_vers-CFPriv.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/de}/developer_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/de}/developer_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/di}/diskdev_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/di}/diskdev_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/do}/doc_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/do}/doc_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/patches/0001-Disable-kdebug-trace.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/patches/0003-Add-weaklinking_h.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/patches/0004-Fix-llvm-op-info-callback-args.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/patches/0005-Add-OpenSSL-based-CoreCrypto-digest-functions.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/patches/0006-Add-dsc_extractor_bin_cpp.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/dy}/dyld/patches/0007-Fix-missing-writeChainEntry.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/fi}/file_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/fi}/file_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/fi}/file_cmds/patches/0001-Add-missing-extern-unix2003_compat-to-ls.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/fi}/file_cmds/patches/0002-Add-missing-ifdef-for-private-APFS-APIs.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ic}/ICU/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ic}/ICU/patches/suppress-icu-check-crash.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/io}/IOKitTools/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/io}/IOKitTools/package.nix (100%) rename pkgs/os-specific/darwin/{xcode/sdk-pkgs.nix => by-name/io/iosSdkPkgs/package.nix} (91%) rename pkgs/os-specific/darwin/{libSystem/default.nix => by-name/li/libSystem/package.nix} (100%) rename pkgs/os-specific/darwin/{libcxx/default.nix => by-name/li/libcxx/package.nix} (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libffi/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libffi/patches/automake-1.18.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libffi/patches/fix-tramponline-memory-leak.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/meson.options (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/nixpkgs_test.c (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/patches/0001-Support-static-module-loading.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/patches/0002-Fix-ISO-2022-out-of-bounds-write-with-encoded-charac.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libiconv/static-modules.gperf (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libpcap/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libresolv/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libresolv/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libsbuf/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libsbuf/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libsbuf/patches/0001-darwin-compatibility.patch (100%) rename pkgs/os-specific/darwin/{libunwind/default.nix => by-name/li/libunwind/package.nix} (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libutil/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/li}/libutil/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/lo}/locale/package.nix (100%) rename pkgs/os-specific/darwin/{lsusb/default.nix => by-name/ls/lsusb/package.nix} (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ma}/mail_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ma}/mail_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/mi}/misc_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/mi}/misc_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ne}/network_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ne}/network_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/ne}/network_cmds/patches/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/pa}/patch_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/pa}/patch_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/po}/PowerManagement/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/po}/PowerManagement/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/re}/remote_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/re}/remote_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/re}/removefile/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/re}/removefile/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/sh}/shell_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/sh}/shell_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{signing-utils/default.nix => by-name/si/signingUtils/package.nix} (100%) rename pkgs/os-specific/darwin/{signing-utils => by-name/si/signingUtils}/utils.sh (100%) rename pkgs/os-specific/darwin/{sigtool/default.nix => by-name/si/sigtool/package.nix} (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/sy}/system_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/sy}/system_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/sy}/system_cmds/patches/conditionalize-security-transition-shims.patch (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/te}/text_cmds/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/te}/text_cmds/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/to}/top/meson.build.in (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/to}/top/package.nix (100%) rename pkgs/os-specific/darwin/{apple-source-releases => by-name/to}/top/patches/0001-Revert-change-that-dropped-aarch64-support.patch (100%) rename pkgs/os-specific/darwin/{trash/default.nix => by-name/tr/trash/package.nix} (100%) rename pkgs/os-specific/darwin/{ => by-name/tr}/trash/trash.diff (100%) create mode 100644 pkgs/os-specific/darwin/by-name/xc/xcodeProjectCheckHook/package.nix rename pkgs/os-specific/darwin/{xcode-project-check-hook => by-name/xc/xcodeProjectCheckHook}/setup-hook.sh (100%) delete mode 100644 pkgs/os-specific/darwin/ghc-standalone-archive/default.nix rename pkgs/os-specific/darwin/{apple-source-releases/mkAppleDerivation.nix => mk-apple-derivation/default.nix} (88%) rename pkgs/os-specific/darwin/{apple-source-releases => mk-apple-derivation}/update-source-releases.sh (100%) rename pkgs/os-specific/darwin/{apple-source-releases => mk-apple-derivation}/versions.json (100%) diff --git a/pkgs/os-specific/darwin/reattach-to-user-namespace/default.nix b/pkgs/by-name/re/reattach-to-user-namespace/package.nix similarity index 100% rename from pkgs/os-specific/darwin/reattach-to-user-namespace/default.nix rename to pkgs/by-name/re/reattach-to-user-namespace/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/adv_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/ad/adv_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/adv_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/ad/adv_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/adv_cmds/package.nix b/pkgs/os-specific/darwin/by-name/ad/adv_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/adv_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/ad/adv_cmds/package.nix diff --git a/pkgs/os-specific/darwin/signing-utils/auto-sign-hook.sh b/pkgs/os-specific/darwin/by-name/au/autoSignDarwinBinariesHook/auto-sign-hook.sh similarity index 100% rename from pkgs/os-specific/darwin/signing-utils/auto-sign-hook.sh rename to pkgs/os-specific/darwin/by-name/au/autoSignDarwinBinariesHook/auto-sign-hook.sh diff --git a/pkgs/os-specific/darwin/by-name/au/autoSignDarwinBinariesHook/package.nix b/pkgs/os-specific/darwin/by-name/au/autoSignDarwinBinariesHook/package.nix new file mode 100644 index 000000000000..b4d9eda8aba8 --- /dev/null +++ b/pkgs/os-specific/darwin/by-name/au/autoSignDarwinBinariesHook/package.nix @@ -0,0 +1,6 @@ +{ signingUtils, makeSetupHook }: + +makeSetupHook { + name = "auto-sign-darwin-binaries-hook"; + propagatedBuildInputs = [ signingUtils ]; +} ./auto-sign-hook.sh diff --git a/pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/package.nix b/pkgs/os-specific/darwin/by-name/av/AvailabilityVersions/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/package.nix rename to pkgs/os-specific/darwin/by-name/av/AvailabilityVersions/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/patches/0001-Support-setting-an-upper-bound-on-versions.patch b/pkgs/os-specific/darwin/by-name/av/AvailabilityVersions/patches/0001-Support-setting-an-upper-bound-on-versions.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/AvailabilityVersions/patches/0001-Support-setting-an-upper-bound-on-versions.patch rename to pkgs/os-specific/darwin/by-name/av/AvailabilityVersions/patches/0001-Support-setting-an-upper-bound-on-versions.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/basic_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/ba/basic_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/basic_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/ba/basic_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/basic_cmds/package.nix b/pkgs/os-specific/darwin/by-name/ba/basic_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/basic_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/ba/basic_cmds/package.nix diff --git a/pkgs/os-specific/darwin/binutils/default.nix b/pkgs/os-specific/darwin/by-name/bi/binutils-unwrapped/package.nix similarity index 100% rename from pkgs/os-specific/darwin/binutils/default.nix rename to pkgs/os-specific/darwin/by-name/bi/binutils-unwrapped/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/package.nix b/pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/patches/0001-Specify-MIGCC-for-use-with-substitute.patch b/pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/patches/0001-Specify-MIGCC-for-use-with-substitute.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/patches/0001-Specify-MIGCC-for-use-with-substitute.patch rename to pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/patches/0001-Specify-MIGCC-for-use-with-substitute.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/patches/0002-Always-remove-working-directory.patch b/pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/patches/0002-Always-remove-working-directory.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/bootstrap_cmds/patches/0002-Always-remove-working-directory.patch rename to pkgs/os-specific/darwin/by-name/bo/bootstrap_cmds/patches/0002-Always-remove-working-directory.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/copyfile/meson.build.in b/pkgs/os-specific/darwin/by-name/co/copyfile/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/copyfile/meson.build.in rename to pkgs/os-specific/darwin/by-name/co/copyfile/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/copyfile/package.nix b/pkgs/os-specific/darwin/by-name/co/copyfile/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/copyfile/package.nix rename to pkgs/os-specific/darwin/by-name/co/copyfile/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/Csu/package.nix b/pkgs/os-specific/darwin/by-name/cs/Csu/package.nix similarity index 86% rename from pkgs/os-specific/darwin/apple-source-releases/Csu/package.nix rename to pkgs/os-specific/darwin/by-name/cs/Csu/package.nix index 32e4a82f7019..7a0800a36542 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/Csu/package.nix +++ b/pkgs/os-specific/darwin/by-name/cs/Csu/package.nix @@ -19,7 +19,8 @@ mkAppleDerivation { installFlags = [ "DSTROOT=$(out)" ]; setupHooks = [ - ../../../../build-support/setup-hooks/role.bash + # Vendored to avoid referencing files outside of the package. + ./setup-hooks/role.bash # ccWrapper_addCVars doesn’t add Csu to `NIX_LDFLAGS` because it contains objects and no dylibs. ./setup-hooks/add-Csu-lib-path.sh ]; diff --git a/pkgs/os-specific/darwin/apple-source-releases/Csu/setup-hooks/add-Csu-lib-path.sh b/pkgs/os-specific/darwin/by-name/cs/Csu/setup-hooks/add-Csu-lib-path.sh similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/Csu/setup-hooks/add-Csu-lib-path.sh rename to pkgs/os-specific/darwin/by-name/cs/Csu/setup-hooks/add-Csu-lib-path.sh diff --git a/pkgs/os-specific/darwin/by-name/cs/Csu/setup-hooks/role.bash b/pkgs/os-specific/darwin/by-name/cs/Csu/setup-hooks/role.bash new file mode 100644 index 000000000000..bfd6b61f0aed --- /dev/null +++ b/pkgs/os-specific/darwin/by-name/cs/Csu/setup-hooks/role.bash @@ -0,0 +1,71 @@ +# Since the same derivation can be depended on in multiple ways, we need to +# accumulate *each* role (i.e. host and target platforms relative the depending +# derivation) in which the derivation is used. +# +# The role is intended to be used as part of other variables names like +# - $NIX_SOMETHING${role_post} + +function getRole() { + case $1 in + -1) + role_post='_FOR_BUILD' + ;; + 0) + role_post='' + ;; + 1) + role_post='_FOR_TARGET' + ;; + *) + echo "@name@: used as improper sort of dependency" >&2 + return 1 + ;; + esac +} + +# `hostOffset` describes how the host platform of the package is slid relative +# to the depending package. `targetOffset` likewise describes the target +# platform of the package. Both are brought into scope of the setup hook defined +# for dependency whose setup hook is being processed relative to the package +# being built. + +function getHostRole() { + getRole "$hostOffset" +} +function getTargetRole() { + getRole "$targetOffset" +} + +# `depHostOffset` describes how the host platform of the dependencies are slid +# relative to the depending package. `depTargetOffset` likewise describes the +# target platform of dependenices. Both are brought into scope of the +# environment hook defined for the dependency being applied relative to the +# package being built. + +function getHostRoleEnvHook() { + getRole "$depHostOffset" +} +function getTargetRoleEnvHook() { + getRole "$depTargetOffset" +} + +# This variant is intended specifically for code-producing tool wrapper scripts +# `NIX_@wrapperName@_TARGET_*_@suffixSalt@` tracks this (needs to be an exported +# env var so can't use fancier data structures). +function getTargetRoleWrapper() { + case $targetOffset in + -1) + export NIX_@wrapperName@_TARGET_BUILD_@suffixSalt@=1 + ;; + 0) + export NIX_@wrapperName@_TARGET_HOST_@suffixSalt@=1 + ;; + 1) + export NIX_@wrapperName@_TARGET_TARGET_@suffixSalt@=1 + ;; + *) + echo "@name@: used as improper sort of dependency" >&2 + return 1 + ;; + esac +} diff --git a/pkgs/os-specific/darwin/DarwinTools/default.nix b/pkgs/os-specific/darwin/by-name/da/DarwinTools/package.nix similarity index 100% rename from pkgs/os-specific/darwin/DarwinTools/default.nix rename to pkgs/os-specific/darwin/by-name/da/DarwinTools/package.nix diff --git a/pkgs/os-specific/darwin/DarwinTools/sw_vers-CFPriv.patch b/pkgs/os-specific/darwin/by-name/da/DarwinTools/sw_vers-CFPriv.patch similarity index 100% rename from pkgs/os-specific/darwin/DarwinTools/sw_vers-CFPriv.patch rename to pkgs/os-specific/darwin/by-name/da/DarwinTools/sw_vers-CFPriv.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/de/developer_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/developer_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/de/developer_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/developer_cmds/package.nix b/pkgs/os-specific/darwin/by-name/de/developer_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/developer_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/de/developer_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/diskdev_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/di/diskdev_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/diskdev_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/di/diskdev_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/diskdev_cmds/package.nix b/pkgs/os-specific/darwin/by-name/di/diskdev_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/diskdev_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/di/diskdev_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/doc_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/do/doc_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/doc_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/do/doc_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/doc_cmds/package.nix b/pkgs/os-specific/darwin/by-name/do/doc_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/doc_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/do/doc_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/meson.build.in b/pkgs/os-specific/darwin/by-name/dy/dyld/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/meson.build.in rename to pkgs/os-specific/darwin/by-name/dy/dyld/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/package.nix b/pkgs/os-specific/darwin/by-name/dy/dyld/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/package.nix rename to pkgs/os-specific/darwin/by-name/dy/dyld/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0001-Disable-kdebug-trace.patch b/pkgs/os-specific/darwin/by-name/dy/dyld/patches/0001-Disable-kdebug-trace.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0001-Disable-kdebug-trace.patch rename to pkgs/os-specific/darwin/by-name/dy/dyld/patches/0001-Disable-kdebug-trace.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0003-Add-weaklinking_h.patch b/pkgs/os-specific/darwin/by-name/dy/dyld/patches/0003-Add-weaklinking_h.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0003-Add-weaklinking_h.patch rename to pkgs/os-specific/darwin/by-name/dy/dyld/patches/0003-Add-weaklinking_h.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0004-Fix-llvm-op-info-callback-args.patch b/pkgs/os-specific/darwin/by-name/dy/dyld/patches/0004-Fix-llvm-op-info-callback-args.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0004-Fix-llvm-op-info-callback-args.patch rename to pkgs/os-specific/darwin/by-name/dy/dyld/patches/0004-Fix-llvm-op-info-callback-args.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0005-Add-OpenSSL-based-CoreCrypto-digest-functions.patch b/pkgs/os-specific/darwin/by-name/dy/dyld/patches/0005-Add-OpenSSL-based-CoreCrypto-digest-functions.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0005-Add-OpenSSL-based-CoreCrypto-digest-functions.patch rename to pkgs/os-specific/darwin/by-name/dy/dyld/patches/0005-Add-OpenSSL-based-CoreCrypto-digest-functions.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0006-Add-dsc_extractor_bin_cpp.patch b/pkgs/os-specific/darwin/by-name/dy/dyld/patches/0006-Add-dsc_extractor_bin_cpp.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0006-Add-dsc_extractor_bin_cpp.patch rename to pkgs/os-specific/darwin/by-name/dy/dyld/patches/0006-Add-dsc_extractor_bin_cpp.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0007-Fix-missing-writeChainEntry.patch b/pkgs/os-specific/darwin/by-name/dy/dyld/patches/0007-Fix-missing-writeChainEntry.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/dyld/patches/0007-Fix-missing-writeChainEntry.patch rename to pkgs/os-specific/darwin/by-name/dy/dyld/patches/0007-Fix-missing-writeChainEntry.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/file_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/fi/file_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/file_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/fi/file_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/file_cmds/package.nix b/pkgs/os-specific/darwin/by-name/fi/file_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/file_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/fi/file_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/file_cmds/patches/0001-Add-missing-extern-unix2003_compat-to-ls.patch b/pkgs/os-specific/darwin/by-name/fi/file_cmds/patches/0001-Add-missing-extern-unix2003_compat-to-ls.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/file_cmds/patches/0001-Add-missing-extern-unix2003_compat-to-ls.patch rename to pkgs/os-specific/darwin/by-name/fi/file_cmds/patches/0001-Add-missing-extern-unix2003_compat-to-ls.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/file_cmds/patches/0002-Add-missing-ifdef-for-private-APFS-APIs.patch b/pkgs/os-specific/darwin/by-name/fi/file_cmds/patches/0002-Add-missing-ifdef-for-private-APFS-APIs.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/file_cmds/patches/0002-Add-missing-ifdef-for-private-APFS-APIs.patch rename to pkgs/os-specific/darwin/by-name/fi/file_cmds/patches/0002-Add-missing-ifdef-for-private-APFS-APIs.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/ICU/package.nix b/pkgs/os-specific/darwin/by-name/ic/ICU/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/ICU/package.nix rename to pkgs/os-specific/darwin/by-name/ic/ICU/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/ICU/patches/suppress-icu-check-crash.patch b/pkgs/os-specific/darwin/by-name/ic/ICU/patches/suppress-icu-check-crash.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/ICU/patches/suppress-icu-check-crash.patch rename to pkgs/os-specific/darwin/by-name/ic/ICU/patches/suppress-icu-check-crash.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/IOKitTools/meson.build.in b/pkgs/os-specific/darwin/by-name/io/IOKitTools/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/IOKitTools/meson.build.in rename to pkgs/os-specific/darwin/by-name/io/IOKitTools/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/IOKitTools/package.nix b/pkgs/os-specific/darwin/by-name/io/IOKitTools/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/IOKitTools/package.nix rename to pkgs/os-specific/darwin/by-name/io/IOKitTools/package.nix diff --git a/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix b/pkgs/os-specific/darwin/by-name/io/iosSdkPkgs/package.nix similarity index 91% rename from pkgs/os-specific/darwin/xcode/sdk-pkgs.nix rename to pkgs/os-specific/darwin/by-name/io/iosSdkPkgs/package.nix index 05f9acf5b36c..4e675d91d22f 100644 --- a/pkgs/os-specific/darwin/xcode/sdk-pkgs.nix +++ b/pkgs/os-specific/darwin/by-name/io/iosSdkPkgs/package.nix @@ -1,15 +1,19 @@ { - stdenv, - clang-unwrapped, + lib, binutils-unwrapped, + clang-unwrapped, + iosSdkPkgs, runCommand, - + stdenv, wrapBintoolsWith, wrapCCWith, - buildIosSdk, - targetIosSdkPkgs, xcode, - lib, + + buildPackages, + targetPackages, + + buildIosSdk ? buildPackages.darwin.iosSdkPkgs.sdk, + targetIosSdkPkgs ? targetPackages.darwin.iosSdkPkgs or iosSdkPkgs, }: let diff --git a/pkgs/os-specific/darwin/libSystem/default.nix b/pkgs/os-specific/darwin/by-name/li/libSystem/package.nix similarity index 100% rename from pkgs/os-specific/darwin/libSystem/default.nix rename to pkgs/os-specific/darwin/by-name/li/libSystem/package.nix diff --git a/pkgs/os-specific/darwin/libcxx/default.nix b/pkgs/os-specific/darwin/by-name/li/libcxx/package.nix similarity index 100% rename from pkgs/os-specific/darwin/libcxx/default.nix rename to pkgs/os-specific/darwin/by-name/li/libcxx/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libffi/package.nix b/pkgs/os-specific/darwin/by-name/li/libffi/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libffi/package.nix rename to pkgs/os-specific/darwin/by-name/li/libffi/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libffi/patches/automake-1.18.patch b/pkgs/os-specific/darwin/by-name/li/libffi/patches/automake-1.18.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libffi/patches/automake-1.18.patch rename to pkgs/os-specific/darwin/by-name/li/libffi/patches/automake-1.18.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/libffi/patches/fix-tramponline-memory-leak.patch b/pkgs/os-specific/darwin/by-name/li/libffi/patches/fix-tramponline-memory-leak.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libffi/patches/fix-tramponline-memory-leak.patch rename to pkgs/os-specific/darwin/by-name/li/libffi/patches/fix-tramponline-memory-leak.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/meson.build.in b/pkgs/os-specific/darwin/by-name/li/libiconv/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/meson.build.in rename to pkgs/os-specific/darwin/by-name/li/libiconv/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/meson.options b/pkgs/os-specific/darwin/by-name/li/libiconv/meson.options similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/meson.options rename to pkgs/os-specific/darwin/by-name/li/libiconv/meson.options diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/nixpkgs_test.c b/pkgs/os-specific/darwin/by-name/li/libiconv/nixpkgs_test.c similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/nixpkgs_test.c rename to pkgs/os-specific/darwin/by-name/li/libiconv/nixpkgs_test.c diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/package.nix b/pkgs/os-specific/darwin/by-name/li/libiconv/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/package.nix rename to pkgs/os-specific/darwin/by-name/li/libiconv/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/patches/0001-Support-static-module-loading.patch b/pkgs/os-specific/darwin/by-name/li/libiconv/patches/0001-Support-static-module-loading.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/patches/0001-Support-static-module-loading.patch rename to pkgs/os-specific/darwin/by-name/li/libiconv/patches/0001-Support-static-module-loading.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/patches/0002-Fix-ISO-2022-out-of-bounds-write-with-encoded-charac.patch b/pkgs/os-specific/darwin/by-name/li/libiconv/patches/0002-Fix-ISO-2022-out-of-bounds-write-with-encoded-charac.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/patches/0002-Fix-ISO-2022-out-of-bounds-write-with-encoded-charac.patch rename to pkgs/os-specific/darwin/by-name/li/libiconv/patches/0002-Fix-ISO-2022-out-of-bounds-write-with-encoded-charac.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/libiconv/static-modules.gperf b/pkgs/os-specific/darwin/by-name/li/libiconv/static-modules.gperf similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libiconv/static-modules.gperf rename to pkgs/os-specific/darwin/by-name/li/libiconv/static-modules.gperf diff --git a/pkgs/os-specific/darwin/apple-source-releases/libpcap/package.nix b/pkgs/os-specific/darwin/by-name/li/libpcap/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libpcap/package.nix rename to pkgs/os-specific/darwin/by-name/li/libpcap/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libresolv/meson.build.in b/pkgs/os-specific/darwin/by-name/li/libresolv/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libresolv/meson.build.in rename to pkgs/os-specific/darwin/by-name/li/libresolv/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/libresolv/package.nix b/pkgs/os-specific/darwin/by-name/li/libresolv/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libresolv/package.nix rename to pkgs/os-specific/darwin/by-name/li/libresolv/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsbuf/meson.build.in b/pkgs/os-specific/darwin/by-name/li/libsbuf/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libsbuf/meson.build.in rename to pkgs/os-specific/darwin/by-name/li/libsbuf/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsbuf/package.nix b/pkgs/os-specific/darwin/by-name/li/libsbuf/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libsbuf/package.nix rename to pkgs/os-specific/darwin/by-name/li/libsbuf/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libsbuf/patches/0001-darwin-compatibility.patch b/pkgs/os-specific/darwin/by-name/li/libsbuf/patches/0001-darwin-compatibility.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libsbuf/patches/0001-darwin-compatibility.patch rename to pkgs/os-specific/darwin/by-name/li/libsbuf/patches/0001-darwin-compatibility.patch diff --git a/pkgs/os-specific/darwin/libunwind/default.nix b/pkgs/os-specific/darwin/by-name/li/libunwind/package.nix similarity index 100% rename from pkgs/os-specific/darwin/libunwind/default.nix rename to pkgs/os-specific/darwin/by-name/li/libunwind/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/libutil/meson.build.in b/pkgs/os-specific/darwin/by-name/li/libutil/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libutil/meson.build.in rename to pkgs/os-specific/darwin/by-name/li/libutil/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/libutil/package.nix b/pkgs/os-specific/darwin/by-name/li/libutil/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/libutil/package.nix rename to pkgs/os-specific/darwin/by-name/li/libutil/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/locale/package.nix b/pkgs/os-specific/darwin/by-name/lo/locale/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/locale/package.nix rename to pkgs/os-specific/darwin/by-name/lo/locale/package.nix diff --git a/pkgs/os-specific/darwin/lsusb/default.nix b/pkgs/os-specific/darwin/by-name/ls/lsusb/package.nix similarity index 100% rename from pkgs/os-specific/darwin/lsusb/default.nix rename to pkgs/os-specific/darwin/by-name/ls/lsusb/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/mail_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/ma/mail_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/mail_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/ma/mail_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/mail_cmds/package.nix b/pkgs/os-specific/darwin/by-name/ma/mail_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/mail_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/ma/mail_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/misc_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/mi/misc_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/misc_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/mi/misc_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/misc_cmds/package.nix b/pkgs/os-specific/darwin/by-name/mi/misc_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/misc_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/mi/misc_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/network_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/ne/network_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/network_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/ne/network_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/network_cmds/package.nix b/pkgs/os-specific/darwin/by-name/ne/network_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/network_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/ne/network_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/network_cmds/patches/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch b/pkgs/os-specific/darwin/by-name/ne/network_cmds/patches/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/network_cmds/patches/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch rename to pkgs/os-specific/darwin/by-name/ne/network_cmds/patches/0007-Add-OpenSSL-based-CoreCrypto-digest-functions.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/patch_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/pa/patch_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/patch_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/pa/patch_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/patch_cmds/package.nix b/pkgs/os-specific/darwin/by-name/pa/patch_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/patch_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/pa/patch_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/PowerManagement/meson.build.in b/pkgs/os-specific/darwin/by-name/po/PowerManagement/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/PowerManagement/meson.build.in rename to pkgs/os-specific/darwin/by-name/po/PowerManagement/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/PowerManagement/package.nix b/pkgs/os-specific/darwin/by-name/po/PowerManagement/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/PowerManagement/package.nix rename to pkgs/os-specific/darwin/by-name/po/PowerManagement/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/remote_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/re/remote_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/remote_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/re/remote_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/remote_cmds/package.nix b/pkgs/os-specific/darwin/by-name/re/remote_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/remote_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/re/remote_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/removefile/meson.build.in b/pkgs/os-specific/darwin/by-name/re/removefile/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/removefile/meson.build.in rename to pkgs/os-specific/darwin/by-name/re/removefile/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/removefile/package.nix b/pkgs/os-specific/darwin/by-name/re/removefile/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/removefile/package.nix rename to pkgs/os-specific/darwin/by-name/re/removefile/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/shell_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/sh/shell_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/shell_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/sh/shell_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/shell_cmds/package.nix b/pkgs/os-specific/darwin/by-name/sh/shell_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/shell_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/sh/shell_cmds/package.nix diff --git a/pkgs/os-specific/darwin/signing-utils/default.nix b/pkgs/os-specific/darwin/by-name/si/signingUtils/package.nix similarity index 100% rename from pkgs/os-specific/darwin/signing-utils/default.nix rename to pkgs/os-specific/darwin/by-name/si/signingUtils/package.nix diff --git a/pkgs/os-specific/darwin/signing-utils/utils.sh b/pkgs/os-specific/darwin/by-name/si/signingUtils/utils.sh similarity index 100% rename from pkgs/os-specific/darwin/signing-utils/utils.sh rename to pkgs/os-specific/darwin/by-name/si/signingUtils/utils.sh diff --git a/pkgs/os-specific/darwin/sigtool/default.nix b/pkgs/os-specific/darwin/by-name/si/sigtool/package.nix similarity index 100% rename from pkgs/os-specific/darwin/sigtool/default.nix rename to pkgs/os-specific/darwin/by-name/si/sigtool/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/system_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/sy/system_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/system_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/sy/system_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/system_cmds/package.nix b/pkgs/os-specific/darwin/by-name/sy/system_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/system_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/sy/system_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/system_cmds/patches/conditionalize-security-transition-shims.patch b/pkgs/os-specific/darwin/by-name/sy/system_cmds/patches/conditionalize-security-transition-shims.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/system_cmds/patches/conditionalize-security-transition-shims.patch rename to pkgs/os-specific/darwin/by-name/sy/system_cmds/patches/conditionalize-security-transition-shims.patch diff --git a/pkgs/os-specific/darwin/apple-source-releases/text_cmds/meson.build.in b/pkgs/os-specific/darwin/by-name/te/text_cmds/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/text_cmds/meson.build.in rename to pkgs/os-specific/darwin/by-name/te/text_cmds/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/text_cmds/package.nix b/pkgs/os-specific/darwin/by-name/te/text_cmds/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/text_cmds/package.nix rename to pkgs/os-specific/darwin/by-name/te/text_cmds/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/top/meson.build.in b/pkgs/os-specific/darwin/by-name/to/top/meson.build.in similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/top/meson.build.in rename to pkgs/os-specific/darwin/by-name/to/top/meson.build.in diff --git a/pkgs/os-specific/darwin/apple-source-releases/top/package.nix b/pkgs/os-specific/darwin/by-name/to/top/package.nix similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/top/package.nix rename to pkgs/os-specific/darwin/by-name/to/top/package.nix diff --git a/pkgs/os-specific/darwin/apple-source-releases/top/patches/0001-Revert-change-that-dropped-aarch64-support.patch b/pkgs/os-specific/darwin/by-name/to/top/patches/0001-Revert-change-that-dropped-aarch64-support.patch similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/top/patches/0001-Revert-change-that-dropped-aarch64-support.patch rename to pkgs/os-specific/darwin/by-name/to/top/patches/0001-Revert-change-that-dropped-aarch64-support.patch diff --git a/pkgs/os-specific/darwin/trash/default.nix b/pkgs/os-specific/darwin/by-name/tr/trash/package.nix similarity index 100% rename from pkgs/os-specific/darwin/trash/default.nix rename to pkgs/os-specific/darwin/by-name/tr/trash/package.nix diff --git a/pkgs/os-specific/darwin/trash/trash.diff b/pkgs/os-specific/darwin/by-name/tr/trash/trash.diff similarity index 100% rename from pkgs/os-specific/darwin/trash/trash.diff rename to pkgs/os-specific/darwin/by-name/tr/trash/trash.diff diff --git a/pkgs/os-specific/darwin/by-name/xc/xcodeProjectCheckHook/package.nix b/pkgs/os-specific/darwin/by-name/xc/xcodeProjectCheckHook/package.nix new file mode 100644 index 000000000000..bf975876a07d --- /dev/null +++ b/pkgs/os-specific/darwin/by-name/xc/xcodeProjectCheckHook/package.nix @@ -0,0 +1,6 @@ +{ makeSetupHook, pkgsBuildHost }: + +makeSetupHook { + name = "xcode-project-check-hook"; + propagatedBuildInputs = [ pkgsBuildHost.openssl ]; +} ./setup-hook.sh diff --git a/pkgs/os-specific/darwin/xcode-project-check-hook/setup-hook.sh b/pkgs/os-specific/darwin/by-name/xc/xcodeProjectCheckHook/setup-hook.sh similarity index 100% rename from pkgs/os-specific/darwin/xcode-project-check-hook/setup-hook.sh rename to pkgs/os-specific/darwin/by-name/xc/xcodeProjectCheckHook/setup-hook.sh diff --git a/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix b/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix deleted file mode 100644 index 28d598a397e2..000000000000 --- a/pkgs/os-specific/darwin/ghc-standalone-archive/default.nix +++ /dev/null @@ -1,27 +0,0 @@ -{ runCommand, cctools }: -{ - haskellPackages, - src, - deps ? p: [ ], - name, -}: -let - inherit (haskellPackages) ghc ghcWithPackages; - with-env = ghcWithPackages deps; - ghcName = "${ghc.targetPrefix}ghc"; -in -runCommand name - { - buildInputs = [ - with-env - cctools - ]; - } - '' - mkdir -p $out/lib - mkdir -p $out/include - ${ghcName} ${src} -staticlib -outputdir . -o $out/lib/${name}.a -stubdir $out/include - for file in ${ghc}/lib/${ghcName}-${ghc.version}/include/*; do - ln -sv $file $out/include - done - '' diff --git a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix b/pkgs/os-specific/darwin/mk-apple-derivation/default.nix similarity index 88% rename from pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix rename to pkgs/os-specific/darwin/mk-apple-derivation/default.nix index 9feabef5265d..cb06f5d639c6 100644 --- a/pkgs/os-specific/darwin/apple-source-releases/mkAppleDerivation.nix +++ b/pkgs/os-specific/darwin/mk-apple-derivation/default.nix @@ -12,6 +12,16 @@ in }: let + prependShardPath = + path: + let + shard = lib.toLower (lib.substring 0 2 path); + in + lib.foldl' lib.path.append ../by-name [ + shard + path + ]; + hasBasenamePrefix = prefix: file: lib.hasPrefix prefix (baseNameOf file); in lib.extendMkDerivation { @@ -22,7 +32,7 @@ lib.extendMkDerivation { let inherit (args) releaseName; info = versions.${releaseName}; - files = lib.filesystem.listFilesRecursive (lib.path.append ./. releaseName); + files = lib.filesystem.listFilesRecursive (prependShardPath releaseName); mesonFiles = lib.filter (hasBasenamePrefix "meson") files; in # You have to have at least `meson.build.in` when using xcodeHash to trigger the Meson diff --git a/pkgs/os-specific/darwin/apple-source-releases/update-source-releases.sh b/pkgs/os-specific/darwin/mk-apple-derivation/update-source-releases.sh similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/update-source-releases.sh rename to pkgs/os-specific/darwin/mk-apple-derivation/update-source-releases.sh diff --git a/pkgs/os-specific/darwin/apple-source-releases/versions.json b/pkgs/os-specific/darwin/mk-apple-derivation/versions.json similarity index 100% rename from pkgs/os-specific/darwin/apple-source-releases/versions.json rename to pkgs/os-specific/darwin/mk-apple-derivation/versions.json diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6fee0170889a..38db181c1027 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -1560,8 +1560,6 @@ with pkgs; stdenv = clangStdenv; }; - reattach-to-user-namespace = callPackage ../os-specific/darwin/reattach-to-user-namespace { }; - xcodeenv = callPackage ../development/mobile/xcodeenv { }; androidenv = callPackage ../development/mobile/androidenv { }; @@ -12379,7 +12377,33 @@ with pkgs; hy = with python3Packages; toPythonApplication hy; - ghc-standalone-archive = callPackage ../os-specific/darwin/ghc-standalone-archive { }; + ghc-standalone-archive = + { + haskellPackages, + src, + deps ? p: [ ], + name, + }: + let + inherit (haskellPackages) ghc ghcWithPackages; + with-env = ghcWithPackages deps; + ghcName = "${ghc.targetPrefix}ghc"; + in + runCommand name + { + buildInputs = [ + with-env + cctools + ]; + } + '' + mkdir -p $out/lib + mkdir -p $out/include + ${ghcName} ${src} -staticlib -outputdir . -o $out/lib/${name}.a -stubdir $out/include + for file in ${ghc}/lib/${ghcName}-${ghc.version}/include/*; do + ln -sv $file $out/include + done + ''; vdr = callPackage ../applications/video/vdr { }; vdrPlugins = recurseIntoAttrs (callPackage ../applications/video/vdr/plugins.nix { }); diff --git a/pkgs/top-level/darwin-packages.nix b/pkgs/top-level/darwin-packages.nix index 65b9ce2a7db1..36830090754b 100644 --- a/pkgs/top-level/darwin-packages.nix +++ b/pkgs/top-level/darwin-packages.nix @@ -1,21 +1,32 @@ +let + autoCalledPackages = import ./by-name-overlay.nix ../os-specific/darwin/by-name; +in + { lib, - buildPackages, - pkgs, - targetPackages, - libc, - preLibcHeaders, - darwin, + buildEnv, + cctools, generateSplicesForMkScope, + libc, + llvmPackages, makeScopeWithSplicing', + pkgs, + preLibcHeaders, stdenv, + targetPackages, + wrapBintoolsWith, config, }: let aliases = - self: super: - lib.optionalAttrs config.allowAliases (import ../top-level/darwin-aliases.nix lib self super pkgs); + final: prev: + lib.optionalAttrs config.allowAliases (import ../top-level/darwin-aliases.nix lib final prev pkgs); + + autoCalledPackagesWithAliases = lib.composeManyExtensions [ + autoCalledPackages + aliases + ]; mkBootstrapStdenv = stdenv: @@ -32,200 +43,158 @@ in makeScopeWithSplicing' { otherSplices = generateSplicesForMkScope "darwin"; - f = lib.extends aliases ( + extra = self: { + inherit (llvmPackages) clang-unwrapped; + + # This is an internal helper for building source-release packages. + # It’s not intended for use outside of the Darwin package set. + mkAppleDerivation = self.callPackage ../os-specific/darwin/mk-apple-derivation { }; + }; + f = lib.extends autoCalledPackagesWithAliases ( self: - let - inherit (self) mkDerivation callPackage; + lib.recurseIntoAttrs { + inherit (self.adv_cmds) ps; - # Open source packages that are built from source - apple-source-packages = lib.packagesFromDirectoryRecursive { - callPackage = self.callPackage; - directory = ../os-specific/darwin/apple-source-releases; + # Removes propagated packages from the stdenv, so those packages can be built without depending upon themselves. + bootstrapStdenv = mkBootstrapStdenv stdenv; + + # Note: Not in `package.nix` because it messes up the overrides. + binutils = wrapBintoolsWith { + libc = targetPackages.libc or libc; + bintools = self.binutils-unwrapped; }; - in - lib.recurseIntoAttrs ( - apple-source-packages - // { + binutilsNoLibc = wrapBintoolsWith { + libc = targetPackages.preLibcHeaders or preLibcHeaders; + bintools = self.binutils-unwrapped; + }; - inherit (self.adv_cmds) ps; + # x86-64 Darwin gnat-bootstrap emits assembly + # with MOVQ as the mnemonic for quadword interunit moves + # such as `movq %rbp, %xmm0`. + # The clang integrated assembler recognises this as valid, + # but unfortunately the cctools.gas GNU assembler does not; + # it instead uses MOVD as the mnemonic. + # The assembly that a GCC build emits is determined at build time + # and cannot be changed afterwards. + # + # To build GNAT on x86-64 Darwin, therefore, + # we need both the clang _and_ the cctools.gas assemblers to be available: + # the former to build at least the stage1 compiler, + # and the latter at least to be detectable + # as the target for the final compiler. + binutilsDualAs-unwrapped = buildEnv { + name = "${lib.getName self.binutils-unwrapped}-dualas-${lib.getVersion self.binutils-unwrapped}"; + paths = [ + self.binutils-unwrapped + (lib.getOutput "gas" cctools) + ]; + }; - binutils-unwrapped = callPackage ../os-specific/darwin/binutils { - inherit (pkgs) cctools; - inherit (pkgs.llvmPackages) clang-unwrapped llvm llvm-manpages; - }; + binutilsDualAs = self.binutils.override { + bintools = self.binutilsDualAs-unwrapped; + }; - binutils = pkgs.wrapBintoolsWith { - libc = targetPackages.libc or libc; - bintools = self.binutils-unwrapped; - }; + inherit (self.file_cmds) xattr; - # x86-64 Darwin gnat-bootstrap emits assembly - # with MOVQ as the mnemonic for quadword interunit moves - # such as `movq %rbp, %xmm0`. - # The clang integrated assembler recognises this as valid, - # but unfortunately the cctools.gas GNU assembler does not; - # it instead uses MOVD as the mnemonic. - # The assembly that a GCC build emits is determined at build time - # and cannot be changed afterwards. - # - # To build GNAT on x86-64 Darwin, therefore, - # we need both the clang _and_ the cctools.gas assemblers to be available: - # the former to build at least the stage1 compiler, - # and the latter at least to be detectable - # as the target for the final compiler. - binutilsDualAs-unwrapped = pkgs.buildEnv { - name = "${lib.getName self.binutils-unwrapped}-dualas-${lib.getVersion self.binutils-unwrapped}"; - paths = [ - self.binutils-unwrapped - (lib.getOutput "gas" pkgs.cctools) - ]; - }; + # Note: Not in `packages.nix` because it’s a package set not a derivation. + inherit (self.callPackage ../os-specific/darwin/xcode { }) + xcode_8_1 + xcode_8_2 + xcode_9_1 + xcode_9_2 + xcode_9_3 + xcode_9_4 + xcode_9_4_1 + xcode_10_1 + xcode_10_2 + xcode_10_2_1 + xcode_10_3 + xcode_11 + xcode_11_1 + xcode_11_2 + xcode_11_3_1 + xcode_11_4 + xcode_11_5 + xcode_11_6 + xcode_11_7 + xcode_12 + xcode_12_0_1 + xcode_12_1 + xcode_12_2 + xcode_12_3 + xcode_12_4 + xcode_12_5 + xcode_12_5_1 + xcode_13 + xcode_13_1 + xcode_13_2 + xcode_13_3 + xcode_13_3_1 + xcode_13_4 + xcode_13_4_1 + xcode_14 + xcode_14_1 + xcode_15 + xcode_15_0_1 + xcode_15_1 + xcode_15_2 + xcode_15_3 + xcode_15_4 + xcode_16 + xcode_16_1 + xcode_16_2 + xcode_16_3 + xcode_16_4 + xcode_26 + xcode_26_Apple_silicon + xcode_26_0_1 + xcode_26_0_1_Apple_silicon + xcode_26_1 + xcode_26_1_Apple_silicon + xcode_26_1_1 + xcode_26_1_1_Apple_silicon + xcode_26_2 + xcode_26_2_Apple_silicon + xcode_26_3 + xcode_26_3_Apple_silicon + xcode + requireXcode + ; - binutilsDualAs = self.binutils.override { - bintools = self.binutilsDualAs-unwrapped; - }; + # Note: Not in `package.nix` because it references files outside of the package. + # See doc/packages/darwin-builder.section.md + linux-builder = lib.makeOverridable ( + { modules }: + let + toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ]; - binutilsNoLibc = pkgs.wrapBintoolsWith { - libc = targetPackages.preLibcHeaders or preLibcHeaders; - bintools = self.binutils-unwrapped; - }; + nixos = import ../../nixos { + configuration = { + imports = [ + ../../nixos/modules/profiles/nix-builder-vm.nix + ] + ++ modules; - # Removes propagated packages from the stdenv, so those packages can be built without depending upon themselves. - bootstrapStdenv = mkBootstrapStdenv pkgs.stdenv; + # If you need to override this, consider starting with the right Nixpkgs + # in the first place, ie change `pkgs` in `pkgs.darwin.linux-builder`. + # or if you're creating new wiring that's not `pkgs`-centric, perhaps use the + # macos-builder profile directly. + virtualisation.host = { inherit pkgs; }; - libSystem = callPackage ../os-specific/darwin/libSystem { }; - - DarwinTools = callPackage ../os-specific/darwin/DarwinTools { }; - - libunwind = callPackage ../os-specific/darwin/libunwind { }; - - libcxx = callPackage ../os-specific/darwin/libcxx { }; - - sigtool = callPackage ../os-specific/darwin/sigtool { }; - - signingUtils = callPackage ../os-specific/darwin/signing-utils { }; - - autoSignDarwinBinariesHook = pkgs.makeSetupHook { - name = "auto-sign-darwin-binaries-hook"; - propagatedBuildInputs = [ self.signingUtils ]; - } ../os-specific/darwin/signing-utils/auto-sign-hook.sh; - - iosSdkPkgs = callPackage ../os-specific/darwin/xcode/sdk-pkgs.nix { - buildIosSdk = buildPackages.darwin.iosSdkPkgs.sdk; - targetIosSdkPkgs = (targetPackages.darwin or darwin).iosSdkPkgs; - inherit (pkgs.llvmPackages) clang-unwrapped; - }; - - lsusb = callPackage ../os-specific/darwin/lsusb { }; - - trash = callPackage ../os-specific/darwin/trash { }; - - inherit (self.file_cmds) xattr; - - inherit (pkgs.callPackages ../os-specific/darwin/xcode { }) - xcode_8_1 - xcode_8_2 - xcode_9_1 - xcode_9_2 - xcode_9_3 - xcode_9_4 - xcode_9_4_1 - xcode_10_1 - xcode_10_2 - xcode_10_2_1 - xcode_10_3 - xcode_11 - xcode_11_1 - xcode_11_2 - xcode_11_3_1 - xcode_11_4 - xcode_11_5 - xcode_11_6 - xcode_11_7 - xcode_12 - xcode_12_0_1 - xcode_12_1 - xcode_12_2 - xcode_12_3 - xcode_12_4 - xcode_12_5 - xcode_12_5_1 - xcode_13 - xcode_13_1 - xcode_13_2 - xcode_13_3 - xcode_13_3_1 - xcode_13_4 - xcode_13_4_1 - xcode_14 - xcode_14_1 - xcode_15 - xcode_15_0_1 - xcode_15_1 - xcode_15_2 - xcode_15_3 - xcode_15_4 - xcode_16 - xcode_16_1 - xcode_16_2 - xcode_16_3 - xcode_16_4 - xcode_26 - xcode_26_Apple_silicon - xcode_26_0_1 - xcode_26_0_1_Apple_silicon - xcode_26_1 - xcode_26_1_Apple_silicon - xcode_26_1_1 - xcode_26_1_1_Apple_silicon - xcode_26_2 - xcode_26_2_Apple_silicon - xcode_26_3 - xcode_26_3_Apple_silicon - xcode - requireXcode - ; - - xcodeProjectCheckHook = pkgs.makeSetupHook { - name = "xcode-project-check-hook"; - propagatedBuildInputs = [ pkgs.pkgsBuildHost.openssl ]; - } ../os-specific/darwin/xcode-project-check-hook/setup-hook.sh; - - # See doc/packages/darwin-builder.section.md - linux-builder = lib.makeOverridable ( - { modules }: - let - toGuest = builtins.replaceStrings [ "darwin" ] [ "linux" ]; - - nixos = import ../../nixos { - configuration = { - imports = [ - ../../nixos/modules/profiles/nix-builder-vm.nix - ] - ++ modules; - - # If you need to override this, consider starting with the right Nixpkgs - # in the first place, ie change `pkgs` in `pkgs.darwin.linux-builder`. - # or if you're creating new wiring that's not `pkgs`-centric, perhaps use the - # macos-builder profile directly. - virtualisation.host = { inherit pkgs; }; - - nixpkgs.hostPlatform = lib.mkDefault (toGuest stdenv.hostPlatform.system); - }; - - system = null; + nixpkgs.hostPlatform = lib.mkDefault (toGuest stdenv.hostPlatform.system); }; - in - nixos.config.system.build.macos-builder-installer - ) { modules = [ ]; }; + system = null; + }; - linux-builder-x86_64 = self.linux-builder.override { - modules = [ { nixpkgs.hostPlatform = "x86_64-linux"; } ]; - }; + in + nixos.config.system.build.macos-builder-installer + ) { modules = [ ]; }; - } - ) + linux-builder-x86_64 = self.linux-builder.override { + modules = [ { nixpkgs.hostPlatform = "x86_64-linux"; } ]; + }; + } ); } From aebdb27f20a4729622441c2932e3064dfc77e96d Mon Sep 17 00:00:00 2001 From: Randy Eckenrode Date: Sun, 5 Apr 2026 19:46:47 -0400 Subject: [PATCH 021/112] apple-source-releases: move to the whole `darwin` package set MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New packages really shouldn’t be put in this package set anymore. It mostly contains source releases and Darwin support packages. --- ci/OWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/OWNERS b/ci/OWNERS index 528c6d45622b..374afcd510af 100644 --- a/ci/OWNERS +++ b/ci/OWNERS @@ -485,7 +485,7 @@ pkgs/by-name/lx/lxc* @adamcstephens # Darwin /pkgs/by-name/ap/apple-sdk @NixOS/darwin-core -/pkgs/os-specific/darwin/apple-source-releases @NixOS/darwin-core +/pkgs/os-specific/darwin @NixOS/darwin-core /pkgs/stdenv/darwin @NixOS/darwin-core # BEAM From 5513c368ad2d1420cbb65e8a36c77bb172569ec2 Mon Sep 17 00:00:00 2001 From: Will Fancher Date: Sun, 5 Apr 2026 17:22:48 -0400 Subject: [PATCH 022/112] nixos/power-management: Handle resume correctly with `sleep.target` Fixes `nixos.tests.hibernate` nondeterministic failure. The documentation in `systemd.special(7)` recommends using this `StopWhenUnneeded` method, rather than using custom unit logic post-resume. This method is sufficiently general, and matches systemd's typical model of using `ExecStart` and `ExecStop` as duals that mirror each others processes across symmetric events in the system's life cycle, e.g. bootup / shutdown. This involved removing `post-resume.target`. This was introduced in d5604f0b22daf8a0ec341c70607f014dfc9bf207 as a way to notify services of resume events, but as discussed, this is not the typical model. See: https://github.com/NixOS/nixpkgs/pull/488429/changes#r3038005884 --- .../manual/release-notes/rl-2605.section.md | 2 + nixos/modules/config/power-management.nix | 57 +++++-------------- nixos/modules/services/hardware/undervolt.nix | 22 +++++-- 3 files changed, 33 insertions(+), 48 deletions(-) diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 5220d49e71e2..1d50b7b8d257 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -137,6 +137,8 @@ - `services.uptime` has been removed because the package it relies on does not exist anymore in nixpkgs. +- `post-resume.target` has been removed. See {manpage}`systemd.special(7)` about `sleep.target` for instructions on ordering a process after resume with `ExecStop=`. + - `services.kubernetes.addons.dns.coredns` has been renamed to `services.kubernetes.addons.dns.corednsImage` and now expects a package instead of attrs. Now, by default, nixpkgs.coredns in conjunction with dockerTools.buildImage is used, instead of pulling the upstream container image from Docker Hub. If you want the old behavior, you can set: diff --git a/nixos/modules/config/power-management.nix b/nixos/modules/config/power-management.nix index 202ecdb7cffb..9d015c021794 100644 --- a/nixos/modules/config/power-management.nix +++ b/nixos/modules/config/power-management.nix @@ -90,68 +90,35 @@ in https://www.freedesktop.org/software/systemd/man/latest/systemd.special.html#sleep.target ''; - systemd.targets.post-resume = { - description = "Post-Resume Actions"; - requires = [ "post-resume.service" ]; - after = [ "post-resume.service" ]; - wantedBy = [ "sleep.target" ]; - unitConfig.StopWhenUnneeded = true; - }; - systemd.services = { # Service executed before suspending/hibernating. - pre-sleep = { - description = "Pre-Sleep Actions"; + sleep-actions = { + description = "Sleep Actions"; wantedBy = [ "sleep.target" ]; before = [ "sleep.target" ]; + unitConfig.StopWhenUnneeded = true; script = '' # NixOS pre-sleep script # config.powerManagement.powerDownCommands ${cfg.powerDownCommands} ''; - serviceConfig.Type = "oneshot"; - }; - - # Service executed after resuming from suspend/hibernate - post-resume = { - description = "Post-Resume Actions"; - # Pulled in by post-resume.service above - after = [ "sleep.target" ]; - script = '' + preStop = '' # NixOS pre-resume script - /run/current-system/systemd/bin/systemctl try-restart --no-block post-resume.target - # config.powerManagement.resumeCommands ${cfg.resumeCommands} # config.powerManagement.powerUpCommands ${cfg.powerUpCommands} ''; - serviceConfig.Type = "oneshot"; + serviceConfig = { + Type = "oneshot"; + RemainAfterExit = true; + }; }; - # Service executed before shutdown - pre-shutdown = { - description = "Pre-Shutdown Actions"; - wantedBy = [ - "shutdown.target" - ]; - before = [ - "shutdown.target" - ]; - script = '' - # NixOS pre-shutdown script - - # config.powerManagement.powerDownCommands - ${cfg.powerDownCommands} - ''; - serviceConfig.Type = "oneshot"; - unitConfig.DefaultDependencies = false; - }; - - # Service executed after boot + # Service executed after boot, and stopped during shutdown post-boot = { description = "Post-Boot Actions"; # It's not well defined at what point in the bootup sequence this should run @@ -167,6 +134,12 @@ in # config.powerManagement.powerUpCommands ${cfg.powerUpCommands} ''; + preStop = '' + # NixOS pre-shutdown script + + # config.powerManagement.powerDownCommands + ${cfg.powerDownCommands} + ''; serviceConfig = { Type = "oneshot"; RemainAfterExit = true; diff --git a/nixos/modules/services/hardware/undervolt.nix b/nixos/modules/services/hardware/undervolt.nix index a2c16f9bd8de..585364e24e34 100644 --- a/nixos/modules/services/hardware/undervolt.nix +++ b/nixos/modules/services/hardware/undervolt.nix @@ -194,12 +194,7 @@ in systemd.services.undervolt = { description = "Intel Undervolting Service"; - # Apply undervolt on boot, nixos generation switch and resume - wantedBy = [ - "multi-user.target" - "post-resume.target" - ]; - after = [ "post-resume.target" ]; # Not sure why but it won't work without this + wantedBy = [ "multi-user.target" ]; serviceConfig = { Type = "oneshot"; @@ -208,6 +203,21 @@ in }; }; + systemd.services.undervolt-sleep = { + description = "Preserve Intel Undervolting After Sleep"; + + wantedBy = [ "sleep.target" ]; + before = [ "sleep.target" ]; + + unitConfig.StopWhenUnneeded = true; + serviceConfig = { + Type = "oneshot"; + Restart = "no"; + RemainAfterExit = true; + ExecStop = "${cfg.package}/bin/undervolt ${toString cliArgs}"; + }; + }; + systemd.timers.undervolt = lib.mkIf cfg.useTimer { description = "Undervolt timer to ensure voltage settings are always applied"; partOf = [ "undervolt.service" ]; From c741d231956422146fe33aade19e23782f3c0a3e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 10:59:03 +0000 Subject: [PATCH 023/112] fence: 0.1.32 -> 0.1.42 --- pkgs/by-name/fe/fence/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/fe/fence/package.nix b/pkgs/by-name/fe/fence/package.nix index ec528e557ee7..a5be31cc803f 100644 --- a/pkgs/by-name/fe/fence/package.nix +++ b/pkgs/by-name/fe/fence/package.nix @@ -14,16 +14,16 @@ buildGoModule (finalAttrs: { pname = "fence"; - version = "0.1.32"; + version = "0.1.42"; src = fetchFromGitHub { owner = "Use-Tusk"; repo = "fence"; tag = "v${finalAttrs.version}"; - hash = "sha256-D+mAwmeOGSuKqO72atjvlhg2ez4MXtrjlnHEXPX34jI="; + hash = "sha256-TxSUgU32Y+IScFtAgWnB32OgyLaC7kWRVmYiM986nVo="; }; - vendorHash = "sha256-8v6B39TCwzu6DgFr1nuaGBEQ9s06rbBCENiGUIVw9Rk="; + vendorHash = "sha256-P30NCXYX27R7F/dNhWSwiLg8T2f6J0/hlu6G3wlENFI="; ldflags = [ "-s" From a3b746a1fa5280ac64e9c00265fab7871f845fc8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 14:09:43 +0000 Subject: [PATCH 024/112] kitty-themes: 0-unstable-2026-03-25 -> 0-unstable-2026-03-31 --- pkgs/by-name/ki/kitty-themes/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ki/kitty-themes/package.nix b/pkgs/by-name/ki/kitty-themes/package.nix index 1f1cd362bcd5..4246c4015658 100644 --- a/pkgs/by-name/ki/kitty-themes/package.nix +++ b/pkgs/by-name/ki/kitty-themes/package.nix @@ -7,13 +7,13 @@ stdenvNoCC.mkDerivation { pname = "kitty-themes"; - version = "0-unstable-2026-03-25"; + version = "0-unstable-2026-03-31"; src = fetchFromGitHub { owner = "kovidgoyal"; repo = "kitty-themes"; - rev = "d28a70284e15871108ba45295ce555e893f42f0a"; - hash = "sha256-Qc5DBupW0FJVuBf0+Jhq55XkgWpNiSu3TO8jb/cVx1I="; + rev = "c467f3ef3fd44f3fa3c16599e0d1663be027dea0"; + hash = "sha256-oNMf6hGcNj9IS7m+lo6xRsBAPQw40w7MlEPZCTv3Ggg="; }; dontConfigure = true; From b736e253d52addc39fec440c6db2771fd1c92b9c Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 14:17:30 +0000 Subject: [PATCH 025/112] interactive-html-bom: 2.11.0 -> 2.11.1 --- pkgs/by-name/in/interactive-html-bom/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/in/interactive-html-bom/package.nix b/pkgs/by-name/in/interactive-html-bom/package.nix index 84bbdae2d35d..fad9176bad82 100644 --- a/pkgs/by-name/in/interactive-html-bom/package.nix +++ b/pkgs/by-name/in/interactive-html-bom/package.nix @@ -8,14 +8,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "interactive-html-bom"; - version = "2.11.0"; + version = "2.11.1"; pyproject = true; src = fetchFromGitHub { owner = "openscopeproject"; repo = "InteractiveHtmlBom"; tag = "v${finalAttrs.version}"; - hash = "sha256-8uLHSMliz8bQ8aV+XWap8DwKKqroOPph1l9cgKXps+U="; + hash = "sha256-j8ORSHMZ3aWtWNA5UaHeL+OXh4D1wdek5JjinmqpOfI="; }; build-system = [ python3Packages.hatchling ]; From 6ded24dcf3196abda9a2762007278aeb94851a4c Mon Sep 17 00:00:00 2001 From: DNKYr Date: Mon, 6 Apr 2026 08:36:44 -0700 Subject: [PATCH 026/112] ani-cli: 4.10 -> 4.11 --- pkgs/by-name/an/ani-cli/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/an/ani-cli/package.nix b/pkgs/by-name/an/ani-cli/package.nix index b399dd8a704d..58dcf2ddb4ec 100644 --- a/pkgs/by-name/an/ani-cli/package.nix +++ b/pkgs/by-name/an/ani-cli/package.nix @@ -27,13 +27,13 @@ in stdenvNoCC.mkDerivation (finalAttrs: { pname = "ani-cli"; - version = "4.10"; + version = "4.11"; src = fetchFromGitHub { owner = "pystardust"; repo = "ani-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-R/YQ02ctTcAEzrVyWlaCHi1YW82iPrMBbbMNP21r0p8="; + hash = "sha256-gQprGtKXXpDm66dFWsrriL4G0NPav+nqm8T6wkdbgk8="; }; nativeBuildInputs = [ makeWrapper ]; From efa29fb7e14446ab198893ed9a5562493b829b56 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 15:56:32 +0000 Subject: [PATCH 027/112] git-machete: 3.39.2 -> 3.40.0 --- pkgs/by-name/gi/git-machete/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/gi/git-machete/package.nix b/pkgs/by-name/gi/git-machete/package.nix index 90871391342a..66dd9f7eb6d2 100644 --- a/pkgs/by-name/gi/git-machete/package.nix +++ b/pkgs/by-name/gi/git-machete/package.nix @@ -9,14 +9,14 @@ python3.pkgs.buildPythonApplication (finalAttrs: { pname = "git-machete"; - version = "3.39.2"; + version = "3.40.0"; pyproject = true; src = fetchFromGitHub { owner = "virtuslab"; repo = "git-machete"; tag = "v${finalAttrs.version}"; - hash = "sha256-uu2HFrXcJl4jSl8nHBrTIxC0arn3FZQ2SvZIMyKqlaU="; + hash = "sha256-RR+DNCqopTzGVy2bwr6qer4l9TVrBtOMtjGS9vfziAs="; }; build-system = with python3.pkgs; [ setuptools ]; From c9451c16d03863185c881af7abe21d1293ffde34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= Date: Mon, 6 Apr 2026 11:55:14 -0700 Subject: [PATCH 028/112] python3Packages.ddgs: 9.12.0 -> 9.13.0 --- pkgs/development/python-modules/ddgs/default.nix | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/ddgs/default.nix b/pkgs/development/python-modules/ddgs/default.nix index 2bed55f3dd9b..334dd6153daf 100644 --- a/pkgs/development/python-modules/ddgs/default.nix +++ b/pkgs/development/python-modules/ddgs/default.nix @@ -14,14 +14,14 @@ buildPythonPackage (finalAttrs: { pname = "ddgs"; - version = "9.12.0"; + version = "9.13.0"; pyproject = true; src = fetchFromGitHub { owner = "deedy5"; repo = "ddgs"; tag = "v${finalAttrs.version}"; - hash = "sha256-z6IFwQwtyqKW0mn+z3K1aoFkFoPH0OOofukmTIk5gVs="; + hash = "sha256-AUfPAHRrhO/n6hFyXEfG+X4ukCqIMCJbXSss0jYUYiY="; }; build-system = [ setuptools ]; @@ -35,9 +35,11 @@ buildPythonPackage (finalAttrs: { optional-dependencies = { api = [ fastapi - mcp uvicorn ]; + mcp = [ + mcp + ]; }; nativeCheckInputs = [ versionCheckHook ]; From df0d5f4e1604a1ab1d70fe5a4f794242ff98d8cb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment?= Date: Mon, 6 Apr 2026 12:10:10 -0700 Subject: [PATCH 029/112] python3Packages.primp: 1.2.1 -> 1.2.2 --- pkgs/development/python-modules/primp/Cargo.lock | 4 ++-- pkgs/development/python-modules/primp/default.nix | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/primp/Cargo.lock b/pkgs/development/python-modules/primp/Cargo.lock index efd3b54351ae..de7423fd9a5e 100644 --- a/pkgs/development/python-modules/primp/Cargo.lock +++ b/pkgs/development/python-modules/primp/Cargo.lock @@ -1909,7 +1909,7 @@ dependencies = [ [[package]] name = "primp" -version = "1.2.1" +version = "1.2.2" dependencies = [ "criterion", "h2", @@ -1925,7 +1925,7 @@ dependencies = [ [[package]] name = "primp-python" -version = "1.2.1" +version = "1.2.2" dependencies = [ "anyhow", "bytes", diff --git a/pkgs/development/python-modules/primp/default.nix b/pkgs/development/python-modules/primp/default.nix index 13ea9755691c..414450b6acbf 100644 --- a/pkgs/development/python-modules/primp/default.nix +++ b/pkgs/development/python-modules/primp/default.nix @@ -11,14 +11,14 @@ buildPythonPackage (finalAttrs: { pname = "primp"; - version = "1.2.1"; + version = "1.2.2"; pyproject = true; src = fetchFromGitHub { owner = "deedy5"; repo = "primp"; tag = "v${finalAttrs.version}"; - hash = "sha256-3NAu8hAHdazsV+KEH7gUms8XGKW84nasHnygIz5jRa8="; + hash = "sha256-AOMlf7Qo9CJFyEUXdtQuwnFQVBzejHTc6UHie/OlHOo="; }; # The Cargo.lock is not pushed upstream From 5ee93fc66e0cfddf6358566cc8ff7fd4a4103865 Mon Sep 17 00:00:00 2001 From: Cathal Mullan Date: Mon, 6 Apr 2026 20:25:12 +0100 Subject: [PATCH 030/112] dioxus-cli: 0.7.4 -> 0.7.5 --- pkgs/by-name/di/dioxus-cli/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/di/dioxus-cli/package.nix b/pkgs/by-name/di/dioxus-cli/package.nix index b85c58a59a80..95acb9ec4a4b 100644 --- a/pkgs/by-name/di/dioxus-cli/package.nix +++ b/pkgs/by-name/di/dioxus-cli/package.nix @@ -16,15 +16,15 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "dioxus-cli"; - version = "0.7.4"; + version = "0.7.5"; src = fetchCrate { pname = "dioxus-cli"; version = finalAttrs.version; - hash = "sha256-6ZKVnLMq2eB6kj2Ly3z0/dWpZ+x9bJwPtyxE8Ef6haI="; + hash = "sha256-iAwR43SwmOBvuHa9qZBJLCjyhQSj/XgDx0jkWR+lgrE="; }; - cargoHash = "sha256-VrJuT3ori25joRe7kjSr6j8xfbKn5udETviV3id2mG4="; + cargoHash = "sha256-JS5/7hQhgN2gbMmLY2zD2GE/Ony8AAHAzj7Ituj6l90="; buildFeatures = [ "no-downloads" ] From 26fe05d46c354589c07f649ce33f0001e904ce53 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 20:32:37 +0000 Subject: [PATCH 031/112] python3Packages.django-rq: 4.0.1 -> 4.1 --- pkgs/development/python-modules/django-rq/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/django-rq/default.nix b/pkgs/development/python-modules/django-rq/default.nix index d68308d3fc3e..43859c8dcbeb 100644 --- a/pkgs/development/python-modules/django-rq/default.nix +++ b/pkgs/development/python-modules/django-rq/default.nix @@ -16,14 +16,14 @@ buildPythonPackage (finalAttrs: { pname = "django-rq"; - version = "4.0.1"; + version = "4.1"; pyproject = true; src = fetchFromGitHub { owner = "rq"; repo = "django-rq"; tag = "v${finalAttrs.version}"; - hash = "sha256-7V3kZVK9YsJDYrME4LHc1+U2lk1qBJU8Vza7o3JzuU0="; + hash = "sha256-c/elbEi+m3WVGl8137ct1PsxRM397uZNPy9X54b8fmg="; }; build-system = [ hatchling ]; From 85da3737ae14c94a3b6b6368f6fa1ed53fd3f9ba Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 22:30:54 +0000 Subject: [PATCH 032/112] kdotool: 0.2.2 -> 0.2.3 --- pkgs/by-name/kd/kdotool/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/kd/kdotool/package.nix b/pkgs/by-name/kd/kdotool/package.nix index f0e0650ce685..12801b8abbf5 100644 --- a/pkgs/by-name/kd/kdotool/package.nix +++ b/pkgs/by-name/kd/kdotool/package.nix @@ -8,17 +8,17 @@ }: rustPlatform.buildRustPackage (finalAttrs: { - version = "0.2.2"; + version = "0.2.3"; pname = "kdotool"; src = fetchFromGitHub { owner = "jinliu"; repo = "kdotool"; rev = "v${finalAttrs.version}"; - hash = "sha256-aJRqFcKyu4/aqI3WtH9NjzjNgiI6lq0VgCXNGaNdyvE="; + hash = "sha256-8lN85DPw3FUPS1k0Ktcp8Xf1DAdj6Hd6PqlKmhFCP+o="; }; - cargoHash = "sha256-QrJVN2O/pDCIpD1ioFPZyj7au3DQtU3l/I440WsyYWo="; + cargoHash = "sha256-8WkLgTg+ndMtAh0W0efvRCDEgvhmKBcN0e0Jxn4hgH8="; nativeBuildInputs = [ pkg-config ]; buildInputs = [ dbus ]; From e6fbe2b798b3711e4fedbd7c3c6293aa6aac1270 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 7 Apr 2026 01:35:26 +0200 Subject: [PATCH 033/112] nixos/modules: import intel-npu module This was missed twice during review. --- nixos/modules/module-list.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nixos/modules/module-list.nix b/nixos/modules/module-list.nix index 10d04094dd74..ee38f638dfcf 100644 --- a/nixos/modules/module-list.nix +++ b/nixos/modules/module-list.nix @@ -61,6 +61,7 @@ ./hardware/cpu/amd-ryzen-smu.nix ./hardware/cpu/amd-sev.nix ./hardware/cpu/intel-microcode.nix + ./hardware/cpu/intel-npu.nix ./hardware/cpu/intel-sgx.nix ./hardware/cpu/x86-msr.nix ./hardware/decklink.nix From 44cdcdf7aa52a4a71eaaae0bc215a71a4f297e18 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 7 Apr 2026 01:36:04 +0200 Subject: [PATCH 034/112] nixos/nixos-generate-config: drop intel-npu import Loading modules at config gen time is wrong. This should only happen for profiles and the options should be available all the time instead. --- nixos/modules/installer/tools/nixos-generate-config.pl | 1 - 1 file changed, 1 deletion(-) diff --git a/nixos/modules/installer/tools/nixos-generate-config.pl b/nixos/modules/installer/tools/nixos-generate-config.pl index 1586a09aee5f..3d0f4a9f7d86 100644 --- a/nixos/modules/installer/tools/nixos-generate-config.pl +++ b/nixos/modules/installer/tools/nixos-generate-config.pl @@ -211,7 +211,6 @@ sub pciCheck { ($device eq "0xfd3e" || $device eq "0x7d1d" || $device eq "0xad1d" || $device eq "0x643e" || $device eq "0xb03e")) { - push @imports, "(modulesPath + \"/hardware/cpu/intel-npu.nix\")"; push @attrs, "hardware.cpu.intel.npu.enable = true;"; } From dea260a8f559eed6f5d4ddcbe9254ab84dc2505f Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 00:12:51 +0000 Subject: [PATCH 035/112] hoppscotch: 26.2.1-0 -> 26.3.0-0 --- pkgs/by-name/ho/hoppscotch/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/ho/hoppscotch/package.nix b/pkgs/by-name/ho/hoppscotch/package.nix index 3a4549cc81df..ae67d53a0fca 100644 --- a/pkgs/by-name/ho/hoppscotch/package.nix +++ b/pkgs/by-name/ho/hoppscotch/package.nix @@ -8,22 +8,22 @@ let pname = "hoppscotch"; - version = "26.2.1-0"; + version = "26.3.0-0"; src = fetchurl { aarch64-darwin = { url = "https://github.com/hoppscotch/releases/releases/download/v${version}/Hoppscotch_mac_aarch64.dmg"; - hash = "sha256-F9kEa1trZKm2sUs5JMQY8lwkM+Vs0SFGd5NGbrmythQ="; + hash = "sha256-nfXk6N4cVp9NCE/kKZsVeEIQ+zYssw8XlBQgcKMHJ2A="; }; x86_64-darwin = { url = "https://github.com/hoppscotch/releases/releases/download/v${version}/Hoppscotch_mac_x64.dmg"; - hash = "sha256-jxqYV3OsfJljfFi5PeMD/rOnpuuEJ0+08lozjCTZlOc="; + hash = "sha256-emnwjmBPL/eKAVPmgnpDK/N9hiwTenCCa123fJfXLE4="; }; x86_64-linux = { url = "https://github.com/hoppscotch/releases/releases/download/v${version}/Hoppscotch_linux_x64.AppImage"; - hash = "sha256-PiFcLAAXvR1GlIAeKlK066NE/bCCpLqJ32tVEY/VZ1s="; + hash = "sha256-V7CI0j1C3UZuhyY6KeL1CAILfpc8N0cJxyI4M5lnRPg="; }; } .${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}"); From c3af8eba14b88638605c21611e0cc804253972fa Mon Sep 17 00:00:00 2001 From: Lin Xianyi Date: Tue, 7 Apr 2026 08:49:55 +0800 Subject: [PATCH 036/112] rclip: 2.0.11 -> 2.1.6 Changelog: https://github.com/yurijmikhalevich/rclip/releases/tag/v2.1.6 --- pkgs/by-name/rc/rclip/package.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/rc/rclip/package.nix b/pkgs/by-name/rc/rclip/package.nix index 88bad3453c80..bb34b57d342f 100644 --- a/pkgs/by-name/rc/rclip/package.nix +++ b/pkgs/by-name/rc/rclip/package.nix @@ -6,14 +6,14 @@ }: python3Packages.buildPythonApplication (finalAttrs: { pname = "rclip"; - version = "2.0.11"; + version = "2.1.6"; pyproject = true; src = fetchFromGitHub { owner = "yurijmikhalevich"; repo = "rclip"; tag = "v${finalAttrs.version}"; - hash = "sha256-TXJpaMCSKCeOiWPVb9//czux+JV8VlJsiWH8fUb1tkw="; + hash = "sha256-95OiG3I9S9eJHMYkRd9Y52XnCROFV98fvmUs4SRBF4s="; }; build-system = with python3Packages; [ @@ -24,6 +24,7 @@ python3Packages.buildPythonApplication (finalAttrs: { numpy open-clip-torch pillow + pillow-heif requests torch torchvision From 15d55fcfd2ddc75155b77288642dcc36371b961a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Tue, 7 Apr 2026 03:16:55 +0200 Subject: [PATCH 037/112] archisteamfarm: 6.3.3.3 -> 6.3.4.2 Diff: https://github.com/JustArchiNET/ArchiSteamFarm/compare/6.3.3.3...6.3.4.2 --- pkgs/by-name/ar/archisteamfarm/deps.json | 298 +++++++++++---------- pkgs/by-name/ar/archisteamfarm/package.nix | 4 +- 2 files changed, 156 insertions(+), 146 deletions(-) diff --git a/pkgs/by-name/ar/archisteamfarm/deps.json b/pkgs/by-name/ar/archisteamfarm/deps.json index b2f13b20729c..670ae90d5911 100644 --- a/pkgs/by-name/ar/archisteamfarm/deps.json +++ b/pkgs/by-name/ar/archisteamfarm/deps.json @@ -11,268 +11,268 @@ }, { "pname": "Humanizer", - "version": "3.0.1", - "hash": "sha256-eOZrpj3KmJ0XpfoJMTv0Fritbm2xzw4wQtN0QOl7IKI=" + "version": "3.0.10", + "hash": "sha256-oNSXK5LLMNiK8iA/0H+zQeoDcbrDuTp/+zw0LGTECNA=" }, { "pname": "Humanizer.Core", - "version": "3.0.1", - "hash": "sha256-Wxqf1FRXtsQulLFtbfsfYu4oZmrCuOZAikMcY2i6Dww=" + "version": "3.0.10", + "hash": "sha256-mflSENjDof1Av9M9RLGEQcl4V4keVfH3qIxy/uxJ6FE=" }, { "pname": "Humanizer.Core.af", - "version": "3.0.1", - "hash": "sha256-+kSKJGbalrzonEgrpOmZ+crY0zUbdQujx/phxT2eGYA=" + "version": "3.0.10", + "hash": "sha256-xGTmr9yqMZ1kjwffnodCE8Km/tflzOUmmw5XPcq865w=" }, { "pname": "Humanizer.Core.ar", - "version": "3.0.1", - "hash": "sha256-NAeMsvW7X5RWfPKQqBj76VhzgddGsth5KH7fFeqnzpk=" + "version": "3.0.10", + "hash": "sha256-1H3wZwppgyt3Q9wXdDvig/wSTYgQVtlT45d4gU5UpEM=" }, { "pname": "Humanizer.Core.az", - "version": "3.0.1", - "hash": "sha256-WYD9EFaqyIRwRrMsf8uTu7Mfg3F+F4RukN5tNIeU2rQ=" + "version": "3.0.10", + "hash": "sha256-JCWEMrspXiE0zfvUtZHxHuLzo461mtXZmct3EhgoHHE=" }, { "pname": "Humanizer.Core.bg", - "version": "3.0.1", - "hash": "sha256-9oMA+uYovUtbrlOV54LfoIJhEJOd9UrdYdvvUrCRhWs=" + "version": "3.0.10", + "hash": "sha256-vSzpVvSGXKdmsVv7457WsDFEW0N0vVM430dhHRnsz7M=" }, { "pname": "Humanizer.Core.bn", - "version": "3.0.1", - "hash": "sha256-HSMAEjv/TMckJSKl/5YIR1dmFz/7bf1sDs8bAMsNbfA=" + "version": "3.0.10", + "hash": "sha256-vJkiXSfOHXR9iW11Glk6vRcSied+tRExMcgl3/6dRDo=" }, { "pname": "Humanizer.Core.ca", - "version": "3.0.1", - "hash": "sha256-vCxGyB2GnH5MicydzjwXmtt7389YlN7cA3vwnDlYB88=" + "version": "3.0.10", + "hash": "sha256-Se/BAQJ2ZiEqGX6Mjlu8BwfHMdYyOGwEnTyGjq5+2vA=" }, { "pname": "Humanizer.Core.cs", - "version": "3.0.1", - "hash": "sha256-/Qdyktl/Nh33CmuCK6wDyjZfGc5MmIHxMJTwU+3MSyY=" + "version": "3.0.10", + "hash": "sha256-jaXEgeXdewcc6+Tc03dDK23TcmxIjTx2ECdp7rsgyOc=" }, { "pname": "Humanizer.Core.da", - "version": "3.0.1", - "hash": "sha256-u0QiFgEg3ezPgTjQTAxqaNEnuNikg+zsJ7A0wu85dTE=" + "version": "3.0.10", + "hash": "sha256-htjzVIzEn7v86zt/ZrV4D1kC5Xcm4TjQobbiOCBqNjE=" }, { "pname": "Humanizer.Core.de", - "version": "3.0.1", - "hash": "sha256-b1BYLeOmy4Wg1DgNSWdZpEdsMCPrIfI3LC+xCnSd4aw=" + "version": "3.0.10", + "hash": "sha256-sOjZBlr18olsdH1dWOrVSzNBhopqXBvF7DAUS3aQSeo=" }, { "pname": "Humanizer.Core.el", - "version": "3.0.1", - "hash": "sha256-dH0OOK3tGMDF/wt+SdzmJvOE/6TrmXCe4Srq8PW44W4=" + "version": "3.0.10", + "hash": "sha256-UfVCjRvsWrwoN4RAJXVx+5Ik0vlh3UqZ1a8lNG0MQmo=" }, { "pname": "Humanizer.Core.es", - "version": "3.0.1", - "hash": "sha256-AXSfMmXKEmQeZ1IPtGGSSroIE6CVuC6sW8pl355dbRs=" + "version": "3.0.10", + "hash": "sha256-oWmtwMXZopmLkfbP4A8Kdlh5R20f3jXRsU4RWN8pSUs=" }, { "pname": "Humanizer.Core.fa", - "version": "3.0.1", - "hash": "sha256-F0VtmKADyVNztOZIkCbt6s5N5+N+7aFWP+t2n8pEL70=" + "version": "3.0.10", + "hash": "sha256-g4xRBGmv2VFhBzQGiVRdg9OnpQbAEYt9sEYA2E4pCjo=" }, { "pname": "Humanizer.Core.fi", - "version": "3.0.1", - "hash": "sha256-3ufuXJCy/m7wQs+xDfPWjqoWXvzjSLqdxb8PmS01BTM=" + "version": "3.0.10", + "hash": "sha256-EdtSXsL0tL7cRhy1vW+ZPQkEBDEih1NXxOU5jlYuJnU=" }, { "pname": "Humanizer.Core.fil", - "version": "3.0.1", - "hash": "sha256-Fsesly0CWMzn46k6LBzMlJgkced618aliVJ1zWxjaR0=" + "version": "3.0.10", + "hash": "sha256-xpis1kNQQBmh84/b0owiznL9bMdubzzctkiUxpwWKAo=" }, { "pname": "Humanizer.Core.fr", - "version": "3.0.1", - "hash": "sha256-eaW4Lqjg7lwkCvKu7bThZGLUHdhtaU34ZFzz/fQtJ98=" + "version": "3.0.10", + "hash": "sha256-4+JXuvCoRV1lAK+621QJ2tNWRZ0drUU8Ph+hQDm4468=" }, { "pname": "Humanizer.Core.he", - "version": "3.0.1", - "hash": "sha256-3nsZrfHqPaZ8U2OuqPaejHpRmjjorBRtstxqWWgJ0kc=" + "version": "3.0.10", + "hash": "sha256-s5OlsY9+UpjfbRWRZzXsV2NTHjSuhZaLUI01QciC0Mc=" }, { "pname": "Humanizer.Core.hr", - "version": "3.0.1", - "hash": "sha256-q2Plb4DewyQnMy6RwXmTQil9LigzKmcI6q7hhbXxM4Y=" + "version": "3.0.10", + "hash": "sha256-UJTrsiLTEz0Vod9KV9VoJE3aq8XkiwOwScbfxkuvmsI=" }, { "pname": "Humanizer.Core.hu", - "version": "3.0.1", - "hash": "sha256-VCFS7nZ+Bj+boofum2mGX1CoN4aBekO9uLSzDQX0hsQ=" + "version": "3.0.10", + "hash": "sha256-k7cdsRyX1pJx2LuUuaxGmQWbLkhIWEAIVDt/j7vVlG0=" }, { "pname": "Humanizer.Core.hy", - "version": "3.0.1", - "hash": "sha256-A+t0PDY5yUHy9qkwwcbJrisdgulpjaSkFxA0Xfvj5Cs=" + "version": "3.0.10", + "hash": "sha256-8reWvHEbigIRePV1gwo4cYzqf9VHhLbXirGGu78zCe0=" }, { "pname": "Humanizer.Core.id", - "version": "3.0.1", - "hash": "sha256-XF71+XxuhaVCrnhLh0RJWGzdQ3Y0EEDVUec2aqdk1II=" + "version": "3.0.10", + "hash": "sha256-W1Iy56CaNhMqYflVVauWZ9bP8l0jaAuNYu3z0Qovz8E=" }, { "pname": "Humanizer.Core.is", - "version": "3.0.1", - "hash": "sha256-drGjtmT8FCcgKYTiwXOIdtCr1oHDzveWlPmqSCiltkU=" + "version": "3.0.10", + "hash": "sha256-UZr0sAftzuUvoBtS8oJp/g0Z51JyYBGlKP/JpZOpUno=" }, { "pname": "Humanizer.Core.it", - "version": "3.0.1", - "hash": "sha256-tFSl2sFocpt5pj2kIBjkQLB+1CH3wVwe9ggSXEcCRSc=" + "version": "3.0.10", + "hash": "sha256-CO6fEacSaT9RUuKSUybDMU3lkPFa+BHxNWG/qiKQp6E=" }, { "pname": "Humanizer.Core.ja", - "version": "3.0.1", - "hash": "sha256-OnAyLlJLYJP0fpvtdjfmEhOCUsfFMvbUpzbqpkyFbfU=" + "version": "3.0.10", + "hash": "sha256-fZuZW2mU6bWyKCe7hc3HCSjz+zjPABFcFEj6OADzflY=" }, { "pname": "Humanizer.Core.ko", - "version": "3.0.1", - "hash": "sha256-zudrcq9bEYzY/MNbLh8dIiDScejgudL7HqpMiEKTTAU=" + "version": "3.0.10", + "hash": "sha256-ZNhEvvSuy0WRHGftIhr62+pAKkmzsDT26SkLj9mxYxU=" }, { "pname": "Humanizer.Core.ku", - "version": "3.0.1", - "hash": "sha256-5pWSOFGYX1lsydFracLvG1Hc0W8+MhZsGDh617bR/wA=" + "version": "3.0.10", + "hash": "sha256-m1AZja0G0SEJiurLTJkfYvi5pSQtmbvpCG7SfdmuU84=" }, { "pname": "Humanizer.Core.lb", - "version": "3.0.1", - "hash": "sha256-dUOsH6kVeogOQRQSVOs/qKAmQchh/HUJ5fhIUMIh7w4=" + "version": "3.0.10", + "hash": "sha256-6KYZJrDQUjHZYyn5/WUtfyG8/qlnIooqbHoQ9kGDyYA=" }, { "pname": "Humanizer.Core.lt", - "version": "3.0.1", - "hash": "sha256-5cI1ProlMg9Bqt8iP33swY96zF1yta1v/yvMJVRqVaM=" + "version": "3.0.10", + "hash": "sha256-BjDh3EjfEgYFFIRLPMvpC08s8gHsHYVMVkUfzG0cVqI=" }, { "pname": "Humanizer.Core.lv", - "version": "3.0.1", - "hash": "sha256-n+BaNRjdCU1n9ZPcB8O4gKpDHAY5ro78Ci3oLt7OiDY=" + "version": "3.0.10", + "hash": "sha256-o/AMiJus7vU46p1YzasRpeeYx1fPw6isUpd3ELOUXNk=" }, { "pname": "Humanizer.Core.ms", - "version": "3.0.1", - "hash": "sha256-wMYZ3+DlCvjFl5rfVHDZQoi7HDnycQzLmB2mjjzIpSQ=" + "version": "3.0.10", + "hash": "sha256-CXCnfUDG0Q0ntYB/eZgc8sOdGlSGFrysvoUKTrQmBLw=" }, { "pname": "Humanizer.Core.mt", - "version": "3.0.1", - "hash": "sha256-VKgjavQDh5MloLLxpmwO9J750fmegOrV3JHsITGHdOs=" + "version": "3.0.10", + "hash": "sha256-2L7c25OD7qWoNWdr2le7fzhC87i0+Y2Tzwv+yH4fHZA=" }, { "pname": "Humanizer.Core.nb", - "version": "3.0.1", - "hash": "sha256-oxBpG5g8I82TQLmJa2C4Zaj4uKjoKSc9uAMF0YB/EeM=" + "version": "3.0.10", + "hash": "sha256-ynaCWJiu5y3B5LeiLQrvsnQrmEVavYvfeKKMpzWZ6fw=" }, { "pname": "Humanizer.Core.nl", - "version": "3.0.1", - "hash": "sha256-5rJ02zcUC4Tpr71amzuwPkK3k+ayIFo6MZAza2tPUtc=" + "version": "3.0.10", + "hash": "sha256-y/ZVEsDzz9EMCXuJSZn0MVolf6TqIU4Wky6bydN2i+U=" }, { "pname": "Humanizer.Core.pl", - "version": "3.0.1", - "hash": "sha256-JJwLF8QXpBPoOJMVJ+cZutckom8wFbROqFJyw0XZbJM=" + "version": "3.0.10", + "hash": "sha256-r3Din3MXaoCFj431eV+WAOZURvu6D4X0td5HBaMWTGg=" }, { "pname": "Humanizer.Core.pt", - "version": "3.0.1", - "hash": "sha256-JFQQa2jMZwdS0hndgTN6ZkUg54frgL3Rk1WiWyeNEfI=" + "version": "3.0.10", + "hash": "sha256-7Qroz0YH8Xeev69pSVwoIBHAwPxH0J09z56anZyo1zE=" }, { "pname": "Humanizer.Core.pt-BR", - "version": "3.0.1", - "hash": "sha256-fEnvb7a/tyF9YOqaUD42yqqDmtSe89VNzWOb5gorlQo=" + "version": "3.0.10", + "hash": "sha256-PruVTpqXRfkVlOm2pp7rPK8L89S99qH+GOXS0Yf+upA=" }, { "pname": "Humanizer.Core.ro", - "version": "3.0.1", - "hash": "sha256-JepamwRjFhFeCKFPm4teJJeD4qgq90RJP3ng59AD6dA=" + "version": "3.0.10", + "hash": "sha256-kP7za7JYDjtZY6Kp5oJjsLsTEj0MAM4qeK46ZqhRFtQ=" }, { "pname": "Humanizer.Core.ru", - "version": "3.0.1", - "hash": "sha256-t923GhCciZOMi8jlGlgZTIb7P0MxxmluKF0UQbH63Ow=" + "version": "3.0.10", + "hash": "sha256-J0PK+pu6o+YroXE0e20O9G4lEIgGBDdJII692FxLZk0=" }, { "pname": "Humanizer.Core.sk", - "version": "3.0.1", - "hash": "sha256-7oXYgZUTmWOGMgca0mpTsTYls9kkYoVfGB+Vomic/ZE=" + "version": "3.0.10", + "hash": "sha256-NRcAyFu6risHg48Q9fUuskPaFD6UmXY2EgYNgsikqdo=" }, { "pname": "Humanizer.Core.sl", - "version": "3.0.1", - "hash": "sha256-ABkYADMAcR1BtxD9YNV3Xt98ESQLkh64O3xP2ZjjKZ0=" + "version": "3.0.10", + "hash": "sha256-+ORKUxuQ0MV4DpVjTQjT9uKSJ/DyDu6b43G3rnSiehw=" }, { "pname": "Humanizer.Core.sr", - "version": "3.0.1", - "hash": "sha256-JdMqnjISHXPRtlf9uXEXK57AaRtlAiqM01n8I/im18Y=" + "version": "3.0.10", + "hash": "sha256-f+0uX2h8pwWjLvu4R0QO18pq7GqVQfWMasrPKcDE0bs=" }, { "pname": "Humanizer.Core.sr-Latn", - "version": "3.0.1", - "hash": "sha256-7GTzSVTMm+0IzJfpW3aRhEQAX9XeVtSEO7qUtRMTflM=" + "version": "3.0.10", + "hash": "sha256-7bnQYxRimOhiQyDnzfYir4VYhOVZtONR93JFQblPgZc=" }, { "pname": "Humanizer.Core.sv", - "version": "3.0.1", - "hash": "sha256-n4pksskdlvSuMwJJKFSsEsJEzgJ4FF4pVxgBaqlGdKc=" + "version": "3.0.10", + "hash": "sha256-ylHxvW1IEyJdBJLpyyPy9VD791DmO37d3j6owbTVSQ8=" }, { "pname": "Humanizer.Core.th", - "version": "3.0.1", - "hash": "sha256-hS3hzhvP3fYp6ThWma+kQ5kCrci4Fs+PIp0ZrCdznyI=" + "version": "3.0.10", + "hash": "sha256-wJbLhDyBsSxc8hll7Lo4p+1/6QIFIFlrputMX2GsJK8=" }, { "pname": "Humanizer.Core.tr", - "version": "3.0.1", - "hash": "sha256-gULMcnt+tcKNo0+TAmHM7nqGCPS6aiNhkFzqbsTSZ+Q=" + "version": "3.0.10", + "hash": "sha256-dzkulsKQ+TuyfekNdBqen3hQCrHKjF/m/8RzFUJv8so=" }, { "pname": "Humanizer.Core.uk", - "version": "3.0.1", - "hash": "sha256-DWOmYJJFO80jtvinzlD7AyrjuZHlmC7ziN7yyG1zSaI=" + "version": "3.0.10", + "hash": "sha256-gbRduE17zU1VpcG/HVeovmNX4u/7q+wsU2Jl55GZ7ec=" }, { "pname": "Humanizer.Core.uz-Cyrl-UZ", - "version": "3.0.1", - "hash": "sha256-QG2yPPoD9FQ+YAW77h+nA7sWZS8p0e2VbXu314km3bs=" + "version": "3.0.10", + "hash": "sha256-gakls/P9MWDjzlti+VpOEBiBDIxDQI7bsj1H5jIyyoI=" }, { "pname": "Humanizer.Core.uz-Latn-UZ", - "version": "3.0.1", - "hash": "sha256-l/UK9ZZUGjWUneIWPKkItxNwJxirtrk+mGWDInwRSW4=" + "version": "3.0.10", + "hash": "sha256-FVLNW7mB0FrrqNB2EwR/bhky1SajxoIMQfrDRI3wj/E=" }, { "pname": "Humanizer.Core.vi", - "version": "3.0.1", - "hash": "sha256-Tul4p5C4Ym9lJ2AmbVJ7g+aWudyFGnTLl1bm5IMlzyk=" + "version": "3.0.10", + "hash": "sha256-qDsr6x2uUnFbprY6TPeY2UAAZQ9OFGrjkdeUQXyGH/U=" }, { "pname": "Humanizer.Core.zh-CN", - "version": "3.0.1", - "hash": "sha256-ZrQa03KHViiug9n2koymN+jNqGnN0w3XXwL/Q7A5CEU=" + "version": "3.0.10", + "hash": "sha256-aX/xEks4b0+GAuFXtGsipr+PbpMdl3Mxh307EHFzujU=" }, { "pname": "Humanizer.Core.zh-Hans", - "version": "3.0.1", - "hash": "sha256-vBbeK4jW1NgyY07SLy5P768R5Iiyn1VRotyefb4lU3I=" + "version": "3.0.10", + "hash": "sha256-+sK8itdEx7wzJbgKHZYLOwbh+qPY79Jur+TbROKbp3A=" }, { "pname": "Humanizer.Core.zh-Hant", - "version": "3.0.1", - "hash": "sha256-mU6FrpqLSMgmyqH4BxBQRDu/J7lOYkZbxHN4EXvHYnQ=" + "version": "3.0.10", + "hash": "sha256-Zg0Lthx9LtUZgQCybl5R3qKtSluRdrQdrVlQkRUczKE=" }, { "pname": "JetBrains.Annotations.Sources", @@ -281,8 +281,8 @@ }, { "pname": "Markdig.Signed", - "version": "1.0.0", - "hash": "sha256-wheTLXU+IO6TSvI/ab4MZIZ24vX6jQ2et19heytvr/8=" + "version": "1.1.2", + "hash": "sha256-I2d1n2NTV0xr+qasoTt7FdUArCPrinvLVqR4ZB5uWtI=" }, { "pname": "Microsoft.ApplicationInsights", @@ -291,8 +291,8 @@ }, { "pname": "Microsoft.AspNetCore.OpenApi", - "version": "10.0.3", - "hash": "sha256-j7lAYuz2585j/j24XkptImH7WHx9rBp+tY8ZXqpC77k=" + "version": "10.0.5", + "hash": "sha256-CQXAu6Tm8nOy/rrZksIKGaLW7USEP/N1kwKBMLoh7js=" }, { "pname": "Microsoft.CodeAnalysis.ResxSourceGenerator", @@ -334,6 +334,11 @@ "version": "10.0.0", "hash": "sha256-9iodXP39YqgxomnOPOxd/mzbG0JfOSXzFoNU3omT2Ps=" }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "8.0.0", + "hash": "sha256-75KzEGWjbRELczJpCiJub+ltNUMMbz5A/1KQU+5dgP8=" + }, { "pname": "Microsoft.Extensions.DependencyModel", "version": "8.0.2", @@ -364,6 +369,11 @@ "version": "10.0.0", "hash": "sha256-BnhgGZc01HwTSxogavq7Ueq4V7iMA3wPnbfRwQ4RhGk=" }, + { + "pname": "Microsoft.Extensions.Logging.Abstractions", + "version": "8.0.0", + "hash": "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4=" + }, { "pname": "Microsoft.Extensions.Logging.Configuration", "version": "10.0.0", @@ -386,23 +396,23 @@ }, { "pname": "Microsoft.IdentityModel.Abstractions", - "version": "8.16.0", - "hash": "sha256-OpTFQpTtg1A8I1bBIOqv/n9pwYXTqzMI8ZLXLZDti5w=" + "version": "8.17.0", + "hash": "sha256-AU+EMOZArc3rTdsnKYzAufFAtspuYQM3XYi8/VsQAio=" }, { "pname": "Microsoft.IdentityModel.JsonWebTokens", - "version": "8.16.0", - "hash": "sha256-Cctf2iuIXLMklTuCvzWv721v2mHs0HEBA47BqAKhp9I=" + "version": "8.17.0", + "hash": "sha256-MH7vdhCNAae32p6UTvaDtmyvFDxa/W71qTsEQ6yC9xM=" }, { "pname": "Microsoft.IdentityModel.Logging", - "version": "8.16.0", - "hash": "sha256-355u+3LIn/QfiCHFMXD+3ipdRTnbXLAQNzC4sWEFapQ=" + "version": "8.17.0", + "hash": "sha256-IM6jsPMz+l9JA0cye/v2ke51xlfP0u5HtWBqc2aKDYM=" }, { "pname": "Microsoft.IdentityModel.Tokens", - "version": "8.16.0", - "hash": "sha256-6s8ZLnKw32W6+KbnahCVe1v9YzpoemnpHNQ3VbFSV4M=" + "version": "8.17.0", + "hash": "sha256-XcA0KXJbqMWt0I5LuHHMRLpgVQ18KcBej1BoySHeA1A=" }, { "pname": "Microsoft.NET.Test.Sdk", @@ -511,18 +521,18 @@ }, { "pname": "NLog", - "version": "6.1.0", - "hash": "sha256-VetdjDZIr6JseO6VXXqvfO25Nl5ux/TyRqLnqaafmoI=" + "version": "6.1.1", + "hash": "sha256-4pxy5z5FyRxBmZNBw+n32SjgEQzMsgSHTuSSn+vxLzk=" }, { "pname": "NLog.Extensions.Logging", - "version": "6.1.1", - "hash": "sha256-v2KIBN+hSKbx19+ku2ckEQdpOlM6Y0X6i9jTfHh9pGA=" + "version": "6.1.2", + "hash": "sha256-H8Wu5NlzMrbQ3IlTD0hutb9ZAg73YBynnjjtTp9NMqk=" }, { "pname": "NLog.Web.AspNetCore", - "version": "6.1.1", - "hash": "sha256-zFJPxSJP/8CX4POLZlELo6GWrhtq+qoox5v8zxgI+IM=" + "version": "6.1.2", + "hash": "sha256-m/MF3dljgRIeGdYdh5m20lKMaQkMadUgXBBp2k5OtaQ=" }, { "pname": "OpenTelemetry", @@ -551,8 +561,8 @@ }, { "pname": "OpenTelemetry.Instrumentation.AspNetCore", - "version": "1.15.0", - "hash": "sha256-mjjHxz5Dzo1ybzfkH2FYnVtAjVTuMaIZ9ZhmPPmjcSI=" + "version": "1.15.1", + "hash": "sha256-72oILNRkqztOpRTNC/SjIrqe63ihs33ZwTvgKeP7rws=" }, { "pname": "OpenTelemetry.Instrumentation.Http", @@ -576,8 +586,8 @@ }, { "pname": "Scalar.AspNetCore", - "version": "2.12.47", - "hash": "sha256-qkZ6+Ewo0Iz4lC3j55/iOmR2qrBzwZBIO/uTyy2QAbI=" + "version": "2.13.15", + "hash": "sha256-kT5XPl+ZuqMByeH3gLe3EKd3G3yzXViCnehC0fag0lM=" }, { "pname": "SteamKit2", @@ -586,33 +596,33 @@ }, { "pname": "System.Composition", - "version": "10.0.3", - "hash": "sha256-81CJpH6NkGt7WhvKc8KD8ou7cH9BQu7NLZix/pWkPEQ=" + "version": "10.0.5", + "hash": "sha256-+Vi5vhZm+McB1aYmUtvPiJDgylwB06PNiFMyCXz435g=" }, { "pname": "System.Composition.AttributedModel", - "version": "10.0.3", - "hash": "sha256-FhZN6OSjc4tNeNjkifqxkfMvPiQEcAG+T7NRhTpXWuw=" + "version": "10.0.5", + "hash": "sha256-z81DulJ1fL+UBve882LNCyz/+/vaI4ZIN2FnGWuDTDk=" }, { "pname": "System.Composition.Convention", - "version": "10.0.3", - "hash": "sha256-whirt1+xCPnBS3Sj1fZL7/RIJIuS58qox3GleD98ac8=" + "version": "10.0.5", + "hash": "sha256-bG/OoFHQ2Uq3Ez+G6UKZrDCAoY+5kgeEBNAIIf7ClGc=" }, { "pname": "System.Composition.Hosting", - "version": "10.0.3", - "hash": "sha256-V0PMVPXrUUE1veGa9V4qanVs689hOm7DGoAuzw0yaQg=" + "version": "10.0.5", + "hash": "sha256-lWMeuR0MrTf/lahN/Sk7g0bppJ3VZvYAmbBFE3Zd73Y=" }, { "pname": "System.Composition.Runtime", - "version": "10.0.3", - "hash": "sha256-IWDg2bHhwrKxHyDWbWtFdhCgVo8bOE1nK6HceOyHo2E=" + "version": "10.0.5", + "hash": "sha256-uzEeZ4NA4b9O2hVVUuR3haRYGUt/OROelrwis+spu94=" }, { "pname": "System.Composition.TypedParts", - "version": "10.0.3", - "hash": "sha256-JZFr57s6U4bIsblK+G1fUVDMns8j7jHz06trXEJQDvU=" + "version": "10.0.5", + "hash": "sha256-nIWGm5I+eR5kx+VL+1PsOFXYgvKd2vwB7s/gPYOxKfI=" }, { "pname": "System.IO.Hashing", @@ -621,13 +631,13 @@ }, { "pname": "System.Security.Cryptography.ProtectedData", - "version": "10.0.3", - "hash": "sha256-JF/WTKv00v/C4ml4g/VL3j4JMPpZa1HBmVMvUnphHr4=" + "version": "10.0.5", + "hash": "sha256-Zyqq70EacxdKIx78p49cZ2rveGLxzU9VZxJsPtB2bK0=" }, { "pname": "Tmds.DBus.Protocol", - "version": "0.90.3", - "hash": "sha256-jK/98C0WrkVqPPNMx+xkdGK7vhcFmDsMqX7hUmALAWM=" + "version": "0.91.1", + "hash": "sha256-L7L4zp8NtS+VvLVjgqgBkVzCxElxfGSCTJwC5gWbq9A=" }, { "pname": "ZstdSharp.Port", diff --git a/pkgs/by-name/ar/archisteamfarm/package.nix b/pkgs/by-name/ar/archisteamfarm/package.nix index aa735a5a4948..ed41b736d58d 100644 --- a/pkgs/by-name/ar/archisteamfarm/package.nix +++ b/pkgs/by-name/ar/archisteamfarm/package.nix @@ -21,13 +21,13 @@ in buildDotnetModule rec { pname = "archisteamfarm"; # nixpkgs-update: no auto update - version = "6.3.3.3"; + version = "6.3.4.2"; src = fetchFromGitHub { owner = "JustArchiNET"; repo = "ArchiSteamFarm"; rev = version; - hash = "sha256-xLS9YUDY54nzt3MjOQv5TvT6TCNpiFo+goKMtiv+jjs="; + hash = "sha256-h9wvMT7BIzIMSnHoinBiZLYbWYPELT3dO+ao+gwTfbw="; }; dotnet-runtime = dotnetCorePackages.aspnetcore_10_0; From 1924908ed5e4288bd2f373c5bd5d1b4f8bf8d876 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 02:05:34 +0000 Subject: [PATCH 038/112] prometheus-nextcloud-exporter: 0.9.0 -> 0.9.1 --- pkgs/by-name/pr/prometheus-nextcloud-exporter/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/pr/prometheus-nextcloud-exporter/package.nix b/pkgs/by-name/pr/prometheus-nextcloud-exporter/package.nix index 856a881ac8b1..28dfa1604780 100644 --- a/pkgs/by-name/pr/prometheus-nextcloud-exporter/package.nix +++ b/pkgs/by-name/pr/prometheus-nextcloud-exporter/package.nix @@ -7,16 +7,16 @@ buildGoModule rec { pname = "prometheus-nextcloud-exporter"; - version = "0.9.0"; + version = "0.9.1"; src = fetchFromGitHub { owner = "xperimental"; repo = "nextcloud-exporter"; rev = "v${version}"; - sha256 = "sha256-S8r9WXWKneik+r6gdwWdDOWXpNkqr9aVem76Jmdligg="; + sha256 = "sha256-inUdo7LVx5EreYnw/5UKGu1frIeK2fHnNPAAXowRCn4="; }; - vendorHash = "sha256-isT/ntUnixB76WxnMm/5TUd9JeaCy7vkCwVtkc95o2M="; + vendorHash = "sha256-3HrJ1HtovA/GJJw96eQQTRnwzMUE4E24lVHc8rhZqzY="; passthru.tests = { inherit (nixosTests.prometheus-exporters) nextcloud; }; From 8f9e45e3d1dd9d134452e7650dc5ef73893de16b Mon Sep 17 00:00:00 2001 From: Keenan Weaver Date: Mon, 6 Apr 2026 21:08:56 -0500 Subject: [PATCH 039/112] doomrunner: fix hash --- pkgs/by-name/do/doomrunner/package.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/by-name/do/doomrunner/package.nix b/pkgs/by-name/do/doomrunner/package.nix index 862133accdd6..a3966803cab5 100644 --- a/pkgs/by-name/do/doomrunner/package.nix +++ b/pkgs/by-name/do/doomrunner/package.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation (finalAttrs: { owner = "Youda008"; repo = "DoomRunner"; tag = "v${finalAttrs.version}"; - hash = "sha256-YkLW3og51e2sydWUiMDr2DOr1uHxzv4Z3rr/WRys5bY="; + hash = "sha256-jEXY0RoSKLE3fpdAygyUahaLRlz4X8Xnq+talZwrSRM="; }; buildInputs = [ From bd88faa85cbf6334677c633409bc77b72fe3cc56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandro=20J=C3=A4ckel?= Date: Tue, 7 Apr 2026 05:35:07 +0200 Subject: [PATCH 040/112] ceres-solver: remove never false assert --- pkgs/by-name/ce/ceres-solver/package.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/by-name/ce/ceres-solver/package.nix b/pkgs/by-name/ce/ceres-solver/package.nix index 55263889fcbc..197a6cc43c6d 100644 --- a/pkgs/by-name/ce/ceres-solver/package.nix +++ b/pkgs/by-name/ce/ceres-solver/package.nix @@ -14,9 +14,6 @@ withBlas ? true, }: -# gflags is required to run tests -assert runTests -> gflags != null; - stdenv.mkDerivation (finalAttrs: { pname = "ceres-solver"; version = "2.1.0"; From e59b61c8cf12981c773b2efd072ae595d087c4f6 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 6 Apr 2026 20:47:55 -0700 Subject: [PATCH 041/112] python3Packages.udapi: init at 0.5.2 --- .../python-modules/udapi/default.nix | 43 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 45 insertions(+) create mode 100644 pkgs/development/python-modules/udapi/default.nix diff --git a/pkgs/development/python-modules/udapi/default.nix b/pkgs/development/python-modules/udapi/default.nix new file mode 100644 index 000000000000..51c7cfd08326 --- /dev/null +++ b/pkgs/development/python-modules/udapi/default.nix @@ -0,0 +1,43 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + pytestCheckHook, + setuptools, + # dependencies + colorama, + termcolor, +}: + +buildPythonPackage (finalAttrs: { + pname = "udapi"; + version = "0.5.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "udapi"; + repo = "udapi-python"; + tag = finalAttrs.version; + hash = "sha256-0h4nfd3QHdZNiT0VFBs6xJ/lpiNPzcJQmV60KoH0Nv0="; + }; + + build-system = [ setuptools ]; + + dependencies = [ + colorama + termcolor + ]; + + nativeCheckInputs = [ pytestCheckHook ]; + pythonImportsCheck = [ "udapi" ]; + + meta = { + description = "Python framework for processing Universal Dependencies data"; + homepage = "https://github.com/udapi/udapi-python"; + license = lib.licenses.gpl3Plus; + changelog = "https://github.com/udapi/udapi-python/releases/tag/${finalAttrs.src.tag}"; + maintainers = with lib.maintainers; [ + Stebalien + ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 8a21ae262dab..1e36f903a5fa 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -20417,6 +20417,8 @@ self: super: with self; { ucsmsdk = callPackage ../development/python-modules/ucsmsdk { }; + udapi = callPackage ../development/python-modules/udapi { }; + udatetime = callPackage ../development/python-modules/udatetime { }; ueagle = callPackage ../development/python-modules/ueagle { }; From 8de507677bc1ce8b883af5907a93aa89b292540e Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Mon, 6 Apr 2026 22:05:15 -0700 Subject: [PATCH 042/112] python3Packages.peakrdl-cheader: use finalAttrs style --- pkgs/development/python-modules/peakrdl-cheader/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/peakrdl-cheader/default.nix b/pkgs/development/python-modules/peakrdl-cheader/default.nix index f3c6287ee576..3e9664896639 100644 --- a/pkgs/development/python-modules/peakrdl-cheader/default.nix +++ b/pkgs/development/python-modules/peakrdl-cheader/default.nix @@ -10,7 +10,7 @@ systemrdl-compiler, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "peakrdl-cheader"; version = "1.0.0"; @@ -19,7 +19,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "SystemRDL"; repo = "PeakRDL-cheader"; - tag = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-1LxKGCea5ClKmrArl+CM6ZRpiTh2ThbYSe9TYYHjRlY="; }; @@ -42,4 +42,4 @@ buildPythonPackage rec { license = lib.licenses.lgpl3; maintainers = [ lib.maintainers.jmbaur ]; }; -} +}) From e3b21a7341d6491b98319a3798ca99d61f07f55c Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Mon, 6 Apr 2026 22:08:01 -0700 Subject: [PATCH 043/112] python3Packages.peakrdl-cheader: 1.0.0 -> 1.1.0 This includes a change in license to lgpl3Only. --- pkgs/development/python-modules/peakrdl-cheader/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/peakrdl-cheader/default.nix b/pkgs/development/python-modules/peakrdl-cheader/default.nix index 3e9664896639..1bef65a58fee 100644 --- a/pkgs/development/python-modules/peakrdl-cheader/default.nix +++ b/pkgs/development/python-modules/peakrdl-cheader/default.nix @@ -12,7 +12,7 @@ buildPythonPackage (finalAttrs: { pname = "peakrdl-cheader"; - version = "1.0.0"; + version = "1.1.0"; pyproject = true; @@ -20,7 +20,7 @@ buildPythonPackage (finalAttrs: { owner = "SystemRDL"; repo = "PeakRDL-cheader"; tag = "v${finalAttrs.version}"; - hash = "sha256-1LxKGCea5ClKmrArl+CM6ZRpiTh2ThbYSe9TYYHjRlY="; + hash = "sha256-IPGNauPA9y1HNEbk3eEOog17++/gSJt+185i+DFb54U="; }; build-system = [ @@ -39,7 +39,7 @@ buildPythonPackage (finalAttrs: { meta = { description = "C Header generator for a SystemRDL definition"; homepage = "https://peakrdl-cheader.readthedocs.io/"; - license = lib.licenses.lgpl3; + license = lib.licenses.lgpl3Only; maintainers = [ lib.maintainers.jmbaur ]; }; }) From 96f650fa624349b307a919bc99191cb6aeea64a2 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 6 Apr 2026 21:23:59 -0700 Subject: [PATCH 044/112] python3Packages.udtools: init at 0.2.7 --- .../python-modules/udtools/default.nix | 56 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 58 insertions(+) create mode 100644 pkgs/development/python-modules/udtools/default.nix diff --git a/pkgs/development/python-modules/udtools/default.nix b/pkgs/development/python-modules/udtools/default.nix new file mode 100644 index 000000000000..5f85c78baf29 --- /dev/null +++ b/pkgs/development/python-modules/udtools/default.nix @@ -0,0 +1,56 @@ +{ + lib, + nix-update-script, + buildPythonPackage, + fetchFromGitHub, + python, + setuptools, + # dependencies + regex, + udapi, +}: + +buildPythonPackage (finalAttrs: { + pname = "udtools"; + version = "0.2.7"; + pyproject = true; + + src = fetchFromGitHub { + owner = "UniversalDependencies"; + repo = "tools"; + tag = "py${finalAttrs.version}"; + hash = "sha256-P1gx6JRq1oWCXzB2uO/eCrw8ZgJ+0Y/0cvlLtj+X7SY="; + }; + + sourceRoot = "${finalAttrs.src.name}/udtools"; + + build-system = [ setuptools ]; + + dependencies = [ + udapi + regex + ]; + + # pycheck tests are not enabled because they try to import packages/types + # that I can't seem to find anywhere on the internet. + # https://github.com/UniversalDependencies/tools/issues/158 + pythonImportsCheck = [ "udtools" ]; + + passthru.updateScript = nix-update-script { + extraArgs = [ "--version-regex=py(.*)" ]; + }; + + postInstall = '' + install -dm755 $out/${python.sitePackages}/udtools/data + cp $src/data/* $out/${python.sitePackages}/udtools/data + ''; + + meta = { + description = "Python tools for Universal Dependencies"; + homepage = "https://universaldependencies.org/"; + license = lib.licenses.gpl2Plus; + maintainers = with lib.maintainers; [ + Stebalien + ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 1e36f903a5fa..7edeaaf57f8a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -20421,6 +20421,8 @@ self: super: with self; { udatetime = callPackage ../development/python-modules/udatetime { }; + udtools = callPackage ../development/python-modules/udtools { }; + ueagle = callPackage ../development/python-modules/ueagle { }; ueberzug = callPackage ../development/python-modules/ueberzug { From 89ea8d7829e4e5f5724781e3f02b9cd31ee0a8b2 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Mon, 6 Apr 2026 21:26:55 -0700 Subject: [PATCH 045/112] python3Packages.stanza: 1.11.0 -> 1.11.1 https://github.com/stanfordnlp/stanza/releases/tag/v1.11.1 --- pkgs/development/python-modules/stanza/default.nix | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/stanza/default.nix b/pkgs/development/python-modules/stanza/default.nix index ecdcb30b062f..b8aeb560448e 100644 --- a/pkgs/development/python-modules/stanza/default.nix +++ b/pkgs/development/python-modules/stanza/default.nix @@ -9,23 +9,25 @@ networkx, numpy, peft, + platformdirs, protobuf, requests, torch, tqdm, transformers, + udtools, }: buildPythonPackage (finalAttrs: { pname = "stanza"; - version = "1.11.0"; + version = "1.11.1"; pyproject = true; src = fetchFromGitHub { owner = "stanfordnlp"; repo = "stanza"; tag = "v${finalAttrs.version}"; - hash = "sha256-zY2+8QuPJTX/HSkE/gKMCWpSanKpYSGZeeYgb4eFuuw="; + hash = "sha256-Rq+2DutK46Mc9HeMRsGt26raZiC7zjE9M4A6hLbTINk="; }; build-system = [ setuptools ]; @@ -35,11 +37,13 @@ buildPythonPackage (finalAttrs: { networkx numpy peft + platformdirs protobuf requests torch tqdm transformers + udtools ]; # Most tests require resources from the network (models). Many of the ones that do run are slow From 7ce2561f430d1fda81a54d30da8c666b2baa02d0 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 07:51:49 +0000 Subject: [PATCH 046/112] python3Packages.bk7231tools: 2.1.0 -> 2.1.2 --- pkgs/development/python-modules/bk7231tools/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/bk7231tools/default.nix b/pkgs/development/python-modules/bk7231tools/default.nix index 1bbb1ef4cdcf..d5de00215907 100644 --- a/pkgs/development/python-modules/bk7231tools/default.nix +++ b/pkgs/development/python-modules/bk7231tools/default.nix @@ -10,14 +10,14 @@ buildPythonPackage rec { pname = "bk7231tools"; - version = "2.1.0"; + version = "2.1.2"; pyproject = true; src = fetchFromGitHub { owner = "tuya-cloudcutter"; repo = "bk7231tools"; tag = "v${version}"; - hash = "sha256-+gjcXSkPb6BI3rSZekGWgQcFtAN23tyvZLEKQvtUlFU="; + hash = "sha256-CXX4BcdlUQHPtZYggCn0LaqqEDCWXI7LRZnCWsja+SY="; }; pythonRelaxDeps = [ From 5e59f370c89b5a0603596a9701dd60b224954b89 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sun, 5 Apr 2026 23:59:24 +0000 Subject: [PATCH 047/112] python3Packages.torchaudio: fix darwin build --- .../python-modules/torchaudio/default.nix | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/pkgs/development/python-modules/torchaudio/default.nix b/pkgs/development/python-modules/torchaudio/default.nix index 3ccc529f35a5..cfab02afb365 100644 --- a/pkgs/development/python-modules/torchaudio/default.nix +++ b/pkgs/development/python-modules/torchaudio/default.nix @@ -31,6 +31,9 @@ rocmSupport ? torch.rocmSupport, }: +let + inherit (stdenv) hostPlatform; +in buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: { pname = "torchaudio"; version = "2.11.0"; @@ -70,10 +73,11 @@ buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: { # See: https://github.com/pytorch/audio/pull/2224#issuecomment-1048329450 TORCHAUDIO_TEST_ALLOW_SKIP_IF_ON_PYTHON_310 = true; - # Fails on aarch64-linux with: + # Fails on aarch64-linux and darwin with: # RuntimeError: `fbgemm` is not available + # `fbgemm` is indeed an x86_64-linux-only feature TORCHAUDIO_TEST_ALLOW_SKIP_IF_NO_QUANTIZATION = - stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64; + if ((hostPlatform.isLinux && hostPlatform.isAarch64) || hostPlatform.isDarwin) then 1 else 0; }; build-system = [ @@ -123,12 +127,25 @@ buildPythonPackage.override { inherit (torch) stdenv; } (finalAttrs: { # Very long to run "AutogradCPUTest" ] - ++ lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [ + ++ lib.optionals (hostPlatform.isLinux && hostPlatform.isAarch64) [ # AssertionError: Tensor-likes are not close! "test_batch_inverse_spectrogram" "test_batch_pitch_shift" "test_batch_spectrogram" "test_griffinlim_0_99" + ] + ++ lib.optionals hostPlatform.isDarwin [ + # AssertionError: Tensor-likes are not close! + "test_griffinlim_0_99" + ] + ++ lib.optionals (hostPlatform.isDarwin && hostPlatform.isx86_64) [ + # AssertionError: Tensor-likes are not close! + "test_MelSpectrogram_00" + "test_MelSpectrogram_01" + "test_MelSpectrogram_04" + "test_MelSpectrogram_05" + "test_MelSpectrogram_08" + "test_MelSpectrogram_09" ]; passthru.gpuCheck = torchaudio.overridePythonAttrs (old: { From 0b84c7a8ec04630554eba9dce148ea9a95f14af6 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 7 Apr 2026 10:06:44 +0200 Subject: [PATCH 048/112] python3Packages.python-mystrom: 2.6.0 -> 2.7.0 Changelog: https://github.com/home-assistant-ecosystem/python-mystrom/releases/tag/2.7.0 --- .../python-modules/python-mystrom/default.nix | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/python-mystrom/default.nix b/pkgs/development/python-modules/python-mystrom/default.nix index 823c9a7d6b9a..3862f79e665b 100644 --- a/pkgs/development/python-modules/python-mystrom/default.nix +++ b/pkgs/development/python-modules/python-mystrom/default.nix @@ -5,19 +5,21 @@ click, fetchFromGitHub, poetry-core, + pytest-asyncio, + pytestCheckHook, requests, }: buildPythonPackage rec { pname = "python-mystrom"; - version = "2.6.0"; + version = "2.7.0"; pyproject = true; src = fetchFromGitHub { owner = "home-assistant-ecosystem"; repo = "python-mystrom"; tag = version; - hash = "sha256-EXYBrOgpbOSGsNGqNKHBPam0/Gn050q+CjyAN7KJ7O8="; + hash = "sha256-zg/t2EQ6h8fThbV3U1h3Bs9pxOmlswicR3dREoQuuoY="; }; build-system = [ poetry-core ]; @@ -28,8 +30,10 @@ buildPythonPackage rec { requests ]; - # no tests are present - doCheck = false; + nativeCheckInputs = [ + pytest-asyncio + pytestCheckHook + ]; pythonImportsCheck = [ "pymystrom.bulb" From 21862a4b8cccecb55cf9a9e0a95b7ae993a1a016 Mon Sep 17 00:00:00 2001 From: Fabian Affolter Date: Tue, 7 Apr 2026 10:07:58 +0200 Subject: [PATCH 049/112] python3Packages.python-mystrom: migrate to finalAttrs --- .../development/python-modules/python-mystrom/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/python-mystrom/default.nix b/pkgs/development/python-modules/python-mystrom/default.nix index 3862f79e665b..7a8e979c2d6a 100644 --- a/pkgs/development/python-modules/python-mystrom/default.nix +++ b/pkgs/development/python-modules/python-mystrom/default.nix @@ -10,7 +10,7 @@ requests, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "python-mystrom"; version = "2.7.0"; pyproject = true; @@ -18,7 +18,7 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "home-assistant-ecosystem"; repo = "python-mystrom"; - tag = version; + tag = finalAttrs.version; hash = "sha256-zg/t2EQ6h8fThbV3U1h3Bs9pxOmlswicR3dREoQuuoY="; }; @@ -48,9 +48,9 @@ buildPythonPackage rec { There is support for bulbs, motion sensors, plugs and buttons. ''; homepage = "https://github.com/home-assistant-ecosystem/python-mystrom"; - changelog = "https://github.com/home-assistant-ecosystem/python-mystrom/releases/tag/${src.tag}"; + changelog = "https://github.com/home-assistant-ecosystem/python-mystrom/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ fab ]; mainProgram = "mystrom"; }; -} +}) From 1044c3905cb88eedbd5e9e00eeb1384bc88819a8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 08:12:49 +0000 Subject: [PATCH 050/112] prometheus-mongodb-exporter: 0.49.0 -> 0.50.0 --- pkgs/by-name/pr/prometheus-mongodb-exporter/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/pr/prometheus-mongodb-exporter/package.nix b/pkgs/by-name/pr/prometheus-mongodb-exporter/package.nix index b8f48225a31f..15d7ba062927 100644 --- a/pkgs/by-name/pr/prometheus-mongodb-exporter/package.nix +++ b/pkgs/by-name/pr/prometheus-mongodb-exporter/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "mongodb_exporter"; - version = "0.49.0"; + version = "0.50.0"; src = fetchFromGitHub { owner = "percona"; repo = "mongodb_exporter"; rev = "v${version}"; - hash = "sha256-KgfJ/o+LsEF4NAlUbNdhg8of/qfaPxnd8+rHlp+URHc="; + hash = "sha256-vUvm9YvcO3XgQR4GcY1SgP05KGnVZ5c7Z5fZtLvSiFo="; }; - vendorHash = "sha256-1yTSQ3ktAtUfy2nKm98hFX+A7eR0z5FoKbM2vAJQWbU="; + vendorHash = "sha256-FS6g2VupTk5oa40gjqFJGA/6Ek1ItCpHHyrnG43tSrw="; buildInputs = lib.optionals withGssapi [ krb5 ]; From c7abb44f37c69bf97f1cc6b0334fd843f8004238 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 08:36:27 +0000 Subject: [PATCH 051/112] python3Packages.redshift-connector: 2.1.12 -> 2.1.13 --- .../development/python-modules/redshift-connector/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/redshift-connector/default.nix b/pkgs/development/python-modules/redshift-connector/default.nix index ce46043d94f8..150310de4870 100644 --- a/pkgs/development/python-modules/redshift-connector/default.nix +++ b/pkgs/development/python-modules/redshift-connector/default.nix @@ -23,14 +23,14 @@ buildPythonPackage rec { pname = "redshift-connector"; - version = "2.1.12"; + version = "2.1.13"; pyproject = true; src = fetchFromGitHub { owner = "aws"; repo = "amazon-redshift-python-driver"; tag = "v${version}"; - hash = "sha256-D/OxwhojWRQe/XTYUgk6+2xVe8Gjkvf5hvF11PVV3eI="; + hash = "sha256-sjHLw3qpEWaqaGrsaS903NbuAPscnr+GlV4znQD+Hu4="; }; # remove addops as they add test directory and coverage parameters to pytest From b0cbea68dd5cb8bcce2a1d7ecc33c0b5239e61a9 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 09:01:49 +0000 Subject: [PATCH 052/112] oci-cli: 3.76.0 -> 3.77.0 --- pkgs/by-name/oc/oci-cli/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/oc/oci-cli/package.nix b/pkgs/by-name/oc/oci-cli/package.nix index fdf38fb008f7..d94b589dd29a 100644 --- a/pkgs/by-name/oc/oci-cli/package.nix +++ b/pkgs/by-name/oc/oci-cli/package.nix @@ -26,14 +26,14 @@ in py.pkgs.buildPythonApplication (finalAttrs: { pname = "oci-cli"; - version = "3.76.0"; + version = "3.77.0"; pyproject = true; src = fetchFromGitHub { owner = "oracle"; repo = "oci-cli"; tag = "v${finalAttrs.version}"; - hash = "sha256-3fmehq8jM9S2ICxD+4+bEEJqtn/bgV5UW3mveJl+Z7A="; + hash = "sha256-2NIgOJejsRcXGEYqPdZZcZuIe/EF98GDN/JvKivAslI="; }; nativeBuildInputs = [ installShellFiles ]; From 27919aaf231aeda76663b6ea641c704134d73022 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 09:33:11 +0000 Subject: [PATCH 053/112] grafanaPlugins.victoriametrics-metrics-datasource: 0.23.1 -> 0.23.3 --- .../plugins/victoriametrics-metrics-datasource/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix b/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix index 332eb1a13c92..dc2818bdeb3a 100644 --- a/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix +++ b/pkgs/servers/monitoring/grafana/plugins/victoriametrics-metrics-datasource/default.nix @@ -2,8 +2,8 @@ grafanaPlugin { pname = "victoriametrics-metrics-datasource"; - version = "0.23.1"; - zipHash = "sha256-SjQ71hRzjTnfxopspx2su29J6rBh2LT+hpzfM9EX7S8="; + version = "0.23.3"; + zipHash = "sha256-LFniKywQ3ft4nXxAswPoIadD4fUxGD3QXxOobXyoXYE="; meta = { description = "VictoriaMetrics metrics datasource for Grafana"; license = lib.licenses.agpl3Only; From 02f91c884a7395eb940d6107b82b0240523b9038 Mon Sep 17 00:00:00 2001 From: Xiangyan Sun Date: Tue, 7 Apr 2026 02:36:58 -0700 Subject: [PATCH 054/112] qradiolink: 0.9.1-3 -> 0.10.2-1 --- pkgs/by-name/qr/qradiolink/package.nix | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/pkgs/by-name/qr/qradiolink/package.nix b/pkgs/by-name/qr/qradiolink/package.nix index 5294232fe854..8849739115e6 100644 --- a/pkgs/by-name/qr/qradiolink/package.nix +++ b/pkgs/by-name/qr/qradiolink/package.nix @@ -1,7 +1,6 @@ { lib, - fetchFromGitHub, - fetchpatch, + fetchFromCodeberg, libpulseaudio, libconfig, pkg-config, @@ -28,28 +27,15 @@ gnuradio.pkgs.mkDerivation rec { pname = "qradiolink"; - version = "0.9.1-3"; + version = "0.10.2-1"; - src = fetchFromGitHub { + src = fetchFromCodeberg { owner = "qradiolink"; repo = "qradiolink"; tag = version; - hash = "sha256-0inXfeOSVmJYtNhD6WBExjT43STfBjePomKILxoHO6Q="; + hash = "sha256-pouOFi0w5QW3Wn6C5k+JB5wO+tX79rD+SshH+OitsDw="; }; - patches = [ - # dmr: add explicit cstdint import - (fetchpatch { - url = "https://github.com/qradiolink/qradiolink/pull/131/commits/bdd3b47708edf42b281fb9e5507d356d475f3df9.patch"; - hash = "sha256-Uoi8/IK8yBmfPL7RAkCGuyHdcdJZ+YMxccviY7Z+hXs="; - }) - # qmake: find protobuf via pkg-config - (fetchpatch { - url = "https://github.com/qradiolink/qradiolink/pull/132/commits/cd3e4bc188a60bc85693fe3de4540c48f325deb4.patch"; - hash = "sha256-ufSStm0pyDkCUIx0SjVVHZhA4gW7Ip6PiexPg34DsCo="; - }) - ]; - preBuild = '' cd src/ext protoc --cpp_out=. Mumble.proto From d6f52c560c225975ccffdad6a4671791abc5729d Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 10:13:36 +0000 Subject: [PATCH 055/112] python3Packages.sphinxcontrib-confluencebuilder: 3.0.0 -> 3.1.0 --- .../sphinxcontrib-confluencebuilder/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix b/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix index 0078c47b3750..c31dae14e31b 100644 --- a/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix +++ b/pkgs/development/python-modules/sphinxcontrib-confluencebuilder/default.nix @@ -11,13 +11,13 @@ buildPythonPackage rec { pname = "sphinxcontrib-confluencebuilder"; - version = "3.0.0"; + version = "3.1.0"; pyproject = true; src = fetchPypi { pname = "sphinxcontrib_confluencebuilder"; inherit version; - hash = "sha256-+Z4rsqozJ3DWrg7SYr7dh7CIQlCgpX9Fj6lJmcCxoMk="; + hash = "sha256-5eBr1+QqRDKwXZDChQG5Wf5p79zqvCGyCUp3KgNg1yE="; }; build-system = [ flit-core ]; From 127f059255208c8299ce22eae8559f2a1880bb37 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 10:38:27 +0000 Subject: [PATCH 056/112] ranger: 1.9.4-unstable-2026-02-25 -> 1.9.4-unstable-2026-04-02 --- pkgs/by-name/ra/ranger/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ra/ranger/package.nix b/pkgs/by-name/ra/ranger/package.nix index 3f1c32c1a289..2c6e22c3a5a1 100644 --- a/pkgs/by-name/ra/ranger/package.nix +++ b/pkgs/by-name/ra/ranger/package.nix @@ -19,14 +19,14 @@ python3Packages.buildPythonApplication { pname = "ranger"; - version = "1.9.4-unstable-2026-02-25"; + version = "1.9.4-unstable-2026-04-02"; pyproject = true; src = fetchFromGitHub { owner = "ranger"; repo = "ranger"; - rev = "126d3ee487b5c291c49d5ef25176fbe8207d71e3"; - hash = "sha256-SRr+vABEm6J+YT0ALw6F0dPrJ0RJQQGRTCbzPhgjB0A="; + rev = "15f607130149540841a0e7700cc4193e80408987"; + hash = "sha256-QVTkVMlzeYwOmki7K8iUyHI1NsQkCRhupmw6hzPDhL0="; }; build-system = with python3Packages; [ From 30cc1d204bce56c438f84ad3035c2e9fa280ac81 Mon Sep 17 00:00:00 2001 From: w191923 Date: Mon, 9 Mar 2026 15:18:50 +0100 Subject: [PATCH 057/112] demucs-rs: init at 0.3.4 --- pkgs/by-name/de/demucs-rs/package.nix | 60 +++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 pkgs/by-name/de/demucs-rs/package.nix diff --git a/pkgs/by-name/de/demucs-rs/package.nix b/pkgs/by-name/de/demucs-rs/package.nix new file mode 100644 index 000000000000..c6021386813b --- /dev/null +++ b/pkgs/by-name/de/demucs-rs/package.nix @@ -0,0 +1,60 @@ +{ + lib, + fetchFromGitHub, + rustPlatform, + pkg-config, + openssl, + vulkan-loader, + makeWrapper, + stdenv, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "demucs-rs"; + version = "0.3.4"; + + src = fetchFromGitHub { + owner = "nikhilunni"; + repo = "demucs-rs"; + tag = "v${finalAttrs.version}"; + hash = "sha256-IidfPS+/T8aJoW30gdnKhhsgluMt+h9RllAXH9Yrq1g="; + }; + + cargoHash = "sha256-xngHyenlB3sMqzJHNk9utk4TNhdt+awutDuP1JzhhBA="; + + # Only build the CLI crate, not the DAW plugin or WASM targets + buildAndTestSubdir = "demucs-cli"; + + nativeBuildInputs = [ + pkg-config + makeWrapper + ]; + + buildInputs = [ + openssl + ]; + + # wgpu dlopen()s libvulkan at runtime, so LD_LIBRARY_PATH is needed (RPATH has no effect). + # this is Linux-only: on Darwin wgpu uses Metal and should need no runtime patching. + postInstall = lib.optionalString stdenv.hostPlatform.isLinux '' + wrapProgram $out/bin/demucs \ + --prefix LD_LIBRARY_PATH : "${vulkan-loader}/lib" + ''; + + meta = { + description = "Native Rust implementation of HTDemucs v4 music source separation CLI"; + longDescription = '' + A native Rust implementation of HTDemucs v4 — state-of-the-art music + source separation. Splits any song into individual stems (drums, bass, + vocals, etc.) using GPU-accelerated inference via Burn. + + Model weights are downloaded automatically from Hugging Face on first + use and cached for future runs. + ''; + homepage = "https://github.com/nikhilunni/demucs-rs"; + license = lib.licenses.asl20; + mainProgram = "demucs"; + maintainers = with lib.maintainers; [ eymeric ]; + platforms = lib.platforms.unix; + }; +}) From 6b67cba75d7e088dc3a00493e0969178c9f38259 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 11:37:37 +0000 Subject: [PATCH 058/112] wheelwizard: 2.4.2 -> 2.4.3 --- pkgs/by-name/wh/wheelwizard/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/wh/wheelwizard/package.nix b/pkgs/by-name/wh/wheelwizard/package.nix index 246c121accc6..3da38ae29c54 100644 --- a/pkgs/by-name/wh/wheelwizard/package.nix +++ b/pkgs/by-name/wh/wheelwizard/package.nix @@ -14,13 +14,13 @@ }: buildDotnetModule rec { pname = "wheelwizard"; - version = "2.4.2"; + version = "2.4.3"; src = fetchFromGitHub { owner = "TeamWheelWizard"; repo = "WheelWizard"; tag = version; - hash = "sha256-ayik04mn11NbD4R09O99Yqij6aIjz6DUhpgqKQoGRP4="; + hash = "sha256-WJVEofU41ZoOYLgD2TMPy50KQ44SPuLKS2piRmI9wV8="; }; postPatch = '' rm .config/dotnet-tools.json From 6586980bf2b9422c65c3e377b028bb90231c1457 Mon Sep 17 00:00:00 2001 From: Arsenii Zorin Date: Tue, 7 Apr 2026 14:43:54 +0300 Subject: [PATCH 059/112] pulumi-bin: 3.228.0 -> 3.229.0 --- pkgs/by-name/pu/pulumi-bin/data.nix | 290 ++++++++++++++-------------- 1 file changed, 145 insertions(+), 145 deletions(-) diff --git a/pkgs/by-name/pu/pulumi-bin/data.nix b/pkgs/by-name/pu/pulumi-bin/data.nix index c2a1ab6744dc..a1c4907809d1 100644 --- a/pkgs/by-name/pu/pulumi-bin/data.nix +++ b/pkgs/by-name/pu/pulumi-bin/data.nix @@ -1,36 +1,36 @@ # DO NOT EDIT! This file is generated automatically by update.sh { }: { - version = "3.228.0"; + version = "3.229.0"; pulumiPkgs = { x86_64-linux = [ { - url = "https://get.pulumi.com/releases/sdk/pulumi-v3.228.0-linux-x64.tar.gz"; - sha256 = "0wg1ciq0q56yb19s7q6i2qsl8jr9mr4ajqgkakjyvigs4pqmdf2h"; + url = "https://get.pulumi.com/releases/sdk/pulumi-v3.229.0-linux-x64.tar.gz"; + sha256 = "1wc8ci70vnxfgw0b1zf6nl40ji58f6yyi1wwx5pd8vsksbspggbj"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.51.0-linux-amd64.tar.gz"; sha256 = "1f5pvflvcd9xr86ys1n46ywyakl30l2xrrwqhbhkb117gp17a9lx"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v10.3.0-linux-amd64.tar.gz"; - sha256 = "1c8bd6m2kk6nzbmq3csb5babmbma83cxsvqxv7z0s59b2p6jc9r5"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v11.1.0-linux-amd64.tar.gz"; + sha256 = "139h210ixh4s46sa90p9ga9nl1bqb1m36hbr1ylcr80nx5hjh42p"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.97.0-linux-amd64.tar.gz"; - sha256 = "0wqrvrvdn9wy2hk4n27lndrk8jp1lihyzdwapbvj4xrypy24ghs2"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.98.0-linux-amd64.tar.gz"; + sha256 = "12lpvryc1iw90d2mbyx0kixw99w1adibmqh6svnpiiip0ijkdbfy"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-artifactory-v8.10.3-linux-amd64.tar.gz"; sha256 = "1zwi4h5kj4ncxzphdsbh5yg48wq4m65kjmyhrkv0jii99nfqn3l7"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.38.0-linux-amd64.tar.gz"; - sha256 = "13jsxvjzhhx7zrnx93drh7sych1sh173fl5wa05hxzc18vl29g81"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.39.0-linux-amd64.tar.gz"; + sha256 = "1hfxg058jcbxfigl8a5sbapfm09hcyjrm2h63ksaw0gn7ny26y46"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.23.0-linux-amd64.tar.gz"; - sha256 = "0k3v1s41vv6bj798vydjx6al1rxp4bhssxi3q2h13kxs5caqbigm"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.24.0-linux-amd64.tar.gz"; + sha256 = "032zcfzdx8f9k6lsz3kqwqy9vyap6h0vqyg0gx83lbc3b6j17dkk"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v6.9.0-linux-amd64.tar.gz"; @@ -41,40 +41,40 @@ sha256 = "14i18v6z68szdf1y1bg3m51kqn4i1fdv6jbi282f7rxr0fbzzmpl"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.33.0-linux-amd64.tar.gz"; - sha256 = "0jzkb6f0hwhxg0wf7i2walg160z1rd3wlid7922nmkq4hwrh19sb"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.34.0-linux-amd64.tar.gz"; + sha256 = "0sv0d2srgzn2psaip3zgfnqr9d209vivqrnaxd06xjrjqg2ivfh5"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.13.0-linux-amd64.tar.gz"; - sha256 = "0mv4gmpxprvrmjbj062khwpsdwwscw3kpiryjmxg740q4mdqi6fz"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.14.0-linux-amd64.tar.gz"; + sha256 = "0rx73m3mw0lkafcm6b82vdypzj4xfpff28i1n55z24pgn2s2vyli"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.0-linux-amd64.tar.gz"; - sha256 = "10gb3f4j76vf01ng6bpvvhcs78z5bajil7bgqv2hgh6x834gdwpm"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.1-linux-amd64.tar.gz"; + sha256 = "184rpv0sa2qaxm1ng729x5vrw1rjv6bbskc1m7sjpj5ls9sgacw0"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.68.0-linux-amd64.tar.gz"; - sha256 = "0azr8k0c3nj0r9lihwwaxz9081xgrqnagnpmanxvmjvkjp88j4q8"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v5.1.0-linux-amd64.tar.gz"; + sha256 = "1af9y48rchnpryyy3j228d94iyvfrhphjw6m94r92y6carkpggg5"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.63.0-linux-amd64.tar.gz"; sha256 = "0ysmly93yls8cq6y9kb5ksavfhlpddqdgx187a1mjl61j8iq80r0"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.1-linux-amd64.tar.gz"; - sha256 = "1l4nn0nbrv514rmgs8zz89z30fzd6jfnbqh4751malx89ach2rqy"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.2-linux-amd64.tar.gz"; + sha256 = "187qg3cdbd194qs1nqv51zxddvg0hvac3kkgqjd6hcfrg0wy70bs"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.2.1-linux-amd64.tar.gz"; sha256 = "0hnardid0kbzy65dmn7vz8ddy5hq78nf2871zz6srf2hfyiv7qa4"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.4.1-linux-amd64.tar.gz"; - sha256 = "09x25vfq2fbxcmkcjaj0yr2xhcplyj0w2z4c0lwcl368fnk9z9zy"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.5.0-linux-amd64.tar.gz"; + sha256 = "08mwfxjmmdka6ka1qx9p09zigkj6lw4vjb4b3zm6599rgzzxgcs1"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.16.0-linux-amd64.tar.gz"; - sha256 = "0jfbhy16z988y9afma5dccvqf7xq0lbmkl2dgnizpyr5klwg60nb"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.18.0-linux-amd64.tar.gz"; + sha256 = "1yab8zgxccvmv44pixax8iy27ggmd3r19957ivaw9lckccnx9sav"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.12.1-linux-amd64.tar.gz"; @@ -97,12 +97,12 @@ sha256 = "0saa0i1id3lgdlw8wi2wbwymd1vnxdzmrqqr876gk9hcs9fj7bar"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.9.0-linux-amd64.tar.gz"; - sha256 = "0gh9xxawgnmkr6rc3cn7vv9svl03cgv15bx5agvfa1amgaajixc4"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.10.0-linux-amd64.tar.gz"; + sha256 = "082qaqpjl0m3ng30nmvmwibn9yfrbh47kpyx9jdzmwg0k3d60sam"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.0-linux-amd64.tar.gz"; - sha256 = "1nk7lrsc39fxlbwkbnwg9yycmckgvrzdg51zpgys0chk1186kiib"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.1-linux-amd64.tar.gz"; + sha256 = "1fl4pm2zlh0s2zv89b6m0qhphan9n0rcbaxid8gh24912h82xa5v"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.2.14-linux-amd64.tar.gz"; @@ -117,16 +117,16 @@ sha256 = "08j0wnd2yzf5qj3n56kl0lbs7jhhy3s0xcg73vz5zfr98nj64mrf"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.1-linux-amd64.tar.gz"; - sha256 = "127bwpfwkcq9ab0v190m3nr9zjwxbp8wfabm211jfccia2fx00zi"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.2-linux-amd64.tar.gz"; + sha256 = "12jjgcnjkmyyl09zr3wlc0acp2xnsv1pwz51dhh3v9hfjm4541l9"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v2.13.1-linux-amd64.tar.gz"; sha256 = "02kj74nmwn4axd8jhs8fr4fk71nn2b83byfqdx037cpz2crb8wdq"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.128.4-linux-amd64.tar.gz"; - sha256 = "0bimhh8c20cpkrv0dfv1w7k54k4gzcmykayx6f9jahc1m0ff8bbr"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.129.0-linux-amd64.tar.gz"; + sha256 = "1wvvi5s3rkw78b4lv76a60vibwj3hxwn8az0axwnq4qjxcy9v495"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v1.0.11-linux-amd64.tar.gz"; @@ -137,12 +137,12 @@ sha256 = "1xjmxigqak7f31g7hi9ljjw047ymgrkaap4nvi5lzkk37fmj8lk1"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.0-linux-amd64.tar.gz"; - sha256 = "01hdnnhn3hfhx774aimqbmh6fslga2sr5gaj2r2w0sf3nzkg8h0g"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.1-linux-amd64.tar.gz"; + sha256 = "06c90pyq2jb2xx81qcpqjviz3x3f1z5skrxwdjfg68z5330b5vdx"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.7.0-linux-amd64.tar.gz"; - sha256 = "1i7mnaavps1cqvrvvh4mqp1zp2k817f50sf4wz14yarj8m2id2w2"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.8.0-linux-amd64.tar.gz"; + sha256 = "03pwdk0yjrnvr5hzd9fz4hvxa7cqfczd5148jvv5064vj214dk0w"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.12.3-linux-amd64.tar.gz"; @@ -163,32 +163,32 @@ ]; x86_64-darwin = [ { - url = "https://get.pulumi.com/releases/sdk/pulumi-v3.228.0-darwin-x64.tar.gz"; - sha256 = "0k7q396lvxxcab6hwwl8y47xz9b21hzy2jdjzhql0x69jz6w5qlz"; + url = "https://get.pulumi.com/releases/sdk/pulumi-v3.229.0-darwin-x64.tar.gz"; + sha256 = "0fvfyy3fnki9vsvaf7c3vsz9q9r1118iqc7g7882cl2j3pqn2yfn"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.51.0-darwin-amd64.tar.gz"; sha256 = "19q09p7kqygdm1j2rvxbzzivyf983pi4frkfak3n63ybkbnxsp43"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v10.3.0-darwin-amd64.tar.gz"; - sha256 = "08i28x0fp4pxb14klgjdqi05hyw4ilj0iz5ri53mpmviyl1mrmaq"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v11.1.0-darwin-amd64.tar.gz"; + sha256 = "1r1j115bii4hv22z5pwp1yvcbi41j4mdcvwbn04xjridvrpsp63b"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.97.0-darwin-amd64.tar.gz"; - sha256 = "0jbz6k9pv9d366q0xj39sg9zxlgl5vv0lb69hbxrm061qldkxnhf"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.98.0-darwin-amd64.tar.gz"; + sha256 = "0a0j0m8n7smwzapsa7y49fj4qkbr1h5djfd2g6dvzdi66x2w8s1k"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-artifactory-v8.10.3-darwin-amd64.tar.gz"; sha256 = "09yv8i5hlivgm3fm3a8s0xaapwz2pxayfj20vbjv1bpf4ckgin7a"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.38.0-darwin-amd64.tar.gz"; - sha256 = "06yyr3zaj29mhvfsf4fgwip53mk28hrh73va32vkxvry6hn2hmjr"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.39.0-darwin-amd64.tar.gz"; + sha256 = "0f2z8iwma6xlnwdi126sixbf0cd4fni3c0r18x6jczbpxhci8j9m"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.23.0-darwin-amd64.tar.gz"; - sha256 = "047fvz5j988lxdzf4wnaj36zcj7sj5kwj4flvgp2dbgp0ccz51a1"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.24.0-darwin-amd64.tar.gz"; + sha256 = "1c4wkmqjd8mfgrn2gr5l2jjfvwq4ailifq532fjrcqfwj740qmhk"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v6.9.0-darwin-amd64.tar.gz"; @@ -199,40 +199,40 @@ sha256 = "1pvliacpzv58kfi3sq1xa8b16aa14gs23wh1gm12kb8lyrh9cvwf"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.33.0-darwin-amd64.tar.gz"; - sha256 = "1j7ld0p9bzx9km1fqcs6nqvg62ik1aslfsdcxcri101gvmlvb3m0"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.34.0-darwin-amd64.tar.gz"; + sha256 = "1siccb0vis674gkjgv55rnww5z4xvcfrhl96gcv9bazbcb5w4ik0"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.13.0-darwin-amd64.tar.gz"; - sha256 = "0lhs509pfgh6vmawah7bfwcim0r9qmhjjihk6dxascav86dxd5y7"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.14.0-darwin-amd64.tar.gz"; + sha256 = "0f7xci6gkqx6j8xw4kmp6kj41c1xm04cj5vpwzdqi92k2bqm61v2"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.0-darwin-amd64.tar.gz"; - sha256 = "1h6f2wk1jp7m5xrw0imcpih4awlx82qifl1ih4w6636rzz89q64f"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.1-darwin-amd64.tar.gz"; + sha256 = "10aazr97qg5k9xdjcbi8gnfg9x6b6df1844dq997pydza88hgw55"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.68.0-darwin-amd64.tar.gz"; - sha256 = "1vi0pry8si8qv44i1dr4756grpmd4l0wrcdysam1y2rcfszy6597"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v5.1.0-darwin-amd64.tar.gz"; + sha256 = "1rc9pj5p4w9fszxdh8vs8lbajbmjljx08j8nlblm5dxiypm5w5bs"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.63.0-darwin-amd64.tar.gz"; sha256 = "0b1in0w946irmml5n1zm2c5yhjwwbpbrcrpqpk6i6iam1yiwh1l1"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.1-darwin-amd64.tar.gz"; - sha256 = "1vnsvd74m5ysfhygs56s928hmap4cqy7pwbcclynw4qbwvyznay5"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.2-darwin-amd64.tar.gz"; + sha256 = "14q83v6nr61gjap1044kglqw99f8injvdqk1b0367jbzcqkgni3g"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.2.1-darwin-amd64.tar.gz"; sha256 = "1m5lh59h7nck1flzxs9m4n0ag0klk3jmnpf7hc509vffxs89xnjq"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.4.1-darwin-amd64.tar.gz"; - sha256 = "1jyi9mp8dc5hkb493kz4mkhcn9rvz1whj42vfbml5zdnywhq346f"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.5.0-darwin-amd64.tar.gz"; + sha256 = "0ydbgr1p0bxh19qjvayzcw46sw21s7nj0g3r2bh7jgcanbf599vi"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.16.0-darwin-amd64.tar.gz"; - sha256 = "0qz08sa43ih47j2hxbrkchynf4i6095w704krgg51ghqjljj7rda"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.18.0-darwin-amd64.tar.gz"; + sha256 = "0im4zkcdchxd3qa129d8bg6j6kli3n2d6z6djg2j51bxba0x91j4"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.12.1-darwin-amd64.tar.gz"; @@ -255,12 +255,12 @@ sha256 = "1vzdp5nqz6c24qz1l2m8hgr1xa8jn4v4x29i4gkd688bvf6266dz"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.9.0-darwin-amd64.tar.gz"; - sha256 = "100kjik7qvpxc46wckps5w3h07w0gshs5v3i1dh2fzf6inbil5ip"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.10.0-darwin-amd64.tar.gz"; + sha256 = "1v17x7mzx2nas9zfbqkz9h49n8j52gw7cz6hci5rzrxxj98fnsh0"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.0-darwin-amd64.tar.gz"; - sha256 = "12d3cvbnyc0316w8ghxi14mq7agqp4dd532dkhaly0z1b722phj1"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.1-darwin-amd64.tar.gz"; + sha256 = "1ii8mgdiljh9xhk7c8dzzx24s9khdf5n3gwsglrkaf5m2hx24pvn"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.2.14-darwin-amd64.tar.gz"; @@ -275,16 +275,16 @@ sha256 = "1x7ba78w0rq990d6fc9flnzac4l0j0lkwf1lqn3v9i2m42a42pgn"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.1-darwin-amd64.tar.gz"; - sha256 = "0qqzq2p451znbkjj2zfx2rpj3y5iqk8yvhw74fj7ni6fzbhkdqih"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.2-darwin-amd64.tar.gz"; + sha256 = "0qglyxagy5djccykcyp75b32vaf8mxswfjxk5wqq1p6wlgdb0mm5"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v2.13.1-darwin-amd64.tar.gz"; sha256 = "1l5x01pv3q9pxg4qrbd0vrh0ssn4an9jabbb7yyjg67gndpz7ns4"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.128.4-darwin-amd64.tar.gz"; - sha256 = "1jx7v93lnpiva60sc4yq6z8xwc3fg9f8f5y1v8jxcmiyska6r6sl"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.129.0-darwin-amd64.tar.gz"; + sha256 = "1g7vyqfbfiqzryxyqc651wd8c562j3hg03yvfnw8dbraz9dnz636"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v1.0.11-darwin-amd64.tar.gz"; @@ -295,12 +295,12 @@ sha256 = "1ia6nvcgcwm2263yyyka65f0ja741z1bw6xvf6a0f6fkwkavkbk5"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.0-darwin-amd64.tar.gz"; - sha256 = "0dangd4lw51lyxay2838hwd4jvl8fppfkmgbq67ilmnwcwgrr2p0"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.1-darwin-amd64.tar.gz"; + sha256 = "0v4abvn40j8im1jn598shyxbkknhdcm41li7hz62ky6pglfw59lg"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.7.0-darwin-amd64.tar.gz"; - sha256 = "0cnafiak99s3sacmxm9psvq19q6aaavlf9bp9skyjx1n3lkqb9jn"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.8.0-darwin-amd64.tar.gz"; + sha256 = "1xirrbn9zh990j8vxrm8ggld79lbnrg26rw8xzlcypxvb0mkrv9k"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.12.3-darwin-amd64.tar.gz"; @@ -321,32 +321,32 @@ ]; aarch64-linux = [ { - url = "https://get.pulumi.com/releases/sdk/pulumi-v3.228.0-linux-arm64.tar.gz"; - sha256 = "104dmcvimrp43mlhjalgah62kpplwx9fr8gb8ncwrsq0ddavdk65"; + url = "https://get.pulumi.com/releases/sdk/pulumi-v3.229.0-linux-arm64.tar.gz"; + sha256 = "1vd9grcw1wl4b687nknkjnkf5spbxfs6fv7377xkxn0fwz3z4yi5"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.51.0-linux-arm64.tar.gz"; sha256 = "0vnnvb6lyv0xpc3rzc3wr658l3d8w596mpfr5jlbbqpk0hw1dslx"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v10.3.0-linux-arm64.tar.gz"; - sha256 = "0l3sgb5l0rjxj9msff6ywkvygn3pq96nbif3b85xssq7a0qsvh3c"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v11.1.0-linux-arm64.tar.gz"; + sha256 = "0v84z83y56lnvrgsmla4qnig8cs57ynilib4ah29wb0dwkxvzamf"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.97.0-linux-arm64.tar.gz"; - sha256 = "01gyw9rw4qymljprxzjrf7jzxg576zghpb174c85k6dik02bw6bf"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.98.0-linux-arm64.tar.gz"; + sha256 = "1l7yikjh34ll1jyqx8bhqmh27nf7253yy6sknhnyd5mv8ajkv8cv"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-artifactory-v8.10.3-linux-arm64.tar.gz"; sha256 = "0bnai1xlbf465ilhnl7pgjh3gyqh34f96z4nw5m0g04913dij05j"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.38.0-linux-arm64.tar.gz"; - sha256 = "1qinsdjkiy80x8mssg5crlzz0vqgpyl3mr286048y8q0a2jifkkv"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.39.0-linux-arm64.tar.gz"; + sha256 = "1gaa61y3wflz5g2i0k0iv8k0rvxc22zm6c4w2pj4139yj174ysll"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.23.0-linux-arm64.tar.gz"; - sha256 = "14j50dr2b4qkaixwcgkhz7a2g7wxndsfjzcfvlbych77ia6hy1y6"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.24.0-linux-arm64.tar.gz"; + sha256 = "0z6qaw3icdbclmld9nzmvbb1qm55vn2iwjdbs9r95h57jh5hazar"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v6.9.0-linux-arm64.tar.gz"; @@ -357,40 +357,40 @@ sha256 = "027nbrks3n634nsmlwis1qwklj615ixknr6k5jg0q4wd1mwxhsjm"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.33.0-linux-arm64.tar.gz"; - sha256 = "1yw7gf2rv729xdcj4r6d50hq5ncj7mvdil6xdizd69vnq1chalwx"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.34.0-linux-arm64.tar.gz"; + sha256 = "1p59zhn0yjxrl0cw9bh2pym4jg7q3f05jd5bqcsmy17d9vrhj5m0"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.13.0-linux-arm64.tar.gz"; - sha256 = "1byamyj38smi0bba1riqd52dpf7z2ghpnqbrc5lqx7ifw70c3csg"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.14.0-linux-arm64.tar.gz"; + sha256 = "1x7az4dgd3mw2wi4f6c3pq8k0wbcajjwx927wlg7r5j6scwmcmr3"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.0-linux-arm64.tar.gz"; - sha256 = "1nzm06sqwkcvi3rsb1f6bmm2fargnz6jcak5h23mc3qazbn3wd00"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.1-linux-arm64.tar.gz"; + sha256 = "1qbscdfkjbk651hsj954n8b2wcdlmj5rfsq6ybaj3wslmpnzmiqv"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.68.0-linux-arm64.tar.gz"; - sha256 = "05gd0awsw0f6agz4i6nv17lssp4q3p97bwlqnzrcbmlrcg4v2v8v"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v5.1.0-linux-arm64.tar.gz"; + sha256 = "0fah19z4iiq76pyam7m0gzfhlpd6cl4sbb6gz2gn51vnklgs5blz"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.63.0-linux-arm64.tar.gz"; sha256 = "0k3hcwgshfbfg0jh6qrp0v3nv4w9473sf03dj1llcqmyvrbs9p45"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.1-linux-arm64.tar.gz"; - sha256 = "18svy29yvd2p1fjhc2f9f0hr0mbvf371lcr58ym7f7xim3hx0bdq"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.2-linux-arm64.tar.gz"; + sha256 = "1cpz86gqsi6azjj4xc3z16ggyrim0ww5x0w5hl98b9qvn4agxgar"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.2.1-linux-arm64.tar.gz"; sha256 = "111pia2f5xwkwaqs6p90ri29l5b3ivmahsa1bji4fwyyjyp22h4r"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.4.1-linux-arm64.tar.gz"; - sha256 = "1a9fwnf15l3ld0a17v2p66jxqav4rawhixy6rgs5065nbrf29vys"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.5.0-linux-arm64.tar.gz"; + sha256 = "0lqr69v6wvqbsmy2xgr4nz6dqcpirwzqasdz831hg5xdg37mbhjh"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.16.0-linux-arm64.tar.gz"; - sha256 = "04gp3pngf5sg8s936sadj1agqbvd8n94cwsj4357wnqnk2di6jds"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.18.0-linux-arm64.tar.gz"; + sha256 = "1cijwc3zxivz6s7cj15c28nqlvl6k3liqplrcpx21csfw8f8xxid"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.12.1-linux-arm64.tar.gz"; @@ -413,12 +413,12 @@ sha256 = "0k32hifaim24rz0ir5nljy58pdk3v9h8qb7vz97k15gq1blyq4l7"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.9.0-linux-arm64.tar.gz"; - sha256 = "1hc3fvsiwxnm6jqvbxq29bn1y2iq7q10vrwmkj0kz66iy5h923jh"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.10.0-linux-arm64.tar.gz"; + sha256 = "0i43jyxz8g138iky5ik5wmm8zaijx469ck185wiswihcaw6m7wf0"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.0-linux-arm64.tar.gz"; - sha256 = "0jsbjp0j4rr6m3qwl8q3jq0rw6r2pfq648h5fza2v031sc5ds216"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.1-linux-arm64.tar.gz"; + sha256 = "1k6hl98i33w0cfcr7jxjlah3ssmxk9w8319p2ycwrpmcmjnmra7z"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.2.14-linux-arm64.tar.gz"; @@ -433,16 +433,16 @@ sha256 = "1d23jy8987sm0vxyx74kljs5a5jj4lizi1qssa4729inn7z5293w"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.1-linux-arm64.tar.gz"; - sha256 = "0ik976ygv03axshcrwr3k3s1zvz90zywzqs6pmk2zs1z3n1vznag"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.2-linux-arm64.tar.gz"; + sha256 = "035czawc26f09ihcnvcqfjkwrm5zr502yhs3wdqmh4c7kba7f8a6"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v2.13.1-linux-arm64.tar.gz"; sha256 = "1nwkbj76hr23i3s76fxkqnb7hx1d48mzyxmaizgisas6w93r73h7"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.128.4-linux-arm64.tar.gz"; - sha256 = "1viimvll23ah7wgb9h7whlw0cmqd4azlxcrz3zvjj9ja2da8895n"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.129.0-linux-arm64.tar.gz"; + sha256 = "1x7sbjh711nwflg5ncphqcl7wc9lfpzw47lbk7391jc5s7ihn00y"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v1.0.11-linux-arm64.tar.gz"; @@ -453,12 +453,12 @@ sha256 = "0y9jwwwr28j28da1lxq7p39csnab7g2b97vpfzgaxi327xbgs2zz"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.0-linux-arm64.tar.gz"; - sha256 = "032nxayggb1bb78nrj5cry91wpd4j2zra0nil1xv5n1dpmmxs5kp"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.1-linux-arm64.tar.gz"; + sha256 = "11l570naqss0wmip7jvs83sxbscimj1nxh40wzfp7rmfmwrhlk64"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.7.0-linux-arm64.tar.gz"; - sha256 = "0f8jh6clyabcm03531sqnw56npg34f3l8yrpsl23kvrhzgm5zjgr"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.8.0-linux-arm64.tar.gz"; + sha256 = "1fraas5hwplzfll5ck2q3vq4jqrxl06q04namjy4rbb195159s0l"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.12.3-linux-arm64.tar.gz"; @@ -479,32 +479,32 @@ ]; aarch64-darwin = [ { - url = "https://get.pulumi.com/releases/sdk/pulumi-v3.228.0-darwin-arm64.tar.gz"; - sha256 = "1gx7hymc5m1qfyxfddpdxq9jp05ss979qz4nb3ac0y0d5kakcvl9"; + url = "https://get.pulumi.com/releases/sdk/pulumi-v3.229.0-darwin-arm64.tar.gz"; + sha256 = "0n1kcpgvrj3b0bm207ylf99yy7ixcx5frhcarwz19s3ssbfsynxh"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aiven-v6.51.0-darwin-arm64.tar.gz"; sha256 = "0icxa3m8fm5fprwi24clnq2112r4cjaz5yg898qws71vivx77720"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v10.3.0-darwin-arm64.tar.gz"; - sha256 = "0hbrmmgh3pbsqcm20lz3kimxwls4s10cqssp19m344f9jwp33chq"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-akamai-v11.1.0-darwin-arm64.tar.gz"; + sha256 = "0zsa46x3fqmbicfm6lg10k9ghj40pjq0v889ksqpws2d4jlhbwp7"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.97.0-darwin-arm64.tar.gz"; - sha256 = "0w3vlxvqnhvzcxdp39mng8cj4ij6gvfhxjnlz6ihagby6i7f370r"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-alicloud-v3.98.0-darwin-arm64.tar.gz"; + sha256 = "05n74cdhvl0rm3kmvdrbwx1mr350hcrp8ic21986wlfk23axd53y"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-artifactory-v8.10.3-darwin-arm64.tar.gz"; sha256 = "0f173h5sw4q9w3wswy7p7h2g692fds9m9zzrmim02riqshwgqwwm"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.38.0-darwin-arm64.tar.gz"; - sha256 = "0vgb5zvg5gpv3pfl6nz5wpzhiyy550s99qj80qs83gzlr5gl9xab"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-auth0-v3.39.0-darwin-arm64.tar.gz"; + sha256 = "0l7ipd0fha3qdi4454hizs91s7cwwhk6irq0rg0xhfvnsg4mkyd8"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.23.0-darwin-arm64.tar.gz"; - sha256 = "0sqmk67ba1686dixpdkaq0v1bnplbcj2my9sc5chaa4bbbr8rmks"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-aws-v7.24.0-darwin-arm64.tar.gz"; + sha256 = "0235p54p2vbb1mdshiqxi20bq5pcdjg58nmy38khagyd60bbj3g5"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azuread-v6.9.0-darwin-arm64.tar.gz"; @@ -515,40 +515,40 @@ sha256 = "0bgv7zbszr2x175x6qm124giplb6a182kabd34kxlp3rddikcyl1"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.33.0-darwin-arm64.tar.gz"; - sha256 = "1k2qawkqks3r65z5vg3z9nf149lydbvsgwii64ly6gdgipydkf52"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-azure-v6.34.0-darwin-arm64.tar.gz"; + sha256 = "0kq8zvhsni19rari53rl24ixds7hi1mn0wcams8wxavff43x1xjz"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.13.0-darwin-arm64.tar.gz"; - sha256 = "14xbrn320z1zlkpipjxk06fsz6fs5izgfrxrsp8z6r46pkm6mvy1"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-cloudflare-v6.14.0-darwin-arm64.tar.gz"; + sha256 = "092pls9brh7sx8jxs14dkw1djnvk7kpn0skj09bdh7m6rg004h53"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.0-darwin-arm64.tar.gz"; - sha256 = "1mcl4lky4g12pp4y227mxjz6wdffmpwz2n5c7jx84xpjq0ww6hvr"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-consul-v3.14.1-darwin-arm64.tar.gz"; + sha256 = "0albxlwafzkyv6z9iab6kcx06a7rv6fjvf1vlr1j3a24dzkmlb25"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v4.68.0-darwin-arm64.tar.gz"; - sha256 = "06gmag24my89yi995akp45hrhlqv8jj16g9mlzn1mznl1p0qmm74"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-datadog-v5.1.0-darwin-arm64.tar.gz"; + sha256 = "1rnp6l80fbgc1dzc643y4xrgcgj6niaq0hrnb4zq257ksjcm6wmx"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-digitalocean-v4.63.0-darwin-arm64.tar.gz"; sha256 = "1a5y2lq6bn4qaqkdbbjjjl8vb3w0nmwrmrxx9rkyyhh1dmf1nd8s"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.1-darwin-arm64.tar.gz"; - sha256 = "1dp65liavgnakahl8kmzk5hlvg4k0nfks535sdl68f5bkyg2m2m6"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-docker-v4.11.2-darwin-arm64.tar.gz"; + sha256 = "0sz3nvjjwy9ryjhbj7c02dz1qlqybcj3kwd8w2a2jlg0ajbkvwmk"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-equinix-metal-v3.2.1-darwin-arm64.tar.gz"; sha256 = "12bzicm43l7yvh02v5fx3z8v46l9i7a9f677735xi5rjbmd2an4c"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.4.1-darwin-arm64.tar.gz"; - sha256 = "1msppdp4navjhkp7lzngmp056y6x3fqb30r6wq5a53kyvi43x0ik"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-fastly-v11.5.0-darwin-arm64.tar.gz"; + sha256 = "03ps0dfznmw918mi89v8zflq5fzwv716sax8wka32j4b9nwlmg5v"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.16.0-darwin-arm64.tar.gz"; - sha256 = "0da15hm5qsh3kk7c37fg4sk1196ra7cz8ksng7cbh150qqq4zmxv"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-gcp-v9.18.0-darwin-arm64.tar.gz"; + sha256 = "0jvd148w3inbzb4l695nwp2ygagr62y2j3izgq2lf3ikaiwvddvx"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-github-v6.12.1-darwin-arm64.tar.gz"; @@ -571,12 +571,12 @@ sha256 = "0w7j7br44f4fdfcpqj2jairf9z65ga5i88yqkxrwliqf605i0b0a"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.9.0-darwin-arm64.tar.gz"; - sha256 = "0vvgk7c35fbdldpk2snq4y400g0cz8y9p43s2lar36b9asyq011n"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-linode-v5.10.0-darwin-arm64.tar.gz"; + sha256 = "04m3xcxm19kianxmpf9hdw5ay6mkfg251qln8albfzslhlikx054"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.0-darwin-arm64.tar.gz"; - sha256 = "09jmkig2k7dg2c9l28z8g2gznbibs2kp12013vvfila6njqvigyi"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mailgun-v3.7.1-darwin-arm64.tar.gz"; + sha256 = "0pni3rikp7vai89jix54mc1k1niawxb0kajwwqis9k34f1nf8yir"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-mysql-v3.2.14-darwin-arm64.tar.gz"; @@ -591,16 +591,16 @@ sha256 = "16sfcji3ynn02bm6rlyqwdsd61cfrzc9cmdn22wx5rzf9yvs19s3"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.1-darwin-arm64.tar.gz"; - sha256 = "0ix35xf0l6jn5x9k0ic2jlk5jzyb8a7s34wvwsi24n1aw4cccdaa"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-random-v4.19.2-darwin-arm64.tar.gz"; + sha256 = "1bzw8zl11n9kqn8lz7m42rx3yahagi2r3l153146yi080ndvpsbq"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-snowflake-v2.13.1-darwin-arm64.tar.gz"; sha256 = "05d8pl6yd0vs7hl2af1pnrp8kim7m8fy15iw4xjffj93lwb6a1sc"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.128.4-darwin-arm64.tar.gz"; - sha256 = "1cjc8zdw57vhhm3fp489whk7sk2hcc0nv7p188w65zwmis5qrdkh"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-spotinst-v3.129.0-darwin-arm64.tar.gz"; + sha256 = "1f8m2bczgbmilny71vp9k6vmcz3x2aicafz3nrc6q1lsjadcmbx8"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-sumologic-v1.0.11-darwin-arm64.tar.gz"; @@ -611,12 +611,12 @@ sha256 = "0wmpsw8lm83vlkxk2wyg0dj895yn9zi52qzjam0svcnz5xdhd31x"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.0-darwin-arm64.tar.gz"; - sha256 = "1ym0m3s9zlb66262x8arm3hzk10f3jgdrx3x4v2125xksfh9xmwf"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-tls-v5.3.1-darwin-arm64.tar.gz"; + sha256 = "1sac633vvm25n2r1hbgk85d4br281i9bqs3r4kd6gqd5qqq3dy9b"; } { - url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.7.0-darwin-arm64.tar.gz"; - sha256 = "1l7lf959p5k5cp1c48wximcwwn4mxrsih078bng2r3b8pf906asw"; + url = "https://api.pulumi.com/releases/plugins/pulumi-resource-vault-v7.8.0-darwin-arm64.tar.gz"; + sha256 = "1cdz7s9hij9xmpkmlzszj78b9wand55sivwnk49halbwdrfrjd8x"; } { url = "https://api.pulumi.com/releases/plugins/pulumi-resource-venafi-v1.12.3-darwin-arm64.tar.gz"; From 363596cd761e0308a27e9b742b7ec5b177f4fcb5 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 12:00:06 +0000 Subject: [PATCH 060/112] python3Packages.mediawiki-langcodes: 0.2.19 -> 0.2.20 --- .../python-modules/mediawiki-langcodes/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/mediawiki-langcodes/default.nix b/pkgs/development/python-modules/mediawiki-langcodes/default.nix index 327e9b1f7e54..cfc89afc033b 100644 --- a/pkgs/development/python-modules/mediawiki-langcodes/default.nix +++ b/pkgs/development/python-modules/mediawiki-langcodes/default.nix @@ -8,7 +8,7 @@ buildPythonPackage (finalAttrs: { pname = "mediawiki-langcodes"; - version = "0.2.19"; + version = "0.2.20"; pyproject = true; # Using fetchPypi instead of fetching from source for technical reason. @@ -16,7 +16,7 @@ buildPythonPackage (finalAttrs: { src = fetchPypi { pname = "mediawiki_langcodes"; inherit (finalAttrs) version; - hash = "sha256-NjLtryaAtIgoturRub1FDYQljJN2ZpmpXz0FkiOIxW8="; + hash = "sha256-a6zztQVAUf61XWJ1AUmQYGinK86hSBzVMU9sn0A4DDY="; }; build-system = [ setuptools ]; From 53c83a0344651a1f4f8626bbea7d00301cc4bdcd Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 12:39:53 +0000 Subject: [PATCH 061/112] python3Packages.pyfreshr: 1.2.0 -> 1.2.1 --- pkgs/development/python-modules/pyfreshr/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/pyfreshr/default.nix b/pkgs/development/python-modules/pyfreshr/default.nix index 355042617106..fe68d297bd20 100644 --- a/pkgs/development/python-modules/pyfreshr/default.nix +++ b/pkgs/development/python-modules/pyfreshr/default.nix @@ -11,7 +11,7 @@ buildPythonPackage (finalAttrs: { pname = "pyfreshr"; - version = "1.2.0"; + version = "1.2.1"; pyproject = true; src = fetchFromGitHub { From 3fba8cd557f2f4ffa826edea6563e6d417ad87a5 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 12:56:34 +0000 Subject: [PATCH 062/112] kapp: 0.65.1 -> 0.66.0 --- pkgs/by-name/ka/kapp/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ka/kapp/package.nix b/pkgs/by-name/ka/kapp/package.nix index bfa5f8ecd99f..3fc2fbc8d2c5 100644 --- a/pkgs/by-name/ka/kapp/package.nix +++ b/pkgs/by-name/ka/kapp/package.nix @@ -9,13 +9,13 @@ buildGoModule (finalAttrs: { pname = "kapp"; - version = "0.65.1"; + version = "0.66.0"; src = fetchFromGitHub { owner = "carvel-dev"; repo = "kapp"; rev = "v${finalAttrs.version}"; - hash = "sha256-P40pkjL7j/hHELZxT4CqsrKE18oENhCSO0tgvpb2xZc="; + hash = "sha256-Fs15mvxg3MxQpis1f9eOGOE516THazTIKs0ZiqV15Xk="; }; vendorHash = null; From dab1f30049d8b8bd44ec0506914a7f1e16b5f84e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 13:00:16 +0000 Subject: [PATCH 063/112] exploitdb: 2026-03-04 -> 2026-04-07 --- pkgs/by-name/ex/exploitdb/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ex/exploitdb/package.nix b/pkgs/by-name/ex/exploitdb/package.nix index d1864a17f507..c0449a53b8d9 100644 --- a/pkgs/by-name/ex/exploitdb/package.nix +++ b/pkgs/by-name/ex/exploitdb/package.nix @@ -6,13 +6,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "exploitdb"; - version = "2026-03-04"; + version = "2026-04-07"; src = fetchFromGitLab { owner = "exploit-database"; repo = "exploitdb"; tag = finalAttrs.version; - hash = "sha256-vAIQnjdlBWAP7dFeFGkW7F48tCH3sj9Ew5tjfRcQCmo="; + hash = "sha256-tq0E5Kzp4T+eYfA4Q4kR5kbpWrtnyKoNEpJNJCDcEKc="; }; nativeBuildInputs = [ makeWrapper ]; From 903f763a9d1c066e1fa19cf075babf0c70ed6ab6 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 13:04:55 +0000 Subject: [PATCH 064/112] qdmr: 0.14.0 -> 0.14.1 --- pkgs/by-name/qd/qdmr/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/qd/qdmr/package.nix b/pkgs/by-name/qd/qdmr/package.nix index 3aecb74a2d66..6396354fc71b 100644 --- a/pkgs/by-name/qd/qdmr/package.nix +++ b/pkgs/by-name/qd/qdmr/package.nix @@ -18,13 +18,13 @@ in stdenv.mkDerivation (finalAttrs: { pname = "qdmr"; - version = "0.14.0"; + version = "0.14.1"; src = fetchFromGitHub { owner = "hmatuschek"; repo = "qdmr"; rev = "v${finalAttrs.version}"; - hash = "sha256-9YYMU64AWBp3YAyWEQiER0lH8OeI7AczEztw6UHqmOE="; + hash = "sha256-epttTJbqOtkacIu7IfBCAG1aGk02+0Ncalo7wRz+44k="; }; nativeBuildInputs = [ From 8138e69f7f379ac3c8fca11014161f09b27d5cda Mon Sep 17 00:00:00 2001 From: nartsisss Date: Thu, 9 Jan 2025 03:38:50 +0300 Subject: [PATCH 065/112] arnis: init at 2.6.0 --- pkgs/by-name/ar/arnis/package.nix | 75 +++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 pkgs/by-name/ar/arnis/package.nix diff --git a/pkgs/by-name/ar/arnis/package.nix b/pkgs/by-name/ar/arnis/package.nix new file mode 100644 index 000000000000..2ad0ce398089 --- /dev/null +++ b/pkgs/by-name/ar/arnis/package.nix @@ -0,0 +1,75 @@ +{ + lib, + stdenv, + rustPlatform, + fetchFromGitHub, + cargo-tauri, + wrapGAppsHook4, + webkitgtk_4_1, + pkg-config, + versionCheckHook, + nix-update-script, +}: +rustPlatform.buildRustPackage (finalAttrs: { + pname = "arnis"; + version = "2.6.0"; + + src = fetchFromGitHub { + owner = "louis-e"; + repo = "arnis"; + tag = "v${finalAttrs.version}"; + hash = "sha256-FO/8cQkw6CZWMjWgjx0/2KbfnYgIbHHWdgc4c5t4AEk="; + }; + + cargoHash = "sha256-R7dW2/7UInK3yLz5YHb6UYhLukPrv8NZ8lRYhQwsiMw="; + + nativeBuildInputs = [ + cargo-tauri.hook + + pkg-config + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + wrapGAppsHook4 + ]; + + buildInputs = lib.optionals stdenv.hostPlatform.isLinux [ + webkitgtk_4_1 + ]; + + checkFlags = [ + # Fail to run in sandbox environment + "--skip=map_transformation::translate::translator::tests::test_translate_by_vector" + ]; + + nativeInstallCheckInputs = [ + versionCheckHook + ]; + versionCheckProgram = + let + binSubdirectory = + if stdenv.hostPlatform.isLinux then + "bin" + else if stdenv.hostPlatform.isDarwin then + "Applications/Arnis.app/Contents/MacOS" + else + throw "Unsuported system"; + in + "${placeholder "out"}/${binSubdirectory}/arnis"; + doInstallCheck = true; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Real world location generator for Minecraft Java Edition"; + longDescription = '' + Open source project written in Rust generates any chosen location from + the real world in Minecraft Java Edition with a high level of detail. + ''; + homepage = "https://github.com/louis-e/arnis"; + changelog = "https://github.com/louis-e/arnis/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.asl20; + inherit (cargo-tauri.hook.meta) platforms; + maintainers = with lib.maintainers; [ nartsiss ]; + mainProgram = "arnis"; + }; +}) From d1e1042a1b80b856de19f4f842a4ef8642cea0b3 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 13:11:23 +0000 Subject: [PATCH 066/112] tbls: 1.94.0 -> 1.94.2 --- pkgs/by-name/tb/tbls/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/tb/tbls/package.nix b/pkgs/by-name/tb/tbls/package.nix index 541b139ea1d8..3e651c0a9666 100644 --- a/pkgs/by-name/tb/tbls/package.nix +++ b/pkgs/by-name/tb/tbls/package.nix @@ -9,16 +9,16 @@ buildGoModule (finalAttrs: { pname = "tbls"; - version = "1.94.0"; + version = "1.94.2"; src = fetchFromGitHub { owner = "k1LoW"; repo = "tbls"; tag = "v${finalAttrs.version}"; - hash = "sha256-XVx2QN6jgtHJwbuwntd9Dr4fwTmaiBUv9JW+b/Wvpxw="; + hash = "sha256-jsMNPtcdrfKO3O2sy+pyFVU4H/HLWVmI3OS43Q6j7AE="; }; - vendorHash = "sha256-hR1YDdhF/YBaJdKioFLqQH7lqkEOPPwdPD6/GLl8hKc="; + vendorHash = "sha256-ShhztdAKbEhooIGgxHig7RptDLCSG64G9ajmXr9hmL8="; excludedPackages = [ "scripts/jsonschema" ]; From 0e06807dbf4d51d062fbd8c73e65eec52e9007c8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 13:12:33 +0000 Subject: [PATCH 067/112] vacuum-go: 0.25.2 -> 0.25.5 --- pkgs/by-name/va/vacuum-go/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/va/vacuum-go/package.nix b/pkgs/by-name/va/vacuum-go/package.nix index cf977f043ca3..11d1a77eb22e 100644 --- a/pkgs/by-name/va/vacuum-go/package.nix +++ b/pkgs/by-name/va/vacuum-go/package.nix @@ -7,16 +7,16 @@ buildGoModule (finalAttrs: { pname = "vacuum-go"; - version = "0.25.2"; + version = "0.25.5"; src = fetchFromGitHub { owner = "daveshanley"; repo = "vacuum"; tag = "v${finalAttrs.version}"; - hash = "sha256-SJYOnd9wTIUwK/X8LeXH+Pn09+H8EFzjkkSTINRXdsE="; + hash = "sha256-WvAgKJBVLZbFZ0VDG2a9cq0tZXZcaDZ5ECy9zyS2BXY="; }; - vendorHash = "sha256-RLa63ZvnXJ1bNHrwP9oLznsaSlz7tY7ROtHIML+7Egw="; + vendorHash = "sha256-V09ZrfPnRVNuGhutvn/WhNYTumZbDj+wKviz53Q27dE="; env.CGO_ENABLED = 0; ldflags = [ From e76403f0ff18e8c2a4a35d5f72b46ea7e93f3c42 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Tue, 7 Apr 2026 08:52:45 -0400 Subject: [PATCH 068/112] nixos/kanidm: remove TemporaryFileSystem masking / This has caused problems before, and again recently https://github.com/kanidm/kanidm/issues/4209. Instead of continuing to fix edge cases from this non-standard hardening, remove it. --- nixos/modules/services/security/kanidm.nix | 3 --- nixos/tests/kanidm.nix | 10 +++++++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/nixos/modules/services/security/kanidm.nix b/nixos/modules/services/security/kanidm.nix index d21352e22d9e..2905f5ef0d70 100644 --- a/nixos/modules/services/security/kanidm.nix +++ b/nixos/modules/services/security/kanidm.nix @@ -989,7 +989,6 @@ in "AF_INET6" "AF_UNIX" ]; - TemporaryFileSystem = "/:ro"; } ]; }; @@ -1031,7 +1030,6 @@ in "AF_INET6" "AF_UNIX" ]; - TemporaryFileSystem = "/:ro"; } ]; environment.RUST_LOG = "info"; @@ -1083,7 +1081,6 @@ in # Need access to home directories ProtectHome = false; RestrictAddressFamilies = [ "AF_UNIX" ]; - TemporaryFileSystem = "/:ro"; Restart = "on-failure"; }; environment.RUST_LOG = "info"; diff --git a/nixos/tests/kanidm.nix b/nixos/tests/kanidm.nix index 3594a25c8407..3edc4a8b239f 100644 --- a/nixos/tests/kanidm.nix +++ b/nixos/tests/kanidm.nix @@ -77,6 +77,8 @@ in networking.hosts."${nodes.server.networking.primaryIPAddress}" = [ serverDomain ]; + programs.fish.enable = true; + security.pki.certificateFiles = [ certs.ca.cert ]; }; @@ -126,7 +128,7 @@ in client.wait_for_unit("getty@tty1.service") client.wait_until_succeeds("pgrep -f 'agetty.*tty1'") client.succeed("kanidm person create testuser TestUser") - client.succeed("kanidm person posix set --shell \"$SHELL\" testuser") + client.succeed("kanidm person posix set --shell \"/run/current-system/sw/bin/fish\" testuser") client.send_chars("kanidm person posix set-password testuser\n") client.wait_until_tty_matches("1", "Enter new") client.send_chars("${testCredentials.password}\n") @@ -150,8 +152,10 @@ in client.wait_until_tty_matches("2", "Password: ") client.send_chars("${testCredentials.password}\n") client.wait_until_succeeds("systemctl is-active user@$(id -u testuser).service") - client.send_chars("touch done\n") - client.wait_for_file("/home/testuser@${serverDomain}/done") + client.send_chars("echo -n $SHELL > shell\n") + client.wait_for_file("/home/testuser@${serverDomain}/shell") + user_shell = client.succeed("cat /home/testuser@${serverDomain}/shell").strip() + assert user_shell == "/run/current-system/sw/bin/fish", f"Invalid user shell, expected /run/current-system/sw/bin/fish, got {user_shell}" server.shutdown() client.shutdown() From 5d13fc99819478abc25b33910fded046105b680a Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Wed, 1 Apr 2026 17:29:52 -0400 Subject: [PATCH 069/112] erlang_26: remove Will go EOL during 26.05, so removing now. --- pkgs/by-name/ak/akkoma/package.nix | 4 ++-- pkgs/by-name/pl/pleroma/package.nix | 2 +- pkgs/development/interpreters/erlang/26.nix | 6 ------ pkgs/top-level/aliases.nix | 1 + pkgs/top-level/all-packages.nix | 8 -------- pkgs/top-level/beam-packages.nix | 12 +++++++----- 6 files changed, 11 insertions(+), 22 deletions(-) delete mode 100644 pkgs/development/interpreters/erlang/26.nix diff --git a/pkgs/by-name/ak/akkoma/package.nix b/pkgs/by-name/ak/akkoma/package.nix index 1eba2698ff6f..c2568cc4c6f3 100644 --- a/pkgs/by-name/ak/akkoma/package.nix +++ b/pkgs/by-name/ak/akkoma/package.nix @@ -9,9 +9,9 @@ }: let - beamPackages = beam_minimal.packages.erlang_26.extend ( + beamPackages = beam_minimal.packages.erlang_27.extend ( self: super: { - elixir = self.elixir_1_16; + elixir = self.elixir_1_17; rebar3 = self.rebar3WithPlugins { plugins = with self; [ pc ]; }; diff --git a/pkgs/by-name/pl/pleroma/package.nix b/pkgs/by-name/pl/pleroma/package.nix index 33d206419ef1..35ba807e126a 100644 --- a/pkgs/by-name/pl/pleroma/package.nix +++ b/pkgs/by-name/pl/pleroma/package.nix @@ -16,7 +16,7 @@ }: let - beamPackages = beam.packages.erlang_26.extend (self: super: { elixir = elixir_1_17; }); + beamPackages = beam.packages.erlang_27.extend (self: super: { elixir = elixir_1_17; }); in beamPackages.mixRelease rec { pname = "pleroma"; diff --git a/pkgs/development/interpreters/erlang/26.nix b/pkgs/development/interpreters/erlang/26.nix deleted file mode 100644 index c3de12390853..000000000000 --- a/pkgs/development/interpreters/erlang/26.nix +++ /dev/null @@ -1,6 +0,0 @@ -genericBuilder: - -genericBuilder { - version = "26.2.5.18"; - hash = "sha256-mCkJeRf6PsMsVJXBIpPoHMff5JyVXLSzPzCyLiJtgJo="; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index b89ce2544678..1718036142fd 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -661,6 +661,7 @@ mapAliases { eris-go = throw "'eris-go' has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01 eriscmd = throw "'eriscmd' has been removed due to a hostile upstream moving tags and breaking src FODs"; # Added 2025-09-01 erlang-ls = throw "'erlang-ls' has been removed as it has been archived upstream. Consider using 'erlang-language-platform' instead"; # Added 2025-10-02 + erlang_26 = throw "'erlang_26' has been removed, as it is EOL"; # added 2026-04-01 esbuild-config = throw "'esbuild-config' has been removed as it has been unmaintained upstream since September 2022"; # Added 2026-02-07 etBook = warnAlias "'etBook' has been renamed to 'et-book'" et-book; # Added 2026-02-08 ethercalc = throw "'ethercalc' has been removed from nixpkgs as the project was old, unmaintained, and could not be packaged well in nixpkgs"; # Added 2025-11-28 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b825be4e14e8..e63029f1fcb4 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5013,7 +5013,6 @@ with pkgs; erlang erlang_28 erlang_27 - erlang_26 ; inherit (beam.packages.erlang_28.beamPackages) @@ -5029,11 +5028,6 @@ with pkgs; lfe ; - inherit (beam.packages.erlang_26.beamPackages) - elixir_1_16 - elixir_1_15 - ; - inherit (beam.packages.erlang) erlfmt elvis-erlang @@ -5046,12 +5040,10 @@ with pkgs; beamPackages = dontRecurseIntoAttrs beam.packages.erlang.beamPackages; beamMinimalPackages = dontRecurseIntoAttrs beam_minimal.packages.erlang.beamPackages; - beam26Packages = recurseIntoAttrs beam.packages.erlang_26.beamPackages; beam27Packages = recurseIntoAttrs beam.packages.erlang_27.beamPackages; beam28Packages = recurseIntoAttrs beam.packages.erlang_28.beamPackages; beam29Packages = dontRecurseIntoAttrs beam.packages.erlang_29.beamPackages; - beamMinimal26Packages = recurseIntoAttrs beam_minimal.packages.erlang_26.beamPackages; beamMinimal27Packages = recurseIntoAttrs beam_minimal.packages.erlang_27.beamPackages; beamMinimal28Packages = recurseIntoAttrs beam_minimal.packages.erlang_28.beamPackages; beamMinimal29Packages = dontRecurseIntoAttrs beam_minimal.packages.erlang_29.beamPackages; diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix index 915424a82a11..694963d069d0 100644 --- a/pkgs/top-level/beam-packages.nix +++ b/pkgs/top-level/beam-packages.nix @@ -1,4 +1,5 @@ { + config, lib, beam, callPackage, @@ -46,10 +47,6 @@ in inherit wxSupport systemdSupport; }; - erlang_26 = callErlang ../development/interpreters/erlang/26.nix { - inherit wxSupport systemdSupport; - }; - # Other Beam languages. These are built with `beam.interpreters.erlang`. To # access for example elixir built with different version of Erlang, use # `beam.packages.erlang_27.elixir`. @@ -76,6 +73,11 @@ in erlang_29 = self.packagesWith self.interpreters.erlang_29; erlang_28 = self.packagesWith self.interpreters.erlang_28; erlang_27 = self.packagesWith self.interpreters.erlang_27; - erlang_26 = self.packagesWith self.interpreters.erlang_26; + } + // lib.optionalAttrs config.allowAliases { + erlang_26 = throw "'erlang_26' has been removed, as it is EOL"; # added 2026-04-01 }; } +// lib.optionalAttrs config.allowAliases { + erlang_26 = throw "'erlang_26' has been removed, as it is EOL"; # added 2026-04-01 +} From 00b34cfd1534f5e0d19d58a13a7f764854d34c52 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Wed, 1 Apr 2026 17:34:04 -0400 Subject: [PATCH 070/112] elixir_1_15, elixir_1_16: remove These are only supported on OTP 26, which has been removed --- pkgs/development/beam-modules/default.nix | 10 ---------- pkgs/development/interpreters/elixir/1.15.nix | 7 ------- pkgs/development/interpreters/elixir/1.16.nix | 7 ------- pkgs/top-level/aliases.nix | 2 ++ pkgs/top-level/beam-packages.nix | 6 ++++-- 5 files changed, 6 insertions(+), 26 deletions(-) delete mode 100644 pkgs/development/interpreters/elixir/1.15.nix delete mode 100644 pkgs/development/interpreters/elixir/1.16.nix diff --git a/pkgs/development/beam-modules/default.nix b/pkgs/development/beam-modules/default.nix index 7a309226187d..4f21710b070d 100644 --- a/pkgs/development/beam-modules/default.nix +++ b/pkgs/development/beam-modules/default.nix @@ -71,16 +71,6 @@ let debugInfo = true; }; - elixir_1_16 = callPackage ../interpreters/elixir/1.16.nix { - inherit erlang; - debugInfo = true; - }; - - elixir_1_15 = callPackage ../interpreters/elixir/1.15.nix { - inherit erlang; - debugInfo = true; - }; - # Remove old versions of elixir, when the supports fades out: # https://hexdocs.pm/elixir/compatibility-and-deprecations.html diff --git a/pkgs/development/interpreters/elixir/1.15.nix b/pkgs/development/interpreters/elixir/1.15.nix deleted file mode 100644 index ca38b3b9a2a4..000000000000 --- a/pkgs/development/interpreters/elixir/1.15.nix +++ /dev/null @@ -1,7 +0,0 @@ -import ./generic-builder.nix { - version = "1.15.7"; - hash = "sha256-6GfZycylh+sHIuiQk/GQr1pRQRY1uBycSQdsVJ0J13k="; - # https://hexdocs.pm/elixir/1.15.0/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp - minimumOTPVersion = "24"; - maximumOTPVersion = "26"; -} diff --git a/pkgs/development/interpreters/elixir/1.16.nix b/pkgs/development/interpreters/elixir/1.16.nix deleted file mode 100644 index 5845ff8bbb52..000000000000 --- a/pkgs/development/interpreters/elixir/1.16.nix +++ /dev/null @@ -1,7 +0,0 @@ -import ./generic-builder.nix { - version = "1.16.3"; - hash = "sha256-WUBqoz3aQvBlSG3pTxGBpWySY7I0NUcDajQBgq5xYTU="; - # https://hexdocs.pm/elixir/1.16.0/compatibility-and-deprecations.html#compatibility-between-elixir-and-erlang-otp - minimumOTPVersion = "24"; - maximumOTPVersion = "26"; -} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 1718036142fd..8919a4008683 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -642,6 +642,8 @@ mapAliases { electron_37 = throw "electron_37 has been removed in favor of newer versions"; # Added 2026-03-20 electron_37-bin = throw "electron_37-bin has been removed in favor of newer versions"; # Added 2026-03-20 elementsd-simplicity = throw "'elementsd-simplicity' has been removed due to lack of maintenance, consider using 'elementsd' instead"; # Added 2025-06-04 + elixir_1_15 = throw "'elixir_1_15' has been removed, due to the removal of erlang_26 as EOL"; # added 2026-04-01 + elixir_1_16 = throw "'elixir_1_16' has been removed, due to the removal of erlang_26 as EOL"; # added 2026-04-01 elixir_ls = throw "'elixir_ls' has been renamed to/replaced by 'elixir-ls'"; # Converted to throw 2025-10-27 elm-github-install = throw "'elm-github-install' has been removed as it is abandoned upstream and only supports Elm 0.18.0"; # Added 2025-08-25 emacsMacport = throw "'emacsMacport' has been renamed to/replaced by 'emacs-macport'"; # Converted to throw 2025-10-27 diff --git a/pkgs/top-level/beam-packages.nix b/pkgs/top-level/beam-packages.nix index 694963d069d0..d97d3d0c8718 100644 --- a/pkgs/top-level/beam-packages.nix +++ b/pkgs/top-level/beam-packages.nix @@ -56,11 +56,10 @@ in elixir_1_19 elixir_1_18 elixir_1_17 - elixir_1_16 - elixir_1_15 elixir-ls lfe ; + }; # Helper function to generate package set with a specific Erlang version. @@ -80,4 +79,7 @@ in } // lib.optionalAttrs config.allowAliases { erlang_26 = throw "'erlang_26' has been removed, as it is EOL"; # added 2026-04-01 + + elixir_1_16 = throw "'elixir_1_16' has been removed, due to the removal of erlang_26 as EOL"; # added 2026-04-01 + elixir_1_15 = throw "'elixir_1_15' has been removed, due to the removal of erlang_26 as EOL"; # added 2026-04-01 } From 938c895553e279ccb197c3568052891c2d9c1bec Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 13:48:35 +0000 Subject: [PATCH 071/112] kubectl-gadget: 0.50.1 -> 0.51.0 --- pkgs/by-name/ku/kubectl-gadget/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ku/kubectl-gadget/package.nix b/pkgs/by-name/ku/kubectl-gadget/package.nix index d2fc1d911003..026813e019fe 100644 --- a/pkgs/by-name/ku/kubectl-gadget/package.nix +++ b/pkgs/by-name/ku/kubectl-gadget/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "kubectl-gadget"; - version = "0.50.1"; + version = "0.51.0"; src = fetchFromGitHub { owner = "inspektor-gadget"; repo = "inspektor-gadget"; tag = "v${finalAttrs.version}"; - hash = "sha256-o8Ckpa1UCit8/FTeXwWjRzvOGtRvp4BqL0K6829P7AY="; + hash = "sha256-14X+NCxsmyBhWOJMczZUBFJO1DiVQxDO46RwHGJsUVg="; }; - vendorHash = "sha256-UzttScIgwy5pN1bDr6vfYn8V6ipaIp0Cw1xIgCmJIbY="; + vendorHash = "sha256-wau7qCtVwAVfNI/Dpon2b8gkepCODLXQMZsYiYU2tSM="; env.CGO_ENABLED = 0; From 91b757451249afac721ab57ca8e9b1d015ba9bec Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 14:09:20 +0000 Subject: [PATCH 072/112] watchexec: 2.5.0 -> 2.5.1 --- pkgs/by-name/wa/watchexec/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/wa/watchexec/package.nix b/pkgs/by-name/wa/watchexec/package.nix index 12f1d4311b61..880a3be99572 100644 --- a/pkgs/by-name/wa/watchexec/package.nix +++ b/pkgs/by-name/wa/watchexec/package.nix @@ -9,16 +9,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "watchexec"; - version = "2.5.0"; + version = "2.5.1"; src = fetchFromGitHub { owner = "watchexec"; repo = "watchexec"; tag = "v${finalAttrs.version}"; - hash = "sha256-QXoqRJl4eLBE2rmOBvAhlBRE4OavvEWpGMKlBrxwbaU="; + hash = "sha256-Dobb+l24nL01od+KET3PGgDzFaYr1LPhkPrbpA3G6y4="; }; - cargoHash = "sha256-svDmGwI7YYbGdI5/TMJGPo0wVgBF6aDec9C3fYsHxYQ="; + cargoHash = "sha256-ZwF5nNI2ESwgaH129MhcJPlhtmxqwhhQ9W49u9bilRk="; nativeBuildInputs = [ installShellFiles ]; From f02b94ea624326cfb1c077268df791eac2bd6908 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 14:01:23 +0000 Subject: [PATCH 073/112] python3Packages.pyannote-audio: 4.0.3 -> 4.0.4 --- .../python-modules/pyannote-audio/default.nix | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/pyannote-audio/default.nix b/pkgs/development/python-modules/pyannote-audio/default.nix index def0e82f09e4..547e58cec1a4 100644 --- a/pkgs/development/python-modules/pyannote-audio/default.nix +++ b/pkgs/development/python-modules/pyannote-audio/default.nix @@ -25,7 +25,6 @@ pyannoteai-sdk, pytorch-metric-learning, safetensors, - soundfile, speechbrain, tensorboardx, torch, @@ -43,17 +42,17 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "pyannote-audio"; - version = "4.0.3"; + version = "4.0.4"; pyproject = true; src = fetchFromGitHub { owner = "pyannote"; repo = "pyannote-audio"; - tag = version; + tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-tgXYcqkmMaEgFU55TQ5ESMNrZiBQkiVLmIoR1bhCOKI="; + hash = "sha256-mns5ooODnJBTfFlM4b0GOoWqeTeD2CEhMikby6WdIM4="; }; build-system = [ @@ -82,7 +81,6 @@ buildPythonPackage rec { pyannoteai-sdk pytorch-metric-learning safetensors - soundfile speechbrain tensorboardx torch @@ -144,10 +142,10 @@ buildPythonPackage rec { meta = { description = "Neural building blocks for speaker diarization: speech activity detection, speaker change detection, overlapped speech detection, speaker embedding"; homepage = "https://github.com/pyannote/pyannote-audio"; - changelog = "https://github.com/pyannote/pyannote-audio/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/pyannote/pyannote-audio/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ GaetanLepage ]; }; -} +}) From 3ed44449a3cf97d40a3ca5cc095c5d348740d9af Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Tue, 7 Apr 2026 14:31:31 +0000 Subject: [PATCH 074/112] python3Packages.pymc: 5.28.3 -> 5.28.4 Diff: https://github.com/pymc-devs/pymc/compare/v5.28.3...v5.28.4 Changelog: https://github.com/pymc-devs/pymc/releases/tag/v5.28.4 --- pkgs/development/python-modules/pymc/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pymc/default.nix b/pkgs/development/python-modules/pymc/default.nix index 25246c401066..61abe51f042a 100644 --- a/pkgs/development/python-modules/pymc/default.nix +++ b/pkgs/development/python-modules/pymc/default.nix @@ -23,14 +23,14 @@ buildPythonPackage (finalAttrs: { pname = "pymc"; - version = "5.28.3"; + version = "5.28.4"; pyproject = true; src = fetchFromGitHub { owner = "pymc-devs"; repo = "pymc"; tag = "v${finalAttrs.version}"; - hash = "sha256-4RFLtIlAlLvOZ4xRvwnbMNEfHUdjsUDPn3CawyTEXQU="; + hash = "sha256-REQ9+II6MFZ64FlJudRRhmXA4/Cb017XrsrZFZBY7R0="; }; build-system = [ From 28e0df470e7bd1adac1be3e1d40334a0789312e7 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 14:34:17 +0000 Subject: [PATCH 075/112] terraform-providers.equinix_equinix: 4.13.0 -> 4.15.0 --- .../networking/cluster/terraform-providers/providers.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 02802e48448f..a1f86d5b624c 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -373,11 +373,11 @@ "vendorHash": "sha256-/kTRJnHbr9crrzdKsDz0q7svYTmiuDbSW/6kBfGgyZY=" }, "equinix_equinix": { - "hash": "sha256-92GuIkgzCbH3A/oRsjblE7Efk95FBjEaTaIBBm2BZdg=", + "hash": "sha256-Tn8CnLx2ibkj7qlzpYCX7Cm+yoTcZujVELMJSbG+/ec=", "homepage": "https://registry.terraform.io/providers/equinix/equinix", "owner": "equinix", "repo": "terraform-provider-equinix", - "rev": "v4.13.0", + "rev": "v4.15.0", "spdx": "MIT", "vendorHash": "sha256-WFlKj1IO9ylXn5frdnLcctQawjUXBTqcoMhQUQTU06A=" }, From 256cdc7c521f014f2ad28a708d7a646cc608fcc8 Mon Sep 17 00:00:00 2001 From: daschinmoy21 Date: Tue, 7 Apr 2026 20:05:51 +0530 Subject: [PATCH 076/112] retroshare: fix build --- .../networking/p2p/retroshare/default.nix | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/pkgs/applications/networking/p2p/retroshare/default.nix b/pkgs/applications/networking/p2p/retroshare/default.nix index 272a1a78a381..1fd659c48e69 100644 --- a/pkgs/applications/networking/p2p/retroshare/default.nix +++ b/pkgs/applications/networking/p2p/retroshare/default.nix @@ -88,6 +88,24 @@ stdenv.mkDerivation rec { --replace-fail \ "LIBSAM3_MAKE_PARAMS =" \ "LIBSAM3_MAKE_PARAMS = CC=$CC AR=$AR" + + # openpgpsdk uses 'bool' as a variable name, which became a C23 keyword. + # Rename it to avoid compile errors with GCC 14+ which defaults to c23. + substituteInPlace openpgpsdk/src/openpgpsdk/packet-print.c \ + --replace-fail \ + "static void print_boolean(const char *name, unsigned char bool)" \ + "static void print_boolean(const char *name, unsigned char bool_val)" \ + --replace-fail " if(bool)" " if(bool_val)" + # The C source inconsistently uses 'limited_read (bool,' (with a space) on line 1600 + substituteInPlace openpgpsdk/src/openpgpsdk/packet-parse.c \ + --replace-fail "unsigned char bool[1]=" 'unsigned char bool_val[1]=' \ + --replace-fail "limited_read(bool," "limited_read(bool_val," \ + --replace-fail "limited_read (bool," "limited_read (bool_val," \ + --replace-fail "!!bool[0]" "!!bool_val[0]" + + # Update cmake version for supportlibs to fix build with newer cmake + substituteInPlace supportlibs/udp-discovery-cpp/CMakeLists.txt \ + --replace-fail "cmake_minimum_required(VERSION 2.8)" "cmake_minimum_required(VERSION 3.5)" ''; postInstall = '' From 422503a67b7c8048568afc89fca6f72a2eb02523 Mon Sep 17 00:00:00 2001 From: Pratham Patel Date: Tue, 7 Apr 2026 21:41:43 +0530 Subject: [PATCH 077/112] armagetronad: fix build failure for armagetronad."0.4" --- pkgs/by-name/ar/armagetronad/package.nix | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkgs/by-name/ar/armagetronad/package.nix b/pkgs/by-name/ar/armagetronad/package.nix index fdbd59665d68..1b54395c93b2 100644 --- a/pkgs/by-name/ar/armagetronad/package.nix +++ b/pkgs/by-name/ar/armagetronad/package.nix @@ -93,6 +93,12 @@ let SDL2_mixer ]; extraNativeBuildInputs = [ bison ]; + # `label()` was removed in protobuf 34 + # + postPatch = '' + substituteInPlace src/network/nProtoBuf.cpp \ + --replace-fail 'field->label() == FieldDescriptor::LABEL_REPEATED' 'field->is_repeated()' + ''; }; # https://gitlab.com/armagetronad/armagetronad/-/commits/hack-0.2.8-sty+ct+ap/?ref_type=heads @@ -145,6 +151,8 @@ let pname = mainProgram; inherit (resolvedParams) version src; + postPatch = resolvedParams.postPatch or ""; + # Build works fine; install has a race. enableParallelBuilding = true; enableParallelInstalling = false; From 3de646d9e01af7e34750b847b56225bcfa4edd95 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 16:16:02 +0000 Subject: [PATCH 078/112] python3Packages.cloup: 3.0.8 -> 3.0.9 --- pkgs/development/python-modules/cloup/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/cloup/default.nix b/pkgs/development/python-modules/cloup/default.nix index cecf149c6463..5944b23fca21 100644 --- a/pkgs/development/python-modules/cloup/default.nix +++ b/pkgs/development/python-modules/cloup/default.nix @@ -9,12 +9,12 @@ buildPythonPackage rec { pname = "cloup"; - version = "3.0.8"; + version = "3.0.9"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-+RwICnJRlt33T+q9YlAmb0Zul/wW3+Iadiz2vGvrPss="; + hash = "sha256-UZ9STTxkBA5JoIZrX8C/1q8+rA09aksrULM6sCR9stc="; }; nativeBuildInputs = [ setuptools-scm ]; From d4bc492cb1aa00c6c0c698d91a6db1589cd8c9a5 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 16:31:25 +0000 Subject: [PATCH 079/112] vscode-extensions.github.codespaces: 1.18.11 -> 1.18.12 --- pkgs/applications/editors/vscode/extensions/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/vscode/extensions/default.nix b/pkgs/applications/editors/vscode/extensions/default.nix index 7cb081a122db..9be4a41cdaac 100644 --- a/pkgs/applications/editors/vscode/extensions/default.nix +++ b/pkgs/applications/editors/vscode/extensions/default.nix @@ -1902,8 +1902,8 @@ let mktplcRef = { publisher = "github"; name = "codespaces"; - version = "1.18.11"; - hash = "sha256-Jd0J7/8amQ1pLjvk+YXp6GbSrRgWhyKBw1TKr+h4OrI="; + version = "1.18.12"; + hash = "sha256-A/ORfMybSCm90SFg8hRx/N0Vq9XMtTjMPVzCIoG938g="; }; meta = { From 74fdecfbe44d92f21770f36ba6fadc2ce01f84b3 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Tue, 7 Apr 2026 12:31:32 -0400 Subject: [PATCH 080/112] erlang_27: 27.3.4.9 -> 27.3.4.10 Changelog: https://github.com/erlang/otp/releases/tag/OTP-27.3.4.10 --- pkgs/development/interpreters/erlang/27.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/erlang/27.nix b/pkgs/development/interpreters/erlang/27.nix index cdcdf0e0b11c..7fcbd33c8c8c 100644 --- a/pkgs/development/interpreters/erlang/27.nix +++ b/pkgs/development/interpreters/erlang/27.nix @@ -1,6 +1,6 @@ genericBuilder: genericBuilder { - version = "27.3.4.9"; - hash = "sha256-PISjGuGdmlAL9SD58G9nZEFQ6+mL/FpTnJA5bw0Gi0g="; + version = "27.3.4.10"; + hash = "sha256-x1f9r1t5Ckk+AVn2P372aWLoDtgqZzNIeOuzjI6hm+g="; } From 7954f69fd07074ef1d20af6434d3bebf244d21df Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Tue, 7 Apr 2026 12:32:19 -0400 Subject: [PATCH 081/112] erlang_28: 28.4.1 -> 28.4.2 Changelog: https://github.com/erlang/otp/releases/tag/OTP-28.4.2 --- pkgs/development/interpreters/erlang/28.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/interpreters/erlang/28.nix b/pkgs/development/interpreters/erlang/28.nix index fe0a9a2e6e02..d373f3a2f6cf 100644 --- a/pkgs/development/interpreters/erlang/28.nix +++ b/pkgs/development/interpreters/erlang/28.nix @@ -1,6 +1,6 @@ genericBuilder: genericBuilder { - version = "28.4.1"; - hash = "sha256-0J4bNyLwZdP4ac/TzPIQUch0NeNGbcDKaRSnH83C5Lk="; + version = "28.4.2"; + hash = "sha256-Xf7FN+LmoVHAfW1tO9XkBcBPsuLb7R7yrSLmiFTsXe8="; } From 7dd8afb21d19b4994cdc2c80020f8a4cdd99ded4 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 16:59:41 +0000 Subject: [PATCH 082/112] terraform-providers.hashicorp_google: 7.25.0 -> 7.26.0 --- .../networking/cluster/terraform-providers/providers.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 02802e48448f..196f37ca7328 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -571,11 +571,11 @@ "vendorHash": "sha256-xIagZvWtlNpz5SQfxbA7r9ojAeS3CW2pwV337ObKOwU=" }, "hashicorp_google": { - "hash": "sha256-MAdeRuAHphIpvaEQhH38zMtw5F9Rbik82tzsJFgz14Y=", + "hash": "sha256-g9O6ypO6e9KR2V/85vISHhZpjSdmk/y+FSFGMPlmEdY=", "homepage": "https://registry.terraform.io/providers/hashicorp/google", "owner": "hashicorp", "repo": "terraform-provider-google", - "rev": "v7.25.0", + "rev": "v7.26.0", "spdx": "MPL-2.0", "vendorHash": "sha256-znm43JcwFf/NpGIaayyiOazAa7yCStrbuSNnGkyxzFA=" }, From 8cb3a579fbab22f8d2edda056de1b5db4a262fa6 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Tue, 7 Apr 2026 13:03:00 -0400 Subject: [PATCH 083/112] pleroma: update to OTP 27 and elixir 1.18 This is supported upstream, but we needed to patch an unused dep (mochiweb). --- pkgs/by-name/pl/pleroma/package.nix | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/pl/pleroma/package.nix b/pkgs/by-name/pl/pleroma/package.nix index 35ba807e126a..4c99d73b22f7 100644 --- a/pkgs/by-name/pl/pleroma/package.nix +++ b/pkgs/by-name/pl/pleroma/package.nix @@ -1,6 +1,5 @@ { beam, - elixir_1_17, lib, fetchFromGitHub, fetchFromGitLab, @@ -16,7 +15,7 @@ }: let - beamPackages = beam.packages.erlang_27.extend (self: super: { elixir = elixir_1_17; }); + beamPackages = beam.packages.erlang_27.extend (self: super: { elixir = self.elixir_1_18; }); in beamPackages.mixRelease rec { pname = "pleroma"; @@ -206,6 +205,18 @@ beamPackages.mixRelease rec { cp ${cfgFile} config/config.exs ''; }; + + # mochiweb is unused by still in mix.lock + # work around OTP 27+ incompat by forcing our build to use a newer version + mochiweb = prev.mochiweb.override rec { + version = "3.3.0"; + + src = fetchHex { + pkg = "mochiweb"; + version = "${version}"; + sha256 = "sha256-qoW3d/sj6ZcuvEJOQLXTUQbxm8mYhz4Cbe3Ydt+O5Qw="; + }; + }; }; }; From 3cfa1bbc0fb779b609f3c2eb59088793e5f03d88 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 17:21:31 +0000 Subject: [PATCH 084/112] libretro.atari800: 0-unstable-2026-01-30 -> 0-unstable-2026-03-31 --- pkgs/applications/emulators/libretro/cores/atari800.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/atari800.nix b/pkgs/applications/emulators/libretro/cores/atari800.nix index d820b1072921..0c25ee669c5d 100644 --- a/pkgs/applications/emulators/libretro/cores/atari800.nix +++ b/pkgs/applications/emulators/libretro/cores/atari800.nix @@ -5,13 +5,13 @@ }: mkLibretroCore rec { core = "atari800"; - version = "0-unstable-2026-01-30"; + version = "0-unstable-2026-03-31"; src = fetchFromGitHub { owner = "libretro"; repo = "libretro-atari800"; - rev = "d1d0d425458e6b5a2e51ad5f1507bdf97e857c95"; - hash = "sha256-gu1S4pNVq0MCK/77oGI6ekP1Nten72R6Y1n64oK/IFc="; + rev = "a9b9c433d8cb6c8e8eb08d14d3e95b430549723a"; + hash = "sha256-vPv6D+y+n9gMgC78cLBVeNLg3nGEAsTeBGFv+SWgH0A="; }; makefile = "Makefile"; From 7ff7e9fd797626a6d597fd1f5b88145330ffe676 Mon Sep 17 00:00:00 2001 From: Defelo Date: Fri, 27 Mar 2026 18:07:48 +0100 Subject: [PATCH 085/112] ketesa: 0.11.4-etke54 -> 1.1.0 Changelog: https://github.com/etkecc/ketesa/releases/tag/v1.0.0 Changelog: https://github.com/etkecc/ketesa/releases/tag/v1.1.0 Diff: https://github.com/etkecc/ketesa/compare/v0.11.4-etke54...v1.1.0 --- .../ketesa}/package.nix | 26 ++++++++++--------- pkgs/top-level/aliases.nix | 1 + 2 files changed, 15 insertions(+), 12 deletions(-) rename pkgs/by-name/{sy/synapse-admin-etkecc => ke/ketesa}/package.nix (62%) diff --git a/pkgs/by-name/sy/synapse-admin-etkecc/package.nix b/pkgs/by-name/ke/ketesa/package.nix similarity index 62% rename from pkgs/by-name/sy/synapse-admin-etkecc/package.nix rename to pkgs/by-name/ke/ketesa/package.nix index b46d2deb519f..247a7f21c244 100644 --- a/pkgs/by-name/sy/synapse-admin-etkecc/package.nix +++ b/pkgs/by-name/ke/ketesa/package.nix @@ -16,19 +16,19 @@ assert lib.asserts.assertMsg ( ) "The baseUrl parameter is deprecated, please use .withConfig instead"; stdenv.mkDerivation (finalAttrs: { - pname = "synapse-admin-etkecc"; - version = "0.11.4-etke54"; + pname = "ketesa"; + version = "1.1.0"; src = fetchFromGitHub { owner = "etkecc"; - repo = "synapse-admin"; + repo = "ketesa"; tag = "v${finalAttrs.version}"; - hash = "sha256-/BH77wv9wWUIMcrDW5l8e+nQMHuJRtdKGqVfYl5XQzc="; + hash = "sha256-+MzoYREPLKEHT5fXAddYBVELDmmP7+aXQlm4s04kWy0="; }; yarnOfflineCache = fetchYarnDeps { yarnLock = finalAttrs.src + "/yarn.lock"; - hash = "sha256-neKBMw0iDYLQG4GeoXlnU1SVwKADw0ATAHG1s1inH3U="; + hash = "sha256-+q4Y0BNK1BggNyRw2gJ3swAe+ZK6A3N+oceBrx0a2uE="; }; nativeBuildInputs = [ @@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: { env = { NODE_ENV = "production"; - SYNAPSE_ADMIN_VERSION = finalAttrs.version; + KETESA_VERSION = finalAttrs.version; }; installPhase = '' @@ -48,15 +48,17 @@ stdenv.mkDerivation (finalAttrs: { runHook postInstall ''; + __darwinAllowLocalNetworking = true; + passthru = { - # https://github.com/etkecc/synapse-admin/blob/main/docs/config.md + # https://github.com/etkecc/ketesa/blob/main/docs/config.md withConfig = config: stdenv.mkDerivation { inherit (finalAttrs) version meta; - pname = "synapse-admin-etkecc-with-config"; + pname = "ketesa-with-config"; dontUnpack = true; - configFile = writers.writeJSON "synapse-admin-config" config; + configFile = writers.writeJSON "ketesa-config" config; installPhase = '' runHook preInstall cp -r ${finalAttrs.finalPackage} $out @@ -70,9 +72,9 @@ stdenv.mkDerivation (finalAttrs: { }; meta = { - description = "Maintained fork of the admin console for (Matrix) Synapse homeservers, including additional features"; - homepage = "https://github.com/etkecc/synapse-admin"; - changelog = "https://github.com/etkecc/synapse-admin/releases/tag/v${finalAttrs.version}"; + description = "Admin UI for Matrix servers, formerly Synapse Admin. Drop-in replacement with extended features, multi-backend support, and visual customization"; + homepage = "https://github.com/etkecc/ketesa"; + changelog = "https://github.com/etkecc/ketesa/releases/tag/v${finalAttrs.version}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ defelo ]; }; diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 76007cb15d3c..852a8c5b7598 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1916,6 +1916,7 @@ mapAliases { Sylk = throw "'Sylk' has been renamed to/replaced by 'sylk'"; # Converted to throw 2025-10-27 symbiyosys = throw "'symbiyosys' has been renamed to/replaced by 'sby'"; # Converted to throw 2025-10-27 syn2mas = throw "'syn2mas' has been removed. It has been integrated into the main matrix-authentication-service CLI as a subcommand: 'mas-cli syn2mas'."; # Added 2025-07-07 + synapse-admin-etkecc = warnAlias "'synapse-admin-etkecc' has been renamed to 'ketesa'" ketesa; # Added 2026-04-03 sync = throw "'sync' has been renamed to/replaced by 'taler-sync'"; # Converted to throw 2025-10-27 syncall = throw "'syncall' has been removed because it has been marked as broken since at least November 2024."; # Added 2025-10-01 syncthing-tray = throw "syncthing-tray has been removed because it is broken and unmaintained"; # Added 2025-05-18 From 128dad70c66d00c248c9821fc3e45222818a0e3f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 6 Apr 2026 16:49:40 +0200 Subject: [PATCH 086/112] nix_2_28: add patch for GHSA-g3g9-5vj6-r3gj This addresses GHSA-g3g9-5vj6-r3gj, a vulnerability where std::filesystem::copy_file follows symlinks when copying FOD outputs, allowing a malicious builder to overwrite files outside the build sandbox. The patch puts FOD output copies in a temporary directory inside the store (instead of the chroot) and tightens permissions on the in-store temporary directory. --- pkgs/tools/package-management/nix/default.nix | 1 + .../patches/ghsa-g3g9-5vj6-r3gj-2.28.patch | 126 ++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index bbb45c9d419d..70533da7574b 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -165,6 +165,7 @@ lib.makeExtensible ( hash = "sha256-vFv/D08x9urtoIE9wiC7Lln4Eq3sgNBwU7TBE1iyrfI="; }) lowdown30PatchOld + ./patches/ghsa-g3g9-5vj6-r3gj-2.28.patch ]; }; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch new file mode 100644 index 000000000000..ae50b007a30b --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch @@ -0,0 +1,126 @@ +From 32b09e0bfeb33434866610994d89f48da8a2bf41 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= +Date: Mon, 6 Apr 2026 16:49:13 +0200 +Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Squashed commit of the following: + +commit 716dba6692c42e301a1e769e5eac02a4d6e63150 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:31 2026 +0300 + + derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store + +commit a3215e7c5c260fab5f2cb034c4df01dfa3b284e5 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:21 2026 +0300 + + libstore: Make temporary in-store directory not world-readable + +Signed-off-by: Jörg Thalheim +--- + src/libstore/include/nix/store/local-store.hh | 2 ++ + src/libstore/local-store.cc | 5 +-- + .../unix/build/local-derivation-goal.cc | 36 ++++++++++++++----- + 3 files changed, 33 insertions(+), 10 deletions(-) + +diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh +index 5893b7d8b..c9266f6b4 100644 +--- a/src/libstore/include/nix/store/local-store.hh ++++ b/src/libstore/include/nix/store/local-store.hh +@@ -408,6 +408,8 @@ private: + friend struct PathSubstitutionGoal; + friend struct SubstitutionGoal; + friend struct DerivationGoal; ++ /* Only used for createTempDirInStore. */ ++ friend class DerivationBuilderImpl; + }; + + } // namespace nix +diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc +index 63108fab4..ab3a0d034 100644 +--- a/src/libstore/local-store.cc ++++ b/src/libstore/local-store.cc +@@ -1311,8 +1311,9 @@ std::pair LocalStore::createTempDirInStore() + do { + /* There is a slight possibility that `tmpDir' gets deleted by + the GC between createTempDir() and when we acquire a lock on it. +- We'll repeat until 'tmpDir' exists and we've locked it. */ +- tmpDirFn = createTempDir(realStoreDir, "tmp"); ++ We'll repeat until 'tmpDir' exists and we've locked it. ++ Make the directory accessible only to the current user.*/ ++ tmpDirFn = createTempDir(realStoreDir, "tmp", /*mode=*/0700); + tmpDirFd = openDirectory(tmpDirFn); + if (!tmpDirFd) { + continue; +diff --git a/src/libstore/unix/build/local-derivation-goal.cc b/src/libstore/unix/build/local-derivation-goal.cc +index 88c82e063..3e4c3017d 100644 +--- a/src/libstore/unix/build/local-derivation-goal.cc ++++ b/src/libstore/unix/build/local-derivation-goal.cc +@@ -2547,6 +2547,13 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() + assert(output && scratchPath); + auto actualPath = toRealPathChroot(worker.store.printStorePath(*scratchPath)); + ++ /* An optional file descriptor of a directory used for intermediate ++ operations. */ ++ AutoCloseFD tempDirFd; ++ /* RAII cleanup of a temporary directory inside the store that is used ++ for intermediate operations. */ ++ std::optional delTempDir; ++ + auto finish = [&](StorePath finalStorePath) { + /* Store the final path */ + finalOutputs.insert_or_assign(outputName, finalStorePath); +@@ -2681,6 +2688,25 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() + return newInfo0; + }; + ++ auto moveOutputToTempDir = [&]() -> void { ++ std::filesystem::path tempDir; ++ std::tie(tempDir, tempDirFd) = getLocalStore().createTempDirInStore(); ++ delTempDir.emplace(tempDir); ++ ++ auto tmpOutput = tempDir / "x"; ++ ++ /* Serialise and create a fresh copy of the output to break ++ any stale writable file descriptors. Copy through the ++ serialisation/deserialisation. TODO: Use copyRecursive here and ++ make use of reflinking. */ ++ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); ++ restorePath(tmpOutput, *source, settings.fsyncStorePaths); ++ /* This makes it slightly harder to make sense of the control flow. The rule ++ of thumb is that actualPath points to the current location of the stuff ++ that we'll end up registering. */ ++ actualPath = std::move(tmpOutput); ++ }; ++ + ValidPathInfo newInfo = std::visit( + overloaded{ + +@@ -2708,14 +2734,7 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() + + [&](const DerivationOutput::CAFixed & dof) { + auto & wanted = dof.ca.hash; +- +- // Replace the output by a fresh copy of itself to make sure +- // that there's no stale file descriptor pointing to it +- Path tmpOutput = actualPath + ".tmp"; +- copyFile(std::filesystem::path(actualPath), std::filesystem::path(tmpOutput), true); +- +- std::filesystem::rename(tmpOutput, actualPath); +- ++ moveOutputToTempDir(); + auto newInfo0 = newInfoFromCA( + DerivationOutput::CAFloating{ + .method = dof.ca.method, +@@ -2756,6 +2775,7 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() + }, + + [&](const DerivationOutput::Impure & doi) { ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = doi.method, From 69e8fef8129d2a7377f212f8fbd0a1ceb1f38ca3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 6 Apr 2026 16:49:40 +0200 Subject: [PATCH 087/112] nixComponents_2_30: add patch for GHSA-g3g9-5vj6-r3gj This addresses GHSA-g3g9-5vj6-r3gj, a vulnerability where std::filesystem::copy_file follows symlinks when copying FOD outputs, allowing a malicious builder to overwrite files outside the build sandbox. The patch puts FOD output copies in a temporary directory inside the store (instead of the chroot) and tightens permissions on the in-store temporary directory. --- pkgs/tools/package-management/nix/default.nix | 1 + .../patches/ghsa-g3g9-5vj6-r3gj-2.30.patch | 126 ++++++++++++++++++ 2 files changed, 127 insertions(+) create mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 70533da7574b..66cb2fc91636 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -190,6 +190,7 @@ lib.makeExtensible ( hash = "sha256-r2ZF1zBZDKMvyX6X4VsaTMrg0zdjn59Jf6Hqg56r29E="; }) lowdown30PatchOld + ./patches/ghsa-g3g9-5vj6-r3gj-2.30.patch ] ); diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch new file mode 100644 index 000000000000..d7514f864afa --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch @@ -0,0 +1,126 @@ +From 4d0a078f1dae9a07d04e1a72e7e62fbf2ca249e0 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= +Date: Mon, 6 Apr 2026 16:49:13 +0200 +Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Squashed commit of the following: + +commit a8e5b27728e3b18e63c2503a83afd04031994623 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:31 2026 +0300 + + derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store + +commit 49ff4d6779ec20c5339b237dec9b240c3eabf535 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:21 2026 +0300 + + libstore: Make temporary in-store directory not world-readable + +Signed-off-by: Jörg Thalheim +--- + src/libstore/include/nix/store/local-store.hh | 2 ++ + src/libstore/local-store.cc | 5 +-- + src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- + 3 files changed, 33 insertions(+), 10 deletions(-) + +diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh +index 5f3a249f8..74fa1c2e8 100644 +--- a/src/libstore/include/nix/store/local-store.hh ++++ b/src/libstore/include/nix/store/local-store.hh +@@ -446,6 +446,8 @@ private: + friend struct PathSubstitutionGoal; + friend struct SubstitutionGoal; + friend struct DerivationGoal; ++ /* Only used for createTempDirInStore. */ ++ friend class DerivationBuilderImpl; + }; + + } // namespace nix +diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc +index 49c499e3f..5f897856f 100644 +--- a/src/libstore/local-store.cc ++++ b/src/libstore/local-store.cc +@@ -1316,8 +1316,9 @@ std::pair LocalStore::createTempDirInStore() + do { + /* There is a slight possibility that `tmpDir' gets deleted by + the GC between createTempDir() and when we acquire a lock on it. +- We'll repeat until 'tmpDir' exists and we've locked it. */ +- tmpDirFn = createTempDir(config->realStoreDir, "tmp"); ++ We'll repeat until 'tmpDir' exists and we've locked it. ++ Make the directory accessible only to the current user.*/ ++ tmpDirFn = createTempDir(config->realStoreDir, "tmp", /*mode=*/0700); + tmpDirFd = openDirectory(tmpDirFn); + if (!tmpDirFd) { + continue; +diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc +index 5f9dafb57..609d88a79 100644 +--- a/src/libstore/unix/build/derivation-builder.cc ++++ b/src/libstore/unix/build/derivation-builder.cc +@@ -1581,6 +1581,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + assert(output && scratchPath); + auto actualPath = realPathInSandbox(store.printStorePath(*scratchPath)); + ++ /* An optional file descriptor of a directory used for intermediate ++ operations. */ ++ AutoCloseFD tempDirFd; ++ /* RAII cleanup of a temporary directory inside the store that is used ++ for intermediate operations. */ ++ std::optional delTempDir; ++ + auto finish = [&](StorePath finalStorePath) { + /* Store the final path */ + finalOutputs.insert_or_assign(outputName, finalStorePath); +@@ -1715,6 +1722,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + return newInfo0; + }; + ++ auto moveOutputToTempDir = [&]() -> void { ++ std::filesystem::path tempDir; ++ std::tie(tempDir, tempDirFd) = getLocalStore(store).createTempDirInStore(); ++ delTempDir.emplace(tempDir); ++ ++ auto tmpOutput = tempDir / "x"; ++ ++ /* Serialise and create a fresh copy of the output to break ++ any stale writable file descriptors. Copy through the ++ serialisation/deserialisation. TODO: Use copyRecursive here and ++ make use of reflinking. */ ++ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); ++ restorePath(tmpOutput, *source, settings.fsyncStorePaths); ++ /* This makes it slightly harder to make sense of the control flow. The rule ++ of thumb is that actualPath points to the current location of the stuff ++ that we'll end up registering. */ ++ actualPath = std::move(tmpOutput); ++ }; ++ + ValidPathInfo newInfo = std::visit( + overloaded{ + +@@ -1742,14 +1768,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + + [&](const DerivationOutput::CAFixed & dof) { + auto & wanted = dof.ca.hash; +- +- // Replace the output by a fresh copy of itself to make sure +- // that there's no stale file descriptor pointing to it +- Path tmpOutput = actualPath + ".tmp"; +- copyFile(std::filesystem::path(actualPath), std::filesystem::path(tmpOutput), true); +- +- std::filesystem::rename(tmpOutput, actualPath); +- ++ moveOutputToTempDir(); + auto newInfo0 = newInfoFromCA( + DerivationOutput::CAFloating{ + .method = dof.ca.method, +@@ -1790,6 +1809,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + }, + + [&](const DerivationOutput::Impure & doi) { ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = doi.method, From be231299383aa4a41ed83ee422f07f316f0fa63c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 6 Apr 2026 16:49:40 +0200 Subject: [PATCH 088/112] nixComponents_2_31: add patches for GHSA-g3g9-5vj6-r3gj This addresses GHSA-g3g9-5vj6-r3gj, a vulnerability where std::filesystem::copy_file follows symlinks when copying FOD outputs, allowing a malicious builder to overwrite files outside the build sandbox. The patch puts FOD output copies in a temporary directory inside the store (instead of the chroot) and tightens permissions on the in-store temporary directory. The second patch partially fixes the issue with cooperating processes being able to communicate via abstract sockets. The fix is partial, because processes outside the landlock domain of the sandboxed process can still connect to a socket created by the FOD. There's no equivalent way of restricting inbound connections. This closes the gap when there's no cooperating process on the host (i.e. 2 separate FODs). The patch applies landlock LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on kernels >= 6.12 (default on NixOS 25.11+) to deny abstract socket connect from inside the build sandbox. --- pkgs/tools/package-management/nix/default.nix | 2 + .../patches/ghsa-g3g9-5vj6-r3gj-2.31.patch | 126 ++++++++++ ...dlock-abstract-socket-hardening-2.31.patch | 232 ++++++++++++++++++ 3 files changed, 360 insertions(+) create mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch create mode 100644 pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 66cb2fc91636..a0e28a02f9f1 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -210,6 +210,8 @@ lib.makeExtensible ( }).appendPatches [ lowdown30Patch + ./patches/ghsa-g3g9-5vj6-r3gj-2.31.patch + ./patches/landlock-abstract-socket-hardening-2.31.patch ]; nix_2_31 = addTests "nix_2_31" self.nixComponents_2_31.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch new file mode 100644 index 000000000000..4d08316d67a7 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch @@ -0,0 +1,126 @@ +From df0153a9eca42c4ed5ac784657c8c5d0664c9e0e Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= +Date: Mon, 6 Apr 2026 16:49:13 +0200 +Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Squashed commit of the following: + +commit bf1d95ae399e47daeafa9e0dfac967f415c52447 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:31 2026 +0300 + + derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store + +commit ca5986fa353d402738acf961bcaa017c61019809 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:21 2026 +0300 + + libstore: Make temporary in-store directory not world-readable + +Signed-off-by: Jörg Thalheim +--- + src/libstore/include/nix/store/local-store.hh | 2 ++ + src/libstore/local-store.cc | 5 +-- + src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- + 3 files changed, 33 insertions(+), 10 deletions(-) + +diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh +index ec88ffb4f..91df9cd77 100644 +--- a/src/libstore/include/nix/store/local-store.hh ++++ b/src/libstore/include/nix/store/local-store.hh +@@ -455,6 +455,8 @@ private: + + friend struct PathSubstitutionGoal; + friend struct DerivationGoal; ++ /* Only used for createTempDirInStore. */ ++ friend class DerivationBuilderImpl; + }; + + } // namespace nix +diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc +index d24bc415c..524a9fdda 100644 +--- a/src/libstore/local-store.cc ++++ b/src/libstore/local-store.cc +@@ -1342,8 +1342,9 @@ std::pair LocalStore::createTempDirInStore() + do { + /* There is a slight possibility that `tmpDir' gets deleted by + the GC between createTempDir() and when we acquire a lock on it. +- We'll repeat until 'tmpDir' exists and we've locked it. */ +- tmpDirFn = createTempDir(config->realStoreDir, "tmp"); ++ We'll repeat until 'tmpDir' exists and we've locked it. ++ Make the directory accessible only to the current user.*/ ++ tmpDirFn = createTempDir(config->realStoreDir, "tmp", /*mode=*/0700); + tmpDirFd = openDirectory(tmpDirFn); + if (!tmpDirFd) { + continue; +diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc +index 73bb026a2..d11f80159 100644 +--- a/src/libstore/unix/build/derivation-builder.cc ++++ b/src/libstore/unix/build/derivation-builder.cc +@@ -1473,6 +1473,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + assert(output && scratchPath); + auto actualPath = realPathInSandbox(store.printStorePath(*scratchPath)); + ++ /* An optional file descriptor of a directory used for intermediate ++ operations. */ ++ AutoCloseFD tempDirFd; ++ /* RAII cleanup of a temporary directory inside the store that is used ++ for intermediate operations. */ ++ std::optional delTempDir; ++ + auto finish = [&](StorePath finalStorePath) { + /* Store the final path */ + finalOutputs.insert_or_assign(outputName, finalStorePath); +@@ -1607,6 +1614,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + return newInfo0; + }; + ++ auto moveOutputToTempDir = [&]() -> void { ++ std::filesystem::path tempDir; ++ std::tie(tempDir, tempDirFd) = store.createTempDirInStore(); ++ delTempDir.emplace(tempDir); ++ ++ auto tmpOutput = tempDir / "x"; ++ ++ /* Serialise and create a fresh copy of the output to break ++ any stale writable file descriptors. Copy through the ++ serialisation/deserialisation. TODO: Use copyRecursive here and ++ make use of reflinking. */ ++ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); ++ restorePath(tmpOutput, *source, settings.fsyncStorePaths); ++ /* This makes it slightly harder to make sense of the control flow. The rule ++ of thumb is that actualPath points to the current location of the stuff ++ that we'll end up registering. */ ++ actualPath = std::move(tmpOutput); ++ }; ++ + ValidPathInfo newInfo = std::visit( + overloaded{ + +@@ -1634,14 +1660,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + + [&](const DerivationOutput::CAFixed & dof) { + auto & wanted = dof.ca.hash; +- +- // Replace the output by a fresh copy of itself to make sure +- // that there's no stale file descriptor pointing to it +- Path tmpOutput = actualPath + ".tmp"; +- copyFile(std::filesystem::path(actualPath), std::filesystem::path(tmpOutput), true); +- +- std::filesystem::rename(tmpOutput, actualPath); +- ++ moveOutputToTempDir(); + auto newInfo0 = newInfoFromCA( + DerivationOutput::CAFloating{ + .method = dof.ca.method, +@@ -1682,6 +1701,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + }, + + [&](const DerivationOutput::Impure & doi) { ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = doi.method, diff --git a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch new file mode 100644 index 000000000000..7584a608db7f --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch @@ -0,0 +1,232 @@ +From b743f908b10aa56b88fb490de8a0d893bd2d83d5 Mon Sep 17 00:00:00 2001 +From: Sergei Zimmerman +Date: Sun, 5 Apr 2026 16:39:58 +0300 +Subject: [PATCH] libstore: Use landlock with + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET for new enough kernels +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This partially fixes the issue with cooperating processes being able +to communicate via abstract sockets. The fix is partial, because processes +outside the landlock domain of the sandboxed process can still connect to +a socket created by the FOD. There's no equivalent way of restricting inbound +connections. This closes the gap when there's no cooperating process on the host +(i.e. 2 separate FODs). + +>= 6.12 kernel is widespread enough (NixOS 25.11 ships it by +default) that we have no reason not to apply this hardening, even though +it's incomplete. + +ca-fd-leak test exercises this exact code path and now the smuggling +process fails with (on new enough kernels that have landlock support enabled): + +vm-test-run-ca-fd-leak> machine # sandbox setup: applied landlock sandboxing +vm-test-run-ca-fd-leak> machine # building '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv'... +vm-test-run-ca-fd-leak> machine # building derivation '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv': woken up +vm-test-run-ca-fd-leak> machine # connect: Operation not permitted +vm-test-run-ca-fd-leak> machine # sendmsg: Socket not connected + +(cherry picked from commit 44017ca497c8b44d5dac179f5afc63e91fe45ed6) +Signed-off-by: Jörg Thalheim +--- + src/libstore/meson.build | 5 + + .../unix/build/linux-derivation-builder.cc | 103 ++++++++++++++++++ + tests/nixos/ca-fd-leak/default.nix | 8 +- + 3 files changed, 114 insertions(+), 2 deletions(-) + +diff --git a/src/libstore/meson.build b/src/libstore/meson.build +index a275f4edc..dc8a7a940 100644 +--- a/src/libstore/meson.build ++++ b/src/libstore/meson.build +@@ -77,6 +77,11 @@ foreach funcspec : check_funcs + configdata_priv.set(define_name, define_value) + endforeach + ++if host_machine.system() == 'linux' ++ has_landlock = cxx.has_header('linux/landlock.h') ++ configdata_priv.set('HAVE_LANDLOCK', has_landlock.to_int()) ++endif ++ + has_acl_support = cxx.has_header('sys/xattr.h') \ + and cxx.has_function('llistxattr') \ + and cxx.has_function('lremovexattr') +diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc +index eaac2bc28..dc5abf808 100644 +--- a/src/libstore/unix/build/linux-derivation-builder.cc ++++ b/src/libstore/unix/build/linux-derivation-builder.cc +@@ -1,10 +1,16 @@ + #ifdef __linux__ + ++# include "store-config-private.hh" ++ + # include "nix/store/personality.hh" + # include "nix/util/cgroup.hh" + # include "nix/util/linux-namespaces.hh" + # include "linux/fchmodat2-compat.hh" + ++# include ++# include ++# include ++ + # include + # include + # include +@@ -13,11 +19,16 @@ + # include + # include + # include ++# include + + # if HAVE_SECCOMP + # include + # endif + ++# if HAVE_LANDLOCK ++# include ++# endif ++ + # define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old)) + + namespace nix { +@@ -121,6 +132,77 @@ static void setupSeccomp() + # endif + } + ++# if HAVE_LANDLOCK && defined(LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET) ++ ++# define DO_LANDLOCK 1 ++ ++/* We are using LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on best-effort basis. There are no glibc wrappers for now. */ ++ ++static int landlockCreateRuleset(const ::landlock_ruleset_attr * attr, std::size_t size, std::uint32_t flags) ++{ ++ return ::syscall(__NR_landlock_create_ruleset, attr, size, flags); ++} ++ ++static int landlockRestrictSelf(Descriptor rulesetFd, std::uint32_t flags) ++{ ++ return ::syscall(__NR_landlock_restrict_self, rulesetFd, flags); ++} ++ ++static int getLandlockAbiVersion() ++{ ++ int abiVersion = landlockCreateRuleset(nullptr, 0, LANDLOCK_CREATE_RULESET_VERSION); ++ return abiVersion; ++} ++ ++static void setupLandlock() ++{ ++ bool landlockSupportsScopeAbstractUnixSocket = []() { ++ int abiVersion = getLandlockAbiVersion(); ++ if (abiVersion >= 6) ++ /* All good, we can use LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET. See ++ https://docs.kernel.org/userspace-api/landlock.html#abstract-unix-socket-abi-6 */ ++ return true; ++ ++ if (abiVersion == -1) { ++ debug("landlock is not available"); ++ return false; ++ } ++ ++ debug("landlock version %d does not support LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET", abiVersion); ++ return false; ++ }(); ++ ++ /* Bail out early if landlock is not enabled or LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET wouldn't work. ++ TODO: Consider adding more landlock rules for filesystem access as defense-in-depth on top. */ ++ if (!landlockSupportsScopeAbstractUnixSocket) ++ return; ++ ++ ::landlock_ruleset_attr attr = { ++ /* This prevents multiple FODs from communicating with each other ++ via abstract sockets. Note that cooperating processes outside the ++ sandbox can still connect to an abstract socket created by the FOD. To ++ mitigate that issue entirely we'd still need network namespaces. */ ++ .scoped = LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, ++ }; ++ ++ /* This better not fail - if the kernel reports a new enough ABI version we ++ should treat any errors as fatal from now on. */ ++ AutoCloseFD rulesetFd = landlockCreateRuleset(&attr, sizeof(attr), 0); ++ if (!rulesetFd) ++ throw SysError("failed to create a landlock ruleset"); ++ ++ if (landlockRestrictSelf(rulesetFd.get(), 0) == -1) ++ throw SysError("failed to apply landlock"); ++ ++ debug("applied landlock sandboxing"); ++} ++ ++# else ++ ++# define DO_LANDLOCK 0 ++ ++# endif ++ + static void doBind(const Path & source, const Path & target, bool optional = false) + { + debug("bind mounting '%1%' to '%2%'", source, target); +@@ -159,8 +241,27 @@ struct LinuxDerivationBuilder : virtual DerivationBuilderImpl + + void enterChroot() override + { ++ /* Set the NO_NEW_PRIVS before doing seccomp/landlock setup. ++ landlock_restrict_self requires either NO_NEW_PRIVS or CAP_SYS_ADMIN. ++ With user namespaces we do get CAP_SYS_ADMIN. */ ++ if (!settings.allowNewPrivileges) ++ if (::prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1) ++ throw SysError("failed to set PR_SET_NO_NEW_PRIVS"); ++ + setupSeccomp(); + ++# if DO_LANDLOCK ++ try { ++ setupLandlock(); ++ } catch (SysError & e) { ++ if (e.errNo != EPERM) ++ throw; ++ /* If allowNewPrivileges is true and we don't have CAP_SYS_ADMIN ++ this code path might be hit. */ ++ warn("setting up landlock: %s", e.message()); ++ } ++# endif ++ + linux::setPersonality(drv.platform); + } + }; +@@ -709,4 +810,6 @@ struct ChrootLinuxDerivationBuilder : ChrootDerivationBuilder, LinuxDerivationBu + + } // namespace nix + ++# undef DO_LANDLOCK ++ + #endif +diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix +index 902aacdc6..dc944290f 100644 +--- a/tests/nixos/ca-fd-leak/default.nix ++++ b/tests/nixos/ca-fd-leak/default.nix +@@ -78,7 +78,7 @@ in + + # Build the smuggled derivation. + # This will connect to the smuggler server and send it the file descriptor +- machine.succeed(r""" ++ sender_output = machine.succeed(r""" + nix-build -E ' + builtins.derivation { + name = "smuggled"; +@@ -89,9 +89,13 @@ in + outputHash = builtins.hashString "sha256" "hello, world\n"; + builder = "${pkgs.busybox-sandbox-shell}/bin/sh"; + args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ]; +- }' ++ }' 2>&1 + """.strip()) + ++ # Landlock's LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET prevents a sandboxed process ++ # from connecting to an abstract socket created in an unrelated landlock domain. ++ # There's no such flag for preventing inbound connections. ++ assert "connect: Operation not permitted" in sender_output + + # Tell the smuggler server that we're done + machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}") From 7ca89c4ab60606c7ecdb10c57ef91553f31c10a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 6 Apr 2026 16:49:41 +0200 Subject: [PATCH 089/112] nixComponents_2_34: add patches for GHSA-g3g9-5vj6-r3gj This addresses GHSA-g3g9-5vj6-r3gj, a vulnerability where std::filesystem::copy_file follows symlinks when copying FOD outputs, allowing a malicious builder to overwrite files outside the build sandbox. The patch puts FOD output copies in a temporary directory inside the store (instead of the chroot) and tightens permissions on the in-store temporary directory. The second patch partially fixes the issue with cooperating processes being able to communicate via abstract sockets. The fix is partial, because processes outside the landlock domain of the sandboxed process can still connect to a socket created by the FOD. There's no equivalent way of restricting inbound connections. This closes the gap when there's no cooperating process on the host (i.e. 2 separate FODs). The patch applies landlock LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on kernels >= 6.12 (default on NixOS 25.11+) to deny abstract socket connect from inside the build sandbox. --- pkgs/tools/package-management/nix/default.nix | 8 +- .../patches/ghsa-g3g9-5vj6-r3gj-2.34.patch | 126 ++++++++++ ...dlock-abstract-socket-hardening-2.34.patch | 234 ++++++++++++++++++ 3 files changed, 367 insertions(+), 1 deletion(-) create mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch create mode 100644 pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index a0e28a02f9f1..f8e997482863 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -228,7 +228,13 @@ lib.makeExtensible ( hash = "sha256-WPuGqMQGepXoRYjtRudMAMHEoLsIObw2x4sVfho5feA="; }; }).appendPatches - patches_common; + ( + patches_common + ++ [ + ./patches/ghsa-g3g9-5vj6-r3gj-2.34.patch + ./patches/landlock-abstract-socket-hardening-2.34.patch + ] + ); nix_2_34 = addTests "nix_2_34" self.nixComponents_2_34.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch new file mode 100644 index 000000000000..ea140e3fb149 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch @@ -0,0 +1,126 @@ +From dfda33d358f4522450737c40407ba8d8403a86a1 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= +Date: Mon, 6 Apr 2026 16:49:13 +0200 +Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Squashed commit of the following: + +commit d1f2de7d683bef1e2a164f23f33172c79c7725ea +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:31 2026 +0300 + + derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store + +commit 2f13ee6dc4ade1d919c14757891d5d8a1001eee8 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:21 2026 +0300 + + libstore: Make temporary in-store directory not world-readable + +Signed-off-by: Jörg Thalheim +--- + src/libstore/include/nix/store/local-store.hh | 2 ++ + src/libstore/local-store.cc | 5 +-- + src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- + 3 files changed, 33 insertions(+), 10 deletions(-) + +diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh +index 512c198b0..0b1e13b51 100644 +--- a/src/libstore/include/nix/store/local-store.hh ++++ b/src/libstore/include/nix/store/local-store.hh +@@ -505,6 +505,8 @@ private: + + friend struct PathSubstitutionGoal; + friend struct DerivationGoal; ++ /* Only used for createTempDirInStore. */ ++ friend class DerivationBuilderImpl; + }; + + } // namespace nix +diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc +index 649ad70dd..686e9988e 100644 +--- a/src/libstore/local-store.cc ++++ b/src/libstore/local-store.cc +@@ -1283,8 +1283,9 @@ std::pair LocalStore::createTempDirInStore() + do { + /* There is a slight possibility that `tmpDir' gets deleted by + the GC between createTempDir() and when we acquire a lock on it. +- We'll repeat until 'tmpDir' exists and we've locked it. */ +- tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp"); ++ We'll repeat until 'tmpDir' exists and we've locked it. ++ Make the directory accessible only to the current user. */ ++ tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp", /*mode=*/0700); + tmpDirFd = openDirectory(tmpDirFn); + if (!tmpDirFd) { + continue; +diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc +index da225dc0d..fc877dd56 100644 +--- a/src/libstore/unix/build/derivation-builder.cc ++++ b/src/libstore/unix/build/derivation-builder.cc +@@ -1595,6 +1595,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + assert(output && scratchPath); + auto actualPath = realPathInHost(store.printStorePath(*scratchPath)); + ++ /* An optional file descriptor of a directory used for intermediate ++ operations. */ ++ AutoCloseFD tempDirFd; ++ /* RAII cleanup of a temporary directory inside the store that is used ++ for intermediate operations. */ ++ AutoDelete delTempDir; ++ + auto finish = [&](StorePath finalStorePath) { + /* Store the final path */ + finalOutputs.insert_or_assign(outputName, finalStorePath); +@@ -1742,6 +1749,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + return newInfo0; + }; + ++ auto moveOutputToTempDir = [&]() -> void { ++ std::filesystem::path tempDir; ++ std::tie(tempDir, tempDirFd) = store.createTempDirInStore(); ++ delTempDir = AutoDelete(tempDir); ++ ++ auto tmpOutput = tempDir / "x"; ++ ++ /* Serialise and create a fresh copy of the output to break ++ any stale writable file descriptors. Copy through the ++ serialisation/deserialisation. TODO: Use copyRecursive here and ++ make use of reflinking. */ ++ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); ++ restorePath(tmpOutput, *source, store.config->getLocalSettings().fsyncStorePaths); ++ /* This makes it slightly harder to make sense of the control flow. The rule ++ of thumb is that actualPath points to the current location of the stuff ++ that we'll end up registering. */ ++ actualPath = std::move(tmpOutput); ++ }; ++ + ValidPathInfo newInfo = std::visit( + overloaded{ + +@@ -1769,14 +1795,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + + [&](const DerivationOutput::CAFixed & dof) { + auto & wanted = dof.ca.hash; +- +- // Replace the output by a fresh copy of itself to make sure +- // that there's no stale file descriptor pointing to it +- std::filesystem::path tmpOutput = actualPath.native() + ".tmp"; +- copyFile(actualPath, tmpOutput, true); +- +- std::filesystem::rename(tmpOutput, actualPath); +- ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = dof.ca.method, +@@ -1793,6 +1812,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + }, + + [&](const DerivationOutput::Impure & doi) { ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = doi.method, diff --git a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch new file mode 100644 index 000000000000..1ca40ee24b17 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch @@ -0,0 +1,234 @@ +From 23c7a6490a829a978af1acd56d76cc2dee7f4ad6 Mon Sep 17 00:00:00 2001 +From: Sergei Zimmerman +Date: Sun, 5 Apr 2026 16:39:58 +0300 +Subject: [PATCH] libstore: Use landlock with + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET for new enough kernels +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This partially fixes the issue with cooperating processes being able +to communicate via abstract sockets. The fix is partial, because processes +outside the landlock domain of the sandboxed process can still connect to +a socket created by the FOD. There's no equivalent way of restricting inbound +connections. This closes the gap when there's no cooperating process on the host +(i.e. 2 separate FODs). + +>= 6.12 kernel is widespread enough (NixOS 25.11 ships it by +default) that we have no reason not to apply this hardening, even though +it's incomplete. + +ca-fd-leak test exercises this exact code path and now the smuggling +process fails with (on new enough kernels that have landlock support enabled): + +vm-test-run-ca-fd-leak> machine # sandbox setup: applied landlock sandboxing +vm-test-run-ca-fd-leak> machine # building '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv'... +vm-test-run-ca-fd-leak> machine # building derivation '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv': woken up +vm-test-run-ca-fd-leak> machine # connect: Operation not permitted +vm-test-run-ca-fd-leak> machine # sendmsg: Socket not connected + +(cherry picked from commit 44017ca497c8b44d5dac179f5afc63e91fe45ed6) +Signed-off-by: Jörg Thalheim +--- + src/libstore/meson.build | 5 + + .../unix/build/linux-derivation-builder.cc | 103 ++++++++++++++++++ + tests/nixos/ca-fd-leak/default.nix | 8 +- + 3 files changed, 114 insertions(+), 2 deletions(-) + +diff --git a/src/libstore/meson.build b/src/libstore/meson.build +index 9e52517d4..edc476ae7 100644 +--- a/src/libstore/meson.build ++++ b/src/libstore/meson.build +@@ -79,6 +79,11 @@ foreach funcspec : check_funcs + configdata_priv.set(define_name, define_value) + endforeach + ++if host_machine.system() == 'linux' ++ has_landlock = cxx.has_header('linux/landlock.h') ++ configdata_priv.set('HAVE_LANDLOCK', has_landlock.to_int()) ++endif ++ + has_acl_support = cxx.has_header('sys/xattr.h') \ + and cxx.has_function('llistxattr') \ + and cxx.has_function('lremovexattr') +diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc +index 555a3b6da..476baabe2 100644 +--- a/src/libstore/unix/build/linux-derivation-builder.cc ++++ b/src/libstore/unix/build/linux-derivation-builder.cc +@@ -1,5 +1,7 @@ + #ifdef __linux__ + ++# include "store-config-private.hh" ++ + # include "nix/store/globals.hh" + # include "nix/store/personality.hh" + # include "nix/store/filetransfer.hh" +@@ -9,6 +11,10 @@ + # include "nix/util/serialise.hh" + # include "linux/fchmodat2-compat.hh" + ++# include ++# include ++# include ++ + # include + # include + # include +@@ -17,11 +23,16 @@ + # include + # include + # include ++# include + + # if HAVE_SECCOMP + # include + # endif + ++# if HAVE_LANDLOCK ++# include ++# endif ++ + # define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old)) + + namespace nix { +@@ -125,6 +136,77 @@ static void setupSeccomp(const LocalSettings & localSettings) + # endif + } + ++# if HAVE_LANDLOCK && defined(LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET) ++ ++# define DO_LANDLOCK 1 ++ ++/* We are using LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on best-effort basis. There are no glibc wrappers for now. */ ++ ++static int landlockCreateRuleset(const ::landlock_ruleset_attr * attr, std::size_t size, std::uint32_t flags) ++{ ++ return ::syscall(__NR_landlock_create_ruleset, attr, size, flags); ++} ++ ++static int landlockRestrictSelf(Descriptor rulesetFd, std::uint32_t flags) ++{ ++ return ::syscall(__NR_landlock_restrict_self, rulesetFd, flags); ++} ++ ++static int getLandlockAbiVersion() ++{ ++ int abiVersion = landlockCreateRuleset(nullptr, 0, LANDLOCK_CREATE_RULESET_VERSION); ++ return abiVersion; ++} ++ ++static void setupLandlock() ++{ ++ bool landlockSupportsScopeAbstractUnixSocket = []() { ++ int abiVersion = getLandlockAbiVersion(); ++ if (abiVersion >= 6) ++ /* All good, we can use LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET. See ++ https://docs.kernel.org/userspace-api/landlock.html#abstract-unix-socket-abi-6 */ ++ return true; ++ ++ if (abiVersion == -1) { ++ debug("landlock is not available"); ++ return false; ++ } ++ ++ debug("landlock version %d does not support LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET", abiVersion); ++ return false; ++ }(); ++ ++ /* Bail out early if landlock is not enabled or LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET wouldn't work. ++ TODO: Consider adding more landlock rules for filesystem access as defense-in-depth on top. */ ++ if (!landlockSupportsScopeAbstractUnixSocket) ++ return; ++ ++ ::landlock_ruleset_attr attr = { ++ /* This prevents multiple FODs from communicating with each other ++ via abstract sockets. Note that cooperating processes outside the ++ sandbox can still connect to an abstract socket created by the FOD. To ++ mitigate that issue entirely we'd still need network namespaces. */ ++ .scoped = LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, ++ }; ++ ++ /* This better not fail - if the kernel reports a new enough ABI version we ++ should treat any errors as fatal from now on. */ ++ AutoCloseFD rulesetFd = landlockCreateRuleset(&attr, sizeof(attr), 0); ++ if (!rulesetFd) ++ throw SysError("failed to create a landlock ruleset"); ++ ++ if (landlockRestrictSelf(rulesetFd.get(), 0) == -1) ++ throw SysError("failed to apply landlock"); ++ ++ debug("applied landlock sandboxing"); ++} ++ ++# else ++ ++# define DO_LANDLOCK 0 ++ ++# endif ++ + static void doBind(const std::filesystem::path & source, const std::filesystem::path & target, bool optional = false) + { + debug("bind mounting %1% to %2%", PathFmt(source), PathFmt(target)); +@@ -165,8 +247,27 @@ struct LinuxDerivationBuilder : virtual DerivationBuilderImpl + { + auto & localSettings = store.config->getLocalSettings(); + ++ /* Set the NO_NEW_PRIVS before doing seccomp/landlock setup. ++ landlock_restrict_self requires either NO_NEW_PRIVS or CAP_SYS_ADMIN. ++ With user namespaces we do get CAP_SYS_ADMIN. */ ++ if (!localSettings.allowNewPrivileges) ++ if (::prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1) ++ throw SysError("failed to set PR_SET_NO_NEW_PRIVS"); ++ + setupSeccomp(localSettings); + ++# if DO_LANDLOCK ++ try { ++ setupLandlock(); ++ } catch (SysError & e) { ++ if (e.errNo != EPERM) ++ throw; ++ /* If allowNewPrivileges is true and we don't have CAP_SYS_ADMIN ++ this code path might be hit. */ ++ warn("setting up landlock: %s", e.message()); ++ } ++# endif ++ + linux::setPersonality({ + .system = drv.platform, + .impersonateLinux26 = localSettings.impersonateLinux26, +@@ -760,4 +861,6 @@ struct ChrootLinuxDerivationBuilder : ChrootDerivationBuilder, LinuxDerivationBu + + } // namespace nix + ++# undef DO_LANDLOCK ++ + #endif +diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix +index 902aacdc6..dc944290f 100644 +--- a/tests/nixos/ca-fd-leak/default.nix ++++ b/tests/nixos/ca-fd-leak/default.nix +@@ -78,7 +78,7 @@ in + + # Build the smuggled derivation. + # This will connect to the smuggler server and send it the file descriptor +- machine.succeed(r""" ++ sender_output = machine.succeed(r""" + nix-build -E ' + builtins.derivation { + name = "smuggled"; +@@ -89,9 +89,13 @@ in + outputHash = builtins.hashString "sha256" "hello, world\n"; + builder = "${pkgs.busybox-sandbox-shell}/bin/sh"; + args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ]; +- }' ++ }' 2>&1 + """.strip()) + ++ # Landlock's LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET prevents a sandboxed process ++ # from connecting to an abstract socket created in an unrelated landlock domain. ++ # There's no such flag for preventing inbound connections. ++ assert "connect: Operation not permitted" in sender_output + + # Tell the smuggler server that we're done + machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}") From 50eec35e48a03435730b68b851bd27213ea1c802 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Mon, 6 Apr 2026 16:49:41 +0200 Subject: [PATCH 090/112] nixComponents_git: add patches for GHSA-g3g9-5vj6-r3gj This addresses GHSA-g3g9-5vj6-r3gj, a vulnerability where std::filesystem::copy_file follows symlinks when copying FOD outputs, allowing a malicious builder to overwrite files outside the build sandbox. The patch puts FOD output copies in a temporary directory inside the store (instead of the chroot) and tightens permissions on the in-store temporary directory. The second patch partially fixes the issue with cooperating processes being able to communicate via abstract sockets. The fix is partial, because processes outside the landlock domain of the sandboxed process can still connect to a socket created by the FOD. There's no equivalent way of restricting inbound connections. This closes the gap when there's no cooperating process on the host (i.e. 2 separate FODs). The patch applies landlock LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on kernels >= 6.12 (default on NixOS 25.11+) to deny abstract socket connect from inside the build sandbox. --- pkgs/tools/package-management/nix/default.nix | 8 +- .../nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch | 126 ++++++++++ ...ndlock-abstract-socket-hardening-git.patch | 231 ++++++++++++++++++ 3 files changed, 364 insertions(+), 1 deletion(-) create mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch create mode 100644 pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index f8e997482863..4460014ad689 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -250,7 +250,13 @@ lib.makeExtensible ( hash = "sha256-fybp46IQmRN7lEUTChc3MTqxmRutmDO4RNSPEQfJQsQ="; }; }).appendPatches - patches_common; + ( + patches_common + ++ [ + ./patches/ghsa-g3g9-5vj6-r3gj-git.patch + ./patches/landlock-abstract-socket-hardening-git.patch + ] + ); git = addTests "git" self.nixComponents_git.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch new file mode 100644 index 000000000000..05fb52902018 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch @@ -0,0 +1,126 @@ +From 0af4c1f88d0646bda0a90a37105360cab466a550 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= +Date: Mon, 6 Apr 2026 16:49:13 +0200 +Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Squashed commit of the following: + +commit a760af86b3a42aa5ac9d9002929107fe357bf128 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:31 2026 +0300 + + derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store + +commit 0e3412a93f43a017342c267000c152e5c45327e7 +Author: Sergei Zimmerman +Date: Fri Apr 3 00:21:21 2026 +0300 + + libstore: Make temporary in-store directory not world-readable + +Signed-off-by: Jörg Thalheim +--- + src/libstore/include/nix/store/local-store.hh | 2 ++ + src/libstore/local-store.cc | 5 +-- + src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- + 3 files changed, 33 insertions(+), 10 deletions(-) + +diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh +index 63a1da67d..bf3437e95 100644 +--- a/src/libstore/include/nix/store/local-store.hh ++++ b/src/libstore/include/nix/store/local-store.hh +@@ -512,6 +512,8 @@ private: + + friend struct PathSubstitutionGoal; + friend struct DerivationGoal; ++ /* Only used for createTempDirInStore. */ ++ friend class DerivationBuilderImpl; + }; + + } // namespace nix +diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc +index e9eb48bfe..d5e457731 100644 +--- a/src/libstore/local-store.cc ++++ b/src/libstore/local-store.cc +@@ -1304,8 +1304,9 @@ std::pair LocalStore::createTempDirInStore() + do { + /* There is a slight possibility that `tmpDir' gets deleted by + the GC between createTempDir() and when we acquire a lock on it. +- We'll repeat until 'tmpDir' exists and we've locked it. */ +- tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp"); ++ We'll repeat until 'tmpDir' exists and we've locked it. ++ Make the directory accessible only to the current user. */ ++ tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp", /*mode=*/0700); + tmpDirFd = openDirectory(tmpDirFn, FinalSymlink::DontFollow); + if (!tmpDirFd) { + continue; +diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc +index 8f6343e0f..8288a4a31 100644 +--- a/src/libstore/unix/build/derivation-builder.cc ++++ b/src/libstore/unix/build/derivation-builder.cc +@@ -1597,6 +1597,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + assert(output && scratchPath); + auto actualPath = realPathInHost(store.printStorePath(*scratchPath)); + ++ /* An optional file descriptor of a directory used for intermediate ++ operations. */ ++ AutoCloseFD tempDirFd; ++ /* RAII cleanup of a temporary directory inside the store that is used ++ for intermediate operations. */ ++ AutoDelete delTempDir; ++ + auto finish = [&](StorePath finalStorePath) { + /* Store the final path */ + finalOutputs.insert_or_assign(outputName, finalStorePath); +@@ -1744,6 +1751,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + return newInfo0; + }; + ++ auto moveOutputToTempDir = [&]() -> void { ++ std::filesystem::path tempDir; ++ std::tie(tempDir, tempDirFd) = store.createTempDirInStore(); ++ delTempDir = AutoDelete(tempDir); ++ ++ auto tmpOutput = tempDir / "x"; ++ ++ /* Serialise and create a fresh copy of the output to break ++ any stale writable file descriptors. Copy through the ++ serialisation/deserialisation. TODO: Use copyRecursive here and ++ make use of reflinking. */ ++ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); ++ restorePath(tmpOutput, *source, store.config->getLocalSettings().fsyncStorePaths); ++ /* This makes it slightly harder to make sense of the control flow. The rule ++ of thumb is that actualPath points to the current location of the stuff ++ that we'll end up registering. */ ++ actualPath = std::move(tmpOutput); ++ }; ++ + ValidPathInfo newInfo = std::visit( + overloaded{ + +@@ -1771,14 +1797,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + + [&](const DerivationOutput::CAFixed & dof) { + auto & wanted = dof.ca.hash; +- +- // Replace the output by a fresh copy of itself to make sure +- // that there's no stale file descriptor pointing to it +- std::filesystem::path tmpOutput = actualPath.native() + ".tmp"; +- copyFile(actualPath, tmpOutput, true); +- +- std::filesystem::rename(tmpOutput, actualPath); +- ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = dof.ca.method, +@@ -1795,6 +1814,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() + }, + + [&](const DerivationOutput::Impure & doi) { ++ moveOutputToTempDir(); + return newInfoFromCA( + DerivationOutput::CAFloating{ + .method = doi.method, diff --git a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch new file mode 100644 index 000000000000..5b0fbdb46536 --- /dev/null +++ b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch @@ -0,0 +1,231 @@ +From 44017ca497c8b44d5dac179f5afc63e91fe45ed6 Mon Sep 17 00:00:00 2001 +From: Sergei Zimmerman +Date: Sun, 5 Apr 2026 16:39:58 +0300 +Subject: [PATCH] libstore: Use landlock with + LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET for new enough kernels +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This partially fixes the issue with cooperating processes being able +to communicate via abstract sockets. The fix is partial, because processes +outside the landlock domain of the sandboxed process can still connect to +a socket created by the FOD. There's no equivalent way of restricting inbound +connections. This closes the gap when there's no cooperating process on the host +(i.e. 2 separate FODs). + +>= 6.12 kernel is widespread enough (NixOS 25.11 ships it by +default) that we have no reason not to apply this hardening, even though +it's incomplete. + +ca-fd-leak test exercises this exact code path and now the smuggling +process fails with (on new enough kernels that have landlock support enabled): + +vm-test-run-ca-fd-leak> machine # sandbox setup: applied landlock sandboxing +vm-test-run-ca-fd-leak> machine # building '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv'... +vm-test-run-ca-fd-leak> machine # building derivation '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv': woken up +vm-test-run-ca-fd-leak> machine # connect: Operation not permitted +vm-test-run-ca-fd-leak> machine # sendmsg: Socket not connected + +Signed-off-by: Jörg Thalheim +--- + src/libstore/meson.build | 5 + + .../unix/build/linux-derivation-builder.cc | 101 ++++++++++++++++++ + tests/nixos/ca-fd-leak/default.nix | 8 +- + 3 files changed, 112 insertions(+), 2 deletions(-) + +diff --git a/src/libstore/meson.build b/src/libstore/meson.build +index 445798544..753c78687 100644 +--- a/src/libstore/meson.build ++++ b/src/libstore/meson.build +@@ -79,6 +79,11 @@ foreach funcspec : check_funcs + configdata_priv.set(define_name, define_value) + endforeach + ++if host_machine.system() == 'linux' ++ has_landlock = cxx.has_header('linux/landlock.h') ++ configdata_priv.set('HAVE_LANDLOCK', has_landlock.to_int()) ++endif ++ + has_acl_support = cxx.has_header('sys/xattr.h') \ + and cxx.has_function('llistxattr') \ + and cxx.has_function('lremovexattr') +diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc +index 9cfd3cbcd..c71d23e15 100644 +--- a/src/libstore/unix/build/linux-derivation-builder.cc ++++ b/src/libstore/unix/build/linux-derivation-builder.cc +@@ -1,5 +1,7 @@ + #ifdef __linux__ + ++# include "store-config-private.hh" ++ + # include "nix/store/globals.hh" + # include "nix/store/personality.hh" + # include "nix/store/filetransfer.hh" +@@ -11,6 +13,8 @@ + + # include + # include ++# include ++ + # include + # include + # include +@@ -19,11 +23,16 @@ + # include + # include + # include ++# include + + # if HAVE_SECCOMP + # include + # endif + ++# if HAVE_LANDLOCK ++# include ++# endif ++ + # define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old)) + + namespace nix { +@@ -129,6 +138,77 @@ static void setupSeccomp(const LocalSettings & localSettings) + # endif + } + ++# if HAVE_LANDLOCK && defined(LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET) ++ ++# define DO_LANDLOCK 1 ++ ++/* We are using LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on best-effort basis. There are no glibc wrappers for now. */ ++ ++static int landlockCreateRuleset(const ::landlock_ruleset_attr * attr, std::size_t size, std::uint32_t flags) ++{ ++ return ::syscall(__NR_landlock_create_ruleset, attr, size, flags); ++} ++ ++static int landlockRestrictSelf(Descriptor rulesetFd, std::uint32_t flags) ++{ ++ return ::syscall(__NR_landlock_restrict_self, rulesetFd, flags); ++} ++ ++static int getLandlockAbiVersion() ++{ ++ int abiVersion = landlockCreateRuleset(nullptr, 0, LANDLOCK_CREATE_RULESET_VERSION); ++ return abiVersion; ++} ++ ++static void setupLandlock() ++{ ++ bool landlockSupportsScopeAbstractUnixSocket = []() { ++ int abiVersion = getLandlockAbiVersion(); ++ if (abiVersion >= 6) ++ /* All good, we can use LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET. See ++ https://docs.kernel.org/userspace-api/landlock.html#abstract-unix-socket-abi-6 */ ++ return true; ++ ++ if (abiVersion == -1) { ++ debug("landlock is not available"); ++ return false; ++ } ++ ++ debug("landlock version %d does not support LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET", abiVersion); ++ return false; ++ }(); ++ ++ /* Bail out early if landlock is not enabled or LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET wouldn't work. ++ TODO: Consider adding more landlock rules for filesystem access as defense-in-depth on top. */ ++ if (!landlockSupportsScopeAbstractUnixSocket) ++ return; ++ ++ ::landlock_ruleset_attr attr = { ++ /* This prevents multiple FODs from communicating with each other ++ via abstract sockets. Note that cooperating processes outside the ++ sandbox can still connect to an abstract socket created by the FOD. To ++ mitigate that issue entirely we'd still need network namespaces. */ ++ .scoped = LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, ++ }; ++ ++ /* This better not fail - if the kernel reports a new enough ABI version we ++ should treat any errors as fatal from now on. */ ++ AutoCloseFD rulesetFd = landlockCreateRuleset(&attr, sizeof(attr), 0); ++ if (!rulesetFd) ++ throw SysError("failed to create a landlock ruleset"); ++ ++ if (landlockRestrictSelf(rulesetFd.get(), 0) == -1) ++ throw SysError("failed to apply landlock"); ++ ++ debug("applied landlock sandboxing"); ++} ++ ++# else ++ ++# define DO_LANDLOCK 0 ++ ++# endif ++ + static void doBind(const std::filesystem::path & source, const std::filesystem::path & target, bool optional = false) + { + debug("bind mounting %1% to %2%", PathFmt(source), PathFmt(target)); +@@ -169,8 +249,27 @@ struct LinuxDerivationBuilder : virtual DerivationBuilderImpl + { + auto & localSettings = store.config->getLocalSettings(); + ++ /* Set the NO_NEW_PRIVS before doing seccomp/landlock setup. ++ landlock_restrict_self requires either NO_NEW_PRIVS or CAP_SYS_ADMIN. ++ With user namespaces we do get CAP_SYS_ADMIN. */ ++ if (!localSettings.allowNewPrivileges) ++ if (::prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1) ++ throw SysError("failed to set PR_SET_NO_NEW_PRIVS"); ++ + setupSeccomp(localSettings); + ++# if DO_LANDLOCK ++ try { ++ setupLandlock(); ++ } catch (SysError & e) { ++ if (e.errNo != EPERM) ++ throw; ++ /* If allowNewPrivileges is true and we don't have CAP_SYS_ADMIN ++ this code path might be hit. */ ++ warn("setting up landlock: %s", e.message()); ++ } ++# endif ++ + linux::setPersonality({ + .system = drv.platform, + .impersonateLinux26 = localSettings.impersonateLinux26, +@@ -765,4 +864,6 @@ struct ChrootLinuxDerivationBuilder : ChrootDerivationBuilder, LinuxDerivationBu + + } // namespace nix + ++# undef DO_LANDLOCK ++ + #endif +diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix +index 902aacdc6..dc944290f 100644 +--- a/tests/nixos/ca-fd-leak/default.nix ++++ b/tests/nixos/ca-fd-leak/default.nix +@@ -78,7 +78,7 @@ in + + # Build the smuggled derivation. + # This will connect to the smuggler server and send it the file descriptor +- machine.succeed(r""" ++ sender_output = machine.succeed(r""" + nix-build -E ' + builtins.derivation { + name = "smuggled"; +@@ -89,9 +89,13 @@ in + outputHash = builtins.hashString "sha256" "hello, world\n"; + builder = "${pkgs.busybox-sandbox-shell}/bin/sh"; + args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ]; +- }' ++ }' 2>&1 + """.strip()) + ++ # Landlock's LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET prevents a sandboxed process ++ # from connecting to an abstract socket created in an unrelated landlock domain. ++ # There's no such flag for preventing inbound connections. ++ assert "connect: Operation not permitted" in sender_output + + # Tell the smuggler server that we're done + machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}") From 14c100ffb498d7dfe082d4fd6bce7bc1e1e258cf Mon Sep 17 00:00:00 2001 From: Pratham Patel Date: Tue, 7 Apr 2026 23:36:16 +0530 Subject: [PATCH 091/112] nixosTests.armagetronad: use virtio-gpu for client VMs --- nixos/tests/armagetronad.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/nixos/tests/armagetronad.nix b/nixos/tests/armagetronad.nix index 4e7833b3520b..13d4c11511a1 100644 --- a/nixos/tests/armagetronad.nix +++ b/nixos/tests/armagetronad.nix @@ -16,6 +16,7 @@ let ]; hardware.graphics.enable = true; virtualisation.memorySize = 384; + virtualisation.qemu.options = [ "-vga none -device virtio-gpu-pci" ]; environment = { systemPackages = [ pkgs.armagetronad ]; variables.XAUTHORITY = "/home/${user}/.Xauthority"; From 545dd30e9facee2acbc4507795dab2ea5407ff47 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 18:23:42 +0000 Subject: [PATCH 092/112] libretro.bsnes: 0-unstable-2026-01-16 -> 0-unstable-2026-03-31 --- pkgs/applications/emulators/libretro/cores/bsnes.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/bsnes.nix b/pkgs/applications/emulators/libretro/cores/bsnes.nix index 9c4388db5c78..b00eb6528e8e 100644 --- a/pkgs/applications/emulators/libretro/cores/bsnes.nix +++ b/pkgs/applications/emulators/libretro/cores/bsnes.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "bsnes"; - version = "0-unstable-2026-01-16"; + version = "0-unstable-2026-03-31"; src = fetchFromGitHub { owner = "libretro"; repo = "bsnes-libretro"; - rev = "d0a61b2c679bc73286be5471b222b1f1ebfb67b9"; - hash = "sha256-1C+c0cQqFSRDGBhNr4s4xD/THbyDP/iVUJpAmHFQfiE="; + rev = "399bdedb20f6e847e75e8425ca240560ea0940a6"; + hash = "sha256-T3pmZ6WJOXyubiTzOIDipMdRDpB+RiNRnd76XbOIl84="; }; makefile = "Makefile"; From 2db45a5d93e12a4ec9a8cd8d75c3bd69275d90d3 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 18:29:22 +0000 Subject: [PATCH 093/112] python3Packages.textual: 8.2.1 -> 8.2.3 --- pkgs/development/python-modules/textual/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/textual/default.nix b/pkgs/development/python-modules/textual/default.nix index 29e44f719aaf..27eed625fc07 100644 --- a/pkgs/development/python-modules/textual/default.nix +++ b/pkgs/development/python-modules/textual/default.nix @@ -37,14 +37,14 @@ buildPythonPackage rec { pname = "textual"; - version = "8.2.1"; + version = "8.2.3"; pyproject = true; src = fetchFromGitHub { owner = "Textualize"; repo = "textual"; tag = "v${version}"; - hash = "sha256-GFn+DNpR10G/0qii6wKnh3InbIaDuvriJCCN9M9rsWg="; + hash = "sha256-9519UH723p9S9EO7RYJM4qM9e7TyMFDMkSVWqYt+RXg="; }; build-system = [ poetry-core ]; From 454ed60cf45d8190bf54ea6237d7987b72a10d9b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 18:45:33 +0000 Subject: [PATCH 094/112] vscode-extensions.ms-azuretools.vscode-bicep: 0.41.2 -> 0.42.1 --- .../vscode/extensions/ms-azuretools.vscode-bicep/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/vscode/extensions/ms-azuretools.vscode-bicep/default.nix b/pkgs/applications/editors/vscode/extensions/ms-azuretools.vscode-bicep/default.nix index 502e739daea1..2542e6c955c8 100644 --- a/pkgs/applications/editors/vscode/extensions/ms-azuretools.vscode-bicep/default.nix +++ b/pkgs/applications/editors/vscode/extensions/ms-azuretools.vscode-bicep/default.nix @@ -10,8 +10,8 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { publisher = "ms-azuretools"; name = "vscode-bicep"; - version = "0.41.2"; - hash = "sha256-8k2de208t/ZAVJzxkjd0qcqgVx523hEWWe5d1uvthFU="; + version = "0.42.1"; + hash = "sha256-rlLR/95DcxwkLxvyJgt3ptBvelL5VCIQvDl72eqk63s="; }; buildInputs = [ From b8866890e5b985a74a9471b317367dd79a897cb6 Mon Sep 17 00:00:00 2001 From: daschinmoy21 Date: Wed, 8 Apr 2026 00:45:36 +0530 Subject: [PATCH 095/112] retroshare: require CMake 3.10 in supportlibs Co-authored-by: Yohann Boniface --- pkgs/applications/networking/p2p/retroshare/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/p2p/retroshare/default.nix b/pkgs/applications/networking/p2p/retroshare/default.nix index 1fd659c48e69..4deaf0eca7c8 100644 --- a/pkgs/applications/networking/p2p/retroshare/default.nix +++ b/pkgs/applications/networking/p2p/retroshare/default.nix @@ -105,7 +105,7 @@ stdenv.mkDerivation rec { # Update cmake version for supportlibs to fix build with newer cmake substituteInPlace supportlibs/udp-discovery-cpp/CMakeLists.txt \ - --replace-fail "cmake_minimum_required(VERSION 2.8)" "cmake_minimum_required(VERSION 3.5)" + --replace-fail "cmake_minimum_required(VERSION 2.8)" "cmake_minimum_required(VERSION 3.10)" ''; postInstall = '' From 23117eed7884ebc2dee86742ce74eb59878710ea Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 7 Apr 2026 21:31:42 +0200 Subject: [PATCH 096/112] openvino: 2026.0.0 -> 2026.1.0 https://github.com/openvinotoolkit/openvino/releases/tag/2026.1.0 --- pkgs/by-name/op/openvino/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/op/openvino/package.nix b/pkgs/by-name/op/openvino/package.nix index 92e6639ecf6e..8c3c86e8ac37 100644 --- a/pkgs/by-name/op/openvino/package.nix +++ b/pkgs/by-name/op/openvino/package.nix @@ -55,14 +55,14 @@ in stdenv.mkDerivation (finalAttrs: { pname = "openvino"; - version = "2026.0.0"; + version = "2026.1.0"; src = fetchFromGitHub { owner = "openvinotoolkit"; repo = "openvino"; tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-CGlcFqv2KZKZD35BIOCRntDaDoT6Nv4VmPXE8mTeiDg="; + hash = "sha256-ss6U4D1QyJM9hbauRBgNIrU09k6xMX0SUeleOXIDU6U="; }; outputs = [ From 0531ad87aef5ca083d3617cb5aaf3894834d64a0 Mon Sep 17 00:00:00 2001 From: Brian McGee Date: Tue, 7 Apr 2026 18:24:37 +0100 Subject: [PATCH 097/112] treefmt: 2.4.1 -> 2.5.0 --- pkgs/by-name/tr/treefmt/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/tr/treefmt/package.nix b/pkgs/by-name/tr/treefmt/package.nix index a7d898037fb1..4f78a463fdd6 100644 --- a/pkgs/by-name/tr/treefmt/package.nix +++ b/pkgs/by-name/tr/treefmt/package.nix @@ -8,16 +8,16 @@ }: buildGoModule (finalAttrs: { pname = "treefmt"; - version = "2.4.1"; + version = "2.5.0"; src = fetchFromGitHub { owner = "numtide"; repo = "treefmt"; rev = "v${finalAttrs.version}"; - hash = "sha256-OhzmgeSTlbChglTAEk7lefVwH1zrfJTc9eroihpPveg="; + hash = "sha256-aZzbw5dQGLNqvfENNX6dtkxgjjMeL53l4mIeVpQpprA="; }; - vendorHash = "sha256-mpUFtc7LBRXevid9KzhCj9RxTUSeNO1XIPVWWvqPS9s="; + vendorHash = "sha256-FoXzUsioqTcdtNNKL9X9MhCXysH+bxabITqOUd+bmHE="; subPackages = [ "." ]; From 7e3dc26feb3e69499ecc23d4283d2ad863af4dae Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 20:08:42 +0000 Subject: [PATCH 098/112] python3Packages.llm-gemini: 0.29 -> 0.30 --- pkgs/development/python-modules/llm-gemini/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/llm-gemini/default.nix b/pkgs/development/python-modules/llm-gemini/default.nix index 087136ba0b7e..1945c204302a 100644 --- a/pkgs/development/python-modules/llm-gemini/default.nix +++ b/pkgs/development/python-modules/llm-gemini/default.nix @@ -15,14 +15,14 @@ }: buildPythonPackage rec { pname = "llm-gemini"; - version = "0.29"; + version = "0.30"; pyproject = true; src = fetchFromGitHub { owner = "simonw"; repo = "llm-gemini"; tag = version; - hash = "sha256-6UqQJDPJIprxpZCrPT/pGpghvCWQpseodrJfcKgRtaA="; + hash = "sha256-7WGcpDwxaBr0NkQRSz0pY2GcnNluC2gp6hpomHJ8SPs="; }; build-system = [ setuptools ]; From b368cceed7f6ff4aa8154507da051055e886132b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 7 Apr 2026 21:29:21 +0200 Subject: [PATCH 099/112] nixVersions.nix_2_30: 2.30.3 -> 2.30.4 The 2.30.4 tarball already contains the mdbook 0.5, lowdown 3.0 and GHSA-g3g9-5vj6-r3gj fixes that were previously backported downstream, so drop the now-redundant patches. --- pkgs/tools/package-management/nix/default.nix | 17 +-- .../patches/ghsa-g3g9-5vj6-r3gj-2.30.patch | 126 ------------------ 2 files changed, 3 insertions(+), 140 deletions(-) delete mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 4460014ad689..edadd2782e83 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -171,28 +171,17 @@ lib.makeExtensible ( nixComponents_2_30 = (nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.30.3"; + version = "2.30.4"; inherit teams; otherSplices = generateSplicesForNixComponents "nixComponents_2_30"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; tag = version; - hash = "sha256-kBuwzMgIE9Tmve0Rpp+q+YCsE2mw9d62M/950ViWeJ0="; + hash = "sha256-cJ96IBZCYoX0Tdlo5Q7qDSAKfL6QcUq/4Kr1UplH50E="; }; }).appendPatches - ( - patches_common - ++ [ - (fetchpatch2 { - name = "nix-2.30-14695-mdbook-0.5-support.patch"; - url = "https://github.com/NixOS/nix/commit/5cbd7856de0a9c13351f98e32a1e26d0854d87fd.patch?full_index=1"; - hash = "sha256-r2ZF1zBZDKMvyX6X4VsaTMrg0zdjn59Jf6Hqg56r29E="; - }) - lowdown30PatchOld - ./patches/ghsa-g3g9-5vj6-r3gj-2.30.patch - ] - ); + (patches_common ++ [ lowdown30PatchOld ]); nix_2_30 = addTests "nix_2_30" self.nixComponents_2_30.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch deleted file mode 100644 index d7514f864afa..000000000000 --- a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.30.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 4d0a078f1dae9a07d04e1a72e7e62fbf2ca249e0 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= -Date: Mon, 6 Apr 2026 16:49:13 +0200 -Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Squashed commit of the following: - -commit a8e5b27728e3b18e63c2503a83afd04031994623 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:31 2026 +0300 - - derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store - -commit 49ff4d6779ec20c5339b237dec9b240c3eabf535 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:21 2026 +0300 - - libstore: Make temporary in-store directory not world-readable - -Signed-off-by: Jörg Thalheim ---- - src/libstore/include/nix/store/local-store.hh | 2 ++ - src/libstore/local-store.cc | 5 +-- - src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- - 3 files changed, 33 insertions(+), 10 deletions(-) - -diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh -index 5f3a249f8..74fa1c2e8 100644 ---- a/src/libstore/include/nix/store/local-store.hh -+++ b/src/libstore/include/nix/store/local-store.hh -@@ -446,6 +446,8 @@ private: - friend struct PathSubstitutionGoal; - friend struct SubstitutionGoal; - friend struct DerivationGoal; -+ /* Only used for createTempDirInStore. */ -+ friend class DerivationBuilderImpl; - }; - - } // namespace nix -diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc -index 49c499e3f..5f897856f 100644 ---- a/src/libstore/local-store.cc -+++ b/src/libstore/local-store.cc -@@ -1316,8 +1316,9 @@ std::pair LocalStore::createTempDirInStore() - do { - /* There is a slight possibility that `tmpDir' gets deleted by - the GC between createTempDir() and when we acquire a lock on it. -- We'll repeat until 'tmpDir' exists and we've locked it. */ -- tmpDirFn = createTempDir(config->realStoreDir, "tmp"); -+ We'll repeat until 'tmpDir' exists and we've locked it. -+ Make the directory accessible only to the current user.*/ -+ tmpDirFn = createTempDir(config->realStoreDir, "tmp", /*mode=*/0700); - tmpDirFd = openDirectory(tmpDirFn); - if (!tmpDirFd) { - continue; -diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc -index 5f9dafb57..609d88a79 100644 ---- a/src/libstore/unix/build/derivation-builder.cc -+++ b/src/libstore/unix/build/derivation-builder.cc -@@ -1581,6 +1581,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - assert(output && scratchPath); - auto actualPath = realPathInSandbox(store.printStorePath(*scratchPath)); - -+ /* An optional file descriptor of a directory used for intermediate -+ operations. */ -+ AutoCloseFD tempDirFd; -+ /* RAII cleanup of a temporary directory inside the store that is used -+ for intermediate operations. */ -+ std::optional delTempDir; -+ - auto finish = [&](StorePath finalStorePath) { - /* Store the final path */ - finalOutputs.insert_or_assign(outputName, finalStorePath); -@@ -1715,6 +1722,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - return newInfo0; - }; - -+ auto moveOutputToTempDir = [&]() -> void { -+ std::filesystem::path tempDir; -+ std::tie(tempDir, tempDirFd) = getLocalStore(store).createTempDirInStore(); -+ delTempDir.emplace(tempDir); -+ -+ auto tmpOutput = tempDir / "x"; -+ -+ /* Serialise and create a fresh copy of the output to break -+ any stale writable file descriptors. Copy through the -+ serialisation/deserialisation. TODO: Use copyRecursive here and -+ make use of reflinking. */ -+ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); -+ restorePath(tmpOutput, *source, settings.fsyncStorePaths); -+ /* This makes it slightly harder to make sense of the control flow. The rule -+ of thumb is that actualPath points to the current location of the stuff -+ that we'll end up registering. */ -+ actualPath = std::move(tmpOutput); -+ }; -+ - ValidPathInfo newInfo = std::visit( - overloaded{ - -@@ -1742,14 +1768,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - - [&](const DerivationOutput::CAFixed & dof) { - auto & wanted = dof.ca.hash; -- -- // Replace the output by a fresh copy of itself to make sure -- // that there's no stale file descriptor pointing to it -- Path tmpOutput = actualPath + ".tmp"; -- copyFile(std::filesystem::path(actualPath), std::filesystem::path(tmpOutput), true); -- -- std::filesystem::rename(tmpOutput, actualPath); -- -+ moveOutputToTempDir(); - auto newInfo0 = newInfoFromCA( - DerivationOutput::CAFloating{ - .method = dof.ca.method, -@@ -1790,6 +1809,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - }, - - [&](const DerivationOutput::Impure & doi) { -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = doi.method, From 83250692a8ffc491590b6f490137d12db1c77853 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 7 Apr 2026 21:29:38 +0200 Subject: [PATCH 100/112] nixVersions.nix_2_31: 2.31.3 -> 2.31.4 The 2.31.4 tarball already contains the lowdown 3.0 compatibility fix, the GHSA-g3g9-5vj6-r3gj sandbox escape fix and the landlock abstract socket hardening, so drop the now-redundant downstream backports. --- pkgs/tools/package-management/nix/default.nix | 10 +- .../patches/ghsa-g3g9-5vj6-r3gj-2.31.patch | 126 ---------- ...dlock-abstract-socket-hardening-2.31.patch | 232 ------------------ 3 files changed, 3 insertions(+), 365 deletions(-) delete mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch delete mode 100644 pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index edadd2782e83..26e77581f121 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -187,21 +187,17 @@ lib.makeExtensible ( nixComponents_2_31 = (nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.31.3"; + version = "2.31.4"; inherit teams; otherSplices = generateSplicesForNixComponents "nixComponents_2_31"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; tag = version; - hash = "sha256-oe0YWe8f+pwQH4aYD2XXLW5iEHyXNUddurqJ5CUVCIk="; + hash = "sha256-f/haYfcI+9IiYVH+g6cjhF8cK7QWHAFfcPtF+57ujZ0="; }; }).appendPatches - [ - lowdown30Patch - ./patches/ghsa-g3g9-5vj6-r3gj-2.31.patch - ./patches/landlock-abstract-socket-hardening-2.31.patch - ]; + [ ]; nix_2_31 = addTests "nix_2_31" self.nixComponents_2_31.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch deleted file mode 100644 index 4d08316d67a7..000000000000 --- a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.31.patch +++ /dev/null @@ -1,126 +0,0 @@ -From df0153a9eca42c4ed5ac784657c8c5d0664c9e0e Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= -Date: Mon, 6 Apr 2026 16:49:13 +0200 -Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Squashed commit of the following: - -commit bf1d95ae399e47daeafa9e0dfac967f415c52447 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:31 2026 +0300 - - derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store - -commit ca5986fa353d402738acf961bcaa017c61019809 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:21 2026 +0300 - - libstore: Make temporary in-store directory not world-readable - -Signed-off-by: Jörg Thalheim ---- - src/libstore/include/nix/store/local-store.hh | 2 ++ - src/libstore/local-store.cc | 5 +-- - src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- - 3 files changed, 33 insertions(+), 10 deletions(-) - -diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh -index ec88ffb4f..91df9cd77 100644 ---- a/src/libstore/include/nix/store/local-store.hh -+++ b/src/libstore/include/nix/store/local-store.hh -@@ -455,6 +455,8 @@ private: - - friend struct PathSubstitutionGoal; - friend struct DerivationGoal; -+ /* Only used for createTempDirInStore. */ -+ friend class DerivationBuilderImpl; - }; - - } // namespace nix -diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc -index d24bc415c..524a9fdda 100644 ---- a/src/libstore/local-store.cc -+++ b/src/libstore/local-store.cc -@@ -1342,8 +1342,9 @@ std::pair LocalStore::createTempDirInStore() - do { - /* There is a slight possibility that `tmpDir' gets deleted by - the GC between createTempDir() and when we acquire a lock on it. -- We'll repeat until 'tmpDir' exists and we've locked it. */ -- tmpDirFn = createTempDir(config->realStoreDir, "tmp"); -+ We'll repeat until 'tmpDir' exists and we've locked it. -+ Make the directory accessible only to the current user.*/ -+ tmpDirFn = createTempDir(config->realStoreDir, "tmp", /*mode=*/0700); - tmpDirFd = openDirectory(tmpDirFn); - if (!tmpDirFd) { - continue; -diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc -index 73bb026a2..d11f80159 100644 ---- a/src/libstore/unix/build/derivation-builder.cc -+++ b/src/libstore/unix/build/derivation-builder.cc -@@ -1473,6 +1473,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - assert(output && scratchPath); - auto actualPath = realPathInSandbox(store.printStorePath(*scratchPath)); - -+ /* An optional file descriptor of a directory used for intermediate -+ operations. */ -+ AutoCloseFD tempDirFd; -+ /* RAII cleanup of a temporary directory inside the store that is used -+ for intermediate operations. */ -+ std::optional delTempDir; -+ - auto finish = [&](StorePath finalStorePath) { - /* Store the final path */ - finalOutputs.insert_or_assign(outputName, finalStorePath); -@@ -1607,6 +1614,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - return newInfo0; - }; - -+ auto moveOutputToTempDir = [&]() -> void { -+ std::filesystem::path tempDir; -+ std::tie(tempDir, tempDirFd) = store.createTempDirInStore(); -+ delTempDir.emplace(tempDir); -+ -+ auto tmpOutput = tempDir / "x"; -+ -+ /* Serialise and create a fresh copy of the output to break -+ any stale writable file descriptors. Copy through the -+ serialisation/deserialisation. TODO: Use copyRecursive here and -+ make use of reflinking. */ -+ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); -+ restorePath(tmpOutput, *source, settings.fsyncStorePaths); -+ /* This makes it slightly harder to make sense of the control flow. The rule -+ of thumb is that actualPath points to the current location of the stuff -+ that we'll end up registering. */ -+ actualPath = std::move(tmpOutput); -+ }; -+ - ValidPathInfo newInfo = std::visit( - overloaded{ - -@@ -1634,14 +1660,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - - [&](const DerivationOutput::CAFixed & dof) { - auto & wanted = dof.ca.hash; -- -- // Replace the output by a fresh copy of itself to make sure -- // that there's no stale file descriptor pointing to it -- Path tmpOutput = actualPath + ".tmp"; -- copyFile(std::filesystem::path(actualPath), std::filesystem::path(tmpOutput), true); -- -- std::filesystem::rename(tmpOutput, actualPath); -- -+ moveOutputToTempDir(); - auto newInfo0 = newInfoFromCA( - DerivationOutput::CAFloating{ - .method = dof.ca.method, -@@ -1682,6 +1701,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - }, - - [&](const DerivationOutput::Impure & doi) { -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = doi.method, diff --git a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch deleted file mode 100644 index 7584a608db7f..000000000000 --- a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.31.patch +++ /dev/null @@ -1,232 +0,0 @@ -From b743f908b10aa56b88fb490de8a0d893bd2d83d5 Mon Sep 17 00:00:00 2001 -From: Sergei Zimmerman -Date: Sun, 5 Apr 2026 16:39:58 +0300 -Subject: [PATCH] libstore: Use landlock with - LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET for new enough kernels -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This partially fixes the issue with cooperating processes being able -to communicate via abstract sockets. The fix is partial, because processes -outside the landlock domain of the sandboxed process can still connect to -a socket created by the FOD. There's no equivalent way of restricting inbound -connections. This closes the gap when there's no cooperating process on the host -(i.e. 2 separate FODs). - ->= 6.12 kernel is widespread enough (NixOS 25.11 ships it by -default) that we have no reason not to apply this hardening, even though -it's incomplete. - -ca-fd-leak test exercises this exact code path and now the smuggling -process fails with (on new enough kernels that have landlock support enabled): - -vm-test-run-ca-fd-leak> machine # sandbox setup: applied landlock sandboxing -vm-test-run-ca-fd-leak> machine # building '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv'... -vm-test-run-ca-fd-leak> machine # building derivation '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv': woken up -vm-test-run-ca-fd-leak> machine # connect: Operation not permitted -vm-test-run-ca-fd-leak> machine # sendmsg: Socket not connected - -(cherry picked from commit 44017ca497c8b44d5dac179f5afc63e91fe45ed6) -Signed-off-by: Jörg Thalheim ---- - src/libstore/meson.build | 5 + - .../unix/build/linux-derivation-builder.cc | 103 ++++++++++++++++++ - tests/nixos/ca-fd-leak/default.nix | 8 +- - 3 files changed, 114 insertions(+), 2 deletions(-) - -diff --git a/src/libstore/meson.build b/src/libstore/meson.build -index a275f4edc..dc8a7a940 100644 ---- a/src/libstore/meson.build -+++ b/src/libstore/meson.build -@@ -77,6 +77,11 @@ foreach funcspec : check_funcs - configdata_priv.set(define_name, define_value) - endforeach - -+if host_machine.system() == 'linux' -+ has_landlock = cxx.has_header('linux/landlock.h') -+ configdata_priv.set('HAVE_LANDLOCK', has_landlock.to_int()) -+endif -+ - has_acl_support = cxx.has_header('sys/xattr.h') \ - and cxx.has_function('llistxattr') \ - and cxx.has_function('lremovexattr') -diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc -index eaac2bc28..dc5abf808 100644 ---- a/src/libstore/unix/build/linux-derivation-builder.cc -+++ b/src/libstore/unix/build/linux-derivation-builder.cc -@@ -1,10 +1,16 @@ - #ifdef __linux__ - -+# include "store-config-private.hh" -+ - # include "nix/store/personality.hh" - # include "nix/util/cgroup.hh" - # include "nix/util/linux-namespaces.hh" - # include "linux/fchmodat2-compat.hh" - -+# include -+# include -+# include -+ - # include - # include - # include -@@ -13,11 +19,16 @@ - # include - # include - # include -+# include - - # if HAVE_SECCOMP - # include - # endif - -+# if HAVE_LANDLOCK -+# include -+# endif -+ - # define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old)) - - namespace nix { -@@ -121,6 +132,77 @@ static void setupSeccomp() - # endif - } - -+# if HAVE_LANDLOCK && defined(LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET) -+ -+# define DO_LANDLOCK 1 -+ -+/* We are using LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on best-effort basis. There are no glibc wrappers for now. */ -+ -+static int landlockCreateRuleset(const ::landlock_ruleset_attr * attr, std::size_t size, std::uint32_t flags) -+{ -+ return ::syscall(__NR_landlock_create_ruleset, attr, size, flags); -+} -+ -+static int landlockRestrictSelf(Descriptor rulesetFd, std::uint32_t flags) -+{ -+ return ::syscall(__NR_landlock_restrict_self, rulesetFd, flags); -+} -+ -+static int getLandlockAbiVersion() -+{ -+ int abiVersion = landlockCreateRuleset(nullptr, 0, LANDLOCK_CREATE_RULESET_VERSION); -+ return abiVersion; -+} -+ -+static void setupLandlock() -+{ -+ bool landlockSupportsScopeAbstractUnixSocket = []() { -+ int abiVersion = getLandlockAbiVersion(); -+ if (abiVersion >= 6) -+ /* All good, we can use LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET. See -+ https://docs.kernel.org/userspace-api/landlock.html#abstract-unix-socket-abi-6 */ -+ return true; -+ -+ if (abiVersion == -1) { -+ debug("landlock is not available"); -+ return false; -+ } -+ -+ debug("landlock version %d does not support LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET", abiVersion); -+ return false; -+ }(); -+ -+ /* Bail out early if landlock is not enabled or LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET wouldn't work. -+ TODO: Consider adding more landlock rules for filesystem access as defense-in-depth on top. */ -+ if (!landlockSupportsScopeAbstractUnixSocket) -+ return; -+ -+ ::landlock_ruleset_attr attr = { -+ /* This prevents multiple FODs from communicating with each other -+ via abstract sockets. Note that cooperating processes outside the -+ sandbox can still connect to an abstract socket created by the FOD. To -+ mitigate that issue entirely we'd still need network namespaces. */ -+ .scoped = LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, -+ }; -+ -+ /* This better not fail - if the kernel reports a new enough ABI version we -+ should treat any errors as fatal from now on. */ -+ AutoCloseFD rulesetFd = landlockCreateRuleset(&attr, sizeof(attr), 0); -+ if (!rulesetFd) -+ throw SysError("failed to create a landlock ruleset"); -+ -+ if (landlockRestrictSelf(rulesetFd.get(), 0) == -1) -+ throw SysError("failed to apply landlock"); -+ -+ debug("applied landlock sandboxing"); -+} -+ -+# else -+ -+# define DO_LANDLOCK 0 -+ -+# endif -+ - static void doBind(const Path & source, const Path & target, bool optional = false) - { - debug("bind mounting '%1%' to '%2%'", source, target); -@@ -159,8 +241,27 @@ struct LinuxDerivationBuilder : virtual DerivationBuilderImpl - - void enterChroot() override - { -+ /* Set the NO_NEW_PRIVS before doing seccomp/landlock setup. -+ landlock_restrict_self requires either NO_NEW_PRIVS or CAP_SYS_ADMIN. -+ With user namespaces we do get CAP_SYS_ADMIN. */ -+ if (!settings.allowNewPrivileges) -+ if (::prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1) -+ throw SysError("failed to set PR_SET_NO_NEW_PRIVS"); -+ - setupSeccomp(); - -+# if DO_LANDLOCK -+ try { -+ setupLandlock(); -+ } catch (SysError & e) { -+ if (e.errNo != EPERM) -+ throw; -+ /* If allowNewPrivileges is true and we don't have CAP_SYS_ADMIN -+ this code path might be hit. */ -+ warn("setting up landlock: %s", e.message()); -+ } -+# endif -+ - linux::setPersonality(drv.platform); - } - }; -@@ -709,4 +810,6 @@ struct ChrootLinuxDerivationBuilder : ChrootDerivationBuilder, LinuxDerivationBu - - } // namespace nix - -+# undef DO_LANDLOCK -+ - #endif -diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix -index 902aacdc6..dc944290f 100644 ---- a/tests/nixos/ca-fd-leak/default.nix -+++ b/tests/nixos/ca-fd-leak/default.nix -@@ -78,7 +78,7 @@ in - - # Build the smuggled derivation. - # This will connect to the smuggler server and send it the file descriptor -- machine.succeed(r""" -+ sender_output = machine.succeed(r""" - nix-build -E ' - builtins.derivation { - name = "smuggled"; -@@ -89,9 +89,13 @@ in - outputHash = builtins.hashString "sha256" "hello, world\n"; - builder = "${pkgs.busybox-sandbox-shell}/bin/sh"; - args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ]; -- }' -+ }' 2>&1 - """.strip()) - -+ # Landlock's LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET prevents a sandboxed process -+ # from connecting to an abstract socket created in an unrelated landlock domain. -+ # There's no such flag for preventing inbound connections. -+ assert "connect: Operation not permitted" in sender_output - - # Tell the smuggler server that we're done - machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}") From 123da37985273eed01b34db436538c45e05c5cbd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 7 Apr 2026 21:29:50 +0200 Subject: [PATCH 101/112] nixVersions.nix_2_34: 2.34.4 -> 2.34.5 The 2.34.5 tarball already contains the GHSA-g3g9-5vj6-r3gj sandbox escape fix and the landlock abstract socket hardening, so drop the now-redundant downstream backports. --- pkgs/tools/package-management/nix/default.nix | 12 +- .../patches/ghsa-g3g9-5vj6-r3gj-2.34.patch | 126 ---------- ...dlock-abstract-socket-hardening-2.34.patch | 234 ------------------ 3 files changed, 3 insertions(+), 369 deletions(-) delete mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch delete mode 100644 pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 26e77581f121..13a8a74e7a41 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -203,23 +203,17 @@ lib.makeExtensible ( nixComponents_2_34 = (nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.34.4"; + version = "2.34.5"; inherit teams; otherSplices = generateSplicesForNixComponents "nixComponents_2_34"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; tag = version; - hash = "sha256-WPuGqMQGepXoRYjtRudMAMHEoLsIObw2x4sVfho5feA="; + hash = "sha256-/S2bnz+TbRFGmNyR31Hfa70uFvJoMM9wYDjpyEw8I+U="; }; }).appendPatches - ( - patches_common - ++ [ - ./patches/ghsa-g3g9-5vj6-r3gj-2.34.patch - ./patches/landlock-abstract-socket-hardening-2.34.patch - ] - ); + patches_common; nix_2_34 = addTests "nix_2_34" self.nixComponents_2_34.nix-everything; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch deleted file mode 100644 index ea140e3fb149..000000000000 --- a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.34.patch +++ /dev/null @@ -1,126 +0,0 @@ -From dfda33d358f4522450737c40407ba8d8403a86a1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= -Date: Mon, 6 Apr 2026 16:49:13 +0200 -Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Squashed commit of the following: - -commit d1f2de7d683bef1e2a164f23f33172c79c7725ea -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:31 2026 +0300 - - derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store - -commit 2f13ee6dc4ade1d919c14757891d5d8a1001eee8 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:21 2026 +0300 - - libstore: Make temporary in-store directory not world-readable - -Signed-off-by: Jörg Thalheim ---- - src/libstore/include/nix/store/local-store.hh | 2 ++ - src/libstore/local-store.cc | 5 +-- - src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- - 3 files changed, 33 insertions(+), 10 deletions(-) - -diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh -index 512c198b0..0b1e13b51 100644 ---- a/src/libstore/include/nix/store/local-store.hh -+++ b/src/libstore/include/nix/store/local-store.hh -@@ -505,6 +505,8 @@ private: - - friend struct PathSubstitutionGoal; - friend struct DerivationGoal; -+ /* Only used for createTempDirInStore. */ -+ friend class DerivationBuilderImpl; - }; - - } // namespace nix -diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc -index 649ad70dd..686e9988e 100644 ---- a/src/libstore/local-store.cc -+++ b/src/libstore/local-store.cc -@@ -1283,8 +1283,9 @@ std::pair LocalStore::createTempDirInStore() - do { - /* There is a slight possibility that `tmpDir' gets deleted by - the GC between createTempDir() and when we acquire a lock on it. -- We'll repeat until 'tmpDir' exists and we've locked it. */ -- tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp"); -+ We'll repeat until 'tmpDir' exists and we've locked it. -+ Make the directory accessible only to the current user. */ -+ tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp", /*mode=*/0700); - tmpDirFd = openDirectory(tmpDirFn); - if (!tmpDirFd) { - continue; -diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc -index da225dc0d..fc877dd56 100644 ---- a/src/libstore/unix/build/derivation-builder.cc -+++ b/src/libstore/unix/build/derivation-builder.cc -@@ -1595,6 +1595,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - assert(output && scratchPath); - auto actualPath = realPathInHost(store.printStorePath(*scratchPath)); - -+ /* An optional file descriptor of a directory used for intermediate -+ operations. */ -+ AutoCloseFD tempDirFd; -+ /* RAII cleanup of a temporary directory inside the store that is used -+ for intermediate operations. */ -+ AutoDelete delTempDir; -+ - auto finish = [&](StorePath finalStorePath) { - /* Store the final path */ - finalOutputs.insert_or_assign(outputName, finalStorePath); -@@ -1742,6 +1749,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - return newInfo0; - }; - -+ auto moveOutputToTempDir = [&]() -> void { -+ std::filesystem::path tempDir; -+ std::tie(tempDir, tempDirFd) = store.createTempDirInStore(); -+ delTempDir = AutoDelete(tempDir); -+ -+ auto tmpOutput = tempDir / "x"; -+ -+ /* Serialise and create a fresh copy of the output to break -+ any stale writable file descriptors. Copy through the -+ serialisation/deserialisation. TODO: Use copyRecursive here and -+ make use of reflinking. */ -+ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); -+ restorePath(tmpOutput, *source, store.config->getLocalSettings().fsyncStorePaths); -+ /* This makes it slightly harder to make sense of the control flow. The rule -+ of thumb is that actualPath points to the current location of the stuff -+ that we'll end up registering. */ -+ actualPath = std::move(tmpOutput); -+ }; -+ - ValidPathInfo newInfo = std::visit( - overloaded{ - -@@ -1769,14 +1795,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - - [&](const DerivationOutput::CAFixed & dof) { - auto & wanted = dof.ca.hash; -- -- // Replace the output by a fresh copy of itself to make sure -- // that there's no stale file descriptor pointing to it -- std::filesystem::path tmpOutput = actualPath.native() + ".tmp"; -- copyFile(actualPath, tmpOutput, true); -- -- std::filesystem::rename(tmpOutput, actualPath); -- -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = dof.ca.method, -@@ -1793,6 +1812,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - }, - - [&](const DerivationOutput::Impure & doi) { -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = doi.method, diff --git a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch deleted file mode 100644 index 1ca40ee24b17..000000000000 --- a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-2.34.patch +++ /dev/null @@ -1,234 +0,0 @@ -From 23c7a6490a829a978af1acd56d76cc2dee7f4ad6 Mon Sep 17 00:00:00 2001 -From: Sergei Zimmerman -Date: Sun, 5 Apr 2026 16:39:58 +0300 -Subject: [PATCH] libstore: Use landlock with - LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET for new enough kernels -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This partially fixes the issue with cooperating processes being able -to communicate via abstract sockets. The fix is partial, because processes -outside the landlock domain of the sandboxed process can still connect to -a socket created by the FOD. There's no equivalent way of restricting inbound -connections. This closes the gap when there's no cooperating process on the host -(i.e. 2 separate FODs). - ->= 6.12 kernel is widespread enough (NixOS 25.11 ships it by -default) that we have no reason not to apply this hardening, even though -it's incomplete. - -ca-fd-leak test exercises this exact code path and now the smuggling -process fails with (on new enough kernels that have landlock support enabled): - -vm-test-run-ca-fd-leak> machine # sandbox setup: applied landlock sandboxing -vm-test-run-ca-fd-leak> machine # building '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv'... -vm-test-run-ca-fd-leak> machine # building derivation '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv': woken up -vm-test-run-ca-fd-leak> machine # connect: Operation not permitted -vm-test-run-ca-fd-leak> machine # sendmsg: Socket not connected - -(cherry picked from commit 44017ca497c8b44d5dac179f5afc63e91fe45ed6) -Signed-off-by: Jörg Thalheim ---- - src/libstore/meson.build | 5 + - .../unix/build/linux-derivation-builder.cc | 103 ++++++++++++++++++ - tests/nixos/ca-fd-leak/default.nix | 8 +- - 3 files changed, 114 insertions(+), 2 deletions(-) - -diff --git a/src/libstore/meson.build b/src/libstore/meson.build -index 9e52517d4..edc476ae7 100644 ---- a/src/libstore/meson.build -+++ b/src/libstore/meson.build -@@ -79,6 +79,11 @@ foreach funcspec : check_funcs - configdata_priv.set(define_name, define_value) - endforeach - -+if host_machine.system() == 'linux' -+ has_landlock = cxx.has_header('linux/landlock.h') -+ configdata_priv.set('HAVE_LANDLOCK', has_landlock.to_int()) -+endif -+ - has_acl_support = cxx.has_header('sys/xattr.h') \ - and cxx.has_function('llistxattr') \ - and cxx.has_function('lremovexattr') -diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc -index 555a3b6da..476baabe2 100644 ---- a/src/libstore/unix/build/linux-derivation-builder.cc -+++ b/src/libstore/unix/build/linux-derivation-builder.cc -@@ -1,5 +1,7 @@ - #ifdef __linux__ - -+# include "store-config-private.hh" -+ - # include "nix/store/globals.hh" - # include "nix/store/personality.hh" - # include "nix/store/filetransfer.hh" -@@ -9,6 +11,10 @@ - # include "nix/util/serialise.hh" - # include "linux/fchmodat2-compat.hh" - -+# include -+# include -+# include -+ - # include - # include - # include -@@ -17,11 +23,16 @@ - # include - # include - # include -+# include - - # if HAVE_SECCOMP - # include - # endif - -+# if HAVE_LANDLOCK -+# include -+# endif -+ - # define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old)) - - namespace nix { -@@ -125,6 +136,77 @@ static void setupSeccomp(const LocalSettings & localSettings) - # endif - } - -+# if HAVE_LANDLOCK && defined(LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET) -+ -+# define DO_LANDLOCK 1 -+ -+/* We are using LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on best-effort basis. There are no glibc wrappers for now. */ -+ -+static int landlockCreateRuleset(const ::landlock_ruleset_attr * attr, std::size_t size, std::uint32_t flags) -+{ -+ return ::syscall(__NR_landlock_create_ruleset, attr, size, flags); -+} -+ -+static int landlockRestrictSelf(Descriptor rulesetFd, std::uint32_t flags) -+{ -+ return ::syscall(__NR_landlock_restrict_self, rulesetFd, flags); -+} -+ -+static int getLandlockAbiVersion() -+{ -+ int abiVersion = landlockCreateRuleset(nullptr, 0, LANDLOCK_CREATE_RULESET_VERSION); -+ return abiVersion; -+} -+ -+static void setupLandlock() -+{ -+ bool landlockSupportsScopeAbstractUnixSocket = []() { -+ int abiVersion = getLandlockAbiVersion(); -+ if (abiVersion >= 6) -+ /* All good, we can use LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET. See -+ https://docs.kernel.org/userspace-api/landlock.html#abstract-unix-socket-abi-6 */ -+ return true; -+ -+ if (abiVersion == -1) { -+ debug("landlock is not available"); -+ return false; -+ } -+ -+ debug("landlock version %d does not support LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET", abiVersion); -+ return false; -+ }(); -+ -+ /* Bail out early if landlock is not enabled or LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET wouldn't work. -+ TODO: Consider adding more landlock rules for filesystem access as defense-in-depth on top. */ -+ if (!landlockSupportsScopeAbstractUnixSocket) -+ return; -+ -+ ::landlock_ruleset_attr attr = { -+ /* This prevents multiple FODs from communicating with each other -+ via abstract sockets. Note that cooperating processes outside the -+ sandbox can still connect to an abstract socket created by the FOD. To -+ mitigate that issue entirely we'd still need network namespaces. */ -+ .scoped = LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, -+ }; -+ -+ /* This better not fail - if the kernel reports a new enough ABI version we -+ should treat any errors as fatal from now on. */ -+ AutoCloseFD rulesetFd = landlockCreateRuleset(&attr, sizeof(attr), 0); -+ if (!rulesetFd) -+ throw SysError("failed to create a landlock ruleset"); -+ -+ if (landlockRestrictSelf(rulesetFd.get(), 0) == -1) -+ throw SysError("failed to apply landlock"); -+ -+ debug("applied landlock sandboxing"); -+} -+ -+# else -+ -+# define DO_LANDLOCK 0 -+ -+# endif -+ - static void doBind(const std::filesystem::path & source, const std::filesystem::path & target, bool optional = false) - { - debug("bind mounting %1% to %2%", PathFmt(source), PathFmt(target)); -@@ -165,8 +247,27 @@ struct LinuxDerivationBuilder : virtual DerivationBuilderImpl - { - auto & localSettings = store.config->getLocalSettings(); - -+ /* Set the NO_NEW_PRIVS before doing seccomp/landlock setup. -+ landlock_restrict_self requires either NO_NEW_PRIVS or CAP_SYS_ADMIN. -+ With user namespaces we do get CAP_SYS_ADMIN. */ -+ if (!localSettings.allowNewPrivileges) -+ if (::prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1) -+ throw SysError("failed to set PR_SET_NO_NEW_PRIVS"); -+ - setupSeccomp(localSettings); - -+# if DO_LANDLOCK -+ try { -+ setupLandlock(); -+ } catch (SysError & e) { -+ if (e.errNo != EPERM) -+ throw; -+ /* If allowNewPrivileges is true and we don't have CAP_SYS_ADMIN -+ this code path might be hit. */ -+ warn("setting up landlock: %s", e.message()); -+ } -+# endif -+ - linux::setPersonality({ - .system = drv.platform, - .impersonateLinux26 = localSettings.impersonateLinux26, -@@ -760,4 +861,6 @@ struct ChrootLinuxDerivationBuilder : ChrootDerivationBuilder, LinuxDerivationBu - - } // namespace nix - -+# undef DO_LANDLOCK -+ - #endif -diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix -index 902aacdc6..dc944290f 100644 ---- a/tests/nixos/ca-fd-leak/default.nix -+++ b/tests/nixos/ca-fd-leak/default.nix -@@ -78,7 +78,7 @@ in - - # Build the smuggled derivation. - # This will connect to the smuggler server and send it the file descriptor -- machine.succeed(r""" -+ sender_output = machine.succeed(r""" - nix-build -E ' - builtins.derivation { - name = "smuggled"; -@@ -89,9 +89,13 @@ in - outputHash = builtins.hashString "sha256" "hello, world\n"; - builder = "${pkgs.busybox-sandbox-shell}/bin/sh"; - args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ]; -- }' -+ }' 2>&1 - """.strip()) - -+ # Landlock's LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET prevents a sandboxed process -+ # from connecting to an abstract socket created in an unrelated landlock domain. -+ # There's no such flag for preventing inbound connections. -+ assert "connect: Operation not permitted" in sender_output - - # Tell the smuggler server that we're done - machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}") From cc8d42cd8132b12a6484f5add58471480e59d3d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 7 Apr 2026 21:33:41 +0200 Subject: [PATCH 102/112] nix: update nix-fallback-paths to 2.31.4 --- nixos/modules/installer/tools/nix-fallback-paths.nix | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/nixos/modules/installer/tools/nix-fallback-paths.nix b/nixos/modules/installer/tools/nix-fallback-paths.nix index 68f6494510cb..98bd3cec0de2 100644 --- a/nixos/modules/installer/tools/nix-fallback-paths.nix +++ b/nixos/modules/installer/tools/nix-fallback-paths.nix @@ -1,8 +1,8 @@ { - x86_64-linux = "/nix/store/mxn3vxpvk2b42kgd08aw4bn27qhf434w-nix-2.31.3"; - i686-linux = "/nix/store/b7d35ifww9683l74ydkb0qhrq6lqcisi-nix-2.31.3"; - aarch64-linux = "/nix/store/ysz7dwmy4zd1zm3wzx5dh9g999xv7pbm-nix-2.31.3"; - riscv64-linux = "/nix/store/avfv2lqbnphj2ap8y5ihg1l0sqhpjll7-nix-riscv64-unknown-linux-gnu-2.31.3"; - x86_64-darwin = "/nix/store/s8lcl6nrd5ia7nr4zx9mg720i9f8qm37-nix-2.31.3"; - aarch64-darwin = "/nix/store/vfjzbcl3kf9jjwh0g2x03cvz2x5hg8py-nix-2.31.3"; + x86_64-linux = "/nix/store/vals1fs2rl6yn5f8gbqj9mvly4r27shs-nix-2.31.4"; + i686-linux = "/nix/store/fyrlz8cdzvf5csdh5885wifpxc8ywdii-nix-2.31.4"; + aarch64-linux = "/nix/store/19p3nc892m7idfg2ngd1614660xqbhnm-nix-2.31.4"; + riscv64-linux = "/nix/store/x1isvq0xnyrg0l29qk2xlp929cgjsmqy-nix-riscv64-unknown-linux-gnu-2.31.4"; + x86_64-darwin = "/nix/store/4gqxzd5zkxcq271wi5saml4zd92rdkws-nix-2.31.4"; + aarch64-darwin = "/nix/store/r3gz609kdqchxcmil7dhbravbq8kwm93-nix-2.31.4"; } From 36341693fab5ac961292c88cc4d8a03166ccc19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 7 Apr 2026 21:56:16 +0200 Subject: [PATCH 103/112] nixVersions.nix_2_28: 2.28.5 -> 2.28.6 The 2.28.6 tarball already contains the mdbook 0.5 compatibility fix and the GHSA-g3g9-5vj6-r3gj sandbox escape fix, so drop the now-redundant downstream backports. --- pkgs/tools/package-management/nix/default.nix | 10 +- .../patches/ghsa-g3g9-5vj6-r3gj-2.28.patch | 126 ------------------ 2 files changed, 2 insertions(+), 134 deletions(-) delete mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 13a8a74e7a41..8da4c6b494fb 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -155,17 +155,11 @@ lib.makeExtensible ( ( { nix_2_28 = commonMeson { - version = "2.28.5"; - hash = "sha256-oIfAHxO+BCtHXJXLHBnsKkGl1Pw+Uuq1PwNxl+lZ+Oc="; + version = "2.28.6"; + hash = "sha256-jg2YDTFt8CY4kMg4ha3UK5C+mQY+Zg67nwNy+CmTk5w="; self_attribute_name = "nix_2_28"; patches = patches_common ++ [ - (fetchpatch2 { - name = "nix-2.28-14764-mdbook-0.5-support.patch"; - url = "https://github.com/NixOS/nix/commit/5a64138e862fe364e751c5c286e8db8c466aaee7.patch?full_index=1"; - hash = "sha256-vFv/D08x9urtoIE9wiC7Lln4Eq3sgNBwU7TBE1iyrfI="; - }) lowdown30PatchOld - ./patches/ghsa-g3g9-5vj6-r3gj-2.28.patch ]; }; diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch deleted file mode 100644 index ae50b007a30b..000000000000 --- a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-2.28.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 32b09e0bfeb33434866610994d89f48da8a2bf41 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= -Date: Mon, 6 Apr 2026 16:49:13 +0200 -Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Squashed commit of the following: - -commit 716dba6692c42e301a1e769e5eac02a4d6e63150 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:31 2026 +0300 - - derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store - -commit a3215e7c5c260fab5f2cb034c4df01dfa3b284e5 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:21 2026 +0300 - - libstore: Make temporary in-store directory not world-readable - -Signed-off-by: Jörg Thalheim ---- - src/libstore/include/nix/store/local-store.hh | 2 ++ - src/libstore/local-store.cc | 5 +-- - .../unix/build/local-derivation-goal.cc | 36 ++++++++++++++----- - 3 files changed, 33 insertions(+), 10 deletions(-) - -diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh -index 5893b7d8b..c9266f6b4 100644 ---- a/src/libstore/include/nix/store/local-store.hh -+++ b/src/libstore/include/nix/store/local-store.hh -@@ -408,6 +408,8 @@ private: - friend struct PathSubstitutionGoal; - friend struct SubstitutionGoal; - friend struct DerivationGoal; -+ /* Only used for createTempDirInStore. */ -+ friend class DerivationBuilderImpl; - }; - - } // namespace nix -diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc -index 63108fab4..ab3a0d034 100644 ---- a/src/libstore/local-store.cc -+++ b/src/libstore/local-store.cc -@@ -1311,8 +1311,9 @@ std::pair LocalStore::createTempDirInStore() - do { - /* There is a slight possibility that `tmpDir' gets deleted by - the GC between createTempDir() and when we acquire a lock on it. -- We'll repeat until 'tmpDir' exists and we've locked it. */ -- tmpDirFn = createTempDir(realStoreDir, "tmp"); -+ We'll repeat until 'tmpDir' exists and we've locked it. -+ Make the directory accessible only to the current user.*/ -+ tmpDirFn = createTempDir(realStoreDir, "tmp", /*mode=*/0700); - tmpDirFd = openDirectory(tmpDirFn); - if (!tmpDirFd) { - continue; -diff --git a/src/libstore/unix/build/local-derivation-goal.cc b/src/libstore/unix/build/local-derivation-goal.cc -index 88c82e063..3e4c3017d 100644 ---- a/src/libstore/unix/build/local-derivation-goal.cc -+++ b/src/libstore/unix/build/local-derivation-goal.cc -@@ -2547,6 +2547,13 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() - assert(output && scratchPath); - auto actualPath = toRealPathChroot(worker.store.printStorePath(*scratchPath)); - -+ /* An optional file descriptor of a directory used for intermediate -+ operations. */ -+ AutoCloseFD tempDirFd; -+ /* RAII cleanup of a temporary directory inside the store that is used -+ for intermediate operations. */ -+ std::optional delTempDir; -+ - auto finish = [&](StorePath finalStorePath) { - /* Store the final path */ - finalOutputs.insert_or_assign(outputName, finalStorePath); -@@ -2681,6 +2688,25 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() - return newInfo0; - }; - -+ auto moveOutputToTempDir = [&]() -> void { -+ std::filesystem::path tempDir; -+ std::tie(tempDir, tempDirFd) = getLocalStore().createTempDirInStore(); -+ delTempDir.emplace(tempDir); -+ -+ auto tmpOutput = tempDir / "x"; -+ -+ /* Serialise and create a fresh copy of the output to break -+ any stale writable file descriptors. Copy through the -+ serialisation/deserialisation. TODO: Use copyRecursive here and -+ make use of reflinking. */ -+ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); -+ restorePath(tmpOutput, *source, settings.fsyncStorePaths); -+ /* This makes it slightly harder to make sense of the control flow. The rule -+ of thumb is that actualPath points to the current location of the stuff -+ that we'll end up registering. */ -+ actualPath = std::move(tmpOutput); -+ }; -+ - ValidPathInfo newInfo = std::visit( - overloaded{ - -@@ -2708,14 +2734,7 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() - - [&](const DerivationOutput::CAFixed & dof) { - auto & wanted = dof.ca.hash; -- -- // Replace the output by a fresh copy of itself to make sure -- // that there's no stale file descriptor pointing to it -- Path tmpOutput = actualPath + ".tmp"; -- copyFile(std::filesystem::path(actualPath), std::filesystem::path(tmpOutput), true); -- -- std::filesystem::rename(tmpOutput, actualPath); -- -+ moveOutputToTempDir(); - auto newInfo0 = newInfoFromCA( - DerivationOutput::CAFloating{ - .method = dof.ca.method, -@@ -2756,6 +2775,7 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs() - }, - - [&](const DerivationOutput::Impure & doi) { -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = doi.method, From d22a182395ccfc06d84b1b13a6ea660b0aeddb47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Tue, 7 Apr 2026 21:30:07 +0200 Subject: [PATCH 104/112] nixVersions.git: 2026-03-28 -> 2026-04-07 Master already contains the GHSA-g3g9-5vj6-r3gj sandbox escape fix and the landlock abstract socket hardening, so drop the now-redundant downstream backports. --- pkgs/tools/package-management/nix/default.nix | 14 +- .../nix/modular/src/nix/package.nix | 3 + .../nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch | 126 ---------- ...ndlock-abstract-socket-hardening-git.patch | 231 ------------------ 4 files changed, 7 insertions(+), 367 deletions(-) delete mode 100644 pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch delete mode 100644 pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 8da4c6b494fb..0be4bdb9205a 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -213,23 +213,17 @@ lib.makeExtensible ( nixComponents_git = (nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.35pre20260328_${lib.substring 0 8 src.rev}"; + version = "2.35pre20260407_${lib.substring 0 8 src.rev}"; inherit teams; otherSplices = generateSplicesForNixComponents "nixComponents_git"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; - rev = "7edcd0a24dc71abb7caa600527833ef540c1bc86"; - hash = "sha256-fybp46IQmRN7lEUTChc3MTqxmRutmDO4RNSPEQfJQsQ="; + rev = "a37db9d249afd61a81ae26368696f60e065d6f61"; + hash = "sha256-RpfExg4DcWZ/SanVuwVbdijqPylsjvtMrHTQHemE+t8="; }; }).appendPatches - ( - patches_common - ++ [ - ./patches/ghsa-g3g9-5vj6-r3gj-git.patch - ./patches/landlock-abstract-socket-hardening-git.patch - ] - ); + patches_common; git = addTests "git" self.nixComponents_git.nix-everything; diff --git a/pkgs/tools/package-management/nix/modular/src/nix/package.nix b/pkgs/tools/package-management/nix/modular/src/nix/package.nix index d96823a991c7..deb49c9e7b4d 100644 --- a/pkgs/tools/package-management/nix/modular/src/nix/package.nix +++ b/pkgs/tools/package-management/nix/modular/src/nix/package.nix @@ -7,6 +7,8 @@ nix-main, nix-cmd, + mimalloc, + # Configuration Options version, @@ -23,6 +25,7 @@ mkMesonExecutable (finalAttrs: { nix-expr nix-main nix-cmd + mimalloc ]; mesonFlags = [ diff --git a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch b/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch deleted file mode 100644 index 05fb52902018..000000000000 --- a/pkgs/tools/package-management/nix/patches/ghsa-g3g9-5vj6-r3gj-git.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 0af4c1f88d0646bda0a90a37105360cab466a550 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= -Date: Mon, 6 Apr 2026 16:49:13 +0200 -Subject: [PATCH] Fixes for GHSA-g3g9-5vj6-r3gj -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Squashed commit of the following: - -commit a760af86b3a42aa5ac9d9002929107fe357bf128 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:31 2026 +0300 - - derivation-builder: Don't use copyFile for FOD output copying, put the output in a temporary directory in the store - -commit 0e3412a93f43a017342c267000c152e5c45327e7 -Author: Sergei Zimmerman -Date: Fri Apr 3 00:21:21 2026 +0300 - - libstore: Make temporary in-store directory not world-readable - -Signed-off-by: Jörg Thalheim ---- - src/libstore/include/nix/store/local-store.hh | 2 ++ - src/libstore/local-store.cc | 5 +-- - src/libstore/unix/build/derivation-builder.cc | 36 ++++++++++++++----- - 3 files changed, 33 insertions(+), 10 deletions(-) - -diff --git a/src/libstore/include/nix/store/local-store.hh b/src/libstore/include/nix/store/local-store.hh -index 63a1da67d..bf3437e95 100644 ---- a/src/libstore/include/nix/store/local-store.hh -+++ b/src/libstore/include/nix/store/local-store.hh -@@ -512,6 +512,8 @@ private: - - friend struct PathSubstitutionGoal; - friend struct DerivationGoal; -+ /* Only used for createTempDirInStore. */ -+ friend class DerivationBuilderImpl; - }; - - } // namespace nix -diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc -index e9eb48bfe..d5e457731 100644 ---- a/src/libstore/local-store.cc -+++ b/src/libstore/local-store.cc -@@ -1304,8 +1304,9 @@ std::pair LocalStore::createTempDirInStore() - do { - /* There is a slight possibility that `tmpDir' gets deleted by - the GC between createTempDir() and when we acquire a lock on it. -- We'll repeat until 'tmpDir' exists and we've locked it. */ -- tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp"); -+ We'll repeat until 'tmpDir' exists and we've locked it. -+ Make the directory accessible only to the current user. */ -+ tmpDirFn = createTempDir(std::filesystem::path{config->realStoreDir.get()}, "tmp", /*mode=*/0700); - tmpDirFd = openDirectory(tmpDirFn, FinalSymlink::DontFollow); - if (!tmpDirFd) { - continue; -diff --git a/src/libstore/unix/build/derivation-builder.cc b/src/libstore/unix/build/derivation-builder.cc -index 8f6343e0f..8288a4a31 100644 ---- a/src/libstore/unix/build/derivation-builder.cc -+++ b/src/libstore/unix/build/derivation-builder.cc -@@ -1597,6 +1597,13 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - assert(output && scratchPath); - auto actualPath = realPathInHost(store.printStorePath(*scratchPath)); - -+ /* An optional file descriptor of a directory used for intermediate -+ operations. */ -+ AutoCloseFD tempDirFd; -+ /* RAII cleanup of a temporary directory inside the store that is used -+ for intermediate operations. */ -+ AutoDelete delTempDir; -+ - auto finish = [&](StorePath finalStorePath) { - /* Store the final path */ - finalOutputs.insert_or_assign(outputName, finalStorePath); -@@ -1744,6 +1751,25 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - return newInfo0; - }; - -+ auto moveOutputToTempDir = [&]() -> void { -+ std::filesystem::path tempDir; -+ std::tie(tempDir, tempDirFd) = store.createTempDirInStore(); -+ delTempDir = AutoDelete(tempDir); -+ -+ auto tmpOutput = tempDir / "x"; -+ -+ /* Serialise and create a fresh copy of the output to break -+ any stale writable file descriptors. Copy through the -+ serialisation/deserialisation. TODO: Use copyRecursive here and -+ make use of reflinking. */ -+ auto source = sinkToSource([&](Sink & nextSink) { dumpPath(actualPath, nextSink); }); -+ restorePath(tmpOutput, *source, store.config->getLocalSettings().fsyncStorePaths); -+ /* This makes it slightly harder to make sense of the control flow. The rule -+ of thumb is that actualPath points to the current location of the stuff -+ that we'll end up registering. */ -+ actualPath = std::move(tmpOutput); -+ }; -+ - ValidPathInfo newInfo = std::visit( - overloaded{ - -@@ -1771,14 +1797,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - - [&](const DerivationOutput::CAFixed & dof) { - auto & wanted = dof.ca.hash; -- -- // Replace the output by a fresh copy of itself to make sure -- // that there's no stale file descriptor pointing to it -- std::filesystem::path tmpOutput = actualPath.native() + ".tmp"; -- copyFile(actualPath, tmpOutput, true); -- -- std::filesystem::rename(tmpOutput, actualPath); -- -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = dof.ca.method, -@@ -1795,6 +1814,7 @@ SingleDrvOutputs DerivationBuilderImpl::registerOutputs() - }, - - [&](const DerivationOutput::Impure & doi) { -+ moveOutputToTempDir(); - return newInfoFromCA( - DerivationOutput::CAFloating{ - .method = doi.method, diff --git a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch b/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch deleted file mode 100644 index 5b0fbdb46536..000000000000 --- a/pkgs/tools/package-management/nix/patches/landlock-abstract-socket-hardening-git.patch +++ /dev/null @@ -1,231 +0,0 @@ -From 44017ca497c8b44d5dac179f5afc63e91fe45ed6 Mon Sep 17 00:00:00 2001 -From: Sergei Zimmerman -Date: Sun, 5 Apr 2026 16:39:58 +0300 -Subject: [PATCH] libstore: Use landlock with - LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET for new enough kernels -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This partially fixes the issue with cooperating processes being able -to communicate via abstract sockets. The fix is partial, because processes -outside the landlock domain of the sandboxed process can still connect to -a socket created by the FOD. There's no equivalent way of restricting inbound -connections. This closes the gap when there's no cooperating process on the host -(i.e. 2 separate FODs). - ->= 6.12 kernel is widespread enough (NixOS 25.11 ships it by -default) that we have no reason not to apply this hardening, even though -it's incomplete. - -ca-fd-leak test exercises this exact code path and now the smuggling -process fails with (on new enough kernels that have landlock support enabled): - -vm-test-run-ca-fd-leak> machine # sandbox setup: applied landlock sandboxing -vm-test-run-ca-fd-leak> machine # building '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv'... -vm-test-run-ca-fd-leak> machine # building derivation '/nix/store/s7brgi6pdr5f3n8yqlgmdlz8blb89njc-smuggled.drv': woken up -vm-test-run-ca-fd-leak> machine # connect: Operation not permitted -vm-test-run-ca-fd-leak> machine # sendmsg: Socket not connected - -Signed-off-by: Jörg Thalheim ---- - src/libstore/meson.build | 5 + - .../unix/build/linux-derivation-builder.cc | 101 ++++++++++++++++++ - tests/nixos/ca-fd-leak/default.nix | 8 +- - 3 files changed, 112 insertions(+), 2 deletions(-) - -diff --git a/src/libstore/meson.build b/src/libstore/meson.build -index 445798544..753c78687 100644 ---- a/src/libstore/meson.build -+++ b/src/libstore/meson.build -@@ -79,6 +79,11 @@ foreach funcspec : check_funcs - configdata_priv.set(define_name, define_value) - endforeach - -+if host_machine.system() == 'linux' -+ has_landlock = cxx.has_header('linux/landlock.h') -+ configdata_priv.set('HAVE_LANDLOCK', has_landlock.to_int()) -+endif -+ - has_acl_support = cxx.has_header('sys/xattr.h') \ - and cxx.has_function('llistxattr') \ - and cxx.has_function('lremovexattr') -diff --git a/src/libstore/unix/build/linux-derivation-builder.cc b/src/libstore/unix/build/linux-derivation-builder.cc -index 9cfd3cbcd..c71d23e15 100644 ---- a/src/libstore/unix/build/linux-derivation-builder.cc -+++ b/src/libstore/unix/build/linux-derivation-builder.cc -@@ -1,5 +1,7 @@ - #ifdef __linux__ - -+# include "store-config-private.hh" -+ - # include "nix/store/globals.hh" - # include "nix/store/personality.hh" - # include "nix/store/filetransfer.hh" -@@ -11,6 +13,8 @@ - - # include - # include -+# include -+ - # include - # include - # include -@@ -19,11 +23,16 @@ - # include - # include - # include -+# include - - # if HAVE_SECCOMP - # include - # endif - -+# if HAVE_LANDLOCK -+# include -+# endif -+ - # define pivot_root(new_root, put_old) (syscall(SYS_pivot_root, new_root, put_old)) - - namespace nix { -@@ -129,6 +138,77 @@ static void setupSeccomp(const LocalSettings & localSettings) - # endif - } - -+# if HAVE_LANDLOCK && defined(LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET) -+ -+# define DO_LANDLOCK 1 -+ -+/* We are using LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET on best-effort basis. There are no glibc wrappers for now. */ -+ -+static int landlockCreateRuleset(const ::landlock_ruleset_attr * attr, std::size_t size, std::uint32_t flags) -+{ -+ return ::syscall(__NR_landlock_create_ruleset, attr, size, flags); -+} -+ -+static int landlockRestrictSelf(Descriptor rulesetFd, std::uint32_t flags) -+{ -+ return ::syscall(__NR_landlock_restrict_self, rulesetFd, flags); -+} -+ -+static int getLandlockAbiVersion() -+{ -+ int abiVersion = landlockCreateRuleset(nullptr, 0, LANDLOCK_CREATE_RULESET_VERSION); -+ return abiVersion; -+} -+ -+static void setupLandlock() -+{ -+ bool landlockSupportsScopeAbstractUnixSocket = []() { -+ int abiVersion = getLandlockAbiVersion(); -+ if (abiVersion >= 6) -+ /* All good, we can use LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET. See -+ https://docs.kernel.org/userspace-api/landlock.html#abstract-unix-socket-abi-6 */ -+ return true; -+ -+ if (abiVersion == -1) { -+ debug("landlock is not available"); -+ return false; -+ } -+ -+ debug("landlock version %d does not support LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET", abiVersion); -+ return false; -+ }(); -+ -+ /* Bail out early if landlock is not enabled or LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET wouldn't work. -+ TODO: Consider adding more landlock rules for filesystem access as defense-in-depth on top. */ -+ if (!landlockSupportsScopeAbstractUnixSocket) -+ return; -+ -+ ::landlock_ruleset_attr attr = { -+ /* This prevents multiple FODs from communicating with each other -+ via abstract sockets. Note that cooperating processes outside the -+ sandbox can still connect to an abstract socket created by the FOD. To -+ mitigate that issue entirely we'd still need network namespaces. */ -+ .scoped = LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET, -+ }; -+ -+ /* This better not fail - if the kernel reports a new enough ABI version we -+ should treat any errors as fatal from now on. */ -+ AutoCloseFD rulesetFd = landlockCreateRuleset(&attr, sizeof(attr), 0); -+ if (!rulesetFd) -+ throw SysError("failed to create a landlock ruleset"); -+ -+ if (landlockRestrictSelf(rulesetFd.get(), 0) == -1) -+ throw SysError("failed to apply landlock"); -+ -+ debug("applied landlock sandboxing"); -+} -+ -+# else -+ -+# define DO_LANDLOCK 0 -+ -+# endif -+ - static void doBind(const std::filesystem::path & source, const std::filesystem::path & target, bool optional = false) - { - debug("bind mounting %1% to %2%", PathFmt(source), PathFmt(target)); -@@ -169,8 +249,27 @@ struct LinuxDerivationBuilder : virtual DerivationBuilderImpl - { - auto & localSettings = store.config->getLocalSettings(); - -+ /* Set the NO_NEW_PRIVS before doing seccomp/landlock setup. -+ landlock_restrict_self requires either NO_NEW_PRIVS or CAP_SYS_ADMIN. -+ With user namespaces we do get CAP_SYS_ADMIN. */ -+ if (!localSettings.allowNewPrivileges) -+ if (::prctl(PR_SET_NO_NEW_PRIVS, 1, 0, 0, 0) == -1) -+ throw SysError("failed to set PR_SET_NO_NEW_PRIVS"); -+ - setupSeccomp(localSettings); - -+# if DO_LANDLOCK -+ try { -+ setupLandlock(); -+ } catch (SysError & e) { -+ if (e.errNo != EPERM) -+ throw; -+ /* If allowNewPrivileges is true and we don't have CAP_SYS_ADMIN -+ this code path might be hit. */ -+ warn("setting up landlock: %s", e.message()); -+ } -+# endif -+ - linux::setPersonality({ - .system = drv.platform, - .impersonateLinux26 = localSettings.impersonateLinux26, -@@ -765,4 +864,6 @@ struct ChrootLinuxDerivationBuilder : ChrootDerivationBuilder, LinuxDerivationBu - - } // namespace nix - -+# undef DO_LANDLOCK -+ - #endif -diff --git a/tests/nixos/ca-fd-leak/default.nix b/tests/nixos/ca-fd-leak/default.nix -index 902aacdc6..dc944290f 100644 ---- a/tests/nixos/ca-fd-leak/default.nix -+++ b/tests/nixos/ca-fd-leak/default.nix -@@ -78,7 +78,7 @@ in - - # Build the smuggled derivation. - # This will connect to the smuggler server and send it the file descriptor -- machine.succeed(r""" -+ sender_output = machine.succeed(r""" - nix-build -E ' - builtins.derivation { - name = "smuggled"; -@@ -89,9 +89,13 @@ in - outputHash = builtins.hashString "sha256" "hello, world\n"; - builder = "${pkgs.busybox-sandbox-shell}/bin/sh"; - args = [ "-c" "echo \"hello, world\" > $out; ''${${sender}} ${socketName}" ]; -- }' -+ }' 2>&1 - """.strip()) - -+ # Landlock's LANDLOCK_SCOPE_ABSTRACT_UNIX_SOCKET prevents a sandboxed process -+ # from connecting to an abstract socket created in an unrelated landlock domain. -+ # There's no such flag for preventing inbound connections. -+ assert "connect: Operation not permitted" in sender_output - - # Tell the smuggler server that we're done - machine.execute("echo done | ${pkgs.socat}/bin/socat - ABSTRACT-CONNECT:${socketName}") From 91bf39a711e4c5e1b878bf933fc672c5fa10b85f Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 20:40:17 +0000 Subject: [PATCH 105/112] libretro.flycast: 0-unstable-2026-03-20 -> 0-unstable-2026-04-07 --- pkgs/applications/emulators/libretro/cores/flycast.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/flycast.nix b/pkgs/applications/emulators/libretro/cores/flycast.nix index e1678fe4a91d..14df3e5b0514 100644 --- a/pkgs/applications/emulators/libretro/cores/flycast.nix +++ b/pkgs/applications/emulators/libretro/cores/flycast.nix @@ -8,13 +8,13 @@ }: mkLibretroCore { core = "flycast"; - version = "0-unstable-2026-03-20"; + version = "0-unstable-2026-04-07"; src = fetchFromGitHub { owner = "flyinghead"; repo = "flycast"; - rev = "05b270f05cecfcd675bb0530cf18d0a9b81269a1"; - hash = "sha256-sXoxuDiMnArXxYtIKmU6LBQ1r8KpEr/0hHliLN3KQWw="; + rev = "ad03e10c16a70b289f29bb10112857961125b4e6"; + hash = "sha256-XSCI+94PXJXnU6/6lqA+1p05A3p2r8W0XPwbaDPSsaM="; fetchSubmodules = true; }; From 44462d466c83b811249b8c8d8ee16a968c0a0955 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 20:42:14 +0000 Subject: [PATCH 106/112] goreleaser: 2.15.0 -> 2.15.2 --- pkgs/by-name/go/goreleaser/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/go/goreleaser/package.nix b/pkgs/by-name/go/goreleaser/package.nix index 20de5b683a4a..c42e60715a49 100644 --- a/pkgs/by-name/go/goreleaser/package.nix +++ b/pkgs/by-name/go/goreleaser/package.nix @@ -10,16 +10,16 @@ }: buildGo126Module (finalAttrs: { pname = "goreleaser"; - version = "2.15.0"; + version = "2.15.2"; src = fetchFromGitHub { owner = "goreleaser"; repo = "goreleaser"; rev = "v${finalAttrs.version}"; - hash = "sha256-IoNa4D3OM0B+/6KNS/n0T1uQwDK34aFE/I6tsavKhVQ="; + hash = "sha256-oRKOgqj5TKoD+BygDNjEc4vEN88WoTLAPJVxDfjWMPs="; }; - vendorHash = "sha256-Yx0K3/6WuWRpP3sLoo+xnMDoJN+OtVZGtBbNaroMRy8="; + vendorHash = "sha256-u0xZpajnTlGi8i/LfJ9JVHOKFs2SUA6RSrR4MlRhZv4="; ldflags = [ "-s" From 7c29d99cd3d9c8ef23136a984a178ed96e4efd52 Mon Sep 17 00:00:00 2001 From: Joseph LaFreniere Date: Tue, 7 Apr 2026 15:44:40 -0500 Subject: [PATCH 107/112] tsgolint: 0.19.0 -> 0.20.0 https://github.com/oxc-project/tsgolint/releases/tag/v0.20.0 --- pkgs/by-name/ts/tsgolint/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ts/tsgolint/package.nix b/pkgs/by-name/ts/tsgolint/package.nix index 972afea18375..710ca82eb15d 100644 --- a/pkgs/by-name/ts/tsgolint/package.nix +++ b/pkgs/by-name/ts/tsgolint/package.nix @@ -8,13 +8,13 @@ buildGo126Module (finalAttrs: { pname = "tsgolint"; - version = "0.19.0"; + version = "0.20.0"; src = fetchFromGitHub { owner = "oxc-project"; repo = "tsgolint"; tag = "v${finalAttrs.version}"; - hash = "sha256-f7X/aOaINVLJslOowHoqIL4AmSZjaO7feCGs4df7Kfg="; + hash = "sha256-b89t4tyh9eupl0k47VbPTlP8XdbaKwovBGpUsRZBa28="; fetchSubmodules = true; }; From 3ec9ac831c5cf73bd00e80f43a7386deccba0e9e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 21:16:15 +0000 Subject: [PATCH 108/112] lux-cli: 0.26.4 -> 0.27.0 --- pkgs/by-name/lu/lux-cli/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/lu/lux-cli/package.nix b/pkgs/by-name/lu/lux-cli/package.nix index 3e28f9593d4e..e01d48d22635 100644 --- a/pkgs/by-name/lu/lux-cli/package.nix +++ b/pkgs/by-name/lu/lux-cli/package.nix @@ -18,18 +18,18 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "lux-cli"; - version = "0.26.4"; + version = "0.27.0"; src = fetchFromGitHub { owner = "lumen-oss"; repo = "lux"; tag = "v${finalAttrs.version}"; - hash = "sha256-kNmOapcZJr/xk7tNpM+tqDfinpaYClXv2UbymvbV5OE="; + hash = "sha256-EuAVD+gBd1k8huufgbjdFJC/aGXqlc/66kIIaC7td2Q="; }; buildAndTestSubdir = "lux-cli"; - cargoHash = "sha256-jftyGo+Xjxi3G1q8kQCCnlDcJX12x9mmw/S2MmHxhB4="; + cargoHash = "sha256-Xvvw4NbSYdMmihsu1bWNfHzI9oItGlhY/KLNiRUHj+k="; nativeInstallCheckInputs = [ versionCheckHook From d68e7f7567185426938d61290130e16bde68d6a7 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 22:14:54 +0000 Subject: [PATCH 109/112] terraform-providers.baidubce_baiducloud: 1.22.21 -> 1.22.22 --- .../networking/cluster/terraform-providers/providers.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/cluster/terraform-providers/providers.json b/pkgs/applications/networking/cluster/terraform-providers/providers.json index 02802e48448f..1685dd83c4f7 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -101,11 +101,11 @@ "vendorHash": "sha256-quoFrJbB1vjz+MdV+jnr7FPACHuUe5Gx9POLubD2IaM=" }, "baidubce_baiducloud": { - "hash": "sha256-LEGtcyDWGcTj9A1NKH80E4BkCoze2ktUqVr1GIIoNHc=", + "hash": "sha256-zYWTDk905FpGvN2tsScXAH162TwTacU88G8aoZii83I=", "homepage": "https://registry.terraform.io/providers/baidubce/baiducloud", "owner": "baidubce", "repo": "terraform-provider-baiducloud", - "rev": "v1.22.21", + "rev": "v1.22.22", "spdx": "MPL-2.0", "vendorHash": null }, From 15b465a7b82e5aa15e07088880553f3ec8a13c40 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Tue, 7 Apr 2026 21:38:14 +0000 Subject: [PATCH 110/112] codebuff: 1.0.635 -> 1.0.638 --- pkgs/by-name/co/codebuff/package-lock.json | 8 ++++---- pkgs/by-name/co/codebuff/package.nix | 14 ++++++++------ 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/co/codebuff/package-lock.json b/pkgs/by-name/co/codebuff/package-lock.json index 1b1fcc76e8df..95a1910bbcd5 100644 --- a/pkgs/by-name/co/codebuff/package-lock.json +++ b/pkgs/by-name/co/codebuff/package-lock.json @@ -5,7 +5,7 @@ "packages": { "": { "dependencies": { - "codebuff": "^1.0.635" + "codebuff": "^1.0.638" } }, "node_modules/@isaacs/fs-minipass": { @@ -30,9 +30,9 @@ } }, "node_modules/codebuff": { - "version": "1.0.635", - "resolved": "https://registry.npmjs.org/codebuff/-/codebuff-1.0.635.tgz", - "integrity": "sha512-WjryNPaDPLKZ22vspoib6B5q9S9AIIxqJjbrB3kBj5e7vLx+BDlxMqwbvw4ywzzO/7+P62vOyJ99WFA7l86SNw==", + "version": "1.0.638", + "resolved": "https://registry.npmjs.org/codebuff/-/codebuff-1.0.638.tgz", + "integrity": "sha512-AVjN8qPQ+7gZ30Y1NpdtycatSKg/K4FPRrgAr1Lc/tYQ7kmfTKopYpPiawF2Q+v3pO9K2jFNoVihvcLzEv+ewA==", "cpu": [ "x64", "arm64" diff --git a/pkgs/by-name/co/codebuff/package.nix b/pkgs/by-name/co/codebuff/package.nix index babbc5fd0093..d971428d85ff 100644 --- a/pkgs/by-name/co/codebuff/package.nix +++ b/pkgs/by-name/co/codebuff/package.nix @@ -4,16 +4,18 @@ fetchzip, }: -buildNpmPackage rec { +buildNpmPackage (finalAttrs: { pname = "codebuff"; - version = "1.0.635"; + version = "1.0.638"; src = fetchzip { - url = "https://registry.npmjs.org/codebuff/-/codebuff-${version}.tgz"; - hash = "sha256-IKo/00XmqRvKq3OHc3Fu0/r3fvecKB+E2syuA5jw3Cc="; + url = "https://registry.npmjs.org/codebuff/-/codebuff-${finalAttrs.version}.tgz"; + hash = "sha256-Fyu2T3HGwKfECiw0zyRMH29iDAlrtpzvkoqswJiPl6Y="; }; - npmDepsHash = "sha256-u1xkAQjSeVg6M/1hyDAl0LGjUdu91O9gk95svipy7pw="; + strictDeps = true; + + npmDepsHash = "sha256-Wb0FbeuzkKg3ljirUFX2ZHx1WS1K2lyuha9qWUncsiI="; postPatch = '' cp ${./package-lock.json} package-lock.json @@ -31,4 +33,4 @@ buildNpmPackage rec { maintainers = [ lib.maintainers.malo ]; mainProgram = "codebuff"; }; -} +}) From 3dc6f26495e726720e79ec5a7ed17da33f70f7c7 Mon Sep 17 00:00:00 2001 From: Miroslav Valov <91765698+mivalov@users.noreply.github.com> Date: Wed, 8 Apr 2026 00:26:05 +0200 Subject: [PATCH 111/112] google-chrome: 146.0.7680.177 -> 147.0.7727.55 --- pkgs/by-name/go/google-chrome/package.nix | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/go/google-chrome/package.nix b/pkgs/by-name/go/google-chrome/package.nix index 43fcf5305a81..4c8066faf4c9 100644 --- a/pkgs/by-name/go/google-chrome/package.nix +++ b/pkgs/by-name/go/google-chrome/package.nix @@ -184,11 +184,11 @@ let linux = stdenvNoCC.mkDerivation (finalAttrs: { inherit pname meta passthru; - version = "146.0.7680.177"; + version = "147.0.7727.55"; src = fetchurl { url = "https://dl.google.com/linux/chrome/deb/pool/main/g/google-chrome-stable/google-chrome-stable_${finalAttrs.version}-1_amd64.deb"; - hash = "sha256-Tb142IoeaaYDa6jorbmfyoCHkOI7LqkthhBJStf1cyg="; + hash = "sha256-N3uXLBQ+kMttTKMaWijtE5hHXUdnDo97FeS6EaQsuyg="; }; # With strictDeps on, some shebangs were not being patched correctly @@ -302,11 +302,11 @@ let darwin = stdenvNoCC.mkDerivation (finalAttrs: { inherit pname meta passthru; - version = "146.0.7680.178"; + version = "147.0.7727.56"; src = fetchurl { - url = "http://dl.google.com/release2/chrome/aco4gwkxcefkxklazdyhgwkrndkq_146.0.7680.178/GoogleChrome-146.0.7680.178.dmg"; - hash = "sha256-aGqEFAzQZLy85hbsjhgYr5eFYgCaMhOiUG00wSlANHk="; + url = "http://dl.google.com/release2/chrome/nrtg4j5s3af3rvfw2czxfvmywu_147.0.7727.56/GoogleChrome-147.0.7727.56.dmg"; + hash = "sha256-IPeukB7JCeHOWr0Ma7YFfHWO58Py2/x/o2Ajz0Rc4oM="; }; dontPatch = true; From e8446224d416527d69ce11acd69891807130343f Mon Sep 17 00:00:00 2001 From: Xiangyan Sun Date: Tue, 7 Apr 2026 15:31:35 -0700 Subject: [PATCH 112/112] eigenmath: 340-unstable-2025-05-05 -> 350 --- pkgs/by-name/ei/eigenmath/package.nix | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/pkgs/by-name/ei/eigenmath/package.nix b/pkgs/by-name/ei/eigenmath/package.nix index 50e839c4fd6e..0a599bc0892e 100644 --- a/pkgs/by-name/ei/eigenmath/package.nix +++ b/pkgs/by-name/ei/eigenmath/package.nix @@ -3,18 +3,18 @@ stdenv, fetchFromGitHub, buildPackages, - unstableGitUpdater, + nix-update-script, }: -stdenv.mkDerivation { +stdenv.mkDerivation (finalAttrs: { pname = "eigenmath"; - version = "340-unstable-2025-05-05"; + version = "350"; src = fetchFromGitHub { owner = "georgeweigt"; repo = "eigenmath"; - rev = "94fee6b02ebd4cd718dd9ea45583a6af2129dd28"; - hash = "sha256-2bdO0nRXhDZlEmGRfNf6g9zwc65Ih9Ymlo6PxlpAxes="; + tag = finalAttrs.version; + hash = "sha256-Depc6mzPK6FEGTUo2BmXoWlyzjQDU8Hiodp5UjxKlQE="; }; checkPhase = @@ -23,14 +23,14 @@ stdenv.mkDerivation { in '' runHook preCheck - - for testcase in selftest1 selftest2; do - ${emulator} ./eigenmath "test/$testcase" - done - + echo -e "clear\nstatus\nexit" >> test/selftest + ${emulator} ./eigenmath "test/selftest" runHook postCheck ''; + # https://github.com/georgeweigt/eigenmath/issues/32 + env.NIX_CFLAGS_COMPILE = "-std=gnu17"; + installPhase = '' runHook preInstall install -Dm555 eigenmath "$out/bin/eigenmath" @@ -39,9 +39,7 @@ stdenv.mkDerivation { doCheck = true; - passthru = { - updateScript = unstableGitUpdater { }; - }; + passthru.updateScript = nix-update-script { }; meta = { description = "Computer algebra system written in C"; @@ -51,4 +49,4 @@ stdenv.mkDerivation { maintainers = with lib.maintainers; [ nickcao ]; platforms = lib.platforms.unix; }; -} +})