From 55d05faa1f57d312b29a0a36386fd641a4aa344d Mon Sep 17 00:00:00 2001 From: Shelvacu Date: Sat, 10 May 2025 16:59:24 -0700 Subject: [PATCH 01/14] nodeenv: expose binary from python3Packages.nodeenv as an application package --- pkgs/by-name/no/nodeenv/package.nix | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 pkgs/by-name/no/nodeenv/package.nix diff --git a/pkgs/by-name/no/nodeenv/package.nix b/pkgs/by-name/no/nodeenv/package.nix new file mode 100644 index 000000000000..ddf3cd59ef3e --- /dev/null +++ b/pkgs/by-name/no/nodeenv/package.nix @@ -0,0 +1,4 @@ +{ + python3Packages, +}: +python3Packages.toPythonApplication python3Packages.nodeenv From 21806777f2c18104f043bb229f29adf5358983f2 Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 29 May 2025 14:06:13 -0700 Subject: [PATCH 02/14] python3Packages.google-cloud-spanner: add optional dependencies for tracing --- .../google-cloud-spanner/default.nix | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix index 66b18afb7c96..f1e6c1129008 100644 --- a/pkgs/development/python-modules/google-cloud-spanner/default.nix +++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix @@ -19,14 +19,14 @@ # optional dependencies libcst, - - # testing - google-cloud-monitoring, - mmh3, - mock, opentelemetry-api, opentelemetry-sdk, opentelemetry-semantic-conventions, + google-cloud-monitoring, + mmh3, + + # testing + mock, pytest-asyncio, pytestCheckHook, }: @@ -54,10 +54,18 @@ buildPythonPackage rec { proto-plus protobuf sqlparse - ] ++ google-api-core.optional-dependencies.grpc; + ]; optional-dependencies = { libcst = [ libcst ]; + tracing = [ + opentelemetry-api + opentelemetry-sdk + opentelemetry-semantic-conventions + # opentelemetry-resourcedetector-gcp # Not available in nixpkgs + google-cloud-monitoring + mmh3 + ]; }; nativeCheckInputs = [ @@ -70,7 +78,7 @@ buildPythonPackage rec { opentelemetry-semantic-conventions pytest-asyncio pytestCheckHook - ]; + ] ++ lib.flatten (lib.attrValues optional-dependencies); preCheck = '' # prevent google directory from shadowing google imports @@ -117,7 +125,7 @@ buildPythonPackage rec { meta = { description = "Cloud Spanner API client library"; homepage = "https://github.com/googleapis/python-spanner"; - changelog = "https://github.com/googleapis/python-spanner/blob/v${version}/CHANGELOG.md"; + changelog = "https://github.com/googleapis/python-spanner/blob/${src.tag}/CHANGELOG.md"; license = lib.licenses.asl20; maintainers = [ lib.maintainers.sarahec ]; }; From 6c52e60f205ed8ebfc636bcaed8cf4fedcae45d6 Mon Sep 17 00:00:00 2001 From: Sarah Clark Date: Thu, 29 May 2025 14:13:06 -0700 Subject: [PATCH 03/14] python3Packages.google-cloud-spanner: 3.54.0 -> 3.55.0 changelog: https://github.com/googleapis/python-spanner/releases/tag/v3.55.0 diff: https://github.com/googleapis/python-spanner/compare/v3.54.0...v3.55.0 --- .../python-modules/google-cloud-spanner/default.nix | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/google-cloud-spanner/default.nix b/pkgs/development/python-modules/google-cloud-spanner/default.nix index f1e6c1129008..a580a84ded06 100644 --- a/pkgs/development/python-modules/google-cloud-spanner/default.nix +++ b/pkgs/development/python-modules/google-cloud-spanner/default.nix @@ -33,14 +33,14 @@ buildPythonPackage rec { pname = "google-cloud-spanner"; - version = "3.54.0"; + version = "3.55.0"; pyproject = true; src = fetchFromGitHub { owner = "googleapis"; repo = "python-spanner"; tag = "v${version}"; - hash = "sha256-uJKUgY7fV+AK/2HQyjQRFypcL+mPZ/M5ZtAU+f73ezM="; + hash = "sha256-0+mTBqgy8SaHjoYhQjCaypipVsJTrN2DdhcfPY3PxSc="; }; build-system = [ setuptools ]; @@ -92,6 +92,8 @@ buildPythonPackage rec { "test_list_instance" # can't import mmh3 "test_generate_client_hash" + # Flaky, compares to execution time + "test_snapshot_read_concurrent" ]; disabledTestPaths = [ From ea722c21ddea9a1ba2f221d560fc1022aa215ba3 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Fri, 30 May 2025 22:39:55 +0000 Subject: [PATCH 04/14] navidrome: 0.55.2 -> 0.56.1 --- pkgs/by-name/na/navidrome/package.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/na/navidrome/package.nix b/pkgs/by-name/na/navidrome/package.nix index 39d1396f83bd..67292a0d7738 100644 --- a/pkgs/by-name/na/navidrome/package.nix +++ b/pkgs/by-name/na/navidrome/package.nix @@ -18,23 +18,23 @@ buildGo124Module rec { pname = "navidrome"; - version = "0.55.2"; + version = "0.56.1"; src = fetchFromGitHub { owner = "navidrome"; repo = "navidrome"; rev = "v${version}"; - hash = "sha256-RJDWpaB0rdrwLSEjwLIZ7ymvYvFSX4/fIT3xFki3278="; + hash = "sha256-Vq8qfBqxF/PVRtYYTsFydnJ7z/IuoNUWRWTLy/RM6xg="; }; - vendorHash = "sha256-stdYTvYwsu00l5sAW86nBlwnACOfyLbKi7Xn5gdM/7Y="; + vendorHash = "sha256-E7Q3wxUd5JAwERBKD2NZaVyj1kszOxvxeDY0s/fEDfY="; npmRoot = "ui"; npmDeps = fetchNpmDeps { inherit src; sourceRoot = "${src.name}/ui"; - hash = "sha256-lM8637tcKc9iSPjXJPDZXFCGj7pShOXTC6X2iketg90="; + hash = "sha256-tl6unHz0E0v0ObrfTiE0vZwVSyVFmrLggNM5QsUGsvI="; }; nativeBuildInputs = [ From 962525c1e7e72ba00cb68190c2259412a7899643 Mon Sep 17 00:00:00 2001 From: Jared Baur Date: Sat, 3 May 2025 20:23:45 -0700 Subject: [PATCH 05/14] kodi: package build-time tools separately Packaging buid-time tools internal to Kodi in separate derivations allow for cross-compiling Kodi without mixing which dependencies are needed for those build-time tools vs the Kodi runtime programs. --- pkgs/applications/video/kodi/unwrapped.nix | 589 +++++++++++---------- 1 file changed, 319 insertions(+), 270 deletions(-) diff --git a/pkgs/applications/video/kodi/unwrapped.nix b/pkgs/applications/video/kodi/unwrapped.nix index 4012b94eb450..937a2274548f 100644 --- a/pkgs/applications/video/kodi/unwrapped.nix +++ b/pkgs/applications/video/kodi/unwrapped.nix @@ -186,294 +186,343 @@ let lib.optional gbmSupport "gbm" ++ lib.optional waylandSupport "wayland" ++ lib.optional x11Support "x11"; - in -stdenv.mkDerivation (finalAttrs: { - pname = "kodi"; - version = "21.2"; - kodiReleaseName = "Omega"; +stdenv.mkDerivation ( + finalAttrs: + let + texturePacker = buildPackages.callPackage ( + { + cmake, + giflib, + libjpeg, + libpng, + lzo, + stdenv, + zlib, + pkg-config, + }: + stdenv.mkDerivation { + pname = finalAttrs.pname + "-build-tool-texture-packer"; + inherit (finalAttrs) version src; - src = fetchFromGitHub { - owner = "xbmc"; - repo = "xbmc"; - rev = "${finalAttrs.version}-${finalAttrs.kodiReleaseName}"; - hash = "sha256-RdTJcq6FPerQx05dU3r8iyaorT4L7162hg5RdywsA88="; - }; + sourceRoot = "${finalAttrs.src.name}/tools/depends/native/TexturePacker/src"; - patches = [ - # Backport to fix build with Pipewire 1.4 - # FIXME: remove in the next update - (fetchpatch { - url = "https://github.com/xbmc/xbmc/commit/269053ebbfd3cc4a3156a511f54ab7f08a09a730.patch"; - hash = "sha256-JzzrMJvAufrxTxtWnzknUS9JLJEed+qdtVnIYYe9LCw="; - }) - ]; + nativeBuildInputs = [ + pkg-config + cmake + ]; - # make derivations declared in the let binding available here, so - # they can be overridden - inherit - libdvdcss - libdvdnav - libdvdread - groovy - apache_commons_lang - apache_commons_text - ; + buildInputs = [ + giflib + libjpeg + libpng + lzo + zlib + ]; - buildInputs = - [ - gnutls - libidn2 - libtasn1 - nasm - p11-kit - libxml2 - python3Packages.python - boost - libmicrohttpd - gettext - pcre-cpp - yajl - fribidi - libva - libdrm - openssl - gperf - tinyxml2 - tinyxml-2 - taglib - libssh - gtest - ncurses - spdlog - alsa-lib - libGL - libGLU - fontconfig - freetype - ftgl - libjpeg - libpng - libtiff - libmpeg2 - libsamplerate - libmad - libogg - libvorbis - flac - libxslt - systemd - lzo - libcdio - libmodplug - libass - libbluray - libudfread - sqlite - libmysqlclient - avahi - lame - curl - bzip2 - zip - unzip - mesa-demos - libcec - libcec_platform - dcadec - libuuid - libxcrypt - libgcrypt - libgpg-error - libunistring - libcrossguid - libplist - bluez - giflib - glib - harfbuzz - lcms2 - libpthreadstubs - ffmpeg - flatbuffers - fstrcmp - rapidjson - lirc - mesa-gl-headers - ] - ++ lib.optionals x11Support [ - libX11 - xorgproto - libXt - libXmu - libXext.dev - libXdmcp - libXinerama - libXrandr.dev - libXtst - libXfixes - ] - ++ lib.optional dbusSupport dbus - ++ lib.optional joystickSupport cwiid - ++ lib.optional nfsSupport libnfs - ++ lib.optional pulseSupport libpulseaudio - ++ lib.optional pipewireSupport pipewire - ++ lib.optional rtmpSupport rtmpdump - ++ lib.optional sambaSupport samba - ++ lib.optional udevSupport udev - ++ lib.optional usbSupport libusb-compat-0_1 - ++ lib.optional vdpauSupport libvdpau - ++ lib.optionals waylandSupport [ - wayland - waylandpp.dev - wayland-protocols - # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise - libxkbcommon.dev - ] - ++ lib.optionals gbmSupport [ - libxkbcommon.dev - libgbm - libinput.dev - libdisplay-info + env.NIX_CFLAGS_COMPILE = lib.optionalString (!stdenv.hostPlatform.isWindows) "-DTARGET_POSIX"; + + preConfigure = '' + cmakeFlagsArray+=(-DKODI_SOURCE_DIR=$src -DCMAKE_MODULE_PATH=$src/cmake/modules) + ''; + + meta.mainProgram = "TexturePacker"; + } + ) { }; + + jsonSchemaBuilder = buildPackages.callPackage ( + { stdenv, cmake }: + stdenv.mkDerivation { + pname = finalAttrs.pname + "-build-tool-json-schema-builder"; + inherit (finalAttrs) version src; + + sourceRoot = "${finalAttrs.src.name}/tools/depends/native/JsonSchemaBuilder/src"; + + nativeBuildInputs = [ cmake ]; + + meta.mainProgram = "JsonSchemaBuilder"; + } + ) { }; + in + { + pname = "kodi"; + version = "21.2"; + kodiReleaseName = "Omega"; + + src = fetchFromGitHub { + owner = "xbmc"; + repo = "xbmc"; + rev = "${finalAttrs.version}-${finalAttrs.kodiReleaseName}"; + hash = "sha256-RdTJcq6FPerQx05dU3r8iyaorT4L7162hg5RdywsA88="; + }; + + patches = [ + # Backport to fix build with Pipewire 1.4 + # FIXME: remove in the next update + (fetchpatch { + url = "https://github.com/xbmc/xbmc/commit/269053ebbfd3cc4a3156a511f54ab7f08a09a730.patch"; + hash = "sha256-JzzrMJvAufrxTxtWnzknUS9JLJEed+qdtVnIYYe9LCw="; + }) ]; - nativeBuildInputs = - [ - cmake - doxygen - makeWrapper - which - pkg-config - autoconf - automake - libtool # still needed for some components. Check if that is the case with 19.0 - jre_headless - yasm - gettext - python3Packages.python - flatbuffers + # make derivations declared in the let binding available here, so + # they can be overridden + inherit + libdvdcss + libdvdnav + libdvdread + groovy + apache_commons_lang + apache_commons_text + ; - # for TexturePacker - giflib - zlib - libpng - libjpeg - lzo - ] - ++ lib.optionals waylandSupport [ - wayland-protocols - waylandpp.bin + buildInputs = + [ + gnutls + libidn2 + libtasn1 + nasm + p11-kit + libxml2 + python3Packages.python + boost + libmicrohttpd + gettext + pcre-cpp + yajl + fribidi + libva + libdrm + openssl + gperf + tinyxml2 + tinyxml-2 + taglib + libssh + gtest + ncurses + spdlog + alsa-lib + libGL + libGLU + fontconfig + freetype + ftgl + libjpeg + libpng + libtiff + libmpeg2 + libsamplerate + libmad + libogg + libvorbis + flac + libxslt + systemd + lzo + libcdio + libmodplug + libass + libbluray + libudfread + sqlite + libmysqlclient + avahi + lame + curl + bzip2 + zip + unzip + mesa-demos + libcec + libcec_platform + dcadec + libuuid + libxcrypt + libgcrypt + libgpg-error + libunistring + libcrossguid + libplist + bluez + glib + harfbuzz + lcms2 + libpthreadstubs + ffmpeg + flatbuffers + fstrcmp + rapidjson + lirc + mesa-gl-headers + + # Deps needed by TexturePacker, which is built and installed in normal + # kodi build, however the one used during the build is not this one + # in order to support cross-compilation. + giflib + zlib + ] + ++ lib.optionals x11Support [ + libX11 + xorgproto + libXt + libXmu + libXext.dev + libXdmcp + libXinerama + libXrandr.dev + libXtst + libXfixes + ] + ++ lib.optional dbusSupport dbus + ++ lib.optional joystickSupport cwiid + ++ lib.optional nfsSupport libnfs + ++ lib.optional pulseSupport libpulseaudio + ++ lib.optional pipewireSupport pipewire + ++ lib.optional rtmpSupport rtmpdump + ++ lib.optional sambaSupport samba + ++ lib.optional udevSupport udev + ++ lib.optional usbSupport libusb-compat-0_1 + ++ lib.optional vdpauSupport libvdpau + ++ lib.optionals waylandSupport [ + wayland + waylandpp.dev + wayland-protocols + # Not sure why ".dev" is needed here, but CMake doesn't find libxkbcommon otherwise + libxkbcommon.dev + ] + ++ lib.optionals gbmSupport [ + libxkbcommon.dev + libgbm + libinput.dev + libdisplay-info + ]; + + nativeBuildInputs = + [ + cmake + doxygen + makeWrapper + which + pkg-config + autoconf + automake + libtool # still needed for some components. Check if that is the case with 19.0 + jre_headless + yasm + gettext + python3Packages.python + flatbuffers + ] + ++ lib.optionals waylandSupport [ + wayland-protocols + waylandpp.bin + ]; + + depsBuildBuild = [ + buildPackages.stdenv.cc ]; - depsBuildBuild = [ - buildPackages.stdenv.cc - ]; + cmakeFlags = + [ + "-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}" + "-Dlibdvdcss_URL=${finalAttrs.libdvdcss}" + "-Dlibdvdnav_URL=${finalAttrs.libdvdnav}" + "-Dlibdvdread_URL=${finalAttrs.libdvdread}" + "-Dgroovy_SOURCE_DIR=${finalAttrs.groovy}" + "-Dapache-commons-lang_SOURCE_DIR=${finalAttrs.apache_commons_lang}" + "-Dapache-commons-text_SOURCE_DIR=${finalAttrs.apache_commons_text}" + # Upstream derives this from the git HEADs hash and date. + # LibreElec (minimal distro for kodi) uses the equivalent to this. + "-DGIT_VERSION=${finalAttrs.version}-${finalAttrs.kodiReleaseName}" + "-DENABLE_EVENTCLIENTS=ON" + "-DENABLE_INTERNAL_CROSSGUID=OFF" + "-DENABLE_INTERNAL_RapidJSON=OFF" + "-DENABLE_OPTICAL=${if opticalSupport then "ON" else "OFF"}" + "-DENABLE_VDPAU=${if vdpauSupport then "ON" else "OFF"}" + "-DLIRC_DEVICE=/run/lirc/lircd" + "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig" + "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc" + "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python" + "-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}" + "-DWITH_JSONSCHEMABUILDER=${lib.getExe jsonSchemaBuilder}" + # When wrapped KODI_HOME will likely contain symlinks to static assets + # that Kodi's built in webserver will cautiously refuse to serve up + # (because their realpaths are outside of KODI_HOME and the other + # whitelisted directories). This adds the entire nix store to the Kodi + # webserver whitelist to avoid this problem. + "-DKODI_WEBSERVER_EXTRA_WHITELIST=${builtins.storeDir}" + ] + ++ lib.optionals waylandSupport [ + "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" + ] + ++ lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ + "-DWITH_TEXTUREPACKER=${lib.getExe texturePacker}" + ]; - cmakeFlags = - [ - "-DAPP_RENDER_SYSTEM=${if gbmSupport then "gles" else "gl"}" - "-Dlibdvdcss_URL=${finalAttrs.libdvdcss}" - "-Dlibdvdnav_URL=${finalAttrs.libdvdnav}" - "-Dlibdvdread_URL=${finalAttrs.libdvdread}" - "-Dgroovy_SOURCE_DIR=${finalAttrs.groovy}" - "-Dapache-commons-lang_SOURCE_DIR=${finalAttrs.apache_commons_lang}" - "-Dapache-commons-text_SOURCE_DIR=${finalAttrs.apache_commons_text}" - # Upstream derives this from the git HEADs hash and date. - # LibreElec (minimal distro for kodi) uses the equivalent to this. - "-DGIT_VERSION=${finalAttrs.version}-${finalAttrs.kodiReleaseName}" - "-DENABLE_EVENTCLIENTS=ON" - "-DENABLE_INTERNAL_CROSSGUID=OFF" - "-DENABLE_INTERNAL_RapidJSON=OFF" - "-DENABLE_OPTICAL=${if opticalSupport then "ON" else "OFF"}" - "-DENABLE_VDPAU=${if vdpauSupport then "ON" else "OFF"}" - "-DLIRC_DEVICE=/run/lirc/lircd" - "-DSWIG_EXECUTABLE=${buildPackages.swig}/bin/swig" - "-DFLATBUFFERS_FLATC_EXECUTABLE=${buildPackages.flatbuffers}/bin/flatc" - "-DPYTHON_EXECUTABLE=${buildPackages.python3Packages.python}/bin/python" - "-DPYTHON_LIB_PATH=${python3Packages.python.sitePackages}" - # When wrapped KODI_HOME will likely contain symlinks to static assets - # that Kodi's built in webserver will cautiously refuse to serve up - # (because their realpaths are outside of KODI_HOME and the other - # whitelisted directories). This adds the entire nix store to the Kodi - # webserver whitelist to avoid this problem. - "-DKODI_WEBSERVER_EXTRA_WHITELIST=${builtins.storeDir}" - ] - ++ lib.optionals waylandSupport [ - "-DWAYLANDPP_SCANNER=${buildPackages.waylandpp}/bin/wayland-scanner++" - ]; + # 14 tests fail but the biggest issue is that every test takes 30 seconds - + # I'm guessing there is a thing waiting to time out + doCheck = false; - # 14 tests fail but the biggest issue is that every test takes 30 seconds - - # I'm guessing there is a thing waiting to time out - doCheck = false; - - preConfigure = - '' + preConfigure = '' cmakeFlagsArray+=("-DCORE_PLATFORM_NAME=${lib.concatStringsSep " " kodi_platforms}") - '' - + lib.optionalString (stdenv.hostPlatform != stdenv.buildPlatform) '' - # Need these tools on the build system when cross compiling, - # hacky, but have found no other way. - CXX=$CXX_FOR_BUILD LD=ld make -C tools/depends/native/JsonSchemaBuilder - appendToVar cmakeFlags "-DWITH_JSONSCHEMABUILDER=$PWD/tools/depends/native/JsonSchemaBuilder/bin" - - CXX=$CXX_FOR_BUILD LD=ld make EXTRA_CONFIGURE= -C tools/depends/native/TexturePacker - appendToVar cmakeFlags "-DWITH_TEXTUREPACKER=$PWD/tools/depends/native/TexturePacker/bin" ''; - postInstall = '' - # TODO: figure out which binaries should be wrapped this way and which shouldn't - for p in $(ls --ignore=kodi-send $out/bin/) ; do - wrapProgram $out/bin/$p \ - --prefix PATH ":" "${ - lib.makeBinPath ( - [ - python3Packages.python - mesa-demos - ] - ++ lib.optional x11Support xdpyinfo - ++ lib.optional sambaSupport samba - ) - }" \ - --prefix LD_LIBRARY_PATH ":" "${ - lib.makeLibraryPath ( - [ - curl - systemd - libmad - libcec - libcec_platform - libass - ] - ++ lib.optional vdpauSupport libvdpau - ++ lib.optional nfsSupport libnfs - ++ lib.optional rtmpSupport rtmpdump - ) - }" - done + postInstall = '' + # TODO: figure out which binaries should be wrapped this way and which shouldn't + for p in $(ls --ignore=kodi-send $out/bin/) ; do + wrapProgram $out/bin/$p \ + --prefix PATH ":" "${ + lib.makeBinPath ( + [ + python3Packages.python + mesa-demos + ] + ++ lib.optional x11Support xdpyinfo + ++ lib.optional sambaSupport samba + ) + }" \ + --prefix LD_LIBRARY_PATH ":" "${ + lib.makeLibraryPath ( + [ + curl + systemd + libmad + libcec + libcec_platform + libass + ] + ++ lib.optional vdpauSupport libvdpau + ++ lib.optional nfsSupport libnfs + ++ lib.optional rtmpSupport rtmpdump + ) + }" + done - wrapProgram $out/bin/kodi-send \ - --prefix PYTHONPATH : $out/${python3Packages.python.sitePackages} + wrapProgram $out/bin/kodi-send \ + --prefix PYTHONPATH : $out/${python3Packages.python.sitePackages} - substituteInPlace $out/share/xsessions/kodi.desktop \ - --replace kodi-standalone $out/bin/kodi-standalone - ''; + substituteInPlace $out/share/xsessions/kodi.desktop \ + --replace kodi-standalone $out/bin/kodi-standalone + ''; - doInstallCheck = true; + doInstallCheck = true; - installCheckPhase = "$out/bin/kodi --version"; + installCheckPhase = "$out/bin/kodi --version"; - passthru = { - pythonPackages = python3Packages; - ffmpeg = ffmpeg; - kodi = finalAttrs.finalPackage; - }; + passthru = { + pythonPackages = python3Packages; + ffmpeg = ffmpeg; + kodi = finalAttrs.finalPackage; + }; - meta = with lib; { - description = "Media center"; - homepage = "https://kodi.tv/"; - license = licenses.gpl2Plus; - platforms = platforms.linux; - teams = [ teams.kodi ]; - mainProgram = "kodi"; - }; -}) + meta = with lib; { + description = "Media center"; + homepage = "https://kodi.tv/"; + license = licenses.gpl2Plus; + platforms = platforms.linux; + teams = [ teams.kodi ]; + mainProgram = "kodi"; + }; + } +) From b398c5a391fd9a5438f9d5471098f760f4b10873 Mon Sep 17 00:00:00 2001 From: Rouven Czerwinski Date: Sat, 10 May 2025 14:46:19 +0200 Subject: [PATCH 06/14] python3Packages.labgrid: 24.0.2 -> 25.0 Release notes: https://github.com/labgrid-project/labgrid/releases/tag/v25.0 --- .../python-modules/labgrid/default.nix | 33 ++++++++++++++++--- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/pkgs/development/python-modules/labgrid/default.nix b/pkgs/development/python-modules/labgrid/default.nix index 1ae59e870c67..27c7f542572c 100644 --- a/pkgs/development/python-modules/labgrid/default.nix +++ b/pkgs/development/python-modules/labgrid/default.nix @@ -1,9 +1,12 @@ { ansicolors, attrs, - autobahn, buildPythonPackage, fetchFromGitHub, + fetchpatch, + grpcio, + grpcio-tools, + grpcio-reflection, jinja2, lib, mock, @@ -12,6 +15,7 @@ psutil, pyserial, pytestCheckHook, + pytest-benchmark, pytest-dependency, pytest-mock, pyudev, @@ -25,16 +29,32 @@ buildPythonPackage rec { pname = "labgrid"; - version = "24.0.2"; + version = "25.0"; pyproject = true; src = fetchFromGitHub { owner = "labgrid-project"; repo = "labgrid"; tag = "v${version}"; - hash = "sha256-rW9peT4zoPzVR6Kl/E8G4qBig/x/lvxpCtvNtwIIL+U="; + hash = "sha256-Czq8Wx8ThKLcR8GjdlRND+Y1nY1PTl6wDkz9ml83DBk="; }; + # Remove after package bump + patches = [ + (fetchpatch { + url = "https://github.com/Emantor/labgrid/commit/4a66b43882811d50600e37aa39b24ec40398d184.patch"; + sha256 = "sha256-eJMB1qFWiDzQXEB4dYOHYMQqCPHXEWCwWjNNY0yTC2s="; + }) + (fetchpatch { + url = "https://github.com/Emantor/labgrid/commit/d9933b3ec444c35d98fd41685481ecae8ff28bf4.patch"; + sha256 = "sha256-Zx5j+CD6Q89dLmTl5QSKI9M1IcZ97OCjEWtEbG+CKWE="; + }) + (fetchpatch { + url = "https://github.com/Emantor/labgrid/commit/f0b672afe1e8976c257f0adff9bf6e7ee9760d6f.patch"; + sha256 = "sha256-M7rg+W9SjWDdViWyWe3ERzbUowxzf09c4w1yG3jQGak="; + }) + ]; + build-system = [ setuptools setuptools-scm @@ -43,8 +63,10 @@ buildPythonPackage rec { dependencies = [ ansicolors attrs - autobahn jinja2 + grpcio + grpcio-tools + grpcio-reflection pexpect pyserial pyudev @@ -63,6 +85,7 @@ buildPythonPackage rec { openssh psutil pytestCheckHook + pytest-benchmark pytest-mock pytest-dependency ]; @@ -72,6 +95,8 @@ buildPythonPackage rec { "test_timing" ]; + pytestFlagsArray = [ "--benchmark-disable" ]; + meta = with lib; { description = "Embedded control & testing library"; homepage = "https://github.com/labgrid-project/labgrid"; From 14918d8f887b0135a6af32ac3c09bc6e6f3f2ae8 Mon Sep 17 00:00:00 2001 From: Brian McGillion Date: Sun, 25 May 2025 20:25:11 +0400 Subject: [PATCH 07/14] libusb-package: init at 1.0.26.3 This is a helper library for usb access from python scripts. It is added here in support of the cflib (crazyflie library) used to controll the small crazyflie nano drones. Signed-off-by: Brian McGillion --- .../python-modules/libusb-package/default.nix | 43 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 4 ++ 2 files changed, 47 insertions(+) create mode 100644 pkgs/development/python-modules/libusb-package/default.nix diff --git a/pkgs/development/python-modules/libusb-package/default.nix b/pkgs/development/python-modules/libusb-package/default.nix new file mode 100644 index 000000000000..7cc3d6602712 --- /dev/null +++ b/pkgs/development/python-modules/libusb-package/default.nix @@ -0,0 +1,43 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + setuptools-scm, + tomli, + importlib-resources, + libusb1, +}: + +buildPythonPackage rec { + pname = "libusb-package"; + version = "1.0.26.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "pyocd"; + repo = "libusb-package"; + tag = "v${version}"; + hash = "sha256-4zTyaidpSlledTcEztWzRgwj43oNV7xWrhMXCE9Qz3k="; + }; + + build-system = [ + setuptools + setuptools-scm + tomli + ]; + + dependencies = [ + importlib-resources + libusb1 + ]; + + meta = { + description = "Python package for simplified libusb distribution and usage with pyOCD"; + homepage = "https://github.com/pyocd/libusb-package"; + changelog = "https://github.com/pyocd/libusb-package/releases/tag/v${version}"; + license = lib.licenses.asl20; + maintainers = [ lib.maintainers.brianmcgillion ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index c4c9004ae04d..a7a1e6b8d340 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -8041,6 +8041,10 @@ self: super: with self; { libtorrent-rasterbar = (toPythonModule (pkgs.libtorrent-rasterbar.override { python3 = python; })).python; + libusb-package = callPackage ../development/python-modules/libusb-package { + inherit (pkgs) libusb1; + }; + libusb1 = callPackage ../development/python-modules/libusb1 { inherit (pkgs) libusb1; }; libusbsio = callPackage ../development/python-modules/libusbsio { inherit (pkgs) libusbsio; }; From ff11f6aec001a6a7acb9aace4591767e53393e94 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 13:54:14 +0000 Subject: [PATCH 08/14] nak: 0.14.1 -> 0.14.2 --- pkgs/by-name/na/nak/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/na/nak/package.nix b/pkgs/by-name/na/nak/package.nix index 98d44998f805..ca3017ba9983 100644 --- a/pkgs/by-name/na/nak/package.nix +++ b/pkgs/by-name/na/nak/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "nak"; - version = "0.14.1"; + version = "0.14.2"; src = fetchFromGitHub { owner = "fiatjaf"; repo = "nak"; tag = "v${finalAttrs.version}"; - hash = "sha256-uPsZV29xjVUeq0vKsTPf/hRtjsCnjaShiabnKXm5kPY="; + hash = "sha256-+91warH+uvQ5jkPIxkJxsS9R83cZ1u+FKMy3xgjHIAQ="; }; - vendorHash = "sha256-q6jdczZ8K+aJJHfN2OtW0mP4OpMbKAB16Bws2wFb6Zg="; + vendorHash = "sha256-HGZwcg8C9UuYu0+oPfJG4LEXIHqt+IRrDQdXtIjg0Hg="; ldflags = [ "-s" From 0b95d24dabddd50d7c12de449372e241e085cfa6 Mon Sep 17 00:00:00 2001 From: Brian McGillion Date: Sun, 25 May 2025 20:28:42 +0400 Subject: [PATCH 09/14] cflib: init at 0.1.28 Python library to communicate with and control the crazyflie micro quadcopters. Signed-off-by: Brian McGillion --- .../python-modules/cflib/default.nix | 90 +++++++++++++++++++ pkgs/top-level/python-packages.nix | 2 + 2 files changed, 92 insertions(+) create mode 100644 pkgs/development/python-modules/cflib/default.nix diff --git a/pkgs/development/python-modules/cflib/default.nix b/pkgs/development/python-modules/cflib/default.nix new file mode 100644 index 000000000000..a76c9568643d --- /dev/null +++ b/pkgs/development/python-modules/cflib/default.nix @@ -0,0 +1,90 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + setuptools-scm, + libusb-package, + numpy, + packaging, + pyserial, + pyusb, + scipy, + pytestCheckHook, + pyyaml, + udevCheckHook, +}: + +buildPythonPackage rec { + pname = "cflib"; + version = "0.1.28"; + pyproject = true; + + src = fetchFromGitHub { + owner = "bitcraze"; + repo = "crazyflie-lib-python"; + tag = version; + hash = "sha256-vGqwQVD80NcFJosVAmqj66uxYNoVtAqzVhVQiuWP5yM="; + }; + + strictDeps = true; + + build-system = [ + setuptools + setuptools-scm + ]; + + pythonRelaxDeps = [ "numpy" ]; + + dependencies = [ + libusb-package + numpy + packaging + pyserial + pyusb + scipy + ]; + + disabledTestPaths = [ + # exception: Cannot find a Crazyradio Dongle (HW required) + "sys_test/single_cf_grounded/" + "sys_test/swarm_test_rig/" + ]; + + pythonImportsCheck = [ "cflib" ]; + nativeCheckInputs = [ + pytestCheckHook + pyyaml + ]; + + # The udevCheckHook is used to verify udev rules + # requires diInstallCheck to be enabled, which is default for pythonPackages + nativeInstallCheckInputs = [ + udevCheckHook + ]; + + # Install udev rules as defined + # https://www.bitcraze.io/documentation/repository/crazyflie-lib-python/master/installation/usb_permissions/ + postInstall = '' + # Install udev rules + mkdir -p $out/etc/udev/rules.d + + cat < $out/etc/udev/rules.d/99-bitcraze.rules + # Crazyradio (normal operation) + SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="7777", MODE="0664", GROUP="plugdev" + # Bootloader + SUBSYSTEM=="usb", ATTRS{idVendor}=="1915", ATTRS{idProduct}=="0101", MODE="0664", GROUP="plugdev" + # Crazyflie (over USB) + SUBSYSTEM=="usb", ATTRS{idVendor}=="0483", ATTRS{idProduct}=="5740", MODE="0664", GROUP="plugdev" + EOF + ''; + + meta = { + description = "Python library for the Crazyflie quadcopter by Bitcraze"; + homepage = "https://github.com/bitcraze/crazyflie-lib-python"; + changelog = "https://github.com/bitcraze/crazyflie-lib-python/releases/tag/${version}"; + license = lib.licenses.gpl2Only; + maintainers = [ lib.maintainers.brianmcgillion ]; + platforms = lib.platforms.linux; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index a7a1e6b8d340..751cece0fb41 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -2366,6 +2366,8 @@ self: super: with self; { cfgv = callPackage ../development/python-modules/cfgv { }; + cflib = callPackage ../development/python-modules/cflib { }; + cfn-flip = callPackage ../development/python-modules/cfn-flip { }; cfn-lint = callPackage ../development/python-modules/cfn-lint { }; From b6529db3f2d9c2b4c415baed15711c6967cd052f Mon Sep 17 00:00:00 2001 From: Brian McGillion Date: Sun, 25 May 2025 20:34:43 +0400 Subject: [PATCH 10/14] cfclient: init at 2025.2 The Crazyflie PC client enables flashing and controlling the Crazyflie. It implements the user interface and high-level control (for example gamepad handling). The communication with Crazyflie and the implementation of the CRTP protocol to control the Crazyflie is handled by the cflib project. Signed-off-by: Brian McGillion --- pkgs/by-name/cf/cfclient/package.nix | 79 ++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 pkgs/by-name/cf/cfclient/package.nix diff --git a/pkgs/by-name/cf/cfclient/package.nix b/pkgs/by-name/cf/cfclient/package.nix new file mode 100644 index 000000000000..d744757fe5d5 --- /dev/null +++ b/pkgs/by-name/cf/cfclient/package.nix @@ -0,0 +1,79 @@ +{ + lib, + python3Packages, + fetchFromGitHub, + qt6, +}: + +python3Packages.buildPythonApplication rec { + pname = "cfclient"; + version = "2025.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "bitcraze"; + repo = "crazyflie-clients-python"; + tag = version; + hash = "sha256-LCGTMLIfGH59KFwQACyuEQTh/zkGgzXd3e6MkFTgKhA="; + }; + + strictDeps = true; + + buildInputs = [ + qt6.qtbase + ]; + + nativeBuildInputs = [ + qt6.wrapQtAppsHook + ]; + + dontWrapQtApps = true; + + build-system = with python3Packages; [ + setuptools + setuptools-scm + ]; + + pythonRelaxDeps = [ + "numpy" + "pyqt6" + "vispy" + ]; + + dependencies = with python3Packages; [ + appdirs + cflib + numpy + pyopengl + pyserial + pysdl2 + pyqtgraph + pyqt6 + pyqt6-sip + pyyaml + pyzmq + scipy + setuptools + vispy + ]; + + # No tests + doCheck = false; + + # Use wrapQtApp for Python scripts as the manual mentions that wrapQtAppsHook only applies to binaries + postFixup = '' + wrapQtApp "$out/bin/cfclient" \ + --set QT_QPA_PLATFORM "wayland" \ + --set XDG_CURRENT_DESKTOP "Wayland" \ + ''${qtWrapperArgs[@]} + ''; + + meta = { + description = "Host applications and library for Crazyflie drones written in Python"; + homepage = "https://github.com/bitcraze/crazyflie-clients-python"; + changelog = "https://github.com/bitcraze/crazyflie-clients-python/releases/tag/${version}"; + license = lib.licenses.gpl2Only; + maintainers = [ lib.maintainers.brianmcgillion ]; + platforms = lib.platforms.linux; + }; +} From 78a0e4dfadce7a5687f33d7d9ec930ca19856ca4 Mon Sep 17 00:00:00 2001 From: Savchenko Dmitriy Date: Mon, 26 May 2025 13:15:19 +0300 Subject: [PATCH 11/14] pencil2d: added ffmpeg dependency; fixed build Patched qmake files and source repository to correctly acquire Git information Added ffmpeg dependency --- pkgs/by-name/pe/pencil2d/git-inherit.patch | 13 +++++++++ pkgs/by-name/pe/pencil2d/package.nix | 32 ++++++++++++++++++++-- 2 files changed, 42 insertions(+), 3 deletions(-) create mode 100644 pkgs/by-name/pe/pencil2d/git-inherit.patch diff --git a/pkgs/by-name/pe/pencil2d/git-inherit.patch b/pkgs/by-name/pe/pencil2d/git-inherit.patch new file mode 100644 index 000000000000..fae2a4a8376b --- /dev/null +++ b/pkgs/by-name/pe/pencil2d/git-inherit.patch @@ -0,0 +1,13 @@ +--- a/app/app.pro ++++ b/app/app.pro +@@ -208,8 +208,8 @@ + + GIT { + DEFINES += GIT_EXISTS \ +- "GIT_CURRENT_SHA1=$$system(git --git-dir=.git --work-tree=. -C $$_PRO_FILE_PWD_/../ rev-parse HEAD)" \ +- "GIT_TIMESTAMP=$$system(git --git-dir=.git --work-tree=. -C $$_PRO_FILE_PWD_/../ log -n 1 --pretty=format:"%cd" --date=format:"%Y-%m-%d_%H:%M:%S")" ++ "GIT_CURRENT_SHA1=$$cat($$_PRO_FILE_PWD_/../COMMIT)" \ ++ "GIT_TIMESTAMP=$$cat($$_PRO_FILE_PWD_/../SOURCE_TIMESTAMP_EPOCH)" + } + + macx { diff --git a/pkgs/by-name/pe/pencil2d/package.nix b/pkgs/by-name/pe/pencil2d/package.nix index 0cb6cbd4a433..653f2e21ca47 100644 --- a/pkgs/by-name/pe/pencil2d/package.nix +++ b/pkgs/by-name/pe/pencil2d/package.nix @@ -3,30 +3,56 @@ stdenv, fetchFromGitHub, qt5, + git, + ffmpeg_6, + nix-update-script, }: -stdenv.mkDerivation (FinalAttrs: { +stdenv.mkDerivation (finalAttrs: { pname = "pencil2d"; version = "0.7.0"; src = fetchFromGitHub { owner = "pencil2d"; repo = "pencil"; - tag = "v${FinalAttrs.version}"; - hash = "sha256-OuZpKgX2BgfuQdnjk/RTBww/blO1CIrYWr7KytqcIbQ="; + tag = "v${finalAttrs.version}"; + hash = "sha256-l+iW0k3WdNXDwXtt958JJWSe3zNhQVul4FUcPPMrVxE="; + leaveDotGit = true; + postFetch = '' + # Obtain the last commit ID and its timestamp, then zap .git for reproducibility + cd $out + git rev-parse HEAD > $out/COMMIT + # 0000-00-00T00:00:00Z + date -u -d "@$(git log -1 --pretty=%ct)" "+%Y-%m-%d_%H:%M:%S" > $out/SOURCE_TIMESTAMP_EPOCH + find "$out" -name .git -print0 | xargs -0 rm -rf + ''; }; + patches = [ ./git-inherit.patch ]; + nativeBuildInputs = with qt5; [ qmake wrapQtAppsHook qttools + git ]; + qmakeFlags = [ + "pencil2d.pro" + "CONFIG+=release" + "CONFIG+=PENCIL2D_RELEASE" + "CONFIG+=GIT" + "VERSION=${finalAttrs.version}" + ]; + + passthru.updateScript = nix-update-script { }; + buildInputs = with qt5; [ qtbase qtmultimedia qtsvg qtwayland + ffmpeg_6 ]; meta = { From c6fd64bf7375aec046abf3c3949f6d97e193e8e5 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 1 Jun 2025 23:47:52 +0000 Subject: [PATCH 12/14] mmctl: 10.5.6 -> 10.5.7 --- pkgs/by-name/ma/mattermost/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ma/mattermost/package.nix b/pkgs/by-name/ma/mattermost/package.nix index a964e3e33573..3610ed26134e 100644 --- a/pkgs/by-name/ma/mattermost/package.nix +++ b/pkgs/by-name/ma/mattermost/package.nix @@ -19,8 +19,8 @@ # # Ensure you also check ../mattermostLatest/package.nix. regex = "^v(10\\.5\\.[0-9]+)$"; - version = "10.5.6"; - srcHash = "sha256-etHEJ3EBTolXZr/2Kd39Jdtf1qBMuVO5zRkuM6k4F3w="; + version = "10.5.7"; + srcHash = "sha256-HPQmN6GXDTEmloIcU0k+sYx/Qeh1j6T2yCT/W1/aWz4="; vendorHash = "sha256-9Jl+lxvSoxUReziTqkDRyeNrijGWcBDbqoywJRIeD2k="; npmDepsHash = "sha256-tIeuDUZbqgqooDm5TRfViiTT5OIyN0BPwvJdI+wf7p0="; lockfileOverlay = '' From aa9c727515656a927b7937621972252172c608dd Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 02:05:37 +0000 Subject: [PATCH 13/14] python3Packages.pysmlight: 0.2.4 -> 0.2.5 --- pkgs/development/python-modules/pysmlight/default.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/development/python-modules/pysmlight/default.nix b/pkgs/development/python-modules/pysmlight/default.nix index b5764abafbba..64a6ed10946c 100644 --- a/pkgs/development/python-modules/pysmlight/default.nix +++ b/pkgs/development/python-modules/pysmlight/default.nix @@ -14,14 +14,14 @@ buildPythonPackage rec { pname = "pysmlight"; - version = "0.2.4"; + version = "0.2.5"; pyproject = true; src = fetchFromGitHub { owner = "smlight-tech"; repo = "pysmlight"; tag = "v${version}"; - hash = "sha256-ZNqNRz7d3HZybQG778+ubxuc7Eakf/kWpd3I3cosSIU="; + hash = "sha256-ylfOro/GqgXDAPdtwbAWOMBO207zp5T26HRnDYrIw34="; }; build-system = [ poetry-core ]; From fbeb29c7bdfdb1d0cd60ad637e74973e5ae077b8 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Mon, 2 Jun 2025 02:31:49 +0000 Subject: [PATCH 14/14] veryl: 0.16.0 -> 0.16.1 --- pkgs/by-name/ve/veryl/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ve/veryl/package.nix b/pkgs/by-name/ve/veryl/package.nix index 6c66cecf8284..fdf8346aad0b 100644 --- a/pkgs/by-name/ve/veryl/package.nix +++ b/pkgs/by-name/ve/veryl/package.nix @@ -10,18 +10,18 @@ rustPlatform.buildRustPackage rec { pname = "veryl"; - version = "0.16.0"; + version = "0.16.1"; src = fetchFromGitHub { owner = "veryl-lang"; repo = "veryl"; rev = "v${version}"; - hash = "sha256-KlW5GC5fgUnS6YAb01VEaKv48+yu8VqgAe/5QsilYjs="; + hash = "sha256-/GbykOurK3IHmknMh+TftU7aFcLqAlnEeiJ51sJcTeQ="; fetchSubmodules = true; }; useFetchCargoVendor = true; - cargoHash = "sha256-HKDkV2eDjhfuky2ORdKwbyBa/kt1gEqK55AibKg5VYE="; + cargoHash = "sha256-MQkxeV+06hL9DqReuHy7H8SMvh2Xn6Hqj/VY8a1scyQ="; nativeBuildInputs = [ pkg-config