From c705c325bd9a600b0a3f2bbad1c45191b1ea0054 Mon Sep 17 00:00:00 2001 From: liberodark Date: Fri, 9 Jan 2026 16:21:46 +0100 Subject: [PATCH 01/47] koreader: fix Japanese text selection with patched luajit --- pkgs/by-name/ko/koreader/package.nix | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/ko/koreader/package.nix b/pkgs/by-name/ko/koreader/package.nix index 3bd89eb96d55..47e96fefa13c 100644 --- a/pkgs/by-name/ko/koreader/package.nix +++ b/pkgs/by-name/ko/koreader/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchurl, + fetchpatch, makeWrapper, fetchFromGitHub, dpkg, @@ -14,11 +15,21 @@ openssl, writeScript, }: -let - luajit_lua52 = luajit.override { enable52Compat = true; }; +let version = "2025.10"; + # LuaJIT with table.pack/unpack support for KOReader + # https://github.com/koreader/koreader-base/tree/master/thirdparty/luajit + luajit_koreader = luajit.overrideAttrs (old: { + patches = (old.patches or [ ]) ++ [ + (fetchpatch { + url = "https://raw.githubusercontent.com/koreader/koreader-base/master/thirdparty/luajit/koreader-luajit-enable-table_pack.patch"; + hash = "sha256-tvx7eRoSwnumqK6H7+2RCAKRDFJtaRY/2mRPjy30fJA="; + }) + ]; + }); + src_repo = fetchFromGitHub { repo = "koreader"; owner = "koreader"; @@ -52,14 +63,15 @@ stdenv.mkDerivation { }; nativeBuildInputs = [ - makeWrapper dpkg + makeWrapper ]; + buildInputs = [ glib gnutar gtk3-x11 - luajit_lua52 + luajit_koreader sdcv SDL2 openssl @@ -72,7 +84,7 @@ stdenv.mkDerivation { '' # Link required binaries + '' - ln -sf ${luajit_lua52}/bin/luajit $out/lib/koreader/luajit + ln -sf ${luajit_koreader}/bin/luajit $out/lib/koreader/luajit ln -sf ${sdcv}/bin/sdcv $out/lib/koreader/sdcv ln -sf ${gnutar}/bin/tar $out/lib/koreader/tar '' @@ -83,7 +95,7 @@ stdenv.mkDerivation { '' # Copy fonts + '' - find ${src_repo}/resources/fonts -type d -execdir cp -r '{}' $out/lib/koreader/fonts \; + cp -r ${src_repo}/resources/fonts/* $out/lib/koreader/fonts/ '' # Remove broken symlinks + '' @@ -104,7 +116,7 @@ stdenv.mkDerivation { ''; passthru = { - inherit src_repo; + inherit src_repo luajit_koreader; updateScript = writeScript "update-koreader" '' #!/usr/bin/env nix-shell #!nix-shell -i bash -p nix curl jq nix-update common-updater-scripts From f493239edaf0da179df5cf3e568e68fb70d5b987 Mon Sep 17 00:00:00 2001 From: jujb233 Date: Fri, 3 Apr 2026 15:16:49 +0800 Subject: [PATCH 02/47] maintainers: add jujb233 --- maintainers/maintainer-list.nix | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 25a9eb1f0272..bcb6603e7b17 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -13394,6 +13394,12 @@ githubId = 12773748; matrix = "@j.r:chaos.jetzt"; }; + jujb233 = { + name = "jujb233"; + email = "j3207068746@163.com"; + github = "jujb233"; + githubId = 191588056; + }; jukremer = { email = "nixpkgs@jankremer.eu"; github = "jukremer"; From 7b64be3da2a138e63034d555ce2c9c7efdc14b0e Mon Sep 17 00:00:00 2001 From: kpbaks Date: Sun, 22 Mar 2026 18:13:32 +0100 Subject: [PATCH 03/47] giff: init at 1.1.0 Signed-off-by: Matthias Beyer --- pkgs/by-name/gi/giff/package.nix | 35 ++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 pkgs/by-name/gi/giff/package.nix diff --git a/pkgs/by-name/gi/giff/package.nix b/pkgs/by-name/gi/giff/package.nix new file mode 100644 index 000000000000..d81386a306b4 --- /dev/null +++ b/pkgs/by-name/gi/giff/package.nix @@ -0,0 +1,35 @@ +{ + lib, + rustPlatform, + fetchFromGitHub, + nix-update-script, + versionCheckHook, +}: + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "giff"; + version = "1.1.0"; + + src = fetchFromGitHub { + owner = "bahdotsh"; + repo = "giff"; + tag = "v${finalAttrs.version}"; + hash = "sha256-oBZp0+tAYuAcj5vNXs2phW85Y+67WnH2CJiZ7cNpWpE="; + }; + + cargoHash = "sha256-IjXdWp5LdxIxfj2NL1EdxGh29L8Q/ExqX8yNHFStT1M="; + + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Terminal-based Git diff viewer with interactive rebase capabilities"; + homepage = "https://github.com/bahdotsh/giff"; + changelog = "https://github.com/bahdotsh/giff/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ kpbaks ]; + mainProgram = "giff"; + }; +}) From cdff05511e0da0b2fc21204df4a7ef8f3b4db707 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 10 Apr 2026 17:09:27 +0200 Subject: [PATCH 04/47] giff: Add myself to maintainers Signed-off-by: Matthias Beyer --- pkgs/by-name/gi/giff/package.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/by-name/gi/giff/package.nix b/pkgs/by-name/gi/giff/package.nix index d81386a306b4..d473675a9bd9 100644 --- a/pkgs/by-name/gi/giff/package.nix +++ b/pkgs/by-name/gi/giff/package.nix @@ -29,7 +29,10 @@ rustPlatform.buildRustPackage (finalAttrs: { homepage = "https://github.com/bahdotsh/giff"; changelog = "https://github.com/bahdotsh/giff/releases/tag/v${finalAttrs.version}"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ kpbaks ]; + maintainers = with lib.maintainers; [ + matthiasbeyer + kpbaks + ]; mainProgram = "giff"; }; }) From 4a40583d7336dbb0f84c431e75351e4d2c536892 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 10 Apr 2026 17:14:27 +0200 Subject: [PATCH 05/47] giff: 1.1.0 -> 1.2.0 Signed-off-by: Matthias Beyer --- pkgs/by-name/gi/giff/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/gi/giff/package.nix b/pkgs/by-name/gi/giff/package.nix index d473675a9bd9..6202ef31e93d 100644 --- a/pkgs/by-name/gi/giff/package.nix +++ b/pkgs/by-name/gi/giff/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "giff"; - version = "1.1.0"; + version = "1.2.0"; src = fetchFromGitHub { owner = "bahdotsh"; repo = "giff"; tag = "v${finalAttrs.version}"; - hash = "sha256-oBZp0+tAYuAcj5vNXs2phW85Y+67WnH2CJiZ7cNpWpE="; + hash = "sha256-ESmURQ7MAJ/Sv6ISdh+WF/XVtsGUTCRc7DzDwqBuXCM="; }; - cargoHash = "sha256-IjXdWp5LdxIxfj2NL1EdxGh29L8Q/ExqX8yNHFStT1M="; + cargoHash = "sha256-094QMCEI4ShTqlfYZUxCUUd/Fx9kmATHKuJPKqGxw7s="; nativeInstallCheckInputs = [ versionCheckHook ]; doInstallCheck = true; From 360eba2432facbef26fdc6e350cc68317cd8e483 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Fri, 10 Apr 2026 17:20:21 +0200 Subject: [PATCH 06/47] giff: Add __structuredAttrs = true Signed-off-by: Matthias Beyer --- pkgs/by-name/gi/giff/package.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkgs/by-name/gi/giff/package.nix b/pkgs/by-name/gi/giff/package.nix index 6202ef31e93d..54254eef0f3f 100644 --- a/pkgs/by-name/gi/giff/package.nix +++ b/pkgs/by-name/gi/giff/package.nix @@ -7,6 +7,8 @@ }: rustPlatform.buildRustPackage (finalAttrs: { + __structuredAttrs = true; + pname = "giff"; version = "1.2.0"; From 431c40bb4bd08408753e26076ab245f788d2329e Mon Sep 17 00:00:00 2001 From: jujb233 Date: Sun, 5 Apr 2026 19:48:56 +0800 Subject: [PATCH 07/47] sdl3-mixer: init at 3.2.0 --- pkgs/by-name/sd/sdl3-mixer/package.nix | 108 +++++++++++++++++++++++++ 1 file changed, 108 insertions(+) create mode 100644 pkgs/by-name/sd/sdl3-mixer/package.nix diff --git a/pkgs/by-name/sd/sdl3-mixer/package.nix b/pkgs/by-name/sd/sdl3-mixer/package.nix new file mode 100644 index 000000000000..4efbc0338649 --- /dev/null +++ b/pkgs/by-name/sd/sdl3-mixer/package.nix @@ -0,0 +1,108 @@ +{ + lib, + stdenv, + fetchFromGitHub, + cmake, + ninja, + pkg-config, + validatePkgConfig, + nix-update-script, + testers, + sdl3, + flac, + fluidsynth, + game-music-emu, + libogg, + libsndfile, + libvorbis, + libxmp, + mpg123, + opusfile, + timidity, + wavpack, +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "sdl3-mixer"; + version = "3.2.0"; + __structuredAttrs = true; + + outputs = [ + "dev" + "out" + ]; + + src = fetchFromGitHub { + owner = "libsdl-org"; + repo = "SDL_mixer"; + tag = "release-${finalAttrs.version}"; + hash = "sha256-+kOxmBX/zPCTq51F9ysSGsZdJSb21uM56U50mEgprbo="; + }; + + strictDeps = true; + doCheck = true; + + nativeBuildInputs = [ + cmake + ninja + pkg-config + validatePkgConfig + ]; + + buildInputs = [ + sdl3 + flac + fluidsynth + game-music-emu + libogg + libsndfile + libvorbis + libxmp + mpg123 + opusfile + timidity + wavpack + ]; + + # Prefer the packaged timidity config instead of relying on host /etc paths. + postPatch = '' + substituteInPlace src/decoder_timidity.c \ + --replace-fail '"/etc/timidity.cfg"' '"${timidity}/share/timidity/timidity.cfg"' + ''; + + cmakeFlags = [ + (lib.cmakeBool "SDLMIXER_STRICT" true) + (lib.cmakeBool "SDLMIXER_DEPS_SHARED" false) + (lib.cmakeBool "SDLMIXER_TESTS" finalAttrs.finalPackage.doCheck) + (lib.cmakeBool "SDLMIXER_EXAMPLES" false) + + # Prefer libFLAC for feature parity with other distros and better diagnostics. + (lib.cmakeBool "SDLMIXER_FLAC_DRFLAC" false) + # Prefer mpg123: more capable, better maintained. + # Built-in dr_mp3 may introduce subtle decoding differences; use only as a fallback. + (lib.cmakeBool "SDLMIXER_MP3_DRMP3" false) + # Prefer libvorbisfile to keep backend behavior aligned with system libraries. + (lib.cmakeBool "SDLMIXER_VORBIS_STB" false) + ]; + + passthru = { + updateScript = nix-update-script { + extraArgs = [ + "--version-regex" + "release-(3\\..*)" + ]; + }; + tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; + }; + + meta = { + description = "SDL audio mixer library for SDL3"; + homepage = "https://github.com/libsdl-org/SDL_mixer"; + changelog = "https://github.com/libsdl-org/SDL_mixer/releases/tag/release-${finalAttrs.version}"; + license = lib.licenses.zlib; + maintainers = with lib.maintainers; [ jujb233 ]; + teams = [ lib.teams.sdl ]; + platforms = lib.platforms.unix; + pkgConfigModules = [ "sdl3-mixer" ]; + }; +}) From d767cd1c72f8fbf778a32a211018603f921481ff Mon Sep 17 00:00:00 2001 From: benaryorg Date: Fri, 27 Feb 2026 04:10:30 +0000 Subject: [PATCH 08/47] ceph: 19.2.3 -> 20.2.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Moving ceph to its own scope allows separate packages for individual components. Among other benefits this makes overriding a single package for the entire build easier. The primary reason however is to allow calling code to access *overrideScope* to change internal packages such as *ceph-src*. Since the source code is used by multiple packages, notably the C++ and the Python code – independently – any patches that touch both (such as the PyO3 patch introduced herein) need to apply to both. Using just packages with *patches* set makes this harder to control. Material changes: - Python: 3.11 -> 3.12 - Boost: 1.83 -> 1.87 - Ceph: 19.2.3 -> 20.2.0 - fmt: 9 -> 12 - changes in patches (new and old) due to the above updates - Python dependencies on *jmespath* and *xmltodict* - `replace-fail` for *substituteInPlace* - UADK disabled by default (otherwise aarch64 fails to compile) - *ceph-mgr* wrapper now adds ceph binaries to *PATH* - ZFS integration on the packaging level has been removed In-depth information for most of this can be found in [#494583](https://redirect.github.com/NixOS/nixpkgs/pull/494583). Signed-off-by: benaryorg --- pkgs/by-name/ce/ceph/README.md | 75 ++ pkgs/by-name/ce/ceph/arrow-cpp-19.nix | 353 ---------- pkgs/by-name/ce/ceph/boost-1.85.patch | 69 -- .../by-name/ce/ceph/boost-1.86-PyModule.patch | 20 - pkgs/by-name/ce/ceph/ceph.nix | 399 +++++++++++ pkgs/by-name/ce/ceph/meta.nix | 24 + .../cryptography-vectors.nix | 36 - .../ceph/old-python-packages/cryptography.nix | 136 ---- ...or-CVE-2023-49083-on-cryptography-40.patch | 44 -- .../ce/ceph/old-python-packages/trustme.nix | 49 -- pkgs/by-name/ce/ceph/package.nix | 664 +----------------- .../patches/0001-mgr-python-interpreter.patch | 89 +++ pkgs/by-name/ce/ceph/python-common.nix | 29 + pkgs/by-name/ce/ceph/python-env.nix | 50 ++ pkgs/by-name/ce/ceph/rocksdb.nix | 14 + pkgs/by-name/ce/ceph/scope.nix | 32 + pkgs/by-name/ce/ceph/src.nix | 44 ++ 17 files changed, 759 insertions(+), 1368 deletions(-) create mode 100644 pkgs/by-name/ce/ceph/README.md delete mode 100644 pkgs/by-name/ce/ceph/arrow-cpp-19.nix delete mode 100644 pkgs/by-name/ce/ceph/boost-1.85.patch delete mode 100644 pkgs/by-name/ce/ceph/boost-1.86-PyModule.patch create mode 100644 pkgs/by-name/ce/ceph/ceph.nix create mode 100644 pkgs/by-name/ce/ceph/meta.nix delete mode 100644 pkgs/by-name/ce/ceph/old-python-packages/cryptography-vectors.nix delete mode 100644 pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix delete mode 100644 pkgs/by-name/ce/ceph/old-python-packages/python-cryptography-Cherry-pick-fix-for-CVE-2023-49083-on-cryptography-40.patch delete mode 100644 pkgs/by-name/ce/ceph/old-python-packages/trustme.nix create mode 100644 pkgs/by-name/ce/ceph/patches/0001-mgr-python-interpreter.patch create mode 100644 pkgs/by-name/ce/ceph/python-common.nix create mode 100644 pkgs/by-name/ce/ceph/python-env.nix create mode 100644 pkgs/by-name/ce/ceph/rocksdb.nix create mode 100644 pkgs/by-name/ce/ceph/scope.nix create mode 100644 pkgs/by-name/ce/ceph/src.nix diff --git a/pkgs/by-name/ce/ceph/README.md b/pkgs/by-name/ce/ceph/README.md new file mode 100644 index 000000000000..68673a494f99 --- /dev/null +++ b/pkgs/by-name/ce/ceph/README.md @@ -0,0 +1,75 @@ +# Ceph + +Ceph is a Distributed storage system providing object based (rados and S3), block based (rbd and iscsi), and filesystem based (cephfs, NFS, samba) storage. + +Because Ceph is used for massive storage clusters in the wild, any changes can lead to actual data loss. +Besides having to handle changes – in particular breaking changes – somewhat carefully it also means that Ceph does move slow in terms of development. +It should be stressed here that slow release pacing is not a bad thing! + +If you are looking at this page because a change in, let's say Python packaging, broke the build of *qemu_full*, then if you are not actually using Ceph for anything[^krbd] it may be easier to mask out Ceph from your build[^mask]. +One common way that Ceph is being pulled in for users who do not actually use it is due to the `enableCephFS` flag of *samba4Full*. + +[^krbd]: Or are only using implicit *krbd* which lives in the kernel and thus doesn't require this package. +[^mask]: You can achieve this using several ways, including an overlay setting *ceph* to *null*, or something like `qemu_full.override { cephSupport = false; }`. + +## Patches + +Historically Ceph often needed patches to be compatible with newer versions of *gcc*, Python, and other related software. +On occasion there may also be patches which need to be backported from the development of the current release as they may have been merged, but no new release has been made including those changes. +Because Ceph uses embedded Python interpreters in some daemons these patches need to be applied to multiple builds. +To keep drift from happening and make this more visible [the source code itself is being patched](./src.nix) before passing it on as *src* for other derivations. + +## Scope + +This package often requires patches, or vendored packaging so we can keep an older version of a library around specifically for Ceph. +For this reason Ceph is being maintained [within its own scope](./scope.nix), which allows us to inject such vendored packages more easily. +An example at time of writing would be *RocksDB* which is the storage format used by the Ceph storage daemons (OSDs) to store data on block devices directly. + +If for whatever reason you want or need to patch Ceph, you can use the *passthru* attribute `overrideScope` to get access to the full Ceph scope. +For instance an overlay can be used to override dependencies as well as patches. + +
Example overlay for overriding Ceph + +```nix +globalFinal: globalPrev: { + ceph = builtins.getAttr "ceph" ( + globalPrev.ceph.overrideScope ( + final: prev: { + # `prev.rocksdb` here is the vendored version of rocksdb + # this means you can apply patches to the otherwise hidden packages + + ceph-src = prev.ceph-src.overrideAttrs ( + { + patches ? [ ], + ... + }: + { + patches = patches ++ [ + # your patch goes here + (globalFinal.fetchurl { + # ... + }) + ]; + } + ); + } + ) + ); +} +``` + +
+ +## Python + +Ceph is very intertwined with Python due to the subinterpreters. +The [*nixpkgs* Ceph PyO3 tracking issue](https://github.com/NixOS/nixpkgs/issues/380823) has some information on this and during the [*nixpkgs* Ceph 20.2.1 merge](https://github.com/NixOS/nixpkgs/pull/494583) several issues surfaced. +When using Ceph packaged via *nixpkgs* you should not run into PyO3 issues, if you do, please file a bug report. + +There are two MGR modules which do attempt to load libraries incompatible with PyO3; *cephadm* and *diskprediction_local*. +*cephadm* conceptually does not work on NixOS since NixOS intentionally makes *systemd* configuration read-only. +However the *cephadm* MGR module is enabled by default, and it is not been patched to be less prone to PyO3 issues. +Similarly *diskprediction_local* will attempt to load Numpy/SciPy, leading to PyO3 errors. +These errors are not fatal, however they do render the modules unusable. +You can disable the modules using `ceph mgr module disable` to silence the errors. + diff --git a/pkgs/by-name/ce/ceph/arrow-cpp-19.nix b/pkgs/by-name/ce/ceph/arrow-cpp-19.nix deleted file mode 100644 index c24457fd28e9..000000000000 --- a/pkgs/by-name/ce/ceph/arrow-cpp-19.nix +++ /dev/null @@ -1,353 +0,0 @@ -# This is is arrow-cpp < 20 used as a workaround for -# Ceph not supporting >= yet, taken from nixpkgs commit -# 97ae53798f6a7c7c3c259ad8c2cbcede6ca34b2a~ -# This should be entirely removed when upstream bug -# https://tracker.ceph.com/issues/71269 -# is fixed. -{ - stdenv, - lib, - fetchurl, - fetchpatch2, - fetchFromGitHub, - fixDarwinDylibNames, - autoconf, - aws-sdk-cpp, - aws-sdk-cpp-arrow ? aws-sdk-cpp.override { - apis = [ - "cognito-identity" - "config" - "identity-management" - "s3" - "sts" - "transfer" - ]; - }, - boost, - brotli, - bzip2, - cmake, - crc32c, - curl, - flatbuffers, - gflags, - glog, - google-cloud-cpp, - grpc, - gtest, - libbacktrace, - lz4, - minio, - ninja, - nlohmann_json, - openssl, - perl, - pkg-config, - protobuf_32, - python3, - rapidjson, - re2, - snappy, - sqlite, - thrift, - tzdata, - utf8proc, - which, - zlib, - zstd, - testers, - enableShared ? !stdenv.hostPlatform.isStatic, - enableFlight ? stdenv.buildPlatform == stdenv.hostPlatform, - # Disable also on RiscV - # configure: error: cannot determine number of significant virtual address bits - enableJemalloc ? - !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isAarch64 && !stdenv.hostPlatform.isRiscV64, - enableS3 ? true, - # google-cloud-cpp fails to build on RiscV - enableGcs ? !stdenv.hostPlatform.isDarwin && !stdenv.hostPlatform.isRiscV64, -}: - -let - arrow-testing = fetchFromGitHub { - name = "arrow-testing"; - owner = "apache"; - repo = "arrow-testing"; - rev = "4d209492d514c2d3cb2d392681b9aa00e6d8da1c"; - hash = "sha256-IkiCbuy0bWyClPZ4ZEdkEP7jFYLhM7RCuNLd6Lazd4o="; - }; - - parquet-testing = fetchFromGitHub { - name = "parquet-testing"; - owner = "apache"; - repo = "parquet-testing"; - rev = "c7cf1374cf284c0c73024cd1437becea75558bf8"; - hash = "sha256-DThjyZ34LajHwXZy1IhYKUGUG/ejQ9WvBNuI8eUKmSs="; - }; - - version = "19.0.1"; -in -stdenv.mkDerivation (finalAttrs: { - pname = "arrow-cpp"; - inherit version; - - src = fetchFromGitHub { - owner = "apache"; - repo = "arrow"; - rev = "apache-arrow-${version}"; - hash = "sha256-toHwUIOZRpgR0K7pQtT5nqWpO9G7AuHYTcvA6UVg9lA="; - }; - - sourceRoot = "${finalAttrs.src.name}/cpp"; - - patches = [ - (fetchpatch2 { - name = "protobuf-30-compat.patch"; - url = "https://github.com/apache/arrow/pull/46136.patch"; - hash = "sha256-WTpe/eT3himlCHN/R78w1sF0HG859mE2ZN70U+9N8Ag="; - stripLen = 1; - }) - (fetchpatch2 { - name = "cmake-fix.patch"; - url = "https://github.com/apache/arrow/commit/48c0bbbd4a2eedcca518caeb7f7547c7988dc740.patch?full_index=1"; - hash = "sha256-i/vZy/61VYP+mo1AxfoiBSjTip04vhFOh3hGjHCJy6g="; - stripLen = 1; # applying patch from within `cpp/` subdirectory - }) - ]; - - # versions are all taken from - # https://github.com/apache/arrow/blob/apache-arrow-${version}/cpp/thirdparty/versions.txt - - env = - lib.optionalAttrs enableJemalloc { - # jemalloc: arrow uses a custom prefix to prevent default allocator symbol - # collisions as well as custom build flags - ARROW_JEMALLOC_URL = fetchurl { - url = "https://github.com/jemalloc/jemalloc/releases/download/5.3.0/jemalloc-5.3.0.tar.bz2"; - hash = "sha256-LbgtHnEZ3z5xt2QCGbbf6EeJvAU3mDw7esT3GJrs/qo="; - }; - } - // { - # mimalloc: arrow uses custom build flags for mimalloc - ARROW_MIMALLOC_URL = fetchFromGitHub { - owner = "microsoft"; - repo = "mimalloc"; - rev = "v2.0.6"; - hash = "sha256-u2ITXABBN/dwU+mCIbL3tN1f4c17aBuSdNTV+Adtohc="; - }; - - ARROW_XSIMD_URL = fetchFromGitHub { - owner = "xtensor-stack"; - repo = "xsimd"; - rev = "13.0.0"; - hash = "sha256-qElJYW5QDj3s59L3NgZj5zkhnUMzIP2mBa1sPks3/CE="; - }; - - ARROW_SUBSTRAIT_URL = fetchFromGitHub { - owner = "substrait-io"; - repo = "substrait"; - rev = "v0.44.0"; - hash = "sha256-V739IFTGPtbGPlxcOi8sAaYSDhNUEpITvN9IqdPReug="; - }; - } - // lib.optionalAttrs finalAttrs.doInstallCheck { - ARROW_TEST_DATA = "${arrow-testing}/data"; - PARQUET_TEST_DATA = "${parquet-testing}/data"; - GTEST_FILTER = - let - # Upstream Issue: https://issues.apache.org/jira/browse/ARROW-11398 - filteredTests = - lib.optionals stdenv.hostPlatform.isAarch64 [ - "TestFilterKernelWithNumeric/3.CompareArrayAndFilterRandomNumeric" - "TestFilterKernelWithNumeric/7.CompareArrayAndFilterRandomNumeric" - "TestCompareKernel.PrimitiveRandomTests" - ] - ++ lib.optionals enableS3 [ - "S3OptionsTest.FromUri" - "S3RegionResolutionTest.NonExistentBucket" - "S3RegionResolutionTest.PublicBucket" - "S3RegionResolutionTest.RestrictedBucket" - "TestMinioServer.Connect" - "TestS3FS.*" - "TestS3FSGeneric.*" - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - # TODO: revisit at 12.0.0 or when - # https://github.com/apache/arrow/commit/295c6644ca6b67c95a662410b2c7faea0920c989 - # is available, see - # https://github.com/apache/arrow/pull/15288#discussion_r1071244661 - "ExecPlanExecution.StressSourceSinkStopped" - ]; - in - "-${lib.concatStringsSep ":" filteredTests}"; - }; - - nativeBuildInputs = [ - cmake - pkg-config - ninja - autoconf # for vendored jemalloc - flatbuffers - ] - ++ lib.optional stdenv.hostPlatform.isDarwin fixDarwinDylibNames; - buildInputs = [ - boost - brotli - bzip2 - flatbuffers - gflags - glog - gtest - libbacktrace - lz4 - nlohmann_json # alternative JSON parser to rapidjson - protobuf_32 # substrait requires protobuf - rapidjson - re2 - snappy - thrift - utf8proc - zlib - zstd - ] - ++ lib.optionals enableFlight [ - grpc - openssl - sqlite - ] - ++ lib.optionals enableS3 [ - aws-sdk-cpp-arrow - openssl - ] - ++ lib.optionals enableGcs [ - crc32c - curl - google-cloud-cpp - grpc - nlohmann_json - ]; - - preConfigure = '' - patchShebangs build-support/ - substituteInPlace "src/arrow/vendored/datetime/tz.cpp" \ - --replace-fail 'discover_tz_dir();' '"${tzdata}/share/zoneinfo";' - ''; - - cmakeFlags = [ - "-DCMAKE_FIND_PACKAGE_PREFER_CONFIG=ON" - "-DARROW_BUILD_SHARED=${if enableShared then "ON" else "OFF"}" - "-DARROW_BUILD_STATIC=${if enableShared then "OFF" else "ON"}" - "-DARROW_BUILD_TESTS=${if enableShared then "ON" else "OFF"}" - "-DARROW_BUILD_INTEGRATION=ON" - "-DARROW_BUILD_UTILITIES=ON" - "-DARROW_EXTRA_ERROR_CONTEXT=ON" - "-DARROW_VERBOSE_THIRDPARTY_BUILD=ON" - "-DARROW_DEPENDENCY_SOURCE=SYSTEM" - "-Dxsimd_SOURCE=AUTO" - "-DARROW_DEPENDENCY_USE_SHARED=${if enableShared then "ON" else "OFF"}" - "-DARROW_COMPUTE=ON" - "-DARROW_CSV=ON" - "-DARROW_DATASET=ON" - "-DARROW_FILESYSTEM=ON" - "-DARROW_FLIGHT_SQL=${if enableFlight then "ON" else "OFF"}" - "-DARROW_HDFS=ON" - "-DARROW_IPC=ON" - "-DARROW_JEMALLOC=${if enableJemalloc then "ON" else "OFF"}" - "-DARROW_JSON=ON" - "-DARROW_USE_GLOG=ON" - "-DARROW_WITH_BACKTRACE=ON" - "-DARROW_WITH_BROTLI=ON" - "-DARROW_WITH_BZ2=ON" - "-DARROW_WITH_LZ4=ON" - "-DARROW_WITH_NLOHMANN_JSON=ON" - "-DARROW_WITH_SNAPPY=ON" - "-DARROW_WITH_UTF8PROC=ON" - "-DARROW_WITH_ZLIB=ON" - "-DARROW_WITH_ZSTD=ON" - "-DARROW_MIMALLOC=ON" - "-DARROW_SUBSTRAIT=ON" - "-DARROW_FLIGHT=${if enableFlight then "ON" else "OFF"}" - "-DARROW_FLIGHT_TESTING=${if enableFlight then "ON" else "OFF"}" - "-DARROW_S3=${if enableS3 then "ON" else "OFF"}" - "-DARROW_GCS=${if enableGcs then "ON" else "OFF"}" - # Parquet options: - "-DARROW_PARQUET=ON" - "-DPARQUET_BUILD_EXECUTABLES=ON" - "-DPARQUET_REQUIRE_ENCRYPTION=ON" - ] - ++ lib.optionals (!enableShared) [ "-DARROW_TEST_LINKAGE=static" ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - "-DCMAKE_INSTALL_RPATH=@loader_path/../lib" # needed for tools executables - ] - ++ lib.optionals (!stdenv.hostPlatform.isx86_64) [ "-DARROW_USE_SIMD=OFF" ] - ++ lib.optionals enableS3 [ - "-DAWSSDK_CORE_HEADER_FILE=${aws-sdk-cpp-arrow}/include/aws/core/Aws.h" - ]; - - doInstallCheck = true; - - __darwinAllowLocalNetworking = true; - - nativeInstallCheckInputs = [ - perl - which - sqlite - ] - ++ lib.optionals enableS3 [ minio ] - ++ lib.optionals enableFlight [ python3 ]; - - installCheckPhase = - let - disabledTests = [ - # flaky - "arrow-flight-test" - # requires networking - "arrow-gcsfs-test" - "arrow-flight-integration-test" - ]; - in - '' - runHook preInstallCheck - - ctest -L unittest --exclude-regex '^(${lib.concatStringsSep "|" disabledTests})$' - - runHook postInstallCheck - ''; - - __structuredAttrs = true; - - meta = { - description = "Cross-language development platform for in-memory data"; - homepage = "https://arrow.apache.org/docs/cpp/"; - license = lib.licenses.asl20; - platforms = lib.platforms.unix; - maintainers = with lib.maintainers; [ - tobim - veprbl - cpcloud - ]; - pkgConfigModules = [ - "arrow" - "arrow-acero" - "arrow-compute" - "arrow-csv" - "arrow-dataset" - "arrow-filesystem" - "arrow-flight" - "arrow-flight-sql" - "arrow-flight-testing" - "arrow-json" - "arrow-substrait" - "arrow-testing" - "parquet" - ]; - }; - passthru = { - inherit - enableFlight - enableJemalloc - enableS3 - enableGcs - ; - tests.pkg-config = testers.testMetaPkgConfig finalAttrs.finalPackage; - }; -}) diff --git a/pkgs/by-name/ce/ceph/boost-1.85.patch b/pkgs/by-name/ce/ceph/boost-1.85.patch deleted file mode 100644 index 575bc94acc5f..000000000000 --- a/pkgs/by-name/ce/ceph/boost-1.85.patch +++ /dev/null @@ -1,69 +0,0 @@ -Backported from . - -Original author: Adam Emerson - -diff --git a/CMakeLists.txt b/CMakeLists.txt -index bbd63a6a006..bbd7c737feb 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -666,7 +666,7 @@ option(WITH_SYSTEM_BOOST "require and build with system Boost" OFF) - # Boost::thread depends on Boost::atomic, so list it explicitly. - set(BOOST_COMPONENTS - atomic chrono thread system regex random program_options date_time -- iostreams context coroutine) -+ iostreams context coroutine url) - set(BOOST_HEADER_COMPONENTS container) - - if(WITH_MGR) -diff --git a/src/mds/BoostUrlImpl.cc b/src/mds/BoostUrlImpl.cc -deleted file mode 100644 -index 479f4c6d75d..00000000000 ---- a/src/mds/BoostUrlImpl.cc -+++ /dev/null -@@ -1,8 +0,0 @@ --/* -- * https://www.boost.org/doc/libs/1_82_0/libs/url/doc/html/url/overview.html#url.overview.requirements -- * -- * To use the library as header-only; that is, to eliminate the requirement -- * to link a program to a static or dynamic Boost.URL library, -- * simply place the following line in exactly one source file in your project. -- */ --#include -diff --git a/src/mds/CMakeLists.txt b/src/mds/CMakeLists.txt -index 0c6c31a3c51..5c98db76e4d 100644 ---- a/src/mds/CMakeLists.txt -+++ b/src/mds/CMakeLists.txt -@@ -45,12 +45,12 @@ set(mds_srcs - QuiesceDbManager.cc - QuiesceAgent.cc - MDSRankQuiesce.cc -- BoostUrlImpl.cc - ${CMAKE_SOURCE_DIR}/src/common/TrackedOp.cc - ${CMAKE_SOURCE_DIR}/src/common/MemoryModel.cc - ${CMAKE_SOURCE_DIR}/src/osdc/Journaler.cc - ${CMAKE_SOURCE_DIR}/src/mgr/MDSPerfMetricTypes.cc) - add_library(mds STATIC ${mds_srcs}) - target_link_libraries(mds PRIVATE -+ Boost::url - heap_profiler cpu_profiler osdc ${LUA_LIBRARIES}) - target_include_directories(mds PRIVATE "${LUA_INCLUDE_DIR}") -diff --git a/src/test/mds/CMakeLists.txt b/src/test/mds/CMakeLists.txt -index f80abe75083..18ebb648e68 100644 ---- a/src/test/mds/CMakeLists.txt -+++ b/src/test/mds/CMakeLists.txt -@@ -18,11 +18,10 @@ target_link_libraries(unittest_mds_sessionfilter mds osdc ceph-common global ${B - add_executable(unittest_mds_quiesce_db - TestQuiesceDb.cc - ../../../src/mds/QuiesceDbManager.cc -- ../../../src/mds/BoostUrlImpl.cc - $ - ) - add_ceph_unittest(unittest_mds_quiesce_db) --target_link_libraries(unittest_mds_quiesce_db ceph-common global) -+target_link_libraries(unittest_mds_quiesce_db ceph-common global Boost::url) - - # unittest_mds_quiesce_agent - add_executable(unittest_mds_quiesce_agent --- -2.47.0 - diff --git a/pkgs/by-name/ce/ceph/boost-1.86-PyModule.patch b/pkgs/by-name/ce/ceph/boost-1.86-PyModule.patch deleted file mode 100644 index 631844081d4a..000000000000 --- a/pkgs/by-name/ce/ceph/boost-1.86-PyModule.patch +++ /dev/null @@ -1,20 +0,0 @@ -Excerpted from . - -Original author: Bazaah - -diff --git a/src/mgr/PyModule.cc b/src/mgr/PyModule.cc -index 084cf3ffc1e..010a1177a88 100644 ---- a/src/mgr/PyModule.cc -+++ b/src/mgr/PyModule.cc -@@ -36,6 +36,11 @@ std::string PyModule::mgr_store_prefix = "mgr/"; - - // Courtesy of http://stackoverflow.com/questions/1418015/how-to-get-python-exception-text - #define BOOST_BIND_GLOBAL_PLACEHOLDERS -+// Fix instances of "'BOOST_PP_ITERATION_02' was not declared in this scope; did you mean 'BOOST_PP_ITERATION_05'" -+// and related macro error bullshit that spans 300 lines of errors -+// -+// Apparently you can't include boost/python stuff _and_ have this header defined -+#undef BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS - // Boost apparently can't be bothered to fix its own usage of its own - // deprecated features. - #include diff --git a/pkgs/by-name/ce/ceph/ceph.nix b/pkgs/by-name/ce/ceph/ceph.nix new file mode 100644 index 000000000000..e3c3beb55a57 --- /dev/null +++ b/pkgs/by-name/ce/ceph/ceph.nix @@ -0,0 +1,399 @@ +{ + lib, + stdenv, + overrideScope, + ceph-meta, + ceph-src, + + # Build time + autoconf, + automake, + cmake, + ensureNewerSourcesHook, + fmt, + git, + libtool, + makeWrapper, + nasm, + pkg-config, + which, + + # Tests + nixosTests, + + # Runtime dependencies + + arrow-cpp, + babeltrace, + ceph-boost, + bzip2, + cryptsetup, + cunit, + e2fsprogs, + doxygen, + getopt, + gperf, + graphviz, + gnugrep, + gtest, + icu, + kmod, + libcap, + libcap_ng, + libnbd, + libnl, + libxml2, + lmdb, + lttng-ust, + # Ceph currently requires >= 5.3 + lua5_4, + lvm2, + lz4, + oath-toolkit, + openldap, + parted, + ceph-python-env, + rdkafka, + ceph-rocksdb, + snappy, + openssh, + sqlite, + utf8proc, + xfsprogs, + zlib, + zstd, + + # Optional Dependencies + curl ? null, + expat ? null, + fuse ? null, + libatomic_ops ? null, + libedit ? null, + libs3 ? null, + yasm ? null, + + # Mallocs + gperftools ? null, + jemalloc ? null, + + # Crypto Dependencies + cryptopp ? null, + nspr ? null, + nss ? null, + + # Linux Only Dependencies + linuxHeaders, + systemd, + util-linux, + libuuid, + udev, + keyutils, + rdma-core, + rabbitmq-c, + libaio ? null, + libxfs ? null, + liburing ? null, + withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, +}: + +# We must have one crypto library +assert cryptopp != null || (nss != null && nspr != null); + +let + shouldUsePkg = + pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; + + optYasm = shouldUsePkg yasm; + optExpat = shouldUsePkg expat; + optCurl = shouldUsePkg curl; + optFuse = shouldUsePkg fuse; + optLibedit = shouldUsePkg libedit; + optLibatomic_ops = shouldUsePkg libatomic_ops; + optLibs3 = shouldUsePkg libs3; + + optJemalloc = shouldUsePkg jemalloc; + optGperftools = shouldUsePkg gperftools; + + optCryptopp = shouldUsePkg cryptopp; + optNss = shouldUsePkg nss; + optNspr = shouldUsePkg nspr; + + optLibaio = shouldUsePkg libaio; + optLibxfs = shouldUsePkg libxfs; + + hasRadosgw = optExpat != null && optCurl != null && optLibedit != null; + + # Malloc implementation (can be jemalloc, tcmalloc or null) + malloc = if optJemalloc != null then optJemalloc else optGperftools; + + # We prefer nss over cryptopp + cryptoStr = + if optNss != null && optNspr != null then + "nss" + else if optCryptopp != null then + "cryptopp" + else + "none"; + + cryptoLibsMap = { + nss = [ + optNss + optNspr + ]; + cryptopp = [ optCryptopp ]; + none = [ ]; + }; + +in +stdenv.mkDerivation { + pname = "ceph"; + inherit (ceph-src) version; + src = ceph-src; + + nativeBuildInputs = [ + autoconf # `autoreconf` is called, e.g. for `qatlib_ext` + automake # `aclocal` is called, e.g. for `qatlib_ext` + cmake + fmt + git + makeWrapper + libtool # used e.g. for `qatlib_ext` + nasm + pkg-config + ceph-python-env + ceph-python-env.pkgs.python # for the toPythonPath function + ceph-python-env.pkgs.wrapPython + which + (ensureNewerSourcesHook { year = "1980"; }) + # for building docs/man-pages presumably + doxygen + graphviz + ]; + + buildInputs = + cryptoLibsMap.${cryptoStr} + ++ [ + arrow-cpp + babeltrace + ceph-boost + bzip2 + # Adding `ceph-python-env` here adds the env's `site-packages` to `PYTHONPATH` during the build. + # This is important, otherwise the build system may not find the Python deps and then + # silently skip installing ceph-volume and other Ceph python tools. + ceph-python-env + cryptsetup + cunit + e2fsprogs # according to `debian/control` file, `ceph-volume` is supposed to use it + gperf + gtest + icu + libcap + libnbd + libnl + libxml2 + lmdb + lttng-ust + lua5_4 + lvm2 # according to `debian/control` file, e.g. `pvs` command used by `src/ceph-volume/ceph_volume/api/lvm.py` + lz4 + malloc + oath-toolkit + openldap + optLibatomic_ops + optLibs3 + optYasm + parted # according to `debian/control` file, used by `src/ceph-volume/ceph_volume/util/disk.py` + rdkafka + ceph-rocksdb + snappy + openssh # according to `debian/control` file, `ssh` command used by `cephadm` + sqlite + utf8proc + xfsprogs # according to `debian/control` file, `ceph-volume` is supposed to use it + zlib + zstd + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + keyutils + libcap_ng + liburing + libuuid + linuxHeaders + optLibaio + optLibxfs + rabbitmq-c + rdma-core + udev + util-linux + ] + ++ lib.optionals hasRadosgw [ + optCurl + optExpat + optFuse + optLibedit + ]; + + inherit (ceph-python-env) sitePackages; + + # Picked up, amongst others, by `wrapPythonPrograms`. + pythonPath = [ + ceph-python-env + "${placeholder "out"}/${ceph-python-env.sitePackages}" + ]; + + # * `unset AS` because otherwise the Ceph CMake build errors with + # configure: error: No modern nasm or yasm found as required. Nasm should be v2.11.01 or later (v2.13 for AVX512) and yasm should be 1.2.0 or later. + # because the code at + # https://github.com/intel/isa-l/blob/633add1b569fe927bace3960d7c84ed9c1b38bb9/configure.ac#L99-L191 + # doesn't even consider using `nasm` or `yasm` but instead uses `$AS` + # from `gcc-wrapper`. + # (Ceph's error message is extra confusing, because it says + # `No modern nasm or yasm found` when in fact it found e.g. `nasm` + # but then uses `$AS` instead. + # * replace /sbin and /bin based paths with direct nix store paths + # * increase the `command` buffer size since 2 nix store paths cannot fit within 128 characters + preConfigure = '' + unset AS + + substituteInPlace src/common/module.c \ + --replace-fail "char command[128];" "char command[256];" \ + --replace-fail "/sbin/modinfo" "${kmod}/bin/modinfo" \ + --replace-fail "/sbin/modprobe" "${kmod}/bin/modprobe" \ + --replace-fail "/bin/grep" "${gnugrep}/bin/grep" + + # Patch remount to use full path to mount(8), otherwise ceph-fuse fails when run + # from a systemd unit for example. + substituteInPlace src/client/fuse_ll.cc \ + --replace-fail "mount -i -o remount" "${util-linux}/bin/mount -i -o remount" + + substituteInPlace systemd/*.service.in \ + --replace-quiet "/bin/kill" "${util-linux}/bin/kill" + + substituteInPlace src/{ceph-osd-prestart.sh,ceph-post-file.in,init-ceph.in} \ + --replace-fail "GETOPT=/usr/local/bin/getopt" "GETOPT=${getopt}/bin/getopt" \ + --replace-fail "GETOPT=getopt" "GETOPT=${getopt}/bin/getopt" + + # The install target needs to be in PYTHONPATH for "*.pth support" check to succeed + export PYTHONPATH=$PYTHONPATH:$lib/$sitePackages:$out/$sitePackages + patchShebangs src/ + ''; + + cmakeFlags = [ + "-DCMAKE_INSTALL_DATADIR=${placeholder "lib"}/lib" + + "-DWITH_CEPHFS_SHELL:BOOL=ON" + "-DWITH_SYSTEMD:BOOL=${if withSystemd then "ON" else "OFF"}" + "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system" + # `WITH_JAEGER` requires `thrift` as a depenedncy (fine), but the build fails with: + # CMake Error at src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-Release.cmake:49 (message): + # Command failed: 2 + # + # 'make' 'opentelemetry_trace' 'opentelemetry_exporter_jaeger_trace' + # + # See also + # + # /build/ceph-18.2.0/build/src/opentelemetry-cpp/src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-*.log + # and that file contains: + # /build/ceph-18.2.0/src/jaegertracing/opentelemetry-cpp/exporters/jaeger/src/TUDPTransport.cc: In member function 'virtual void opentelemetry::v1::exporter::jaeger::TUDPTransport::close()': + # /build/ceph-18.2.0/src/jaegertracing/opentelemetry-cpp/exporters/jaeger/src/TUDPTransport.cc:71:7: error: '::close' has not been declared; did you mean 'pclose'? + # 71 | ::THRIFT_CLOSESOCKET(socket_); + # | ^~~~~~~~~~~~~~~~~~ + # Looks like `close()` is somehow not included. + # But the relevant code is already removed in `open-telemetry` 1.10: https://github.com/open-telemetry/opentelemetry-cpp/pull/2031 + # So it's probably not worth trying to fix that for this Ceph version, + # and instead just disable Ceph's Jaeger support. + "-DWITH_JAEGER:BOOL=OFF" + "-DWITH_TESTS:BOOL=OFF" + + # Use our own libraries, where possible + "-DWITH_SYSTEM_ARROW:BOOL=ON" # Only used if other options enable Arrow support. + "-DWITH_SYSTEM_BOOST:BOOL=ON" + "-DWITH_SYSTEM_GTEST:BOOL=ON" + "-DWITH_SYSTEM_ROCKSDB:BOOL=ON" + "-DWITH_SYSTEM_UTF8PROC:BOOL=ON" + "-DWITH_SYSTEM_ZSTD:BOOL=ON" + + # Use our own python libraries too, see: + # https://github.com/NixOS/nixpkgs/pull/344993#issuecomment-2391046329 + "-DCEPHADM_BUNDLED_DEPENDENCIES=none" + + # Upstream enables UADK by default on aarch64, but not other platforms. + # This causes issues when it tries to fetch the repository on aarch64. + # We disable this by default on all platforms, with future PRs adding proper with flags. + "-DWITH_UADK:BOOL=OFF" + + # TODO breaks with sandbox, tries to download stuff with npm + "-DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF" + # WITH_XFS has been set default ON from Ceph 16, keeping it optional in nixpkgs for now + "-DWITH_XFS=${if optLibxfs != null then "ON" else "OFF"}" + ] + ++ lib.optional stdenv.hostPlatform.isLinux "-DWITH_SYSTEM_LIBURING=ON"; + + preBuild = + # The legacy-option-headers target is not correctly empbedded in the build graph. + # It also contains some internal race conditions that we work around by building with `-j 1`. + # Upstream discussion for additional context at https://tracker.ceph.com/issues/63402. + '' + cmake --build . --target legacy-option-headers -j 1 + ''; + + postFixup = '' + wrapPythonPrograms + # dashboard-related ceph-mgr functionality needs access to the *rados-admin* binary in addition to the python part + wrapProgram $out/bin/ceph-mgr \ + --prefix PYTHONPATH : "$(toPythonPath ${placeholder "out"}):$(toPythonPath ${ceph-python-env})" \ + --prefix PATH : $out/bin + + # Test that ceph-volume exists since the build system has a tendency to + # silently drop it with misconfigurations. + test -f $out/bin/ceph-volume + + # Assert that getopt patch from preConfigure covered all instances + ! grep -F -r 'GETOPT=getopt' $out + ! grep -F -r 'GETOPT=/usr/local/bin/getopt' $out + + mkdir -p $client/{bin,etc,$sitePackages,share/bash-completion/completions} + cp -r $out/bin/{ceph,.ceph-wrapped,rados,rbd,rbdmap} $client/bin + cp -r $out/bin/ceph-{authtool,conf,dencoder,rbdnamer,syn} $client/bin + cp -r $out/bin/rbd-replay* $client/bin + cp -r $out/sbin/mount.ceph $client/bin + cp -r $out/sbin/mount.fuse.ceph $client/bin + ln -s bin $client/sbin + cp -r $out/$sitePackages/* $client/$sitePackages + cp -r $out/etc/bash_completion.d $client/share/bash-completion/completions + # wrapPythonPrograms modifies .ceph-wrapped, so lets just update its paths + substituteInPlace $client/bin/ceph --replace-fail $out $client + substituteInPlace $client/bin/.ceph-wrapped --replace-fail $out $client + ''; + + outputs = [ + "out" + "lib" + "client" + "dev" + "doc" + "man" + ]; + + doCheck = false; # uses pip to install things from the internet + + # Takes 7+h to build with 2 cores. + requiredSystemFeatures = [ "big-parallel" ]; + + meta = ceph-meta "Distributed storage system"; + + passthru = { + inherit (ceph-src) version; + inherit overrideScope; + inherit arrow-cpp; + pythonEnv = ceph-python-env; + tests = { + inherit (nixosTests) + ceph-multi-node + ceph-single-node + ceph-single-node-bluestore + ceph-single-node-bluestore-dmcrypt + ; + }; + }; +} diff --git a/pkgs/by-name/ce/ceph/meta.nix b/pkgs/by-name/ce/ceph/meta.nix new file mode 100644 index 000000000000..1fc76a36d0a1 --- /dev/null +++ b/pkgs/by-name/ce/ceph/meta.nix @@ -0,0 +1,24 @@ +{ lib }: +description: { + homepage = "https://ceph.io/en/"; + inherit description; + license = with lib.licenses; [ + lgpl21 + gpl2Only + bsd3 + mit + publicDomain + ]; + maintainers = with lib.maintainers; [ + adev + ak + johanot + krav + nh2 + benaryorg + ]; + platforms = [ + "x86_64-linux" + "aarch64-linux" + ]; +} diff --git a/pkgs/by-name/ce/ceph/old-python-packages/cryptography-vectors.nix b/pkgs/by-name/ce/ceph/old-python-packages/cryptography-vectors.nix deleted file mode 100644 index 74bc41127e8e..000000000000 --- a/pkgs/by-name/ce/ceph/old-python-packages/cryptography-vectors.nix +++ /dev/null @@ -1,36 +0,0 @@ -# This older version only exists because `ceph` needs it, see `cryptography.nix`. -{ - buildPythonPackage, - fetchPypi, - lib, - cryptography, -}: - -buildPythonPackage rec { - pname = "cryptography-vectors"; - # The test vectors must have the same version as the cryptography package - inherit (cryptography) version; - format = "setuptools"; - - src = fetchPypi { - pname = "cryptography_vectors"; - inherit version; - hash = "sha256-hGBwa1tdDOSoVXHKM4nPiPcAu2oMYTPcn+D1ovW9oEE="; - }; - - # No tests included - doCheck = false; - - pythonImportsCheck = [ "cryptography_vectors" ]; - - meta = { - description = "Test vectors for the cryptography package"; - homepage = "https://cryptography.io/en/latest/development/test-vectors/"; - # Source: https://github.com/pyca/cryptography/tree/master/vectors; - license = with lib.licenses; [ - asl20 - bsd3 - ]; - maintainers = with lib.maintainers; [ nh2 ]; - }; -} diff --git a/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix b/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix deleted file mode 100644 index 5fdee3f12b7f..000000000000 --- a/pkgs/by-name/ce/ceph/old-python-packages/cryptography.nix +++ /dev/null @@ -1,136 +0,0 @@ -# This older version only exists because `ceph` needs it, see its package. -{ - lib, - stdenv, - callPackage, - buildPythonPackage, - fetchPypi, - fetchpatch, - rustPlatform, - cargo, - rustc, - setuptools-rust, - openssl, - isPyPy, - cffi, - pkg-config, - pytestCheckHook, - pretend, - libiconv, - iso8601, - py, - pytz, - hypothesis, -}: - -let - cryptography-vectors = callPackage ./cryptography-vectors.nix { }; -in -buildPythonPackage rec { - pname = "cryptography"; - version = "40.0.1"; # Also update the hash in vectors.nix - format = "setuptools"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-KAPy+LHpX2FEGZJsfm9V2CivxhTKXtYVQ4d65mjMNHI="; - }; - - cargoDeps = rustPlatform.fetchCargoVendor { - inherit - pname - version - src - cargoRoot - ; - hash = "sha256-pZHu3Oo9DWRAtldU0UvrH1FIg0bEvyfizPUhj9IBL58="; - }; - - # Since Cryptography v40 is quite outdated, we need to backport - # security fixes that are only available in newer versions. - patches = [ - # Fix https://nvd.nist.gov/vuln/detail/CVE-2023-49083 which has no upstream backport. - # See https://github.com/pyca/cryptography/commit/f09c261ca10a31fe41b1262306db7f8f1da0e48a#diff-f5134bf8f3cf0a5cc8601df55e50697acc866c603a38caff98802bd8e17976c5R1893 - ./python-cryptography-Cherry-pick-fix-for-CVE-2023-49083-on-cryptography-40.patch - - # Fix https://nvd.nist.gov/vuln/detail/CVE-2024-26130 - # See https://github.com/pyca/cryptography/commit/97d231672763cdb5959a3b191e692a362f1b9e55 - (fetchpatch { - name = "python-cryptography-CVE-2024-26130-dont-crash-when-a-PKCS-12-key-and-cert-dont-match-mmap-mode.patch"; - url = "https://github.com/pyca/cryptography/commit/97d231672763cdb5959a3b191e692a362f1b9e55.patch"; - hash = "sha256-l45NOzOWhHW4nY4OIRpdjYQRvUW8BROGWdpkAtvVn0Y="; - }) - ]; - - postPatch = '' - substituteInPlace pyproject.toml \ - --replace "--benchmark-disable" "" - ''; - - cargoRoot = "src/rust"; - - build-system = [ - setuptools-rust - ]; - - nativeBuildInputs = [ - rustPlatform.cargoSetupHook - cargo - rustc - pkg-config - ] - ++ lib.optionals (!isPyPy) [ cffi ]; - - buildInputs = [ - openssl - ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ - libiconv - ]; - - propagatedBuildInputs = lib.optionals (!isPyPy) [ cffi ]; - - nativeCheckInputs = [ - cryptography-vectors - hypothesis - iso8601 - pretend - py - pytestCheckHook - pytz - ]; - - pytestFlags = [ "--disable-pytest-warnings" ]; - - disabledTestPaths = [ - # save compute time by not running benchmarks - "tests/bench" - # aarch64-darwin forbids W+X memory, but this tests depends on it: - # * https://cffi.readthedocs.io/en/latest/using.html#callbacks - # furthermore, this test fails with OpenSSL 3.6.0, probably due to: - # * https://github.com/openssl/openssl/issues/28757 - # * https://github.com/openssl/openssl/issues/28770 - # * https://github.com/openssl/openssl/issues/28888 - "tests/hazmat/backends/test_openssl_memleak.py" - ]; - - meta = { - description = "Package which provides cryptographic recipes and primitives"; - longDescription = '' - Cryptography includes both high level recipes and low level interfaces to - common cryptographic algorithms such as symmetric ciphers, message - digests, and key derivation functions. - Our goal is for it to be your "cryptographic standard library". It - supports Python 2.7, Python 3.5+, and PyPy 5.4+. - ''; - homepage = "https://github.com/pyca/cryptography"; - changelog = - "https://cryptography.io/en/latest/changelog/#v" + lib.replaceStrings [ "." ] [ "-" ] version; - license = with lib.licenses; [ - asl20 - bsd3 - psfl - ]; - maintainers = with lib.maintainers; [ nh2 ]; - }; -} diff --git a/pkgs/by-name/ce/ceph/old-python-packages/python-cryptography-Cherry-pick-fix-for-CVE-2023-49083-on-cryptography-40.patch b/pkgs/by-name/ce/ceph/old-python-packages/python-cryptography-Cherry-pick-fix-for-CVE-2023-49083-on-cryptography-40.patch deleted file mode 100644 index 7ca05cf7450f..000000000000 --- a/pkgs/by-name/ce/ceph/old-python-packages/python-cryptography-Cherry-pick-fix-for-CVE-2023-49083-on-cryptography-40.patch +++ /dev/null @@ -1,44 +0,0 @@ -commit 08dbad8552ecca85d3e38072f94eb864b143d218 -Author: Niklas Hambüchen -Date: Mon Jan 22 12:52:06 2024 +0000 - - Cherry-pick fix for CVE-2023-49083 - - Cherry-Picked-From: f09c261ca10a31fe41b1262306db7f8f1da0e48a - Cherry-Picked-By: Niklas Hambüchen - -diff --git a/src/cryptography/hazmat/backends/openssl/backend.py b/src/cryptography/hazmat/backends/openssl/backend.py -index a3fe1bce4..58e7207c4 100644 ---- a/src/cryptography/hazmat/backends/openssl/backend.py -+++ b/src/cryptography/hazmat/backends/openssl/backend.py -@@ -2383,9 +2383,12 @@ class Backend: - _Reasons.UNSUPPORTED_SERIALIZATION, - ) - -+ certs: list[x509.Certificate] = [] -+ if p7.d.sign == self._ffi.NULL: -+ return certs -+ - sk_x509 = p7.d.sign.cert - num = self._lib.sk_X509_num(sk_x509) -- certs = [] - for i in range(num): - x509 = self._lib.sk_X509_value(sk_x509, i) - self.openssl_assert(x509 != self._ffi.NULL) -diff --git a/tests/hazmat/primitives/test_pkcs7.py b/tests/hazmat/primitives/test_pkcs7.py -index 4e61c5ef5..d8170bfb9 100644 ---- a/tests/hazmat/primitives/test_pkcs7.py -+++ b/tests/hazmat/primitives/test_pkcs7.py -@@ -89,6 +89,12 @@ class TestPKCS7Loading: - mode="rb", - ) - -+ def test_load_pkcs7_empty_certificates(self, backend): -+ der = b"\x30\x0B\x06\x09\x2A\x86\x48\x86\xF7\x0D\x01\x07\x02" -+ -+ certificates = pkcs7.load_der_pkcs7_certificates(der) -+ assert certificates == [] -+ - - # We have no public verification API and won't be adding one until we get - # some requirements from users so this function exists to give us basic diff --git a/pkgs/by-name/ce/ceph/old-python-packages/trustme.nix b/pkgs/by-name/ce/ceph/old-python-packages/trustme.nix deleted file mode 100644 index bad001851c96..000000000000 --- a/pkgs/by-name/ce/ceph/old-python-packages/trustme.nix +++ /dev/null @@ -1,49 +0,0 @@ -# This older version only exists because `ceph` needs it, see its package. -{ - lib, - buildPythonPackage, - cryptography, - fetchPypi, - idna, - pyopenssl, - pytestCheckHook, - service-identity, -}: - -buildPythonPackage rec { - pname = "trustme"; - version = "1.1.0"; - format = "setuptools"; - - src = fetchPypi { - inherit pname version; - hash = "sha256-U3Wtf7QnB0vslWWS4NTuKkz02miTThukvPQhcSa8ReY="; - }; - - propagatedBuildInputs = [ - cryptography - idna - ]; - - nativeCheckInputs = [ - pyopenssl - pytestCheckHook - service-identity - ]; - - # Some of the tests use localhost networking. - __darwinAllowLocalNetworking = true; - - pythonImportsCheck = [ "trustme" ]; - - meta = { - description = "High quality TLS certs while you wait, for the discerning tester"; - homepage = "https://github.com/python-trio/trustme"; - changelog = "https://trustme.readthedocs.io/en/latest/#change-history"; - license = with lib.licenses; [ - mit - asl20 - ]; - maintainers = with lib.maintainers; [ jfly ]; - }; -} diff --git a/pkgs/by-name/ce/ceph/package.nix b/pkgs/by-name/ce/ceph/package.nix index 0309d5af5d95..38887c8384f3 100644 --- a/pkgs/by-name/ce/ceph/package.nix +++ b/pkgs/by-name/ce/ceph/package.nix @@ -1,664 +1,6 @@ -{ - lib, - stdenv, - runCommand, - fetchurl, - fetchFromGitHub, - fetchPypi, - fetchpatch2, - callPackage, - - # Build time - autoconf, - automake, - cmake, - ensureNewerSourcesHook, - # To see which `fmt` version Ceph upstream recommends, check its `src/fmt` submodule. - # - # Ceph does not currently build with `fmt_10`; see https://github.com/NixOS/nixpkgs/issues/281027#issuecomment-1899128557 - # If we want to switch for that before upstream fixes it, use this patch: - # https://github.com/NixOS/nixpkgs/pull/281858#issuecomment-1899648638 - fmt_9, - git, - libtool, - makeWrapper, - nasm, - pkg-config, - which, - openssl, - - # Tests - nixosTests, - - # Runtime dependencies - - # Remove once Ceph supports arrow-cpp >= 20, see: - # * https://tracker.ceph.com/issues/71269 - # * https://github.com/NixOS/nixpkgs/issues/406306 - ceph-arrow-cpp ? callPackage ./arrow-cpp-19.nix { }, - babeltrace, - # Note when trying to upgrade boost: - # * When upgrading Ceph, it's recommended to check which boost version Ceph uses on Fedora, - # and default to that. - # * The version that Ceph downloads if `-DWITH_SYSTEM_BOOST:BOOL=ON` is not given - # is declared in `cmake/modules/BuildBoost.cmake` line `set(boost_version ...)`. - # - # If you want to upgrade to boost >= 1.86, you need a Ceph version that - # has this PR in: - # https://github.com/ceph/ceph/pull/61312 - boost183, - bzip2, - cryptsetup, - cunit, - e2fsprogs, - doxygen, - getopt, - gperf, - graphviz, - gnugrep, - gtest, - icu, - kmod, - libcap, - libcap_ng, - libnbd, - libnl, - libxml2, - lmdb, - lttng-ust, - # Ceph currently requires >= 5.3 - lua5_4, - lvm2, - lz4, - oath-toolkit, - openldap, - parted, - python311, # to get an idea which Python versions are supported by Ceph, see upstream `do_cmake.sh` (see `PYBUILD=` variable) - rdkafka, - rocksdb, - snappy, - openssh, - sqlite, - utf8proc, - xfsprogs, - zlib, - zstd, - - # Dependencies of overridden Python dependencies, hopefully we can remove these soon. - rustPlatform, - - # Optional Dependencies - curl ? null, - expat ? null, - fuse ? null, - libatomic_ops ? null, - libedit ? null, - libs3 ? null, - yasm ? null, - - # Mallocs - gperftools ? null, - jemalloc ? null, - - # Crypto Dependencies - cryptopp ? null, - nspr ? null, - nss ? null, - - # Linux Only Dependencies - linuxHeaders, - systemd, - util-linux, - libuuid, - udev, - keyutils, - rdma-core, - rabbitmq-c, - libaio ? null, - libxfs ? null, - liburing ? null, - zfs ? null, - withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, -}: - -# We must have one crypto library -assert cryptopp != null || (nss != null && nspr != null); +{ callPackage }: let - shouldUsePkg = - pkg: if pkg != null && lib.meta.availableOn stdenv.hostPlatform pkg then pkg else null; - - optYasm = shouldUsePkg yasm; - optExpat = shouldUsePkg expat; - optCurl = shouldUsePkg curl; - optFuse = shouldUsePkg fuse; - optLibedit = shouldUsePkg libedit; - optLibatomic_ops = shouldUsePkg libatomic_ops; - optLibs3 = shouldUsePkg libs3; - - optJemalloc = shouldUsePkg jemalloc; - optGperftools = shouldUsePkg gperftools; - - optCryptopp = shouldUsePkg cryptopp; - optNss = shouldUsePkg nss; - optNspr = shouldUsePkg nspr; - - optLibaio = shouldUsePkg libaio; - optLibxfs = shouldUsePkg libxfs; - optZfs = shouldUsePkg zfs; - - # Downgrade rocksdb, 7.10 breaks ceph - rocksdb' = rocksdb.overrideAttrs { - version = "7.9.2"; - src = fetchFromGitHub { - owner = "facebook"; - repo = "rocksdb"; - tag = "v7.9.2"; - hash = "sha256-5P7IqJ14EZzDkbjaBvbix04ceGGdlWBuVFH/5dpD5VM="; - }; - }; - - hasRadosgw = optExpat != null && optCurl != null && optLibedit != null; - - # Malloc implementation (can be jemalloc, tcmalloc or null) - malloc = if optJemalloc != null then optJemalloc else optGperftools; - - # We prefer nss over cryptopp - cryptoStr = - if optNss != null && optNspr != null then - "nss" - else if optCryptopp != null then - "cryptopp" - else - "none"; - - cryptoLibsMap = { - nss = [ - optNss - optNspr - ]; - cryptopp = [ optCryptopp ]; - none = [ ]; - }; - - getMeta = description: { - homepage = "https://ceph.io/en/"; - inherit description; - license = with lib.licenses; [ - lgpl21 - gpl2Only - bsd3 - mit - publicDomain - ]; - maintainers = with lib.maintainers; [ - adev - ak - johanot - krav - nh2 - benaryorg - ]; - platforms = [ - "x86_64-linux" - "aarch64-linux" - ]; - }; - - ceph-common = - with python.pkgs; - buildPythonPackage { - pname = "ceph-common"; - format = "setuptools"; - inherit src version; - - sourceRoot = "ceph-${version}/src/python-common"; - - propagatedBuildInputs = [ - pyyaml - ]; - - nativeCheckInputs = [ - pytestCheckHook - ]; - - disabledTests = [ - # requires network access - "test_valid_addr" - ]; - - meta = getMeta "Ceph common module for code shared by manager modules"; - }; - - # Watch out for python <> boost compatibility - python = python311.override { - self = python; - packageOverrides = - self: super: - let - bcryptOverrideVersion = "4.0.1"; - in - { - # Ceph does not support the following yet: - # * `bcrypt` > 4.0 - # * `cryptography` > 40 - # See: - # * https://github.com/NixOS/nixpkgs/pull/281858#issuecomment-1899358602 - # * Upstream issue: https://tracker.ceph.com/issues/63529 - # > Python Sub-Interpreter Model Used by ceph-mgr Incompatible With Python Modules Based on PyO3 - # * Moved to issue: https://tracker.ceph.com/issues/64213 - # > MGR modules incompatible with later PyO3 versions - PyO3 modules may only be initialized once per interpreter process - - bcrypt = super.bcrypt.overridePythonAttrs (old: rec { - pname = "bcrypt"; - version = bcryptOverrideVersion; - src = fetchPypi { - inherit pname version; - hash = "sha256-J9N1kDrIJhz+QEf2cJ0W99GNObHskqr3KvmJVSplDr0="; - }; - cargoRoot = "src/_bcrypt"; - cargoDeps = rustPlatform.fetchCargoVendor { - inherit - pname - version - src - cargoRoot - ; - hash = "sha256-8PyCgh/rUO8uynzGdgylAsb5k55dP9fCnf40UOTCR/M="; - }; - }); - - # We pin the older `cryptography` 40 here; - # this also forces us to pin other packages, see below - cryptography = self.callPackage ./old-python-packages/cryptography.nix { }; - - # This is the most recent version of `pyopenssl` that's still compatible with `cryptography` 40. - # See https://github.com/NixOS/nixpkgs/pull/281858#issuecomment-1899358602 - # and https://github.com/pyca/pyopenssl/blob/d9752e44127ba36041b045417af8a0bf16ec4f1e/CHANGELOG.rst#2320-2023-05-30 - pyopenssl = super.pyopenssl.overridePythonAttrs (old: rec { - version = "23.1.1"; - src = fetchPypi { - pname = "pyOpenSSL"; - inherit version; - hash = "sha256-hBSYub7GFiOxtsR+u8AjZ8B9YODhlfGXkIF/EMyNsLc="; - }; - disabledTests = old.disabledTests or [ ] ++ [ - "test_export_md5_digest" - ]; - disabledTestPaths = old.disabledTestPaths or [ ] ++ [ - "tests/test_ssl.py" - ]; - propagatedBuildInputs = old.propagatedBuildInputs or [ ] ++ [ - self.flaky - ]; - # hack: avoid building docs due to incompatibility with current sphinx - nativeBuildInputs = [ openssl ]; # old.nativeBuildInputs but without sphinx* - outputs = lib.filter (o: o != "doc") old.outputs; - }); - - # This is the most recent version of `trustme` that's still compatible with `cryptography` 40. - # See https://github.com/NixOS/nixpkgs/issues/359723 - # and https://github.com/python-trio/trustme/commit/586f7759d5c27beb44da60615a71848eb2a5a490 - trustme = self.callPackage ./old-python-packages/trustme.nix { }; - - fastapi = super.fastapi.overridePythonAttrs (old: { - # Flaky test: - # ResourceWarning: Unclosed - # Unclear whether it's flaky in general or only in this overridden package set. - doCheck = false; - }); - - # Ceph does not support `kubernetes` >= 19, see: - # https://github.com/NixOS/nixpkgs/pull/281858#issuecomment-1900324090 - kubernetes = super.kubernetes.overridePythonAttrs (old: rec { - version = "18.20.0"; - src = fetchFromGitHub { - owner = "kubernetes-client"; - repo = "python"; - rev = "v${version}"; - sha256 = "1sawp62j7h0yksmg9jlv4ik9b9i1a1w9syywc9mv8x89wibf5ql1"; - fetchSubmodules = true; - }; - }); - - }; - }; - - boost' = boost183.override { - enablePython = true; - inherit python; - }; - - # TODO: split this off in build and runtime environment - ceph-python-env = python.withPackages ( - ps: with ps; [ - ceph-common - - # build time - cython_0 - - # debian/control - bcrypt - cherrypy - influxdb - jinja2 - kubernetes - natsort - numpy - pecan - prettytable - pyjwt - pyopenssl - python-dateutil - pyyaml - requests - routes - scikit-learn - scipy - setuptools - sphinx - virtualenv - werkzeug - - # src/cephadm/zipapp-reqs.txt - markupsafe - - # src/pybind/mgr/requirements-required.txt - cryptography - jsonpatch - - # src/tools/cephfs/shell/setup.py - cmd2 - colorama - ] - ); - inherit (ceph-python-env.python) sitePackages; - - version = "19.2.3"; - src = fetchurl { - url = "https://download.ceph.com/tarballs/ceph-${version}.tar.gz"; - hash = "sha256-zlgp28C81SZbaFJ4yvQk4ZgYz4K/aZqtcISTO8LscSU="; - }; + scope = callPackage ./scope.nix { }; in -stdenv.mkDerivation { - pname = "ceph"; - inherit src version; - - patches = [ - ./boost-1.85.patch - - (fetchpatch2 { - name = "ceph-boost-1.86-uuid.patch"; - url = "https://github.com/ceph/ceph/commit/01306208eac492ee0e67bff143fc32d0551a2a6f.patch?full_index=1"; - hash = "sha256-OnDrr72inzGXXYxPFQevsRZImSvI0uuqFHqtFU2dPQE="; - }) - - # See: - # * - # * - # * - ./boost-1.86-PyModule.patch - - (fetchpatch2 { - name = "ceph-cmake-4.patch"; - url = "https://gitlab.alpinelinux.org/ashpool/aports/-/raw/d22b70eafe33c3daabe4eea6913c5be87d9463ad/community/ceph19/cpp_redis.patch"; - hash = "sha256-wxPIsYt25CjXhJ6kmr/MXwFD58Sl4y4W+r9jAMND+uw="; - }) - - # See: - # * - # * - (fetchpatch2 { - name = "ceph-systemd-sans-cluster-name.patch"; - url = "https://github.com/ceph/ceph/commit/5659920c7c128cb8d9552580dbe23dd167a56c31.patch?full_index=1"; - hash = "sha256-Uch8ZghyTowUvSq0p/RxiVpdG1Yqlww9inpVksO6zyk="; - }) - (fetchpatch2 { - name = "ceph-systemd-prefix.patch"; - url = "https://github.com/ceph/ceph/commit/9b38df488d7101b02afa834ea518fd52076d582a.patch?full_index=1"; - hash = "sha256-VcbJhCGTUdNISBd6P96Mm5M3fFVmZ8r7pMl+srQmnIQ="; - }) - (fetchpatch2 { - name = "ceph-19.2.2-gcc15.patch"; - url = "https://github.com/ceph/ceph/commit/830925f0dd196f920893b1947ae74171a202e825.patch"; - hash = "sha256-bs+noyjiyAjwqfgSHDxdZJnZ/kptOOcz75KMqAaROpg="; - }) - ]; - - nativeBuildInputs = [ - autoconf # `autoreconf` is called, e.g. for `qatlib_ext` - automake # `aclocal` is called, e.g. for `qatlib_ext` - cmake - fmt_9 - git - makeWrapper - libtool # used e.g. for `qatlib_ext` - nasm - pkg-config - python - python.pkgs.python # for the toPythonPath function - python.pkgs.wrapPython - which - (ensureNewerSourcesHook { year = "1980"; }) - # for building docs/man-pages presumably - doxygen - graphviz - ]; - - buildInputs = - cryptoLibsMap.${cryptoStr} - ++ [ - ceph-arrow-cpp - babeltrace - boost' - bzip2 - # Adding `ceph-python-env` here adds the env's `site-packages` to `PYTHONPATH` during the build. - # This is important, otherwise the build system may not find the Python deps and then - # silently skip installing ceph-volume and other Ceph python tools. - ceph-python-env - cryptsetup - cunit - e2fsprogs # according to `debian/control` file, `ceph-volume` is supposed to use it - gperf - gtest - icu - libcap - libnbd - libnl - libxml2 - lmdb - lttng-ust - lua5_4 - lvm2 # according to `debian/control` file, e.g. `pvs` command used by `src/ceph-volume/ceph_volume/api/lvm.py` - lz4 - malloc - oath-toolkit - openldap - optLibatomic_ops - optLibs3 - optYasm - parted # according to `debian/control` file, used by `src/ceph-volume/ceph_volume/util/disk.py` - rdkafka - rocksdb' - snappy - openssh # according to `debian/control` file, `ssh` command used by `cephadm` - sqlite - utf8proc - xfsprogs # according to `debian/control` file, `ceph-volume` is supposed to use it - zlib - zstd - ] - ++ lib.optionals stdenv.hostPlatform.isLinux [ - keyutils - libcap_ng - liburing - libuuid - linuxHeaders - optLibaio - optLibxfs - optZfs - rabbitmq-c - rdma-core - udev - util-linux - ] - ++ lib.optionals hasRadosgw [ - optCurl - optExpat - optFuse - optLibedit - ]; - - # Picked up, amongst others, by `wrapPythonPrograms`. - pythonPath = [ - ceph-python-env - "${placeholder "out"}/${ceph-python-env.sitePackages}" - ]; - - # * `unset AS` because otherwise the Ceph CMake build errors with - # configure: error: No modern nasm or yasm found as required. Nasm should be v2.11.01 or later (v2.13 for AVX512) and yasm should be 1.2.0 or later. - # because the code at - # https://github.com/intel/isa-l/blob/633add1b569fe927bace3960d7c84ed9c1b38bb9/configure.ac#L99-L191 - # doesn't even consider using `nasm` or `yasm` but instead uses `$AS` - # from `gcc-wrapper`. - # (Ceph's error message is extra confusing, because it says - # `No modern nasm or yasm found` when in fact it found e.g. `nasm` - # but then uses `$AS` instead. - # * replace /sbin and /bin based paths with direct nix store paths - # * increase the `command` buffer size since 2 nix store paths cannot fit within 128 characters - preConfigure = '' - unset AS - - substituteInPlace src/common/module.c \ - --replace "char command[128];" "char command[256];" \ - --replace "/sbin/modinfo" "${kmod}/bin/modinfo" \ - --replace "/sbin/modprobe" "${kmod}/bin/modprobe" \ - --replace "/bin/grep" "${gnugrep}/bin/grep" - - # Patch remount to use full path to mount(8), otherwise ceph-fuse fails when run - # from a systemd unit for example. - substituteInPlace src/client/fuse_ll.cc \ - --replace-fail "mount -i -o remount" "${util-linux}/bin/mount -i -o remount" - - substituteInPlace systemd/*.service.in \ - --replace-quiet "/bin/kill" "${util-linux}/bin/kill" - - substituteInPlace src/{ceph-osd-prestart.sh,ceph-post-file.in,init-ceph.in} \ - --replace-fail "GETOPT=/usr/local/bin/getopt" "GETOPT=${getopt}/bin/getopt" \ - --replace-fail "GETOPT=getopt" "GETOPT=${getopt}/bin/getopt" - - # The install target needs to be in PYTHONPATH for "*.pth support" check to succeed - export PYTHONPATH=$PYTHONPATH:$lib/${sitePackages}:$out/${sitePackages} - patchShebangs src/ - ''; - - cmakeFlags = [ - "-DCMAKE_INSTALL_DATADIR=${placeholder "lib"}/lib" - - "-DWITH_CEPHFS_SHELL:BOOL=ON" - "-DWITH_SYSTEMD:BOOL=${if withSystemd then "ON" else "OFF"}" - "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system" - # `WITH_JAEGER` requires `thrift` as a depenedncy (fine), but the build fails with: - # CMake Error at src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-Release.cmake:49 (message): - # Command failed: 2 - # - # 'make' 'opentelemetry_trace' 'opentelemetry_exporter_jaeger_trace' - # - # See also - # - # /build/ceph-18.2.0/build/src/opentelemetry-cpp/src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-*.log - # and that file contains: - # /build/ceph-18.2.0/src/jaegertracing/opentelemetry-cpp/exporters/jaeger/src/TUDPTransport.cc: In member function 'virtual void opentelemetry::v1::exporter::jaeger::TUDPTransport::close()': - # /build/ceph-18.2.0/src/jaegertracing/opentelemetry-cpp/exporters/jaeger/src/TUDPTransport.cc:71:7: error: '::close' has not been declared; did you mean 'pclose'? - # 71 | ::THRIFT_CLOSESOCKET(socket_); - # | ^~~~~~~~~~~~~~~~~~ - # Looks like `close()` is somehow not included. - # But the relevant code is already removed in `open-telemetry` 1.10: https://github.com/open-telemetry/opentelemetry-cpp/pull/2031 - # So it's probably not worth trying to fix that for this Ceph version, - # and instead just disable Ceph's Jaeger support. - "-DWITH_JAEGER:BOOL=OFF" - "-DWITH_TESTS:BOOL=OFF" - - # Use our own libraries, where possible - "-DWITH_SYSTEM_ARROW:BOOL=ON" # Only used if other options enable Arrow support. - "-DWITH_SYSTEM_BOOST:BOOL=ON" - "-DWITH_SYSTEM_GTEST:BOOL=ON" - "-DWITH_SYSTEM_ROCKSDB:BOOL=ON" - "-DWITH_SYSTEM_UTF8PROC:BOOL=ON" - "-DWITH_SYSTEM_ZSTD:BOOL=ON" - - # Use our own python libraries too, see: - # https://github.com/NixOS/nixpkgs/pull/344993#issuecomment-2391046329 - "-DCEPHADM_BUNDLED_DEPENDENCIES=none" - - # TODO breaks with sandbox, tries to download stuff with npm - "-DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF" - # WITH_XFS has been set default ON from Ceph 16, keeping it optional in nixpkgs for now - "-DWITH_XFS=${if optLibxfs != null then "ON" else "OFF"}" - ] - ++ lib.optional stdenv.hostPlatform.isLinux "-DWITH_SYSTEM_LIBURING=ON"; - - preBuild = - # The legacy-option-headers target is not correctly empbedded in the build graph. - # It also contains some internal race conditions that we work around by building with `-j 1`. - # Upstream discussion for additional context at https://tracker.ceph.com/issues/63402. - '' - cmake --build . --target legacy-option-headers -j 1 - ''; - - postFixup = '' - wrapPythonPrograms - wrapProgram $out/bin/ceph-mgr --prefix PYTHONPATH ":" "$(toPythonPath ${placeholder "out"}):$(toPythonPath ${ceph-python-env})" - - # Test that ceph-volume exists since the build system has a tendency to - # silently drop it with misconfigurations. - test -f $out/bin/ceph-volume - - # Assert that getopt patch from preConfigure covered all instances - ! grep -F -r 'GETOPT=getopt' $out - ! grep -F -r 'GETOPT=/usr/local/bin/getopt' $out - - mkdir -p $client/{bin,etc,${sitePackages},share/bash-completion/completions} - cp -r $out/bin/{ceph,.ceph-wrapped,rados,rbd,rbdmap} $client/bin - cp -r $out/bin/ceph-{authtool,conf,dencoder,rbdnamer,syn} $client/bin - cp -r $out/bin/rbd-replay* $client/bin - cp -r $out/sbin/mount.ceph $client/bin - cp -r $out/sbin/mount.fuse.ceph $client/bin - ln -s bin $client/sbin - cp -r $out/${sitePackages}/* $client/${sitePackages} - cp -r $out/etc/bash_completion.d $client/share/bash-completion/completions - # wrapPythonPrograms modifies .ceph-wrapped, so lets just update its paths - substituteInPlace $client/bin/ceph --replace $out $client - substituteInPlace $client/bin/.ceph-wrapped --replace $out $client - ''; - - outputs = [ - "out" - "lib" - "client" - "dev" - "doc" - "man" - ]; - - doCheck = false; # uses pip to install things from the internet - - # Takes 7+h to build with 2 cores. - requiredSystemFeatures = [ "big-parallel" ]; - - meta = getMeta "Distributed storage system"; - - passthru = { - inherit version; - inherit python; # to be able to test our overridden packages above individually with `nix-build -A` - arrow-cpp = ceph-arrow-cpp; - tests = { - inherit (nixosTests) - ceph-multi-node - ceph-single-node - ceph-single-node-bluestore - ceph-single-node-bluestore-dmcrypt - ; - }; - }; -} +scope.ceph diff --git a/pkgs/by-name/ce/ceph/patches/0001-mgr-python-interpreter.patch b/pkgs/by-name/ce/ceph/patches/0001-mgr-python-interpreter.patch new file mode 100644 index 000000000000..b2bdb572bba2 --- /dev/null +++ b/pkgs/by-name/ce/ceph/patches/0001-mgr-python-interpreter.patch @@ -0,0 +1,89 @@ +From 20df261e92fd8502398b35456f53761a9bb5ef73 Mon Sep 17 00:00:00 2001 +From: benaryorg +Date: Fri, 20 Mar 2026 02:46:58 +0000 +Subject: [PATCH 1/2] mgr: python interpreter path fix + +The macro actually created a wide string with the *name* of the constant, not its content. +Thus Python failed to find its interpreter instead using `stat(2)` on every element in *PATH* such as `/usr/bin/MGR_PYTHON_EXECUTABLE`. +As Python also offers a direct way to hand over the C-string, we can let Python handle the conversion directly, getting rid of the macro entirely. + +Signed-off-by: benaryorg +--- + src/mgr/PyModuleRegistry.cc | 5 ++--- + 1 file changed, 2 insertions(+), 3 deletions(-) + +diff --git a/src/mgr/PyModuleRegistry.cc b/src/mgr/PyModuleRegistry.cc +index b340fc64e374929f720eb9ac5d4e7f274707add8..51ab641bf7f7097d0c97ad554880a9cfb1ebd3f2 100644 +--- a/src/mgr/PyModuleRegistry.cc ++++ b/src/mgr/PyModuleRegistry.cc +@@ -47,7 +47,6 @@ void PyModuleRegistry::init() + std::lock_guard locker(lock); + + // Set up global python interpreter +-#define WCHAR(s) L ## #s + PyConfig py_config; + // do not enable isolated mode, otherwise we would not be able to have access + // to the site packages. since we cannot import any module before initializing +@@ -68,7 +67,8 @@ void PyModuleRegistry::init() + py_config.pathconfig_warnings = 0; + + PyStatus status; +- status = PyConfig_SetString(&py_config, &py_config.program_name, WCHAR(MGR_PYTHON_EXECUTABLE)); ++ status = PyConfig_SetBytesString(&py_config, &py_config.program_name, MGR_PYTHON_EXECUTABLE); ++ dout(10) << "set PyConfig program_name to " << std::quoted(MGR_PYTHON_EXECUTABLE) << dendl; + ceph_assertf(!PyStatus_Exception(status), "PyConfig_SetString: %s:%s", status.func, status.err_msg); + // Some python modules do not cope with an unpopulated argv, so lets + // fake one. This step also picks up site-packages into sys.path. +@@ -91,7 +91,6 @@ void PyModuleRegistry::init() + dout(10) << "set PYTHONPATH to " << std::quoted(pythonpath_env) << dendl; + status = Py_InitializeFromConfig(&py_config); + ceph_assertf(!PyStatus_Exception(status), "Py_InitializeFromConfig: %s:%s", status.func, status.err_msg); +-#undef WCHAR + + // Drop the GIL and remember the main thread state (current + // thread state becomes NULL) +-- +2.53.0 + + +From 344d422033cdae87b2bd7768f6bd725b94b2f3bd Mon Sep 17 00:00:00 2001 +From: benaryorg +Date: Fri, 20 Mar 2026 02:49:12 +0000 +Subject: [PATCH 2/2] cryptotools: use correct interpreter + +Python has support for multiple installed versions and has had so for a long time. +The Python version that *ceph-mgr* (for instance) was compiled against may not be the default *python3* from *PATH*. +This is the case when testing against a different version, but it is also the case on systems which do not have Python installed globally, or ship the Python version used by Ceph separately (to avoid compatibility issues for instance). + +Luckily *ceph-mgr* has access to the exact Python version and interpreter via CMake already, and it passes this through to Python via the *program_name* setting. +This sets the interpreter appropriately and allows us to use that instead. + +Signed-off-by: benaryorg +--- + src/python-common/ceph/cryptotools/remote.py | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/src/python-common/ceph/cryptotools/remote.py b/src/python-common/ceph/cryptotools/remote.py +index 2574b4ecdac215624e43312a799564dfed81d4fe..e4efe56466fe1b7e1a786eda2041180aca6186ed 100644 +--- a/src/python-common/ceph/cryptotools/remote.py ++++ b/src/python-common/ceph/cryptotools/remote.py +@@ -23,6 +23,7 @@ from typing import List, Union, Dict, Any, Optional, Tuple + import json + import logging + import subprocess ++import sys + + from .caller import CryptoCaller, CryptoCallError + +@@ -62,7 +63,7 @@ class ProcessCryptoCaller(CryptoCaller): + _input = None + else: + _input = input_data.encode() +- cmd = ['python3', '-m', _ctmodule] + list(args) ++ cmd = [sys.executable, '-m', _ctmodule] + list(args) + logger.warning('CryptoCaller will run: %r', cmd) + try: + return subprocess.run( +-- +2.53.0 + diff --git a/pkgs/by-name/ce/ceph/python-common.nix b/pkgs/by-name/ce/ceph/python-common.nix new file mode 100644 index 000000000000..1bbc30244875 --- /dev/null +++ b/pkgs/by-name/ce/ceph/python-common.nix @@ -0,0 +1,29 @@ +{ + ceph-python, + ceph-meta, + ceph-src, +}: + +ceph-python.pkgs.buildPythonPackage { + pname = "ceph-common"; + format = "setuptools"; + inherit (ceph-src) version; + src = ceph-src; + + sourceRoot = "${ceph-src.name}/src/python-common"; + + propagatedBuildInputs = with ceph-python.pkgs; [ + pyyaml + ]; + + nativeCheckInputs = with ceph-python.pkgs; [ + pytestCheckHook + ]; + + disabledTests = [ + # requires network access + "test_valid_addr" + ]; + + meta = ceph-meta "Ceph common module for code shared by manager modules"; +} diff --git a/pkgs/by-name/ce/ceph/python-env.nix b/pkgs/by-name/ce/ceph/python-env.nix new file mode 100644 index 000000000000..8d50840196aa --- /dev/null +++ b/pkgs/by-name/ce/ceph/python-env.nix @@ -0,0 +1,50 @@ +{ + ceph-python, + ceph-python-common, +}: + +# TODO: split this off in build and runtime environment +ceph-python.withPackages ( + ps: with ps; [ + ceph-python-common + + # build time + cython_0 + + # debian/control + bcrypt + cherrypy + influxdb + jinja2 + jmespath + kubernetes + natsort + numpy + pecan + prettytable + pyjwt + pyopenssl + python-dateutil + pyyaml + requests + routes + scikit-learn + scipy + setuptools + sphinx + virtualenv + werkzeug + xmltodict + + # src/cephadm/zipapp-reqs.txt + markupsafe + + # src/pybind/mgr/requirements-required.txt + cryptography + jsonpatch + + # src/tools/cephfs/shell/setup.py + cmd2 + colorama + ] +) diff --git a/pkgs/by-name/ce/ceph/rocksdb.nix b/pkgs/by-name/ce/ceph/rocksdb.nix new file mode 100644 index 000000000000..27a317029ef2 --- /dev/null +++ b/pkgs/by-name/ce/ceph/rocksdb.nix @@ -0,0 +1,14 @@ +{ + rocksdb, + fetchFromGitHub, +}: + +rocksdb.overrideAttrs rec { + version = "7.9.2"; + src = fetchFromGitHub { + owner = "facebook"; + repo = "rocksdb"; + tag = "v${version}"; + hash = "sha256-5P7IqJ14EZzDkbjaBvbix04ceGGdlWBuVFH/5dpD5VM="; + }; +} diff --git a/pkgs/by-name/ce/ceph/scope.nix b/pkgs/by-name/ce/ceph/scope.nix new file mode 100644 index 000000000000..6efdb5319cdf --- /dev/null +++ b/pkgs/by-name/ce/ceph/scope.nix @@ -0,0 +1,32 @@ +{ lib, pkgs }: + +# the README.md in the same directory contains further information on why this requires a scope +lib.makeScope pkgs.newScope (self: { + ceph-rocksdb = self.callPackage ./rocksdb.nix { }; + + # to get an idea which Python versions are supported by Ceph, see upstream `do_cmake.sh` (see `PYBUILD=` variable) + ceph-python = self.callPackage ({ python312 }: python312) { }; + ceph-python-common = self.callPackage ./python-common.nix { }; + ceph-python-env = self.callPackage ./python-env.nix { }; + + # Note when trying to upgrade boost: + # * When upgrading Ceph, it's recommended to check which boost version Ceph uses on Fedora, + # and default to that. + # * The version that Ceph downloads if `-DWITH_SYSTEM_BOOST:BOOL=ON` is not given + # is declared in `cmake/modules/BuildBoost.cmake` line `set(boost_version ...)`. + ceph-boost = self.callPackage ( + { boost187, ceph-python }: + boost187.override { + enablePython = true; + python = ceph-python; + } + ) { }; + + # not actually a derivation, just a DRY helper + ceph-meta = self.callPackage ./meta.nix { }; + + # patched source to build all derivations from + ceph-src = self.callPackage ./src.nix { }; + + ceph = self.callPackage ./ceph.nix { }; +}) diff --git a/pkgs/by-name/ce/ceph/src.nix b/pkgs/by-name/ce/ceph/src.nix new file mode 100644 index 000000000000..5f79bc62a7d2 --- /dev/null +++ b/pkgs/by-name/ce/ceph/src.nix @@ -0,0 +1,44 @@ +{ + applyPatches, + fetchpatch2, + fetchurl, +}: + +applyPatches (final: { + pname = "ceph-src"; + version = "20.2.0"; + + src = fetchurl { + url = "https://download.ceph.com/tarballs/ceph-${final.version}.tar.gz"; + hash = "sha256-jeBk1pgx7zJzOVOfIzx47IJ/o1HEDO2amRbwtBdMZoU="; + }; + + patches = [ + # required to be able to compile s3select against nixpkgs' arrow-cpp + # See: https://github.com/ceph/s3select/pull/169 + (fetchpatch2 { + name = "ceph-s3select-arrow-cpp-20.patch"; + url = "https://github.com/ceph/s3select/pull/169.diff?full_index=1"; + extraPrefix = "src/s3select/"; + stripLen = 1; + hash = "sha256-0jn5X4jIdluCufFXWHeO6skMz6XQpliHkC1tPLK6dbk="; + }) + # allows ceph-mgr to run on python 3.12 + # See: https://github.com/ceph/ceph/pull/66794 + (fetchurl { + name = "ceph-upstream-pyo3-workaround.patch"; + url = "https://github.com/ceph/ceph/pull/66794.diff?full_index=1"; + hash = "sha256-+OrG9JpMOfZwtzAPJkBrzt+8BGKKiNjQMMpkJSHpGFo="; + }) + # fix prometheus metrics without orchestrator + # See: https://github.com/ceph/ceph/pull/65906 + (fetchurl { + name = "ceph-prometheus-fix.diff"; + url = "https://github.com/ceph/ceph/pull/65906.diff?full_index=1"; + hash = "sha256-3QEtrsVJYUFvq1eT16v8fsmjpZMqOZ8AAoH+Sv7YyYA="; + }) + # fixes issues when python3 is not on the PATH + # See: https://github.com/ceph/ceph/pull/67904 + ./patches/0001-mgr-python-interpreter.patch + ]; +}) From 24b84ecea9683feed5158ad9d307fddd6ebb09a7 Mon Sep 17 00:00:00 2001 From: benaryorg Date: Mon, 6 Apr 2026 17:36:08 +0000 Subject: [PATCH 09/47] ceph: no null defaults Signed-off-by: benaryorg --- pkgs/by-name/ce/ceph/ceph.nix | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pkgs/by-name/ce/ceph/ceph.nix b/pkgs/by-name/ce/ceph/ceph.nix index e3c3beb55a57..44b1204b9b2d 100644 --- a/pkgs/by-name/ce/ceph/ceph.nix +++ b/pkgs/by-name/ce/ceph/ceph.nix @@ -64,22 +64,22 @@ zstd, # Optional Dependencies - curl ? null, - expat ? null, - fuse ? null, - libatomic_ops ? null, - libedit ? null, - libs3 ? null, - yasm ? null, + curl, + expat, + fuse, + libatomic_ops, + libedit, + libs3, + yasm, # Mallocs - gperftools ? null, - jemalloc ? null, + gperftools, + jemalloc, # Crypto Dependencies - cryptopp ? null, - nspr ? null, - nss ? null, + cryptopp, + nspr, + nss, # Linux Only Dependencies linuxHeaders, @@ -90,9 +90,9 @@ keyutils, rdma-core, rabbitmq-c, - libaio ? null, - libxfs ? null, - liburing ? null, + libaio, + libxfs, + liburing, withSystemd ? lib.meta.availableOn stdenv.hostPlatform systemd, }: From 36f54b568e3339faea0c2a9c6527a4b48756fc4f Mon Sep 17 00:00:00 2001 From: benaryorg Date: Mon, 6 Apr 2026 17:37:45 +0000 Subject: [PATCH 10/47] ceph: lib.cmake{Bool,Feature,OptionType} Signed-off-by: benaryorg --- pkgs/by-name/ce/ceph/ceph.nix | 36 +++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/pkgs/by-name/ce/ceph/ceph.nix b/pkgs/by-name/ce/ceph/ceph.nix index 44b1204b9b2d..0821b296aa4b 100644 --- a/pkgs/by-name/ce/ceph/ceph.nix +++ b/pkgs/by-name/ce/ceph/ceph.nix @@ -279,10 +279,13 @@ stdenv.mkDerivation { ''; cmakeFlags = [ - "-DCMAKE_INSTALL_DATADIR=${placeholder "lib"}/lib" + (lib.cmakeOptionType "path" "CMAKE_INSTALL_DATADIR" "${placeholder "lib"}/lib") - "-DWITH_CEPHFS_SHELL:BOOL=ON" - "-DWITH_SYSTEMD:BOOL=${if withSystemd then "ON" else "OFF"}" + (lib.cmakeBool "WITH_CEPHFS_SHELL" true) + (lib.cmakeBool "WITH_SYSTEMD" withSystemd) + # Providing a type with this (as is the case with `lib.cmakeOptionType`) triggers an edge case. + # This requires an upstream fix/patch as soon as upstream raises the minimum CMake version to 3.21 or higher. + # See also: https://github.com/NixOS/nixpkgs/pull/494583#issuecomment-4195176699 "-DSYSTEMD_SYSTEM_UNIT_DIR=${placeholder "out"}/lib/systemd/system" # `WITH_JAEGER` requires `thrift` as a depenedncy (fine), but the build fails with: # CMake Error at src/opentelemetry-cpp-stamp/opentelemetry-cpp-build-Release.cmake:49 (message): @@ -302,32 +305,33 @@ stdenv.mkDerivation { # But the relevant code is already removed in `open-telemetry` 1.10: https://github.com/open-telemetry/opentelemetry-cpp/pull/2031 # So it's probably not worth trying to fix that for this Ceph version, # and instead just disable Ceph's Jaeger support. - "-DWITH_JAEGER:BOOL=OFF" - "-DWITH_TESTS:BOOL=OFF" + (lib.cmakeBool "WITH_JAEGER" false) + (lib.cmakeBool "WITH_TESTS" false) # Use our own libraries, where possible - "-DWITH_SYSTEM_ARROW:BOOL=ON" # Only used if other options enable Arrow support. - "-DWITH_SYSTEM_BOOST:BOOL=ON" - "-DWITH_SYSTEM_GTEST:BOOL=ON" - "-DWITH_SYSTEM_ROCKSDB:BOOL=ON" - "-DWITH_SYSTEM_UTF8PROC:BOOL=ON" - "-DWITH_SYSTEM_ZSTD:BOOL=ON" + (lib.cmakeBool "WITH_SYSTEM_ARROW" true) # Only used if other options enable Arrow support. + (lib.cmakeBool "WITH_SYSTEM_BOOST" true) + (lib.cmakeBool "WITH_SYSTEM_GTEST" true) + (lib.cmakeBool "WITH_SYSTEM_ROCKSDB" true) + (lib.cmakeBool "WITH_SYSTEM_UTF8PROC" true) + (lib.cmakeBool "WITH_SYSTEM_ZSTD" true) # Use our own python libraries too, see: # https://github.com/NixOS/nixpkgs/pull/344993#issuecomment-2391046329 - "-DCEPHADM_BUNDLED_DEPENDENCIES=none" + (lib.cmakeFeature "CEPHADM_BUNDLED_DEPENDENCIES" "none") # Upstream enables UADK by default on aarch64, but not other platforms. # This causes issues when it tries to fetch the repository on aarch64. # We disable this by default on all platforms, with future PRs adding proper with flags. - "-DWITH_UADK:BOOL=OFF" + (lib.cmakeBool "WITH_UADK" false) # TODO breaks with sandbox, tries to download stuff with npm - "-DWITH_MGR_DASHBOARD_FRONTEND:BOOL=OFF" + (lib.cmakeBool "WITH_MGR_DASHBOARD_FRONTEND" false) # WITH_XFS has been set default ON from Ceph 16, keeping it optional in nixpkgs for now - "-DWITH_XFS=${if optLibxfs != null then "ON" else "OFF"}" + (lib.cmakeBool "WITH_XFS" (optLibxfs != null)) ] - ++ lib.optional stdenv.hostPlatform.isLinux "-DWITH_SYSTEM_LIBURING=ON"; + # TODO: investigate setting this to false on other platforms + ++ lib.optional stdenv.hostPlatform.isLinux (lib.cmakeBool "WITH_SYSTEM_LIBURING" true); preBuild = # The legacy-option-headers target is not correctly empbedded in the build graph. From b3f38f8397bbed9ddc507641993a28db2e0881c6 Mon Sep 17 00:00:00 2001 From: benaryorg Date: Mon, 6 Apr 2026 17:38:22 +0000 Subject: [PATCH 11/47] ceph: modern python build system invocation Signed-off-by: benaryorg --- pkgs/by-name/ce/ceph/python-common.nix | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ce/ceph/python-common.nix b/pkgs/by-name/ce/ceph/python-common.nix index 1bbc30244875..6d2dae9720de 100644 --- a/pkgs/by-name/ce/ceph/python-common.nix +++ b/pkgs/by-name/ce/ceph/python-common.nix @@ -6,13 +6,18 @@ ceph-python.pkgs.buildPythonPackage { pname = "ceph-common"; - format = "setuptools"; inherit (ceph-src) version; src = ceph-src; + pyproject = true; + sourceRoot = "${ceph-src.name}/src/python-common"; - propagatedBuildInputs = with ceph-python.pkgs; [ + build-system = with ceph-python.pkgs; [ + setuptools + ]; + + dependencies = with ceph-python.pkgs; [ pyyaml ]; From 10d11ec9651aa80aaa417af0de1f16ed5987ed1e Mon Sep 17 00:00:00 2001 From: benaryorg Date: Tue, 10 Mar 2026 07:26:03 +0000 Subject: [PATCH 12/47] rl-2605: ceph 20.2.0 major update Signed-off-by: benaryorg --- nixos/doc/manual/release-notes/rl-2605.section.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/nixos/doc/manual/release-notes/rl-2605.section.md b/nixos/doc/manual/release-notes/rl-2605.section.md index 576f3c6db4c4..64f6847bb7ed 100644 --- a/nixos/doc/manual/release-notes/rl-2605.section.md +++ b/nixos/doc/manual/release-notes/rl-2605.section.md @@ -235,6 +235,9 @@ See . - `programs.light` was removed from nixpkgs due to the corresponding package being unmaintained upstream. `brightnessctl` and `programs.acpilight` offer replacements. +- `ceph` has been upgraded to v20. See the [Ceph "tentacle" release notes](https://docs.ceph.com/en/latest/releases/tentacle/#v20-2-0-tentacle) for details and recommended upgrade procedure. + Note that **upgrades of server-side components are one-way**, and downgrading e.g. an OSD from *Tentacle* to *Squid* is not just not supported but is known to break. + - The `networking.wireless` module has been security hardened by default: the `wpa_supplicant` daemon now runs under an unprivileged user with restricted access to the system. As part of these changes, `/etc/wpa_supplicant.conf` has been deprecated: the NixOS-generated configuration file is now linked to `/etc/wpa_supplicant/nixos.conf` and `/etc/wpa_supplicant/imperative.conf` has been added for imperatively configuring `wpa_supplicant` or when using [allowAuxiliaryImperativeNetworks](#opt-networking.wireless.allowAuxiliaryImperativeNetworks). From 3828d1e9ba633fbd01fe5b91e215958cdf4833f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niklas=20Hamb=C3=BCchen?= Date: Wed, 8 Apr 2026 12:54:43 +0000 Subject: [PATCH 13/47] ceph: 20.2.0 -> 20.2.1 --- pkgs/by-name/ce/ceph/src.nix | 18 ++---------------- 1 file changed, 2 insertions(+), 16 deletions(-) diff --git a/pkgs/by-name/ce/ceph/src.nix b/pkgs/by-name/ce/ceph/src.nix index 5f79bc62a7d2..da49dc1f4ae7 100644 --- a/pkgs/by-name/ce/ceph/src.nix +++ b/pkgs/by-name/ce/ceph/src.nix @@ -6,11 +6,11 @@ applyPatches (final: { pname = "ceph-src"; - version = "20.2.0"; + version = "20.2.1"; src = fetchurl { url = "https://download.ceph.com/tarballs/ceph-${final.version}.tar.gz"; - hash = "sha256-jeBk1pgx7zJzOVOfIzx47IJ/o1HEDO2amRbwtBdMZoU="; + hash = "sha256-3neaoBQYOTiLsgHgqdYiuEM5guHE17/DrGEXt2OXJUI="; }; patches = [ @@ -23,20 +23,6 @@ applyPatches (final: { stripLen = 1; hash = "sha256-0jn5X4jIdluCufFXWHeO6skMz6XQpliHkC1tPLK6dbk="; }) - # allows ceph-mgr to run on python 3.12 - # See: https://github.com/ceph/ceph/pull/66794 - (fetchurl { - name = "ceph-upstream-pyo3-workaround.patch"; - url = "https://github.com/ceph/ceph/pull/66794.diff?full_index=1"; - hash = "sha256-+OrG9JpMOfZwtzAPJkBrzt+8BGKKiNjQMMpkJSHpGFo="; - }) - # fix prometheus metrics without orchestrator - # See: https://github.com/ceph/ceph/pull/65906 - (fetchurl { - name = "ceph-prometheus-fix.diff"; - url = "https://github.com/ceph/ceph/pull/65906.diff?full_index=1"; - hash = "sha256-3QEtrsVJYUFvq1eT16v8fsmjpZMqOZ8AAoH+Sv7YyYA="; - }) # fixes issues when python3 is not on the PATH # See: https://github.com/ceph/ceph/pull/67904 ./patches/0001-mgr-python-interpreter.patch From 277c18651616998dcce7d70be6eaae80aefc36c4 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 15 Mar 2026 12:18:04 -0700 Subject: [PATCH 14/47] nixos/tests/ceph-single-node: add ceph dashboard test coverage --- nixos/tests/ceph-single-node.nix | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/nixos/tests/ceph-single-node.nix b/nixos/tests/ceph-single-node.nix index b83eeaaed66c..caec05c6ad71 100644 --- a/nixos/tests/ceph-single-node.nix +++ b/nixos/tests/ceph-single-node.nix @@ -100,6 +100,8 @@ let # For other ways to deploy a ceph cluster, look at the documentation at # https://docs.ceph.com/docs/master/ testScript = '' + import json + start_all() monA.wait_for_unit("network.target") @@ -222,6 +224,25 @@ let monA.wait_for_open_port(8080) monA.wait_until_succeeds("curl -q --fail http://localhost:8080") monA.wait_until_succeeds("ceph -s | grep 'HEALTH_OK'") + + # Initialize dashboard creds + monA.succeed( + "echo 'foo bar baz qux' > /tmp/dashboard_pw", + "ceph dashboard ac-user-create admin -i /tmp/dashboard_pw administrator", + ) + + # Get dashboard auth token + auth_payload = json.dumps({"username": "admin", "password": "foo bar baz qux"}) + auth_response = json.loads(monA.succeed( + f"curl --fail -s -X POST -H 'Accept: application/vnd.ceph.api.v1.0+json' -H 'Content-Type: application/json' -d '{auth_payload}' http://localhost:8080/api/auth", + )) + token = auth_response["token"] + + # Check cluster health via dashboard API + health = json.loads(monA.succeed( + f"curl --fail -s -H 'Accept: application/vnd.ceph.api.v1.0+json' -H 'Authorization: Bearer {token}' http://localhost:8080/api/health/minimal", + )) + assert health["health"]["status"] == "HEALTH_OK" ''; in { From 69fa5f7f7d8a119cb7ef8346d649c213a8b2ea85 Mon Sep 17 00:00:00 2001 From: Joshua Peek Date: Sun, 15 Mar 2026 13:02:33 -0700 Subject: [PATCH 15/47] nixos/tests/ceph-single-node: add ceph rgw dashboard test coverage --- nixos/tests/ceph-single-node.nix | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/nixos/tests/ceph-single-node.nix b/nixos/tests/ceph-single-node.nix index caec05c6ad71..c7d822230fde 100644 --- a/nixos/tests/ceph-single-node.nix +++ b/nixos/tests/ceph-single-node.nix @@ -43,6 +43,7 @@ let { pkgs, ... }: { virtualisation = { + memorySize = 2048; emptyDiskImages = [ 20480 20480 @@ -92,6 +93,10 @@ let cfg.osd2.name ]; }; + rgw = { + enable = true; + daemons = [ cfg.monA.name ]; + }; }; }; @@ -196,6 +201,16 @@ let "ceph osd pool delete single-node-other-test single-node-other-test --yes-i-really-really-mean-it", ) + # Bootstrap RGW + monA.succeed( + "sudo -u ceph mkdir -p /var/lib/ceph/radosgw/ceph-${cfg.monA.name}", + "ceph auth get-or-create client.${cfg.monA.name} osd 'allow rwx' mon 'allow rw' > /var/lib/ceph/radosgw/ceph-${cfg.monA.name}/keyring", + "chown ceph:ceph /var/lib/ceph/radosgw/ceph-${cfg.monA.name}/keyring", + "systemctl start ceph-rgw-${cfg.monA.name}", + ) + monA.wait_for_unit("ceph-rgw-${cfg.monA.name}") + monA.wait_for_open_port(7480) + # Shut down ceph by stopping ceph.target. monA.succeed("systemctl stop ceph.target") @@ -206,6 +221,7 @@ let monA.wait_for_unit("ceph-osd-${cfg.osd0.name}") monA.wait_for_unit("ceph-osd-${cfg.osd1.name}") monA.wait_for_unit("ceph-osd-${cfg.osd2.name}") + monA.wait_for_unit("ceph-rgw-${cfg.monA.name}") # Ensure the cluster comes back up again monA.succeed("ceph -s | grep 'mon: 1 daemons'") @@ -229,6 +245,7 @@ let monA.succeed( "echo 'foo bar baz qux' > /tmp/dashboard_pw", "ceph dashboard ac-user-create admin -i /tmp/dashboard_pw administrator", + "ceph dashboard set-rgw-credentials", ) # Get dashboard auth token @@ -243,6 +260,12 @@ let f"curl --fail -s -H 'Accept: application/vnd.ceph.api.v1.0+json' -H 'Authorization: Bearer {token}' http://localhost:8080/api/health/minimal", )) assert health["health"]["status"] == "HEALTH_OK" + + # List daemons via REST API + rgw_daemons = json.loads(monA.succeed( + f"curl --fail -s -H 'Accept: application/vnd.ceph.api.v1.0+json' -H 'Authorization: Bearer {token}' http://localhost:8080/api/rgw/daemon", + )) + assert rgw_daemons[0]["id"] == "a" ''; in { From 8d3d761dcc6c9da60f9b151e597051bccf7a947a Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 11 Apr 2026 14:49:24 +0000 Subject: [PATCH 16/47] mopidy-argos: 1.16.1 -> 1.17.0 --- pkgs/by-name/mo/mopidy-argos/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mo/mopidy-argos/package.nix b/pkgs/by-name/mo/mopidy-argos/package.nix index f616818a6c6b..ac6ed130e038 100644 --- a/pkgs/by-name/mo/mopidy-argos/package.nix +++ b/pkgs/by-name/mo/mopidy-argos/package.nix @@ -13,14 +13,14 @@ }: python3Packages.buildPythonApplication rec { pname = "mopidy-argos"; - version = "1.16.1"; + version = "1.17.0"; pyproject = false; # Built with meson src = fetchFromGitHub { owner = "orontee"; repo = "argos"; tag = "v${version}"; - hash = "sha256-29P8cacYE07fMmSElAzVHC2+hwhyjuplcJjKikHPCwA="; + hash = "sha256-U6frnCor14dIDtgwn83dln+76NoIqBqPiwYLkVaa/x8="; }; postPatch = '' patchShebangs build-aux/meson/postinstall.py From aa1112a9aaf4b7582b9aa7b7082144e8d44ef5d7 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sat, 11 Apr 2026 20:41:18 +0000 Subject: [PATCH 17/47] python3Packages.tensordict: 0.12.0 -> 0.12.1 Diff: https://github.com/pytorch/tensordict/compare/v0.12.0...v0.12.1 Changelog: https://github.com/pytorch/tensordict/releases/tag/v0.12.1 --- pkgs/development/python-modules/tensordict/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/tensordict/default.nix b/pkgs/development/python-modules/tensordict/default.nix index 81817baadfd3..5252afdddfcd 100644 --- a/pkgs/development/python-modules/tensordict/default.nix +++ b/pkgs/development/python-modules/tensordict/default.nix @@ -29,14 +29,14 @@ buildPythonPackage (finalAttrs: { pname = "tensordict"; - version = "0.12.0"; + version = "0.12.1"; pyproject = true; src = fetchFromGitHub { owner = "pytorch"; repo = "tensordict"; tag = "v${finalAttrs.version}"; - hash = "sha256-rnMp0u3sl9zqIKNp3OoM9PmE/468YCwqTY4rdDHxamw="; + hash = "sha256-3N2qj8aoUFQgQlYKEqUCKpMXwfn9XvdxLcB3wT3WOqY="; }; postPatch = '' From d93538c6c2d716cda85380b4f84f19944049bb99 Mon Sep 17 00:00:00 2001 From: Xiangyan Sun Date: Sat, 11 Apr 2026 14:10:35 -0700 Subject: [PATCH 18/47] gluesql: 0.14.0 -> 0.19.0 --- pkgs/by-name/gl/gluesql/package.nix | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/gl/gluesql/package.nix b/pkgs/by-name/gl/gluesql/package.nix index 0a501b461d94..48be5587f234 100644 --- a/pkgs/by-name/gl/gluesql/package.nix +++ b/pkgs/by-name/gl/gluesql/package.nix @@ -3,20 +3,40 @@ fetchFromGitHub, rustPlatform, nix-update-script, + python3, + gitMinimal, + versionCheckHook, }: rustPlatform.buildRustPackage (finalAttrs: { pname = "gluesql"; - version = "0.14.0"; + version = "0.19.0"; src = fetchFromGitHub { owner = "gluesql"; repo = "gluesql"; rev = "v${finalAttrs.version}"; - hash = "sha256-z2fpyPJfyPtO13Ly7XRmMW3rp6G3jNLsMMFz83Wmr0E="; + hash = "sha256-/Yb6ksHxFscB/t7fID11fNHldJ0lDmN9DXbiaG+mUwY="; }; - cargoHash = "sha256-QITNkSB/IneKj0w12FCKV1Y0vRAlOfENs8BpFbDpK2M="; + nativeBuildInputs = [ + python3 + ]; + + nativeCheckInputs = [ + gitMinimal + ]; + + preCheck = '' + export HOME=$(mktemp -d) + git config --global user.name "Nixpkgs Test" + git config --global user.email "nobody@example.com" + ''; + + cargoHash = "sha256-P2YH3mf1Olrjzwl6ldwzO0xMC0yccqA7T2mrWZ5qSKM="; + + nativeInstallCheckInputs = [ versionCheckHook ]; + doInstallCheck = true; passthru.updateScript = nix-update-script { }; From ed86080a4ec498cd6b4ab8cd9d024d7a17294b2c Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 11 Apr 2026 23:18:56 +0000 Subject: [PATCH 19/47] fabric-ai: 1.4.442 -> 1.4.444 --- pkgs/by-name/fa/fabric-ai/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/fa/fabric-ai/package.nix b/pkgs/by-name/fa/fabric-ai/package.nix index 1c84870c492b..a80ae0e1ca42 100644 --- a/pkgs/by-name/fa/fabric-ai/package.nix +++ b/pkgs/by-name/fa/fabric-ai/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "fabric-ai"; - version = "1.4.442"; + version = "1.4.444"; src = fetchFromGitHub { owner = "danielmiessler"; repo = "fabric"; tag = "v${finalAttrs.version}"; - hash = "sha256-f9GgCJC7Ho0W2eX98ooIrQ71ToCFJrQROQdewibvyAs="; + hash = "sha256-986ny/DRchsu+MkZFnmGrWaCPaw+SFYJzY768ZEPtfQ="; }; - vendorHash = "sha256-Ay+ndVlyHwA93QdzMRsQfpp38MAzQgXX5pif6ElbO4M="; + vendorHash = "sha256-G1N/cPPReI5jrZ9orrWEAV/cRPrGbUZyhht+8iMDRb0="; # Fabric introduced plugin tests that fail in the nix build sandbox. doCheck = false; From ab14f0d7c4f15d84bfbbef456a1b73889d013dba Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 11 Apr 2026 23:56:42 +0000 Subject: [PATCH 20/47] zed-editor: 0.231.1 -> 0.231.2 --- pkgs/by-name/ze/zed-editor/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ze/zed-editor/package.nix b/pkgs/by-name/ze/zed-editor/package.nix index 4d96e83f705e..1e740abbe371 100644 --- a/pkgs/by-name/ze/zed-editor/package.nix +++ b/pkgs/by-name/ze/zed-editor/package.nix @@ -111,7 +111,7 @@ let in rustPlatform.buildRustPackage (finalAttrs: { pname = "zed-editor"; - version = "0.231.1"; + version = "0.231.2"; outputs = [ "out" @@ -124,7 +124,7 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "zed-industries"; repo = "zed"; tag = "v${finalAttrs.version}"; - hash = "sha256-DTJ8+L5JzW0sN7G2ZibeTsPmqOBMw/8IoJ6ZDUU9HWQ="; + hash = "sha256-o64xjJKvGzn4H1nMVVbqx+XFxDwHyFwnO+OoNJB04OI="; }; postPatch = '' @@ -150,7 +150,7 @@ rustPlatform.buildRustPackage (finalAttrs: { rm -r $out/git/*/candle-book/ ''; - cargoHash = "sha256-vFBkjos+Wa0E1li8t4ZCVnRq7q5XSQQe2fx0QqgaCiM="; + cargoHash = "sha256-++2q4zeLBDSW4ooTu7dU77YsuHggeX/sWkvuCb3PF50="; nativeBuildInputs = [ cmake From 3144f44023944038f9801fd087179e4cf77d69b1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sat, 11 Apr 2026 23:57:02 +0000 Subject: [PATCH 21/47] gamescope: 3.16.22 -> 3.16.23 --- pkgs/by-name/ga/gamescope/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ga/gamescope/package.nix b/pkgs/by-name/ga/gamescope/package.nix index 84e5a55e8b4f..9247e3aa5697 100644 --- a/pkgs/by-name/ga/gamescope/package.nix +++ b/pkgs/by-name/ga/gamescope/package.nix @@ -62,14 +62,14 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "gamescope"; - version = "3.16.22"; + version = "3.16.23"; src = fetchFromGitHub { owner = "ValveSoftware"; repo = "gamescope"; tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-FuQkKguW00yI2w5nCctcxz7e1ZUKSWJOCIS1UMJzsMA="; + hash = "sha256-q9AZTe6fBgJBt5/c3x8PVrnDF+MtRmQ1OWZq9ZsSe/M="; }; patches = [ From 5475328904ffdf29bda82d320262da6f263e412e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 00:19:32 +0000 Subject: [PATCH 22/47] python3Packages.modelscope: 1.35.3 -> 1.35.4 --- pkgs/development/python-modules/modelscope/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/modelscope/default.nix b/pkgs/development/python-modules/modelscope/default.nix index a00887cec342..45afcc95a203 100644 --- a/pkgs/development/python-modules/modelscope/default.nix +++ b/pkgs/development/python-modules/modelscope/default.nix @@ -11,14 +11,14 @@ buildPythonPackage (finalAttrs: { pname = "modelscope"; - version = "1.35.3"; + version = "1.35.4"; pyproject = true; src = fetchFromGitHub { owner = "modelscope"; repo = "modelscope"; tag = "v${finalAttrs.version}"; - hash = "sha256-3PG20FqNn8syngxmzxjIr1C8u128RPFj+FjU494QTYA="; + hash = "sha256-n33vf7GC4Oucw4/dWXeXeThRrkmSCk1rfS4BWzOxl7I="; }; build-system = [ setuptools ]; From aa639c92cfb7ef05183db61bdec15139130c8ffb Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 00:56:23 +0000 Subject: [PATCH 23/47] zed-discord-presence: 0.11.2 -> 0.11.3 --- pkgs/by-name/ze/zed-discord-presence/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ze/zed-discord-presence/package.nix b/pkgs/by-name/ze/zed-discord-presence/package.nix index 079b68bf9c1c..2df15981fe5b 100644 --- a/pkgs/by-name/ze/zed-discord-presence/package.nix +++ b/pkgs/by-name/ze/zed-discord-presence/package.nix @@ -7,17 +7,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "zed-discord-presence"; - version = "0.11.2"; + version = "0.11.3"; src = fetchFromGitHub { owner = "xhyrom"; repo = "zed-discord-presence"; tag = "v${finalAttrs.version}"; - hash = "sha256-qQ90im8JwYHe3vLfXpaqq9p6gfxHtLdRUz78q2vER+w="; + hash = "sha256-pDadm0mVcH5LuKAhA5t41dxcyLpApYqrAQRchpXyb0o="; }; cargoBuildFlags = [ "--package discord-presence-lsp" ]; - cargoHash = "sha256-KTvjqQ/nYANKHldaEezucmE77blMh2srX5cX1zM+xT0="; + cargoHash = "sha256-k1lhH1vJ7GgYhxROo7NaUDo6Hg1FuFcfLWmSZm/qItA="; passthru.updateScript = nix-update-script { }; From aadf897bbdeb9479b7292b7ad6598b146d9a3450 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 02:14:01 +0000 Subject: [PATCH 24/47] luau-lsp: 1.64.1 -> 1.66.0 --- pkgs/by-name/lu/luau-lsp/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/lu/luau-lsp/package.nix b/pkgs/by-name/lu/luau-lsp/package.nix index 9beba0519052..2dbfbd176d52 100644 --- a/pkgs/by-name/lu/luau-lsp/package.nix +++ b/pkgs/by-name/lu/luau-lsp/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "luau-lsp"; - version = "1.64.1"; + version = "1.66.0"; src = fetchFromGitHub { owner = "JohnnyMorganz"; repo = "luau-lsp"; tag = finalAttrs.version; - hash = "sha256-8vUFPs+8SjeXxtNkLCepv27tLekBunqsrPj/IWONUVA="; + hash = "sha256-llirkKL/2X4srwZzTcf0a7yX7AhOgdlsu1jr6yacWV0="; fetchSubmodules = true; }; From 550a4ea341c4a6a1e1620b4a46c6d4115282cc91 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 02:41:02 +0000 Subject: [PATCH 25/47] wireguard-vanity-keygen: 1.0.0 -> 1.0.1 --- pkgs/by-name/wi/wireguard-vanity-keygen/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/wi/wireguard-vanity-keygen/package.nix b/pkgs/by-name/wi/wireguard-vanity-keygen/package.nix index 587420096a84..a931ec2daa41 100644 --- a/pkgs/by-name/wi/wireguard-vanity-keygen/package.nix +++ b/pkgs/by-name/wi/wireguard-vanity-keygen/package.nix @@ -6,16 +6,16 @@ buildGoModule rec { pname = "wireguard-vanity-keygen"; - version = "1.0.0"; + version = "1.0.1"; src = fetchFromGitHub { owner = "axllent"; repo = "wireguard-vanity-keygen"; rev = version; - hash = "sha256-vAHVhW2BYND1Lz8WEFbbuJRMP7dXzZXQR8/bewb/ZUg="; + hash = "sha256-5N+D1wVrqUvkyxXKzIZPRdSPpHcPZp1Fzo2AwYA7Ue8="; }; - vendorHash = "sha256-iBpfSS/T5xgYS0xiH5wNR7jfMdhW8t2LchXAx84YYHM="; + vendorHash = "sha256-hYNQVYNpMqi656GlaMehG5U48IKtJIxJ5QPxPWMmpzg="; ldflags = [ "-s" From 8bbc3093a56aca9139036b4d2fdc417ce5dde9b5 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 11 Apr 2026 22:40:19 -0400 Subject: [PATCH 26/47] prismlauncher: 11.0.0 -> 11.0.1 Diff: https://github.com/PrismLauncher/PrismLauncher/compare/11.0.0...11.0.1 Changelog: https://github.com/PrismLauncher/PrismLauncher/releases/tag/11.0.1 --- pkgs/by-name/pr/prismlauncher-unwrapped/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix b/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix index ab133a3fa319..76d03dc04516 100644 --- a/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix +++ b/pkgs/by-name/pr/prismlauncher-unwrapped/package.nix @@ -28,13 +28,13 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "prismlauncher-unwrapped"; - version = "11.0.0"; + version = "11.0.1"; src = fetchFromGitHub { owner = "PrismLauncher"; repo = "PrismLauncher"; tag = finalAttrs.version; - hash = "sha256-hjl0GUmAwcxqGMhvrHux4kWfOZWJvDV+SqOhyYwsO6o="; + hash = "sha256-5OMDvGEVbF317gzq8w0LasecrEga1gkmSQ6FwwL7AOc="; }; postUnpack = '' From 71c0e8211aa1ded6226dfd4903868f9670d09c4e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 02:47:42 +0000 Subject: [PATCH 27/47] libretro.snes9x: 0-unstable-2026-04-02 -> 0-unstable-2026-04-07 --- pkgs/applications/emulators/libretro/cores/snes9x.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/snes9x.nix b/pkgs/applications/emulators/libretro/cores/snes9x.nix index bf5101573b14..1bfe3e8f05e6 100644 --- a/pkgs/applications/emulators/libretro/cores/snes9x.nix +++ b/pkgs/applications/emulators/libretro/cores/snes9x.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "snes9x"; - version = "0-unstable-2026-04-02"; + version = "0-unstable-2026-04-07"; src = fetchFromGitHub { owner = "snes9xgit"; repo = "snes9x"; - rev = "50e875548194429630e9c6a8d8522fa39c89d9ad"; - hash = "sha256-3DKk1bhtcrxaZ2Dvrtddmaiq2niAkRIOEU+jBuSsaas="; + rev = "cc2b4e185a66778af6a062d0d5502e3ad92171c1"; + hash = "sha256-OZGvThUfKH5Zt71khrIqR1+wB2tup5Iq6eRAOQcMB8M="; }; makefile = "Makefile"; From 2fb24171c54699c7e806702d40d10f3eef059074 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 03:38:53 +0000 Subject: [PATCH 28/47] cargo-flamegraph: 0.6.11 -> 0.6.12 --- pkgs/by-name/ca/cargo-flamegraph/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ca/cargo-flamegraph/package.nix b/pkgs/by-name/ca/cargo-flamegraph/package.nix index 950e973d681f..3e821d17758c 100644 --- a/pkgs/by-name/ca/cargo-flamegraph/package.nix +++ b/pkgs/by-name/ca/cargo-flamegraph/package.nix @@ -10,16 +10,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cargo-flamegraph"; - version = "0.6.11"; + version = "0.6.12"; src = fetchFromGitHub { owner = "flamegraph-rs"; repo = "flamegraph"; rev = "v${finalAttrs.version}"; - sha256 = "sha256-WPWS3NX6t8RNNALqYF2JMLI5HWVhsVmhg9ULZKt972I="; + sha256 = "sha256-lFbVv6VN4VsAzLY35KJAQ9YNHPyR1orLBp3QuKVW94U="; }; - cargoHash = "sha256-U/Cs4HRNuxq7RaWHmmLoWbiZgqumSRFRLpe1N/63q+E="; + cargoHash = "sha256-i9OBHekHDvvcOLH/hQJk7AXmNKpBsekx/cT0axPnGF0="; nativeBuildInputs = lib.optionals stdenv.hostPlatform.isLinux [ makeWrapper ]; From f68a32b05f8dd69c48f4dc9a8603dc14843ba3e9 Mon Sep 17 00:00:00 2001 From: Shin Morisawa Date: Sun, 12 Apr 2026 13:30:01 +0900 Subject: [PATCH 29/47] vimPlugins.tokyodark-nvim: init at 0-unstable-2025-11-13 https://github.com/tiagovla/tokyodark.nvim --- pkgs/applications/editors/vim/plugins/generated.nix | 13 +++++++++++++ .../editors/vim/plugins/vim-plugin-names | 1 + 2 files changed, 14 insertions(+) diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix index f474648acdb5..87ac3ebe270d 100644 --- a/pkgs/applications/editors/vim/plugins/generated.nix +++ b/pkgs/applications/editors/vim/plugins/generated.nix @@ -16426,6 +16426,19 @@ final: prev: { meta.hydraPlatforms = [ ]; }; + tokyodark-nvim = buildVimPlugin { + pname = "tokyodark.nvim"; + version = "0-unstable-2025-11-13"; + src = fetchFromGitHub { + owner = "tiagovla"; + repo = "tokyodark.nvim"; + rev = "659aff3c73dc2e0159314050a81671f0b2eaad01"; + hash = "sha256-THvvevUwK3p/aZW+FI2RNnduqWBcmWF5tueYwEY43FI="; + }; + meta.homepage = "https://github.com/tiagovla/tokyodark.nvim/"; + meta.hydraPlatforms = [ ]; + }; + tokyonight-nvim = buildVimPlugin { pname = "tokyonight.nvim"; version = "4.14.1-unstable-2026-03-24"; diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names index 5098d8cf10f8..132b9818d97e 100644 --- a/pkgs/applications/editors/vim/plugins/vim-plugin-names +++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names @@ -1262,6 +1262,7 @@ https://github.com/edkolev/tmuxline.vim/,, https://github.com/folke/todo-comments.nvim/,, https://github.com/freitass/todo.txt-vim/,, https://github.com/akinsho/toggleterm.nvim/,, +https://github.com/tiagovla/tokyodark.nvim/,HEAD, https://github.com/folke/tokyonight.nvim/,, https://github.com/markonm/traces.vim/,, https://github.com/LeonHeidelbach/trailblazer.nvim/,HEAD, From 798535282e137be9e442a889a94a863e270d44db Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Sun, 12 Apr 2026 12:50:51 +0800 Subject: [PATCH 30/47] wechat: 4.1.8.29-36603 -> 4.1.8.106-37335 for darwin --- pkgs/by-name/we/wechat/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/we/wechat/package.nix b/pkgs/by-name/we/wechat/package.nix index dafc0e61d4d1..2e57b779d37b 100644 --- a/pkgs/by-name/we/wechat/package.nix +++ b/pkgs/by-name/we/wechat/package.nix @@ -30,14 +30,14 @@ let # https://dldir1.qq.com/weixin/mac/mac-release.xml any-darwin = let - version = "4.1.8.29-36603"; + version = "4.1.8.106-37335"; version' = lib.replaceString "-" "_" version; in { inherit version; src = fetchurl { url = "https://dldir1v6.qq.com/weixin/Universal/Mac/xWeChatMac_universal_${version'}.dmg"; - hash = "sha256-QwWXDyJjqN2CB1dOZTb5Uv4qU4y8klUlsUS1Ny6M/ac="; + hash = "sha256-lygjqWbNqh9fCnhbyfEhnRdKdfQ9MOwPv5unqwJJsvE="; }; }; in From 73904f12a7400cdb57f5574eaa8df492a19604af Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 04:58:14 +0000 Subject: [PATCH 31/47] python3Packages.torf: 4.3.0 -> 4.3.1 --- pkgs/development/python-modules/torf/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/torf/default.nix b/pkgs/development/python-modules/torf/default.nix index 625e2e91d37b..e3f31cf316ad 100644 --- a/pkgs/development/python-modules/torf/default.nix +++ b/pkgs/development/python-modules/torf/default.nix @@ -19,14 +19,14 @@ buildPythonPackage (finalAttrs: { pname = "torf"; - version = "4.3.0"; + version = "4.3.1"; pyproject = true; src = fetchFromGitHub { owner = "rndusr"; repo = "torf"; tag = "v${finalAttrs.version}"; - hash = "sha256-vJapB4Tbn3tLLUIH9LemU9kTqG7TsByiotkWM52lsno="; + hash = "sha256-6R3DF2pj9zotU/z/OKMbeG5tD7tBYuzSEi/f18NgHOo="; }; build-system = [ From 16e6736322c644f5b4c537eb9b8dcc57281abcc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Pitucha?= Date: Sun, 12 Apr 2026 15:17:20 +1000 Subject: [PATCH 32/47] switchaudio-osx: remove unnecessary xcodebuild dep --- pkgs/by-name/sw/switchaudio-osx/package.nix | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkgs/by-name/sw/switchaudio-osx/package.nix b/pkgs/by-name/sw/switchaudio-osx/package.nix index e359da554d7b..bc19ec897783 100644 --- a/pkgs/by-name/sw/switchaudio-osx/package.nix +++ b/pkgs/by-name/sw/switchaudio-osx/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - xcodebuild, xcbuildHook, }: @@ -17,8 +16,6 @@ stdenv.mkDerivation rec { hash = "sha256-AZJn5kHK/al94ONfIHcG+W0jyMfgdJkIngN+PVj+I44="; }; - buildInputs = [ xcodebuild ]; - nativeBuildInputs = [ xcbuildHook ]; patches = [ From 64c279e5cebaa4b7620ae7f2ae87e753f88cb9c1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 05:52:00 +0000 Subject: [PATCH 33/47] libretro.pcsx-rearmed: 0-unstable-2026-04-02 -> 0-unstable-2026-04-12 --- pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix b/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix index 6cb3bc5ee28a..5f359b4f5a8e 100644 --- a/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix +++ b/pkgs/applications/emulators/libretro/cores/pcsx-rearmed.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "pcsx-rearmed"; - version = "0-unstable-2026-04-02"; + version = "0-unstable-2026-04-12"; src = fetchFromGitHub { owner = "libretro"; repo = "pcsx_rearmed"; - rev = "c1e885c71f24204a919e3bc40735497ccf541f0d"; - hash = "sha256-mJY9kngb/YsClAJFhsc6tHl857k2/MOHP/oWaltg+so="; + rev = "13f09ce0e3eb375e02879c51926d2b7c54e5f86b"; + hash = "sha256-WjdliWglIYGI1X9jGq5LqCBLijlR56TOwiVmJjCTi8M="; }; dontConfigure = true; From b6f41df2d39768c69f463497b481a97a74165dc5 Mon Sep 17 00:00:00 2001 From: Dimitar Nestorov <8790386+dimitarnestorov@users.noreply.github.com> Date: Sun, 12 Apr 2026 09:03:35 +0300 Subject: [PATCH 34/47] swiftformat: 0.60.1 -> 0.61.0 --- pkgs/by-name/sw/swiftformat/package.nix | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/sw/swiftformat/package.nix b/pkgs/by-name/sw/swiftformat/package.nix index e108dbc517df..4ff0ac0dafb8 100644 --- a/pkgs/by-name/sw/swiftformat/package.nix +++ b/pkgs/by-name/sw/swiftformat/package.nix @@ -1,24 +1,21 @@ { - stdenv, lib, fetchFromGitHub, swift, - swiftformat, swiftpm, - testers, versionCheckHook, nix-update-script, }: swift.stdenv.mkDerivation rec { pname = "swiftformat"; - version = "0.60.1"; + version = "0.61.0"; src = fetchFromGitHub { owner = "nicklockwood"; repo = "SwiftFormat"; rev = version; - sha256 = "sha256-IOtp+TBcWPb6RR47AoITtR+7xAulP+ZQcWukX5YYnVc="; + sha256 = "sha256-+57Cuok7hIXaTZi699sIoqORFgFWEXfzl8P4sJkwFNE="; }; nativeBuildInputs = [ From edde9c7424a808e2a34bc0df8943e93236e2c1ca Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 06:24:21 +0000 Subject: [PATCH 35/47] tuistash: 0.7.2 -> 0.7.3 --- pkgs/by-name/tu/tuistash/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/tu/tuistash/package.nix b/pkgs/by-name/tu/tuistash/package.nix index a53233e51406..e8501de2845c 100644 --- a/pkgs/by-name/tu/tuistash/package.nix +++ b/pkgs/by-name/tu/tuistash/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "tuistash"; - version = "0.7.2"; + version = "0.7.3"; src = fetchFromGitHub { owner = "edmocosta"; repo = "tuistash"; tag = "v${finalAttrs.version}"; - hash = "sha256-pyLsm3y2MwLJvscugAdKnw/+/Q0A52tAJ9MxUI5br90="; + hash = "sha256-36IIQ0dA87tp+H2CKPvV5lWFz5o9J9b6ubQZFRAUMD0="; }; - cargoHash = "sha256-VLcB7CjelyESnwcWgoC8AdwiGTkuro+KqL+prOtnkLM="; + cargoHash = "sha256-4qxV1sjzEWwVj1jCOcpBnqmWa+bVDUflfoQT1TL1FBQ="; doInstallCheck = true; nativeInstallCheckInputs = [ versionCheckHook ]; From 7fab789e1fe78468a9db786a8b0e93535ebef664 Mon Sep 17 00:00:00 2001 From: eljamm Date: Sun, 12 Apr 2026 06:53:58 +0000 Subject: [PATCH 36/47] linux_xanmod: 6.18.21 -> 6.18.22 - Changelog: https://dl.xanmod.org/changelog/6.18/ChangeLog-6.18.22-xanmod1.gz - Diff: https://gitlab.com/xanmod/linux/-/compare/6.18.21-xanmod1..6.18.22-xanmod1?from_project_id=51590166 --- pkgs/os-specific/linux/kernel/xanmod-kernels.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix index d2e6d520485e..6b41ea2ddb1c 100644 --- a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix +++ b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix @@ -15,8 +15,8 @@ let variants = { # ./update-xanmod.sh lts lts = { - version = "6.18.21"; - hash = "sha256-56cRf+iTX+SbxEelp84q4m9JnJzGWuAaRBgWM+3MLQc="; + version = "6.18.22"; + hash = "sha256-RWLMFCW3dHtTeY+F9LFZpale8FTh5ITSHU/N/CkN5WA="; isLTS = true; }; # ./update-xanmod.sh main From 621988fb251d6f60f797d7b884d9dee54062530f Mon Sep 17 00:00:00 2001 From: eljamm Date: Sun, 12 Apr 2026 06:55:50 +0000 Subject: [PATCH 37/47] linux_xanmod_latest: 6.19.11 -> 6.19.12 - Changelog: https://dl.xanmod.org/changelog/6.19/ChangeLog-6.19.12-xanmod1.gz - Diff: https://gitlab.com/xanmod/linux/-/compare/6.19.11-xanmod1..6.19.12-xanmod1?from_project_id=51590166 --- pkgs/os-specific/linux/kernel/xanmod-kernels.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix index 6b41ea2ddb1c..7c9bf300d6e0 100644 --- a/pkgs/os-specific/linux/kernel/xanmod-kernels.nix +++ b/pkgs/os-specific/linux/kernel/xanmod-kernels.nix @@ -21,8 +21,8 @@ let }; # ./update-xanmod.sh main main = { - version = "6.19.11"; - hash = "sha256-JbiS33MeAxtcB8e7JQUu+K8bh2Ad/B6wKGKqA98R9Wc="; + version = "6.19.12"; + hash = "sha256-jv8sJnBzXRV/e9dHJgiUbQneCRINCchAM6aj8Xp6knI="; }; }; From ca4e54853dcb3cc5b79c616a35db5bac9a713758 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 07:06:36 +0000 Subject: [PATCH 38/47] biome: 2.4.10 -> 2.4.11 --- pkgs/by-name/bi/biome/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/bi/biome/package.nix b/pkgs/by-name/bi/biome/package.nix index 321dd7818967..80ca96e0666f 100644 --- a/pkgs/by-name/bi/biome/package.nix +++ b/pkgs/by-name/bi/biome/package.nix @@ -11,16 +11,16 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "biome"; - version = "2.4.10"; + version = "2.4.11"; src = fetchFromGitHub { owner = "biomejs"; repo = "biome"; rev = "@biomejs/biome@${finalAttrs.version}"; - hash = "sha256-DIXPYPqJEjQMiSqP+ww58FX2G6ePFOW6xW0chtumbgs="; + hash = "sha256-EPrbr0FOYlP+HKa9YkNi4cw2oisoHRkQAahMIoq9QIo="; }; - cargoHash = "sha256-gXfu4P15zeqC+8PrGytp2/IUcqtD0vh1E/UYYM70+RI="; + cargoHash = "sha256-SxHTeZ3snOeBsYmjN4to9UoGVnH0mSXtWtAOv85Ztxs="; nativeBuildInputs = [ pkg-config ]; From e15b555928ee12ff3758b69a251bb5ce2a8648a1 Mon Sep 17 00:00:00 2001 From: Markus Hauck Date: Sun, 12 Apr 2026 09:41:46 +0200 Subject: [PATCH 39/47] claude-code: 2.1.97 -> 2.1.104 https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md --- pkgs/by-name/cl/claude-code/package-lock.json | 4 ++-- pkgs/by-name/cl/claude-code/package.nix | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/by-name/cl/claude-code/package-lock.json b/pkgs/by-name/cl/claude-code/package-lock.json index a1149bd0e4e0..fe02f59494f8 100644 --- a/pkgs/by-name/cl/claude-code/package-lock.json +++ b/pkgs/by-name/cl/claude-code/package-lock.json @@ -1,12 +1,12 @@ { "name": "@anthropic-ai/claude-code", - "version": "2.1.97", + "version": "2.1.104", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@anthropic-ai/claude-code", - "version": "2.1.97", + "version": "2.1.104", "license": "SEE LICENSE IN README.md", "bin": { "claude": "cli.js" diff --git a/pkgs/by-name/cl/claude-code/package.nix b/pkgs/by-name/cl/claude-code/package.nix index 7bd025e02c07..4d9ea2762219 100644 --- a/pkgs/by-name/cl/claude-code/package.nix +++ b/pkgs/by-name/cl/claude-code/package.nix @@ -15,14 +15,14 @@ }: buildNpmPackage (finalAttrs: { pname = "claude-code"; - version = "2.1.97"; + version = "2.1.104"; src = fetchzip { url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${finalAttrs.version}.tgz"; - hash = "sha256-J92ILqBJmXyAueUPZ+HYZY0ls3OfN2EAhFyQHTOQF5A="; + hash = "sha256-Cjf7xYaIPR0xrwEG91/HIt0/2sU+t2mXbadzP2VFucU="; }; - npmDepsHash = "sha256-0fZu5r/zQjUSbm49FhZSqiIyMKdmH050NSxoVWd3XoU="; + npmDepsHash = "sha256-o9eaCZpAuoa9pCpEOmIKK3MlvBXSCuSENrbqXV21X1Q="; strictDeps = true; From 28475e41393e49f84fcfe624a15173681679abe0 Mon Sep 17 00:00:00 2001 From: Markus Hauck Date: Sun, 12 Apr 2026 09:41:53 +0200 Subject: [PATCH 40/47] claude-code-bin: 2.1.97 -> 2.1.104 https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md --- pkgs/by-name/cl/claude-code-bin/manifest.json | 36 +++++++++---------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/pkgs/by-name/cl/claude-code-bin/manifest.json b/pkgs/by-name/cl/claude-code-bin/manifest.json index cd3310a9a193..b58aa36f3e26 100644 --- a/pkgs/by-name/cl/claude-code-bin/manifest.json +++ b/pkgs/by-name/cl/claude-code-bin/manifest.json @@ -1,46 +1,46 @@ { - "version": "2.1.97", - "buildDate": "2026-04-08T20:52:51Z", + "version": "2.1.104", + "buildDate": "2026-04-12T01:53:39Z", "platforms": { "darwin-arm64": { "binary": "claude", - "checksum": "9104eba60ca82c590ababc5eee0d01f2dc5440d7cf2d668e4c48d6485e41cfeb", - "size": 199579088 + "checksum": "185aabd6d16dacb01a6dd41fc8d8ae5ea78ac8a6a3683caa05b759c47b24de60", + "size": 201461744 }, "darwin-x64": { "binary": "claude", - "checksum": "d6e6ee329dbf1cd0222cd710039086aab9621bc85d65d314adee421446dda08c", - "size": 201052496 + "checksum": "f1ad0ee6ff3401aceb922cf85ccaf6672a8b894ced23d63ca149d918c01a471d", + "size": 202959872 }, "linux-arm64": { "binary": "claude", - "checksum": "85167cb721655fdd90b002012a28eca273c89dc2fd709be49afe2a7724c365a0", - "size": 231868992 + "checksum": "f0a79ec304334503a563c6d4618b0ea1fcbbe477a047dd3955e2078a3c5559c1", + "size": 233835072 }, "linux-x64": { "binary": "claude", - "checksum": "0d43fcd11d29206563eeef3a1f787f0615c21cd703cc91f3a180915fd5797ef6", - "size": 231615104 + "checksum": "f5fe84d4b8a5a322b83a8ae63ac117adb143d2a9a0bfd73a201a5201d6423869", + "size": 233523840 }, "linux-arm64-musl": { "binary": "claude", - "checksum": "b0cfda67d7dbfadb37c0f2f8714a2694958f988e29785d5bcf00d6f3968ab611", - "size": 224987584 + "checksum": "86010c0217add5c852cf6af9db4dceaf582a3a327b1d6a4b5cd040583fcbc7ce", + "size": 226888128 }, "linux-x64-musl": { "binary": "claude", - "checksum": "ab1e66323397e1687ca6a074d471af44ba3cee7ac839632e6b3dbf55dfa75f0d", - "size": 225929664 + "checksum": "c31bb2fb8133a5f3281f496bbf3188a6e7ab685d6fa83d90ab7779c8db7a937b", + "size": 227838400 }, "win32-x64": { "binary": "claude.exe", - "checksum": "b678e7827fdcfcd9ac9b0eb7c7b1dda4f06b7ecbff4fd89c7fd22be3578f79ea", - "size": 241307296 + "checksum": "dd575768c8815d26a7771e4648ddc1100cb9f284d761e3c081d9e4b69b3a96a7", + "size": 243137184 }, "win32-arm64": { "binary": "claude.exe", - "checksum": "78db7edd6de917d733bdcb55560d0f8f7543666254ea3a66b05053a45c549f3b", - "size": 238017696 + "checksum": "395469d75b80a3b1c3dadbb7ca5c93adaf8732c5fc96f1f1ca0b6a3548909141", + "size": 239837344 } } } From 8f1269236ac592f75b266bd785839d161e0f7e9a Mon Sep 17 00:00:00 2001 From: Markus Hauck Date: Sun, 12 Apr 2026 09:42:02 +0200 Subject: [PATCH 41/47] vscode-extensions.anthropic.claude-code: 2.1.96 -> 2.1.101 https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md --- .../vscode/extensions/anthropic.claude-code/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix b/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix index 912a15f69a5b..e308dbb2b625 100644 --- a/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix +++ b/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix @@ -8,8 +8,8 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { name = "claude-code"; publisher = "anthropic"; - version = "2.1.96"; - hash = "sha256-9WVCySGmohmyzTzcskzGCHk6ZFX+/HwkpmX2yudVar8="; + version = "2.1.101"; + hash = "sha256-L16rJFwOIK8afKXhZ2ekEEoRIRYfHoHTUHP0+iEL1BI="; }; postInstall = '' From 32c4b581734980b23faaffecd4c39fce6f12b6aa Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 08:21:41 +0000 Subject: [PATCH 42/47] monkeys-audio: 12.62 -> 12.63 --- pkgs/by-name/mo/monkeys-audio/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/mo/monkeys-audio/package.nix b/pkgs/by-name/mo/monkeys-audio/package.nix index 7a5fc29b0080..a7ca84f6fb29 100644 --- a/pkgs/by-name/mo/monkeys-audio/package.nix +++ b/pkgs/by-name/mo/monkeys-audio/package.nix @@ -6,12 +6,12 @@ }: stdenv.mkDerivation (finalAttrs: { - version = "12.62"; + version = "12.63"; pname = "monkeys-audio"; src = fetchzip { url = "https://monkeysaudio.com/files/MAC_${builtins.concatStringsSep "" (lib.strings.splitString "." finalAttrs.version)}_SDK.zip"; - hash = "sha256-YUY/VATJ+2bCKEdNfdvf+TQXHD7UWjd++CSZ5ut6Bs4="; + hash = "sha256-6+KptHteX8maGCjZhf9A49Ri2zoO9mFvc3m4Nr8tGwA="; stripRoot = false; }; From 9660ae5d5a2d36ced016a543d89cea02ae41be7d Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 08:34:38 +0000 Subject: [PATCH 43/47] libretro.stella: 0-unstable-2026-04-04 -> 0-unstable-2026-04-12 --- pkgs/applications/emulators/libretro/cores/stella.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/stella.nix b/pkgs/applications/emulators/libretro/cores/stella.nix index 3f929f869075..c7029cfd8c5b 100644 --- a/pkgs/applications/emulators/libretro/cores/stella.nix +++ b/pkgs/applications/emulators/libretro/cores/stella.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "stella"; - version = "0-unstable-2026-04-04"; + version = "0-unstable-2026-04-12"; src = fetchFromGitHub { owner = "stella-emu"; repo = "stella"; - rev = "1a09c51e639d44bd821a598a095c5d3f6776590e"; - hash = "sha256-qEEE7QMTDwVFMB/6dmTq8VsOQ9qwYky8SBGD0KppqTs="; + rev = "7d9148f97c9f4ba8903ba3e19cbfb418c779bbb5"; + hash = "sha256-l1PdtMtYmnYzUyEoAuZ2Wh9g85kUFHTfq6iBJOZ5Cfc="; }; makefile = "Makefile"; From a25bc49f78de01c8d78eeb910e43f54fe7ecfc21 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 12 Apr 2026 09:31:16 +0000 Subject: [PATCH 44/47] terraform-providers.huaweicloud_huaweicloud: 1.89.0 -> 1.90.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 46e54dc860e6..ce96f145cf15 100644 --- a/pkgs/applications/networking/cluster/terraform-providers/providers.json +++ b/pkgs/applications/networking/cluster/terraform-providers/providers.json @@ -715,11 +715,11 @@ "vendorHash": "sha256-rd7QuDdq7xRMyaQIDyXY1DI2Tt/wy3oXan/nE0HIyT0=" }, "huaweicloud_huaweicloud": { - "hash": "sha256-wkUdMBRyD16fDTC2+/Ie1Ugf9Eo1X3FQQXn2ivwpHx0=", + "hash": "sha256-Eg811AwJwuHZ/270+TNh6JskCGRUt0ikk6yShjtVtcU=", "homepage": "https://registry.terraform.io/providers/huaweicloud/huaweicloud", "owner": "huaweicloud", "repo": "terraform-provider-huaweicloud", - "rev": "v1.89.0", + "rev": "v1.90.0", "spdx": "MPL-2.0", "vendorHash": null }, From 33fa3264c65b583c9f4f1d9e3d7c5b81b77bda05 Mon Sep 17 00:00:00 2001 From: zowoq <59103226+zowoq@users.noreply.github.com> Date: Sun, 12 Apr 2026 20:48:36 +1000 Subject: [PATCH 45/47] nixVersions.nix_2_34: 2.34.5 -> 2.34.6 Diff: https://github.com/NixOS/nix/compare/2.34.5...2.34.6 --- pkgs/tools/package-management/nix/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/tools/package-management/nix/default.nix b/pkgs/tools/package-management/nix/default.nix index 477dee901c3d..78cbbd8541bf 100644 --- a/pkgs/tools/package-management/nix/default.nix +++ b/pkgs/tools/package-management/nix/default.nix @@ -197,14 +197,14 @@ lib.makeExtensible ( nixComponents_2_34 = (nixDependencies.callPackage ./modular/packages.nix rec { - version = "2.34.5"; + version = "2.34.6"; inherit teams; otherSplices = generateSplicesForNixComponents "nixComponents_2_34"; src = fetchFromGitHub { owner = "NixOS"; repo = "nix"; tag = version; - hash = "sha256-/S2bnz+TbRFGmNyR31Hfa70uFvJoMM9wYDjpyEw8I+U="; + hash = "sha256-kHMyhuzhLtH3f+wAcNvAL62ct2kmwZOp2B54SHkMMo0="; }; }).appendPatches patches_common; From 2f4755699677ede79c8ef9fe61cb88e83e192f6b Mon Sep 17 00:00:00 2001 From: Florian Klink Date: Sun, 29 Mar 2026 14:22:02 +0200 Subject: [PATCH 46/47] speakersafetyd: 1.1.2 -> 1.1.2-unstable-2026-03-28 This drops the blackbox functionality, and uses DynamicUser=yes. --- pkgs/by-name/sp/speakersafetyd/package.nix | 15 ++++----------- .../sp/speakersafetyd/remove-install-paths.patch | 16 ---------------- 2 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 pkgs/by-name/sp/speakersafetyd/remove-install-paths.patch diff --git a/pkgs/by-name/sp/speakersafetyd/package.nix b/pkgs/by-name/sp/speakersafetyd/package.nix index eab22ba075df..68a108e8b2ff 100644 --- a/pkgs/by-name/sp/speakersafetyd/package.nix +++ b/pkgs/by-name/sp/speakersafetyd/package.nix @@ -11,20 +11,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "speakersafetyd"; - version = "1.1.2"; + version = "1.1.2-unstable-2026-03-28"; src = fetchFromGitHub { owner = "AsahiLinux"; repo = "speakersafetyd"; - tag = finalAttrs.version; - hash = "sha256-sSGoF2c5HfPM2FBrBJwJ9NvExYijGx6JH1bJp3epfe0="; + rev = "a97c341e39e3f89e99f65d2a35d4e060b3b0168a"; + hash = "sha256-FWpO2cp8licwevpAP25fmiIUEehkQp61E4A7RmsKJH0="; }; - cargoHash = "sha256-9XbrIY1VwnHtqi/ZfS952SyjNjA/TJRdOqCsPReZI8o="; - - patches = [ - ./remove-install-paths.patch - ]; + cargoHash = "sha256-xcCnzDN/U3sp12UwznaYjalzcKxo8Eo4vHnO/Sf++Zk="; nativeBuildInputs = [ pkg-config @@ -34,8 +30,6 @@ rustPlatform.buildRustPackage (finalAttrs: { postPatch = '' substituteInPlace speakersafetyd.service \ - --replace-fail "User=speakersafetyd" \ - "" \ --replace-fail "/usr" \ "$out" @@ -50,7 +44,6 @@ rustPlatform.buildRustPackage (finalAttrs: { "UNITDIR=lib/systemd/system" "UDEVDIR=lib/udev/rules.d" "SHAREDIR=share" - "TMPFILESDIR=lib/tmpfiles.d" ]; dontCargoInstall = true; diff --git a/pkgs/by-name/sp/speakersafetyd/remove-install-paths.patch b/pkgs/by-name/sp/speakersafetyd/remove-install-paths.patch deleted file mode 100644 index 9581dc7ca1e5..000000000000 --- a/pkgs/by-name/sp/speakersafetyd/remove-install-paths.patch +++ /dev/null @@ -1,16 +0,0 @@ -diff --git a/Makefile b/Makefile -index 41bf7b4..ca14be7 100644 ---- a/Makefile -+++ b/Makefile -@@ -24,11 +24,8 @@ install-data: - install -pm0644 95-speakersafetyd.rules $(DESTDIR)/$(UDEVDIR)/95-speakersafetyd.rules - install -dDm0755 $(DESTDIR)/$(SHAREDIR)/speakersafetyd/apple - install -pm0644 -t $(DESTDIR)/$(SHAREDIR)/speakersafetyd/apple $(wildcard conf/apple/*) -- install -dDm0755 -o $(SPEAKERSAFETYD_USER) -g $(SPEAKERSAFETYD_GROUP) $(DESTDIR)/$(VARDIR)/lib/speakersafetyd -- install -dDm0700 -o $(SPEAKERSAFETYD_USER) -g $(SPEAKERSAFETYD_GROUP) $(DESTDIR)/$(VARDIR)/lib/speakersafetyd/blackbox - install -dDm0755 $(DESTDIR)/$(TMPFILESDIR) - install -pm0644 speakersafetyd.tmpfiles $(DESTDIR)/$(TMPFILESDIR)/speakersafetyd.conf -- install -dDm0755 -o $(SPEAKERSAFETYD_USER) -g $(SPEAKERSAFETYD_GROUP) $(DESTDIR)/run/speakersafetyd - - uninstall: - rm -f $(DESTDIR)/$(BINDIR)/speakersafetyd $(DESTDIR)/$(UNITDIR)/speakersafetyd.service $(DESTDIR)/$(UDEVDIR)/95-speakersafetyd.rules $(DESTDIR)/$(TMPFILESDIR)/speakersafetyd.conf From d5992a89c67870c8843bf4898b11b5587c2b6a6b Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 6 Apr 2026 13:43:40 +0000 Subject: [PATCH 47/47] weechat-unwrapped: 4.8.2 -> 4.9.0 https://github.com/weechat/weechat/releases/tag/v4.9.0 --- pkgs/applications/networking/irc/weechat/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/irc/weechat/default.nix b/pkgs/applications/networking/irc/weechat/default.nix index 2d8920b2a7f5..efc8b1f73562 100644 --- a/pkgs/applications/networking/irc/weechat/default.nix +++ b/pkgs/applications/networking/irc/weechat/default.nix @@ -105,11 +105,11 @@ assert lib.all (p: p.enabled -> !(builtins.elem null p.buildInputs)) plugins; stdenv.mkDerivation rec { pname = "weechat"; - version = "4.8.2"; + version = "4.9.0"; src = fetchurl { url = "https://weechat.org/files/src/weechat-${version}.tar.xz"; - hash = "sha256-fi9hnU3NKNnYaGR2NYGhtFNJn43QZSr4Y7VARaiWTWw="; + hash = "sha256-fLubJ/JafS8djEJqCPjmJe77wdPlm793WSVET3I5S28="; }; # Why is this needed? https://github.com/weechat/weechat/issues/2031