diff --git a/doc/doc-support/package.nix b/doc/doc-support/package.nix index 728bbe334501..7a0993cfcea5 100644 --- a/doc/doc-support/package.nix +++ b/doc/doc-support/package.nix @@ -118,7 +118,7 @@ stdenvNoCC.mkDerivation ( --script ./anchor.min.js \ --script ./anchor-use.js \ --sidebar-depth 3 \ - --nav ./nav.json \ + --experimental-config ./nav.json \ --header ${./header.html}\ --no-navheader \ manual.md \ diff --git a/doc/nav.json b/doc/nav.json index 15d4926421cf..8c564c94294d 100644 --- a/doc/nav.json +++ b/doc/nav.json @@ -1,3 +1,4 @@ { - "open": [] + "open": [], + "items": [] } 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 09c6b73d12b0..4f8e22c9add4 100644 --- a/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix +++ b/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix @@ -21,22 +21,22 @@ vscode-utils.buildVscodeMarketplaceExtension (finalAttrs: { sources = { "x86_64-linux" = { arch = "linux-x64"; - hash = "sha256-s1V+SxZ4O5EHcxE9ZxacnydNjfnK1Dv0y3YIPfsy3cs="; + hash = "sha256-3V4N8zHj7nB987ImVtBS84LGxdQgkDp14kTPps72fHo="; }; "aarch64-linux" = { arch = "linux-arm64"; - hash = "sha256-G9bJ6xNCiC72gR0k89sTh96alnHguSE5cqqOVu/3kCg="; + hash = "sha256-6p09GcEfmSQs4nRuaFxQ1tKK25ENo2KOPkRQTPndNcw="; }; "aarch64-darwin" = { arch = "darwin-arm64"; - hash = "sha256-ZDel1FfsiRbdw9pxn1H5nkOIlVdt1GLr68W2mBtl1mg="; + hash = "sha256-qbYE3f0fkxvfGyFAR8UPIFodOEYA0aJK6JK/r8PbI/k="; }; }; in { name = "claude-code"; publisher = "anthropic"; - version = "2.1.222"; + version = "2.1.223"; } // sources.${stdenvNoCC.hostPlatform.system} or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}"); diff --git a/pkgs/applications/networking/browsers/firefox/packages/firefox-beta.nix b/pkgs/applications/networking/browsers/firefox/packages/firefox-beta.nix index 83fb6538eb5b..545d8bf9b2bd 100644 --- a/pkgs/applications/networking/browsers/firefox/packages/firefox-beta.nix +++ b/pkgs/applications/networking/browsers/firefox/packages/firefox-beta.nix @@ -10,11 +10,11 @@ buildMozillaMach rec { pname = "firefox-beta"; binaryName = "firefox-beta"; - version = "153.0b13"; + version = "154.0b7"; applicationName = "Firefox Beta"; src = fetchurl { url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz"; - sha512 = "fecfb1837d1907d54ed52bc40113804b6637352c2cbe6eb906f950d7749cbece32446b42c392102fa9e16591949619237dc2dbeb13bec18697ddd42e9ce8d4dd"; + sha512 = "2a7da6938054f01a443da8d7cbaa38c99d76d90661f404754096041d9e8d5a27b118dcebd27687867706ba2540e5d453b8908e35f75a712220e812436d239dee"; }; meta = { diff --git a/pkgs/by-name/ag/agentsploit/package.nix b/pkgs/by-name/ag/agentsploit/package.nix new file mode 100644 index 000000000000..c4bdc75cd5ea --- /dev/null +++ b/pkgs/by-name/ag/agentsploit/package.nix @@ -0,0 +1,74 @@ +{ + lib, + fetchFromGitHub, + nix-update-script, + python3Packages, + versionCheckHook, +}: + +python3Packages.buildPythonApplication (finalAttrs: { + pname = "agentsploit"; + version = "1.6.3"; + pyproject = true; + + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "agentsploit"; + repo = "agentsploit"; + tag = "v${finalAttrs.version}"; + hash = "sha256-g9h+hM6ujm0uvkWZMoOkZ/wUGA77Yu6lEn1ZNHh6aTg="; + }; + + build-system = with python3Packages; [ hatchling ]; + + dependencies = with python3Packages; [ + anthropic + anyio + fastapi + httpx + ics + jinja2 + mcp + openai + pydantic + pyyaml + reportlab + rich + structlog + typer + uvicorn + ]; + + nativeCheckInputs = with python3Packages; [ + jsonschema + pytestCheckHook + pytest-asyncio + pytest-cov-stub + types-pyyaml + ]; + + nativeInstallCheckInputs = [ versionCheckHook ]; + + disabledTestPaths = [ + # Tests need network access + "tests/integration/" + ]; + + doInstallCheck = true; + + versionCheckProgramArg = [ "version" ]; + + pythonImportsCheck = [ "agentsploit" ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Offensive security framework for AI agents and MCP servers"; + homepage = "https://github.com/agentsploit/agentsploit"; + changelog = "https://github.com/agentsploit/agentsploit/blob/${finalAttrs.src.rev}/CHANGELOG.md"; + license = lib.licenses.asl20; + maintainers = with lib.maintainers; [ fab ]; + mainProgram = "agentsploit"; + }; +}) diff --git a/pkgs/by-name/am/amp-cli/package.nix b/pkgs/by-name/am/amp-cli/package.nix index 66e642a0dceb..6bd55c0cf2f4 100644 --- a/pkgs/by-name/am/amp-cli/package.nix +++ b/pkgs/by-name/am/amp-cli/package.nix @@ -26,7 +26,7 @@ let in stdenvNoCC.mkDerivation (finalAttrs: { pname = "amp-cli"; - version = "0.0.1785170481-ga5b614"; + version = "0.0.1785975399-gb63fe6"; src = finalAttrs.passthru.sources.${stdenvNoCC.hostPlatform.system}; @@ -77,9 +77,9 @@ stdenvNoCC.mkDerivation (finalAttrs: { url = "https://static.ampcode.com/cli/${finalAttrs.version}/amp-${platform}.gz"; hash = { - x86_64-linux = "sha256-/XzK8g9ES5vYC2Y/z/kuFnfpL42oZGn3GQ/Qw1vfUR4="; - aarch64-linux = "sha256-hpqGi0TxkDgo6ygstE/Bsg75OPskj3RmiiR7895go+g="; - aarch64-darwin = "sha256-A4POFqAD5e6WOhfAT6ibYmr+eEDFqkb8pDJSgu2GXZs="; + x86_64-linux = "sha256-bVkrQPLvRJdoxrA0laDKG9DnJvp3Q7hyCj9wxRPcJas="; + aarch64-linux = "sha256-z0m9FLX99Y3gBwOlWVBjCqume1Uz+OEMg7W5KRm+NLw="; + aarch64-darwin = "sha256-EoCJ3MT7zkSq5yfmdVy40J6LhjwHcFbtdmkkycmdF6E="; } .${system'}; } diff --git a/pkgs/by-name/an/android-translation-layer/package.nix b/pkgs/by-name/an/android-translation-layer/package.nix index 3f35e2d9e911..818f927ceb60 100644 --- a/pkgs/by-name/an/android-translation-layer/package.nix +++ b/pkgs/by-name/an/android-translation-layer/package.nix @@ -28,13 +28,13 @@ stdenv.mkDerivation { pname = "android-translation-layer"; - version = "0-unstable-2026-01-19"; + version = "0-unstable-2026-07-30"; src = fetchFromGitLab { owner = "android_translation_layer"; repo = "android_translation_layer"; - rev = "bfcfb696d83c9769e1d99d3cb0d7a5908fe3c767"; - hash = "sha256-BTVduEJhKEOFhqoG0lgqlcg2x4k9RWABURj2nQECaek="; + rev = "cf2c759fa93330f45df6107dcf8984cf49b29c64"; + hash = "sha256-+TTntAnE/5j/FhGcdXRui3/p/sfkc83CKNdBf9Yage0="; }; patches = [ diff --git a/pkgs/by-name/ar/archisteamfarm/deps.json b/pkgs/by-name/ar/archisteamfarm/deps.json index 472ce7eaee05..63ef43da7690 100644 --- a/pkgs/by-name/ar/archisteamfarm/deps.json +++ b/pkgs/by-name/ar/archisteamfarm/deps.json @@ -1,8 +1,8 @@ [ { "pname": "AngleSharp", - "version": "1.4.0", - "hash": "sha256-xHpoMkhYSj7ejeMmI2e7ygef84QGZhttPjYOnLjITd0=" + "version": "1.5.2", + "hash": "sha256-81rDtnwvR0SDXNNUnPirWIa782gwkgRlz1Fbzm2ywwc=" }, { "pname": "CryptSharpStandard", @@ -276,13 +276,13 @@ }, { "pname": "JetBrains.Annotations.Sources", - "version": "2025.2.4", - "hash": "sha256-QrgVgGkrtQs4eSl2pkG4ozSJHEAVNfPb23BMZauhjcg=" + "version": "2026.2.0", + "hash": "sha256-AqShNJbFCrtUbrqti44j6cUglBApw+VdXWFgsTrO3TU=" }, { "pname": "Markdig.Signed", - "version": "1.2.0", - "hash": "sha256-dC75KeDfJOretrOkaH1Ai/uEYWvxjBosn4NMEhD+LCo=" + "version": "1.3.2", + "hash": "sha256-jfZYxd91vssC/R89L92sEnswH7DTIpKb2fyckjAy1mE=" }, { "pname": "Microsoft.ApplicationInsights", @@ -291,8 +291,13 @@ }, { "pname": "Microsoft.AspNetCore.OpenApi", - "version": "10.0.8", - "hash": "sha256-v2E7nwc4Nac8Ns5cQ2KmzLash9AEMbfQbMo2bFy7oZM=" + "version": "10.0.10", + "hash": "sha256-Mbr8+mzZKu3iq5R4TbNY8r39bZI34SWWd7DfUHg2ETk=" + }, + { + "pname": "Microsoft.Bcl.Cryptography", + "version": "10.0.2", + "hash": "sha256-+OYtcWsd1qZcEXadYeA4t6+pyADg1APQCxpKUtP002M=" }, { "pname": "Microsoft.CodeAnalysis.ResxSourceGenerator", @@ -301,13 +306,13 @@ }, { "pname": "Microsoft.CodeCoverage", - "version": "18.3.0", - "hash": "sha256-fqKglbYvEb/77+rmUvLyLZSwROM1P9OW03Ub307WYZ8=" + "version": "18.4.0", + "hash": "sha256-px8qchiuY5rkujAZ1wGEjuuhZdZmsRSp+FCiTmRUA1A=" }, { "pname": "Microsoft.DiaSymReader", - "version": "2.2.3", - "hash": "sha256-Wf2Hy/9o3xSKB9ZRXj3oUgr2CcUwu+BFn2BP2cX7KJQ=" + "version": "2.2.9", + "hash": "sha256-ouOuoXyE0nz+ikwyz3C8C/CYkWa/sLlOXhkw65D+qCQ=" }, { "pname": "Microsoft.Extensions.Configuration", @@ -324,6 +329,11 @@ "version": "10.0.0", "hash": "sha256-YSiWoA3VQR22k6+bSEAUqeG7UDzZlJfHWDTubUO5V8U=" }, + { + "pname": "Microsoft.Extensions.Configuration.EnvironmentVariables", + "version": "10.0.0", + "hash": "sha256-UayfeqrAmNyfOkuhcBKfj8UpjQqV/ZMqWrDyxCSG1MA=" + }, { "pname": "Microsoft.Extensions.DependencyInjection", "version": "10.0.0", @@ -341,8 +351,8 @@ }, { "pname": "Microsoft.Extensions.DependencyModel", - "version": "8.0.2", - "hash": "sha256-PyuO/MyCR9JtYqpA1l/nXGh+WLKCq34QuAXN9qNza9Q=" + "version": "10.0.8", + "hash": "sha256-YX986Og+47sJnNonmoZCqa54HCaZhJ8fJl45qeRaaUQ=" }, { "pname": "Microsoft.Extensions.Diagnostics.Abstractions", @@ -396,28 +406,28 @@ }, { "pname": "Microsoft.IdentityModel.Abstractions", - "version": "8.18.0", - "hash": "sha256-mkguJA4aXIVVQvSJ9Duq9mivbGXAIkLQp3a8PKy223A=" + "version": "8.19.2", + "hash": "sha256-vNGK6u6V+S0MIaYTg+sSkRF4XUjM1K+cKuR1a9aRCLs=" }, { "pname": "Microsoft.IdentityModel.JsonWebTokens", - "version": "8.18.0", - "hash": "sha256-MdqY9CGRs+fTLb3HYYcSfuzqDFo4Dpho4McFWWferjA=" + "version": "8.19.2", + "hash": "sha256-j9ai0NrgytDsfQiIijp1Ib4jRGX9lgREQBoE6XW9SOc=" }, { "pname": "Microsoft.IdentityModel.Logging", - "version": "8.18.0", - "hash": "sha256-09WyYskyL8gjjVDzoZBQAGXgsPmyagWftALSBCdt4gg=" + "version": "8.19.2", + "hash": "sha256-ja8PAYUNwlfIrkL6EOuZ7SgZfRJwIORGG/ETDD1BtRE=" }, { "pname": "Microsoft.IdentityModel.Tokens", - "version": "8.18.0", - "hash": "sha256-sFhonZW9G6H4ooQ6N/78fkZvADZ2Hf5WAS3FKd/ue1E=" + "version": "8.19.2", + "hash": "sha256-POi3SzcK3+iB3104wXYh3ooVD1GbltwTUf+KMj//UYU=" }, { "pname": "Microsoft.NET.Test.Sdk", - "version": "18.3.0", - "hash": "sha256-o2bILLF5i+XUoi8xZYgolU3CxLTdql5R/tEVWVnKFPU=" + "version": "18.4.0", + "hash": "sha256-ak/emX4C4KQVzc0bSNK4bChS+dvb3FvxZbJNrmf/2+w=" }, { "pname": "Microsoft.OpenApi", @@ -426,73 +436,73 @@ }, { "pname": "Microsoft.Testing.Extensions.CodeCoverage", - "version": "18.5.2", - "hash": "sha256-PkIEXfbyEwlxOIG4h420/TpWbbzAy7eV8RUy7iXHVtk=" + "version": "18.9.0", + "hash": "sha256-tNtPxYAoOlYmfPcdx5towgbmGRMxBDocUiAlAfXIgqA=" }, { "pname": "Microsoft.Testing.Extensions.Telemetry", - "version": "2.2.3", - "hash": "sha256-e70IRoXt5Aiwhxwd6nay0SBQD3ESXcAGh0lCucNtCAE=" + "version": "2.3.2", + "hash": "sha256-3TancCfYy7OW9IU6q+zQv/ETlbBbcjxADrWVRQITytc=" }, { "pname": "Microsoft.Testing.Extensions.TrxReport", - "version": "2.2.3", - "hash": "sha256-guXkeZ4AcbP9uu87/9IpSuZZdt03mFxShU/z2avv3oY=" + "version": "2.3.2", + "hash": "sha256-YMuc6dHVBpP8vk/qBQcO0MXeelpcrr9Wgnpvwi2xEv0=" }, { "pname": "Microsoft.Testing.Extensions.TrxReport.Abstractions", - "version": "2.2.3", - "hash": "sha256-eLb2Sm0lzQkgkdFdcZ76aIGShIf4lRPmpcMauUWN5QE=" + "version": "2.3.2", + "hash": "sha256-MohDLqtLk1K93p1TnvYlaBNetpGoTZSep3xVQho3zb0=" }, { "pname": "Microsoft.Testing.Extensions.VSTestBridge", - "version": "2.2.3", - "hash": "sha256-bSNPv1gAWEU7DVtqYS1qjbBN3lu9TTh6+/nDQCcIIHk=" + "version": "2.3.2", + "hash": "sha256-9W4FmGvIfuwHQr3AFrCZ/uLhtJws5erQccw7ydT5yBU=" }, { "pname": "Microsoft.Testing.Platform", - "version": "2.1.0", - "hash": "sha256-CbR0j0Dh65cMccO7L6ppx4b5iiXjqxjjfC9A85HeLuM=" + "version": "2.3.0", + "hash": "sha256-9ZpWaMU5RmHXTJ3d/aM0WQ3u1IN0w2La4yrOqt7PB14=" }, { "pname": "Microsoft.Testing.Platform", - "version": "2.2.3", - "hash": "sha256-Mz///qqkbdQsgpIjjAiHf/ptvjeQIsO6S99+tg+F8Fw=" + "version": "2.3.2", + "hash": "sha256-kGOyHXenLNMpWyVTDWDh6/hP3qFtnHI5qIaet1udKWM=" }, { "pname": "Microsoft.Testing.Platform.MSBuild", - "version": "2.2.3", - "hash": "sha256-mwt+i2y8UV30JrssGCx9kgjcZ+upWhAxEBs5fCXA/6k=" + "version": "2.3.2", + "hash": "sha256-u0jsv5BU7gSBZlHoy94WlqM0QCJCFbEW1g19RxKn17Q=" }, { "pname": "Microsoft.TestPlatform.ObjectModel", - "version": "18.3.0", - "hash": "sha256-3Y3OxAQsXl6sunQlSjfq31aLWykHQTj2o/TOVI/uy88=" + "version": "18.4.0", + "hash": "sha256-ERL2goDaM0vUElW25DM/5lI2WplE5E6g9mhTegY0bC8=" }, { "pname": "Microsoft.TestPlatform.TestHost", - "version": "18.3.0", - "hash": "sha256-OkR+XvipAHPQbHywTwN8lVcMpyRs2MUJKCxJ5OfKAFk=" + "version": "18.4.0", + "hash": "sha256-S4T/6xHvov8jDcbcuZAOoutMAEudUb3dMP7MyxVa8Fo=" }, { "pname": "MSTest", - "version": "4.2.3", - "hash": "sha256-G6agMAoiK8oMPTpq25i7zsUXXCDxGMP/UBU72Wky9t0=" + "version": "4.3.2", + "hash": "sha256-wuyrsPndMA7FwEhwL+7mevm5WYF1nytvObPlAHIo5fU=" }, { "pname": "MSTest.Analyzers", - "version": "4.2.3", - "hash": "sha256-XlSqWrZVG1nC/qDjNuSs51pM90nQ9QlQtwDKJQVsMPg=" + "version": "4.3.2", + "hash": "sha256-mzMMs8H6u2pRnOb6UjA1pwSOKsULx2v18Stvp/cvxj0=" }, { "pname": "MSTest.TestAdapter", - "version": "4.2.3", - "hash": "sha256-ckBpU7gg4LY2ZBPljRWz2yCj33vRf93Qm/JY7uGfeOs=" + "version": "4.3.2", + "hash": "sha256-qiXoMftAKNEtN2LFwMd2e8EkBn03RfIk15CljjOuU0A=" }, { "pname": "MSTest.TestFramework", - "version": "4.2.3", - "hash": "sha256-og5IO5g/fXm1y9hSNkqZ+libfD9o0dRm/8I9CF0J2So=" + "version": "4.3.2", + "hash": "sha256-BQUOSbJd2LE5C4C5yx7MTozHaWxpo5R6mPC6EdzVHVk=" }, { "pname": "Newtonsoft.Json", @@ -521,58 +531,58 @@ }, { "pname": "NLog", - "version": "6.1.3", - "hash": "sha256-s0sxfQ1tiWRSFVh/m/eIzEe4+ZgT02e9GZiwDAi7xp4=" + "version": "6.1.4", + "hash": "sha256-76h0KhYh0B6NDrkV5MHhv8SqUSvhTF6CFKsao5nRBbQ=" }, { "pname": "NLog.Extensions.Logging", - "version": "6.1.3", - "hash": "sha256-7Ryjk3FZqz6Cn8bCSK5OUf7VCQL9LA/bMCgwr5tpIys=" + "version": "6.1.4", + "hash": "sha256-ChUPGAWJls61E3/w+3q9/jlxDaqGVxCbB6b6mHAPsI8=" }, { "pname": "NLog.Web.AspNetCore", - "version": "6.1.3", - "hash": "sha256-FXxcK5kXO6qy/jw0lnphzhs9QF3u/i5A4GD13jqclUA=" + "version": "6.1.4", + "hash": "sha256-PWrgqvrszRzOvk4tX0n70pa6wDea6eD+C/+2+QKFgoI=" }, { "pname": "OpenTelemetry", - "version": "1.15.3", - "hash": "sha256-zOrEPW8noHfUINJtIWQYMTls2JLRUYm7aoyffjrMBLU=" + "version": "1.17.0", + "hash": "sha256-z68MFp4PEANJeJ3O0nTfJcWosZ4eZl7Y5T93wVYKdKA=" }, { "pname": "OpenTelemetry.Api", - "version": "1.15.3", - "hash": "sha256-vriWJD2xvBt6ir9u5o/aVPBqBJJA7S6IJhkjKDkeLfc=" + "version": "1.17.0", + "hash": "sha256-r/Op/9OQhmL3H+XnkumD8BSdb6WwazolraVXCWDvfdA=" }, { "pname": "OpenTelemetry.Api.ProviderBuilderExtensions", - "version": "1.15.3", - "hash": "sha256-Z4x0eA1dkCOJS5xYZ6ogMOk6H+ivvXuVj1mORyWMOSo=" + "version": "1.17.0", + "hash": "sha256-dAzEFnvUGs0BjQ0Dpxl6ird18yk9ur3djAFVZXJktGM=" }, { "pname": "OpenTelemetry.Exporter.Prometheus.AspNetCore", - "version": "1.15.3-beta.1", - "hash": "sha256-qgaIwTB9To17OifsThq1AsXg1Ms8sqnooAvf+gNJR8Y=" + "version": "1.17.0-beta.1", + "hash": "sha256-5HpmgbBzLf1YX5FkdQHXKsq5rXgctNoSrUqc2iaNolc=" }, { "pname": "OpenTelemetry.Extensions.Hosting", - "version": "1.15.3", - "hash": "sha256-5Z5/80xNttniodCF71s9cGXvDCkIc8Qdvpr969K5G0c=" + "version": "1.17.0", + "hash": "sha256-wesl30ehEO8aIf4kDRRE2iHkMKnv6Ox/4LyQdmtLBnc=" }, { "pname": "OpenTelemetry.Instrumentation.AspNetCore", - "version": "1.15.2", - "hash": "sha256-rfStn++qynwoTOa5H5IFwbAPn7sOgW/vebcfKvOusio=" + "version": "1.17.0", + "hash": "sha256-ydRp8bo5vnHkNzUUHl631WAwbl2d78jQRWXLVvL/QEs=" }, { "pname": "OpenTelemetry.Instrumentation.Http", - "version": "1.15.1", - "hash": "sha256-VG3zmUmFcN+mk7BkIcss1RjkcrVWrQMn8AUDTM4wpus=" + "version": "1.17.0", + "hash": "sha256-QFGOiVZ91oDhu3e/C7vUWxq0v5fcaoaWkwbyWbzIhbo=" }, { "pname": "OpenTelemetry.Instrumentation.Runtime", - "version": "1.15.1", - "hash": "sha256-wE0909zdzuGUB/KD/yEfLV9F5EvZGMmwjL2tpO4bOh4=" + "version": "1.17.0", + "hash": "sha256-YCVl3X4hEqWeJ4buBA6wdQDwDXeR2Ae/fHyuySKqCX0=" }, { "pname": "protobuf-net", @@ -586,8 +596,8 @@ }, { "pname": "Scalar.AspNetCore", - "version": "2.14.14", - "hash": "sha256-/9lh1yFvp8/ROxdQcJEhEtFwrpOCdRNwFfz8B53epVk=" + "version": "2.16.15", + "hash": "sha256-XRzl2wnxnR84jshpKbQbosfU+D3wMAZx7Qs8PwmxXe4=" }, { "pname": "SteamKit2", @@ -596,33 +606,33 @@ }, { "pname": "System.Composition", - "version": "10.0.8", - "hash": "sha256-sp1IzwdxzVZwEF3mOCkobc5SYUGm/u3FDZUPkekoxZs=" + "version": "10.0.10", + "hash": "sha256-u3CKzFRnQ10eMC67s610GQj5/CaEGxxpDtQB028NbzA=" }, { "pname": "System.Composition.AttributedModel", - "version": "10.0.8", - "hash": "sha256-6iUFdykgMj6yOG10qR3TOz6mrQnfDGsr4Q8WP65hBFU=" + "version": "10.0.10", + "hash": "sha256-aGKpD94yaSuK0vmdV8tSPZ4BtHaFZ90H2XxbePvmaMs=" }, { "pname": "System.Composition.Convention", - "version": "10.0.8", - "hash": "sha256-MIQePJ3OkWpA07U+xH1PwiV88WtSGBaTxUrA1j4hD6Y=" + "version": "10.0.10", + "hash": "sha256-o+ptLKlKBZAYri+QVDCeP4ljfXDCQ176fUaI0FeHL2o=" }, { "pname": "System.Composition.Hosting", - "version": "10.0.8", - "hash": "sha256-SOAD0Yz8A/XJ8tEi7Q8DL9H7FzTcgg8HAbnZYKiyZNk=" + "version": "10.0.10", + "hash": "sha256-VMZs+YqwwIJsCpUiC+kdbDjG7l+qnjk7Nq4Tnbtg058=" }, { "pname": "System.Composition.Runtime", - "version": "10.0.8", - "hash": "sha256-hRkoJ8S1oD4FKjnaDYwfzX2Pys6QvGiiX6YxrdGgAyA=" + "version": "10.0.10", + "hash": "sha256-HTIvnvhcTdMdEv7Y20vK+VuQy9reqOfMQRKWjzeEr+I=" }, { "pname": "System.Composition.TypedParts", - "version": "10.0.8", - "hash": "sha256-NYo2dvMJ9WU0BKIGDkuIpFQHkbZE1sGJAtY8fINFpqo=" + "version": "10.0.10", + "hash": "sha256-Qx3V/LSM5jHwnHVl77w3G7jK3EhnFWgmWxCAJ1Fyres=" }, { "pname": "System.IO.Hashing", @@ -631,13 +641,13 @@ }, { "pname": "System.Security.Cryptography.ProtectedData", - "version": "10.0.8", - "hash": "sha256-GYRQSkRnDWytMIQcoNrAVbJda5nzfbtg1HJuwRZVxH0=" + "version": "10.0.10", + "hash": "sha256-sKm55fvpXHZIH5Jw+zTz06BwMb8Nog5+1LgxPyU5lbk=" }, { "pname": "Tmds.DBus.Protocol", - "version": "0.93.0", - "hash": "sha256-Oi2SDkrhTG3v9KXlRsmXQWsRJbQYVqg9bgiao1pUD0k=" + "version": "0.94.2", + "hash": "sha256-ZUxaReVMikjf3VqjUSSTovcjDTWJO8jHNKrvj1dgHJI=" }, { "pname": "ZstdSharp.Port", diff --git a/pkgs/by-name/ar/archisteamfarm/package.nix b/pkgs/by-name/ar/archisteamfarm/package.nix index 81e766c324da..8507d8ecc66a 100644 --- a/pkgs/by-name/ar/archisteamfarm/package.nix +++ b/pkgs/by-name/ar/archisteamfarm/package.nix @@ -21,13 +21,13 @@ in buildDotnetModule rec { pname = "archisteamfarm"; # nixpkgs-update: no auto update - version = "6.3.6.1"; + version = "6.3.8.4"; src = fetchFromGitHub { owner = "JustArchiNET"; repo = "ArchiSteamFarm"; tag = version; - hash = "sha256-C0n3e/t1Bq02vlrF/KyT7vlhtNDIbAsg9zAk9aKZ5/g="; + hash = "sha256-LCynvt8TzvfttqHMq0yAjrP5V8IK/dnpJogeh+6NWoY="; }; dotnet-runtime = dotnetCorePackages.aspnetcore_10_0; diff --git a/pkgs/by-name/ar/archisteamfarm/web-ui/default.nix b/pkgs/by-name/ar/archisteamfarm/web-ui/default.nix index d585db827a95..925c143a1bd1 100644 --- a/pkgs/by-name/ar/archisteamfarm/web-ui/default.nix +++ b/pkgs/by-name/ar/archisteamfarm/web-ui/default.nix @@ -7,7 +7,7 @@ buildNpmPackage rec { pname = "asf-ui"; - version = "a4d5a9a4fbd09ad2ed00ec09db8344175f120898"; + version = "5e028bc91dd3c0238b602714d96713a205600248"; src = fetchFromGitHub { owner = "JustArchiNET"; @@ -15,10 +15,10 @@ buildNpmPackage rec { # updated by the update script # this is always the commit that should be used with asf-ui from the latest asf version rev = version; - hash = "sha256-PP9VT1F8EX5AgNr3OGsirDkUSVAzKHbBpJi6XBlEWeg="; + hash = "sha256-HdUdSrwTXALoT7qmcAYwaeaw1POus8++TBeoqIuEMDM="; }; - npmDepsHash = "sha256-bqwDKSaQt6ptfZC7B332Ig/BAZvJRQ/NaxPgA5VQ884="; + npmDepsHash = "sha256-Vhs5apBz951fcvIx8J+/oShit7rD4/RB919d40cjavs="; installPhase = '' runHook preInstall diff --git a/pkgs/by-name/ar/art-standalone/package.nix b/pkgs/by-name/ar/art-standalone/package.nix index cb7c5904a462..e7f3c1987147 100644 --- a/pkgs/by-name/ar/art-standalone/package.nix +++ b/pkgs/by-name/ar/art-standalone/package.nix @@ -22,13 +22,13 @@ }: stdenv.mkDerivation (finalAttrs: { pname = "art-standalone"; - version = "0-unstable-2025-10-09"; + version = "0-unstable-2026-08-03"; src = fetchFromGitLab { owner = "android_translation_layer"; repo = "art_standalone"; - rev = "e78bf68917bcaaf58fef3960cd88793b3b7f39cc"; - hash = "sha256-0r6Ap41AMSHhZpMJ5QoWiGGcHPj35et4kiA20xs9uLs="; + rev = "66a5d9079b159e9c5819bfeef4a6fff6a5f32719"; + hash = "sha256-4dRKghsPP8XLCcCe6bQDzJVlggBdFWe3l2/ge35HIXA="; }; patches = [ diff --git a/pkgs/by-name/aw/awakened-poe-trade/package.nix b/pkgs/by-name/aw/awakened-poe-trade/package.nix index 2ca5552d233c..8aa69f20e523 100644 --- a/pkgs/by-name/aw/awakened-poe-trade/package.nix +++ b/pkgs/by-name/aw/awakened-poe-trade/package.nix @@ -13,11 +13,11 @@ stdenv.mkDerivation (finalAttrs: { pname = "awakened-poe-trade"; - version = "3.29.102"; + version = "3.29.103"; src = fetchurl { url = "https://github.com/SnosMe/awakened-poe-trade/releases/download/v${finalAttrs.version}/Awakened-PoE-Trade-${finalAttrs.version}.AppImage"; - hash = "sha256-mjtdM8tEi+Gvf3B4gopEEqlNfp89+J4w1Jy+dyWtig8="; + hash = "sha256-Nxq9b58nmpvXs3xKWYi0IpI9QyYbrLPWJplA1l6hKzE="; }; passthru = { diff --git a/pkgs/by-name/bi/bionic-translation/package.nix b/pkgs/by-name/bi/bionic-translation/package.nix index 28d6aafc38b9..ba0d36b0317c 100644 --- a/pkgs/by-name/bi/bionic-translation/package.nix +++ b/pkgs/by-name/bi/bionic-translation/package.nix @@ -14,13 +14,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "bionic-translation"; - version = "0-unstable-2025-11-25"; + version = "0-unstable-2026-08-03"; src = fetchFromGitLab { owner = "android_translation_layer"; repo = "bionic_translation"; - rev = "5c31d4366fbb0af70690e72e5a861e7b44ffb1ef"; - hash = "sha256-dlHjx6+yymvIjDEs2TZexZUIUz32iKD0r+H4AJ89xig="; + rev = "484b1b05795784a5a57dbd4ffad21a3e680a33b2"; + hash = "sha256-43VJPhN8/J/pJr8mdV9/n+hrVZLzh7aQhAJ8cT53BHc="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ch/checkmate/package.nix b/pkgs/by-name/ch/checkmate/package.nix index ffbb8041e259..5c5c23b600f9 100644 --- a/pkgs/by-name/ch/checkmate/package.nix +++ b/pkgs/by-name/ch/checkmate/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "checkmate"; - version = "0.9.3"; + version = "1.3.3"; src = fetchFromGitHub { owner = "adedayo"; repo = "checkmate"; rev = "v${finalAttrs.version}"; - hash = "sha256-XzzN4oIG6E4NsMGl4HzFlgAGhkRieRn+jyA0bT8fcrg="; + hash = "sha256-FxBDeFdLORh76oHqrB+NXhz2nVH4bHJEF7ioSx+fngM="; }; - vendorHash = "sha256-D87b/LhHnu8xE0wRdB/wLIuf5NlqrVnKt2WAF29bdZo="; + vendorHash = "sha256-RM1jgnnCdGb06Uu7xoujjVjhYZSjGozesg+DFOjib1I="; subPackages = [ "." ]; diff --git a/pkgs/by-name/cl/claude-code/manifest.json b/pkgs/by-name/cl/claude-code/manifest.json index 9ac4d313bc0e..4f608ea8240a 100644 --- a/pkgs/by-name/cl/claude-code/manifest.json +++ b/pkgs/by-name/cl/claude-code/manifest.json @@ -1,47 +1,47 @@ { - "version": "2.1.222", - "commit": "fbf49312c28437bf9c2546b9ace3bd7b34eb6ff6", - "buildDate": "2026-08-04T01:46:04Z", + "version": "2.1.223", + "commit": "4535f69721056abf01650c73ee8a91c69ba00838", + "buildDate": "2026-08-05T21:55:19Z", "platforms": { "darwin-arm64": { "binary": "claude", - "checksum": "c66a6cc6fa2e8145bb1a6e77831f2caf4b83690ff04650500dfa6e2c05ca997c", - "size": 271289792 + "checksum": "fcbe0b8d47570c501302dd1ad31cc26ac2810f022c45fa253936a6961dee32bf", + "size": 272553824 }, "darwin-x64": { "binary": "claude", - "checksum": "36bfc6482a25730dbb1cee72589e522c66c45a4dc9ebfdd8a76a8113b01b6188", - "size": 280847136 + "checksum": "350e657428a6d34f7cf71f6738c5ebb6a1952ccb12fc1747f64297e065b1846f", + "size": 282118560 }, "linux-arm64": { "binary": "claude", - "checksum": "a04be0a8d7fe0259571ab7411d51d85658d71a4a26ce62b60c908290372e6016", - "size": 286178232 + "checksum": "60e83d8db0e894d0e54413e5e7daa256d180db660f51e139a51b614fc30cf3ac", + "size": 287423416 }, "linux-x64": { "binary": "claude", - "checksum": "10caae8f22b915c26bfff0e013a4d45608c4f1ae287583626569156f447730e5", - "size": 289467400 + "checksum": "98226474f802e3094d6a86c5ade8883c16206d0fcb5c400b7401c800063e99d7", + "size": 290728968 }, "linux-arm64-musl": { "binary": "claude", - "checksum": "a3c3e3202ae8842a5e9d2b4ce1dcea9fa00d4e0ae27b5b3e8d778332ba3bb23c", - "size": 279491944 + "checksum": "f41692eab23ebcd836d342fbc494d8783b1f19efb13d04fbf8461d2806ccb586", + "size": 280737128 }, "linux-x64-musl": { "binary": "claude", - "checksum": "e0b0fb4005e1ac0ebcee136254c638722f1c49e171a23d0843c605d72aac9029", - "size": 284074576 + "checksum": "8a4e561e8af19746d2defcf1a5661f5c0384c9c26dadd87d45e11b67802ad147", + "size": 285336144 }, "win32-x64": { "binary": "claude.exe", - "checksum": "032cb799d2abfaa6ca440f6458304b9a2a250521063d21ebcea7f3c77c443db7", - "size": 279014048 + "checksum": "a708ba811c4cc46907df358e22f2aa6da3dbc28192747e4d3c4a0869752fe722", + "size": 280233632 }, "win32-arm64": { "binary": "claude.exe", - "checksum": "f760aa2782019e55b1e44fda9eddec85ca8499429da87efddd47ab18d4a716a2", - "size": 273687200 + "checksum": "8efb44f04fda50fac3c7602276903e44ff82d48f1a29a41f1a5d98891a01864b", + "size": 274906784 } }, "sdkCompat": { diff --git a/pkgs/by-name/cn/cnspec/package.nix b/pkgs/by-name/cn/cnspec/package.nix index db986bf6e2fe..0509061ea3ea 100644 --- a/pkgs/by-name/cn/cnspec/package.nix +++ b/pkgs/by-name/cn/cnspec/package.nix @@ -6,18 +6,18 @@ buildGoModule (finalAttrs: { pname = "cnspec"; - version = "13.30.1"; + version = "13.32.1"; src = fetchFromGitHub { owner = "mondoohq"; repo = "cnspec"; tag = "v${finalAttrs.version}"; - hash = "sha256-u617olxSFcDd/6qK26SteiGOzEN+1shqntUzgw6bFq8="; + hash = "sha256-f4Cx525MsVrpXDTxDJeG0ddsaFb2aqGWhZCm20pD8lU="; }; proxyVendor = true; - vendorHash = "sha256-VwaV6OHl9LPLD2BbIESRjG572W5uGH4514P3ue2f894="; + vendorHash = "sha256-cxFhSCIiNOrnicgqR1OC7vuEDQbQeEuCamb08elA++Y="; subPackages = [ "apps/cnspec" ]; diff --git a/pkgs/by-name/co/contact/package.nix b/pkgs/by-name/co/contact/package.nix index e6ad0ba8ade2..74c4766f0c27 100644 --- a/pkgs/by-name/co/contact/package.nix +++ b/pkgs/by-name/co/contact/package.nix @@ -6,14 +6,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "contact"; - version = "1.5.8"; + version = "1.6.7"; pyproject = true; src = fetchFromGitHub { owner = "pdxlocations"; repo = "contact"; tag = finalAttrs.version; - hash = "sha256-YNDw/lAPuJIyK6abRnl5WOyv8+t/PTtmBvFWu7NTVwY="; + hash = "sha256-i+mWkHdDJAGiX0F4vTygU9oGqUeczSaziiOwRqAXa30="; }; dependencies = [ python3Packages.meshtastic ]; diff --git a/pkgs/by-name/fe/fence/package.nix b/pkgs/by-name/fe/fence/package.nix index 2533d40ccd76..864230099377 100644 --- a/pkgs/by-name/fe/fence/package.nix +++ b/pkgs/by-name/fe/fence/package.nix @@ -14,13 +14,13 @@ buildGoModule (finalAttrs: { pname = "fence"; - version = "0.1.64"; + version = "0.1.66"; src = fetchFromGitHub { owner = "fencesandbox"; repo = "fence"; tag = "v${finalAttrs.version}"; - hash = "sha256-pBeTUcLs3fLGTkbmmUcikPDtGUQ4s3Q8XbKQYsPJTKw="; + hash = "sha256-I3nrM2W21n6YdYnE8OhjqBF0969EaWY0k9U6BJDGFHw="; }; vendorHash = "sha256-WjhfAw8wgxvTbTkYwURm9vN2oSvQWiMP2RhwZDCQ0DU="; diff --git a/pkgs/by-name/fn/fna3d/package.nix b/pkgs/by-name/fn/fna3d/package.nix index 46e29a1ab36e..baad06f06271 100644 --- a/pkgs/by-name/fn/fna3d/package.nix +++ b/pkgs/by-name/fn/fna3d/package.nix @@ -11,14 +11,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "fna3d"; - version = "26.06"; + version = "26.08"; src = fetchFromGitHub { owner = "FNA-XNA"; repo = "FNA3D"; tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-p85nZzpegjXQTUv64Pxhn6BxBTUN5bOs73cgqLu79GI="; + hash = "sha256-KD2HSBvB7oiy4/AAYSi+bOEYYYyP3XqtYvjZOBIYzig="; }; cmakeFlags = [ diff --git a/pkgs/by-name/je/jenkins/package.nix b/pkgs/by-name/je/jenkins/package.nix index 63a64f804151..37b4825bdf0f 100644 --- a/pkgs/by-name/je/jenkins/package.nix +++ b/pkgs/by-name/je/jenkins/package.nix @@ -18,14 +18,14 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "jenkins"; - version = "2.568.1"; + version = "2.568.2"; strictDeps = true; __structuredAttrs = true; src = fetchurl { url = "https://get.jenkins.io/war-stable/${finalAttrs.version}/jenkins.war"; - hash = "sha256-WPJPOWX773cIYp++FY1RvxOP/Vd8rbyGtGNn6K0L64M="; + hash = "sha256-m7srMp5Scwun3s0aehCVmH9iUOx2H7IRV9uyy80e9ZA="; }; nativeBuildInputs = [ makeWrapper ]; diff --git a/pkgs/by-name/kc/kcl/package.nix b/pkgs/by-name/kc/kcl/package.nix index 4ed203ba3761..aa0ffd23d942 100644 --- a/pkgs/by-name/kc/kcl/package.nix +++ b/pkgs/by-name/kc/kcl/package.nix @@ -11,16 +11,16 @@ buildGoModule (finalAttrs: { pname = "kcl"; - version = "0.12.7"; + version = "0.12.8"; src = fetchFromGitHub { owner = "kcl-lang"; repo = "cli"; rev = "v${finalAttrs.version}"; - hash = "sha256-HPydO/gBJkMsqR3Eb3ymKprm5x7tr9//IKT052hiDNA="; + hash = "sha256-hw5Ul0+0OT9hI8Nmg5tozwfPnXcF2q+K6aAFPxcMkgY="; }; - vendorHash = "sha256-46qLRdB0epfZPuvNVYaLIAiTkI9kbAS6OM9OYC8cmmE="; + vendorHash = "sha256-WpUGScCd/laihQjC0oGKMYpOLMgfk/t7u3mrsCvf+Rk="; subPackages = [ "cmd/kcl" ]; diff --git a/pkgs/by-name/ko/kolla/package.nix b/pkgs/by-name/ko/kolla/package.nix index 5322f07a6ebe..15c2de812bea 100644 --- a/pkgs/by-name/ko/kolla/package.nix +++ b/pkgs/by-name/ko/kolla/package.nix @@ -57,10 +57,9 @@ python3Packages.buildPythonApplication (finalAttrs: { bashate ]; - # Tests output a few exceptions but still succeed checkPhase = '' runHook preCheck - stestr run -e <(echo "test_load_ok") + stestr run runHook postCheck ''; diff --git a/pkgs/by-name/ku/kubexhunt/package.nix b/pkgs/by-name/ku/kubexhunt/package.nix new file mode 100644 index 000000000000..700b99f407c2 --- /dev/null +++ b/pkgs/by-name/ku/kubexhunt/package.nix @@ -0,0 +1,55 @@ +{ + lib, + fetchFromGitHub, + nix-update-script, + python3Packages, + versionCheckHook, +}: + +python3Packages.buildPythonApplication (finalAttrs: { + pname = "kubexhunt"; + version = "2.1"; + pyproject = true; + + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "mr-xhunt"; + repo = "kubeXhunt"; + tag = "v${finalAttrs.version}"; + hash = "sha256-MknzQhNLtuiW89TBYYU00xGgYZEbIKqMNk9I1SvzDzs="; + }; + + build-system = with python3Packages; [ setuptools ]; + + dependencies = with python3Packages; [ + azure-identity + boto3 + google-cloud-iam + neo4j + jinja2 + ]; + + nativeCheckInputs = with python3Packages; [ + pytest-cov-stub + pytestCheckHook + safety + ]; + + nativeInstallCheckInputs = [ versionCheckHook ]; + + pythonImportsCheck = [ "kubexhunt" ]; + + doInstallCheck = true; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Kubernetes security assessment toolkit"; + homepage = "https://github.com/mr-xhunt/kubeXhunt"; + changelog = "https://github.com/mr-xhunt/kubeXhunt/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ fab ]; + mainProgram = "kubexhunt"; + }; +}) diff --git a/pkgs/by-name/la/lasuite-meet/frontend.nix b/pkgs/by-name/la/lasuite-meet/frontend.nix index e1ad1dbb0717..56871f8a9134 100644 --- a/pkgs/by-name/la/lasuite-meet/frontend.nix +++ b/pkgs/by-name/la/lasuite-meet/frontend.nix @@ -17,7 +17,7 @@ buildNpmPackage (finalAttrs: { src sourceRoot ; - hash = "sha256-X+RzRM1rRZZ2k1kjtk0JVXBIbEIuX5mk/zRzwjGKr1s="; + hash = "sha256-PArNKjdLqKJSEEKe94mguzKiNSwpYk56inenU3GL1mI="; }; npmBuildScript = "build"; diff --git a/pkgs/by-name/la/lasuite-meet/mail.nix b/pkgs/by-name/la/lasuite-meet/mail.nix index eedcd1d4764d..d1e8e4634d60 100644 --- a/pkgs/by-name/la/lasuite-meet/mail.nix +++ b/pkgs/by-name/la/lasuite-meet/mail.nix @@ -22,7 +22,7 @@ buildNpmPackage (finalAttrs: { pname = "${finalAttrs.pname}-npm-deps"; inherit version src; inherit (finalAttrs) sourceRoot; - hash = "sha256-nZURiOcSgXZwXBkB43GPerXUF2RSTiEPnjsVLSyXKxw="; + hash = "sha256-rqtLjMp0nCfo1wDAeB5WxVtmL/TR3Ky3qaMaBohnH1M="; }; npmBuildScript = "build"; diff --git a/pkgs/by-name/la/lasuite-meet/package.nix b/pkgs/by-name/la/lasuite-meet/package.nix index 898ee7514fe1..ac5a69718431 100644 --- a/pkgs/by-name/la/lasuite-meet/package.nix +++ b/pkgs/by-name/la/lasuite-meet/package.nix @@ -6,13 +6,13 @@ python3, }: let - version = "1.25.0"; + version = "1.25.2"; src = fetchFromGitHub { owner = "suitenumerique"; repo = "meet"; tag = "v${version}"; - hash = "sha256-0+X7kqydIkISYh+zy8/dqOkhkNmkpCuRgyq32OKtbcY="; + hash = "sha256-gtChKd6sr2nHEmi0Z/nbuCCNsOD8iVIAFjqonZFgQ/Y="; }; meta = { diff --git a/pkgs/by-name/ma/mame/package.nix b/pkgs/by-name/ma/mame/package.nix index 17d7731dc776..0a9ee77cbe0c 100644 --- a/pkgs/by-name/ma/mame/package.nix +++ b/pkgs/by-name/ma/mame/package.nix @@ -24,7 +24,7 @@ portmidi, pugixml, python3, - libsForQt5, + qt6, rapidjson, sqlite, utf8proc, @@ -36,14 +36,14 @@ stdenv.mkDerivation (finalAttrs: { pname = "mame"; - version = "0.287"; + version = "0.289"; srcVersion = builtins.replaceStrings [ "." ] [ "" ] finalAttrs.version; src = fetchFromGitHub { owner = "mamedev"; repo = "mame"; rev = "mame${finalAttrs.srcVersion}"; - hash = "sha256-d1Y3KrJwL8iDjQDqG6FRN82WzVAqTcY1YJaayUQO8sk="; + hash = "sha256-tbveDIOPZjEoTmo5rV2fR9An1I6X4P8Ec7HYHWL6H6U="; }; outputs = [ @@ -88,7 +88,7 @@ stdenv.mkDerivation (finalAttrs: { sdl3 sdl3-ttf sqlite - libsForQt5.qtbase + qt6.qtbase ] ++ lib.optionals stdenv.hostPlatform.isLinux [ alsa-lib @@ -108,7 +108,7 @@ stdenv.mkDerivation (finalAttrs: { pkg-config python3 which - libsForQt5.wrapQtAppsHook + qt6.wrapQtAppsHook ]; patches = [ diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py index 3f61608d60fa..551465ad4881 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual.py @@ -3,9 +3,9 @@ import hashlib import html import json import re -import xml.sax.saxutils as xml from abc import abstractmethod from collections.abc import Mapping, Sequence +from dataclasses import dataclass from pathlib import Path from typing import Any, Callable, ClassVar, Generic, NamedTuple, cast, get_args @@ -44,6 +44,7 @@ class BaseConverter(Converter[md.TR], Generic[md.TR]): self._current_type = ['book'] try: tokens = self._parse(infile.read_text()) + self._prepend_config(infile, tokens) self._postprocess(infile, outfile, tokens) converted = self._renderer.render(tokens) outfile.write_text(converted) @@ -53,6 +54,9 @@ class BaseConverter(Converter[md.TR], Generic[md.TR]): def _postprocess(self, infile: Path, outfile: Path, tokens: Sequence[Token]) -> None: pass + def _prepend_config(self, infile: Path, tokens: list[Token]) -> None: + pass + def _handle_headings(self, tokens: list[Token], *, src: str, on_heading: Callable[[Token,str],None]) -> None: # Headings in a globally numbered order # h1 to h6 @@ -232,6 +236,7 @@ class RendererMixin(Renderer): 'included_preface': lambda *args: self._included_thing("preface", *args), 'included_parts': lambda *args: self._included_thing("part", *args), 'included_appendix': lambda *args: self._included_thing("appendix", *args), + 'included_content': lambda *args: self._included_thing("content", *args), 'included_options': self.included_options, } @@ -264,7 +269,6 @@ class HTMLParameters(NamedTuple): # structural depth of the navigation sidebar tree sidebar_depth: int media_dir: Path - sidebar_open: frozenset[str] = frozenset() header: Path | None = None no_navheader: bool = False @@ -273,15 +277,18 @@ class ManualHTMLRenderer(RendererMixin, HTMLRenderer): _in_dir: Path _html_params: HTMLParameters _redirects: Redirects | None + _sidebar_open: frozenset[str] def __init__(self, toplevel_tag: str, revision: str, html_params: HTMLParameters, manpage_urls: Mapping[str, str], xref_targets: dict[str, XrefTarget], - redirects: Redirects | None, in_dir: Path, base_path: Path): + redirects: Redirects | None, in_dir: Path, base_path: Path, + sidebar_open: frozenset[str]): super().__init__(toplevel_tag, revision, manpage_urls, xref_targets) self._in_dir = in_dir self._base_path = base_path.absolute() self._html_params = html_params self._redirects = redirects + self._sidebar_open = sidebar_open def _pull_image(self, src: str) -> str: src_path = Path(src) @@ -542,7 +549,10 @@ document.addEventListener("DOMContentLoaded", createObserver); link = f'{e.target.toc_html}' cls = html.escape(e.kind, True) if children: - open_attr = " open" if e.target.id in self._html_params.sidebar_open else "" + # a group without an 'id' in the config gets open_id "". + # the empty key then fails the truth test, so the group stays closed. + key = e.target.id if e.open_id is None else e.open_id + open_attr = " open" if key and key in self._sidebar_open else "" items.append( f'
  • ' f'{link}{children}' @@ -607,6 +617,25 @@ document.addEventListener("DOMContentLoaded", createObserver); def _to_base26(n: int) -> str: return (_to_base26(n // 26) if n > 26 else "") + chr(ord("A") + n % 26) +@dataclass +class ConfigLeaf: + file: str + label: str | None = None + +@dataclass +class ConfigGroup: + label: str + children: list["ConfigNode"] + id: str | None = None + +ConfigNode = ConfigLeaf | ConfigGroup + +@dataclass +class ConfigManifest: + items: list[ConfigNode] + open: frozenset[str] + + class HTMLConverter(BaseConverter[ManualHTMLRenderer]): INCLUDE_ARGS_NS = "html" INCLUDE_FRAGMENT_ALLOWED_ARGS = { 'into-file' } @@ -618,24 +647,127 @@ class HTMLConverter(BaseConverter[ManualHTMLRenderer]): _xref_targets: dict[str, XrefTarget] _redirection_targets: set[str] _appendix_count: int = 0 + _config_path: Path | None + _config: ConfigManifest | None def _next_appendix_id(self) -> str: self._appendix_count += 1 return _to_base26(self._appendix_count - 1) - def __init__(self, revision: str, html_params: HTMLParameters, manpage_urls: Mapping[str, str], redirects: Redirects | None = None): + def __init__( + self, + revision: str, + html_params: HTMLParameters, + manpage_urls: Mapping[str, str], + redirects: Redirects | None = None, + config_path: Path | None = None + ): super().__init__() self._revision, self._html_params, self._manpage_urls, self._redirects = revision, html_params, manpage_urls, redirects + self._config_path = config_path + self._config = None self._xref_targets = {} self._redirection_targets = set() # renderer not set on purpose since it has a dependency on the output path! def convert(self, infile: Path, outfile: Path) -> None: + try: + self._config = self._load_config() + except Exception as e: + raise RuntimeError(f"failed to load config '{self._config_path}'") from e + sidebar_open = self._config.open if self._config is not None else frozenset() self._renderer = ManualHTMLRenderer( 'book', self._revision, self._html_params, self._manpage_urls, self._xref_targets, - self._redirects, infile.parent, outfile.parent) + self._redirects, infile.parent, outfile.parent, sidebar_open) super().convert(infile, outfile) + def _load_config(self) -> ConfigManifest | None: + if self._config_path is None: + return None + src = self._config_path.read_text() + config = json.loads(src) + if not isinstance(config, dict) or not isinstance(config.get('items'), list): + raise SrcError( + src=src, + description=f"config {self._config_path}: expected a top-level object with an 'items' array") + open_ids = config.get('open', []) + if not isinstance(open_ids, list) or not all(isinstance(i, str) for i in open_ids): + raise SrcError( + src=src, + description=f"config {self._config_path}: 'open' must be an array of strings") + items = self._parse_config_nodes(config['items'], "config items", src) + return ConfigManifest(items=items, open=frozenset(open_ids)) + + def _parse_config_nodes(self, items: Any, where: str, src: str) -> list[ConfigNode]: + return [self._parse_config_node(item, f"{where}[{idx}]", src) + for idx, item in enumerate(items)] + + def _parse_config_node(self, item: Any, where: str, src: str) -> ConfigNode: + if not isinstance(item, dict): + raise SrcError(src=src, description=f"{where}: expected an object, got {type(item).__name__}") + label = item.get('label') + if label is not None and (not isinstance(label, str) or not label): + raise SrcError(src=src, description=f"{where}: 'label' must be a non-empty string") + has_file, has_children = 'file' in item, 'children' in item + if has_file == has_children: + raise SrcError( + src=src, + description=f"{where}: must have exactly one of 'file' or 'children'") + if has_file: + if not isinstance(item['file'], str): + raise SrcError(src=src, description=f"{where}: 'file' must be a string") + return ConfigLeaf(file=item['file'], label=label) + children = item['children'] + if not isinstance(children, list) or not children: + raise SrcError(src=src, description=f"{where}: 'children' must be a non-empty array") + if not isinstance(label, str) or not label: + raise SrcError(src=src, description=f"{where}: a group requires a non-empty 'label'") + gid = item.get('id') + if gid is not None and (not isinstance(gid, str) or not gid): + raise SrcError(src=src, description=f"{where}: 'id' must be a non-empty string") + return ConfigGroup(label=label, children=self._parse_config_nodes(children, where, src), id=gid) + + def _prepend_config(self, infile: Path, tokens: list[Token]) -> None: + if self._config is None: + return + assert self._config_path is not None + include = self._build_config_include(self._config.items, self._config_path.resolve()) + # tokens 0 to 5 hold the title h1 triple and the subtitle h2 triple. + # _render_book renders tokens[6:] as the body. + # a change to the preamble must change this index too. + tokens[6:6] = [include] + + def _build_config_include(self, nodes: list[ConfigNode], config_file: Path) -> Token: + included = [self._build_config_item(node, config_file) for node in nodes] + token = Token('included_content', '', 0, map=[0, 1]) + token.meta['included'] = included + token.meta['include-args'] = {} + return token + + def _build_config_item(self, node: ConfigNode, config_file: Path) -> tuple[list[Token], Path]: + if isinstance(node, ConfigLeaf): + path = (config_file.parent / node.file).resolve() + leaf_src = path.read_text() + self._base_paths.append(path) + self._current_type.append('content') + try: + fragment = self._parse(leaf_src) + finally: + self._current_type.pop() + self._base_paths.pop() + if node.label is not None: + fragment[1].meta['toc-label'] = node.label + return fragment, path + + # TocEntry._collect_entries reads nav-label and nav-id. + # it builds the sidebar group from them. + group = self._build_config_include(node.children, config_file) + group.meta['nav-label'] = node.label + if node.id is not None: + group.meta['nav-id'] = node.id + + return [group], config_file + def _parse(self, src: str, *, auto_id_prefix: None | str = None) -> list[Token]: tokens = super()._parse(src,auto_id_prefix=auto_id_prefix) for token in tokens: @@ -747,10 +879,12 @@ class HTMLConverter(BaseConverter[ManualHTMLRenderer]): title_html = self._renderer.renderInline(inlines.children[0:1]) else: toc_html, title = title_html, title_html + if (toc_label := inlines.meta.get('toc-label')) is not None: + toc_html = html.escape(cast(str, toc_label)) title_html = ( f"{title_html}" if typ == 'chapter' - else title_html if typ in [ 'book', 'part' ] + else title_html if typ in [ 'book', 'part', 'content' ] else f'the section called “{title_html}”' ) return XrefTarget(id, title_html, toc_html, re.sub('<.*?>', '', title), path, drop_fragment) @@ -820,9 +954,14 @@ def _build_cli_html(p: argparse.ArgumentParser) -> None: p.add_argument('--media-dir', default="media", type=Path) p.add_argument('--redirects', type=Path) p.add_argument('--sidebar-depth', default=2, type=int) - # nav metadata (JSON): {"open": ["anchor-id", ...]} selects which sidebar - # entries render expanded; omitted or absent means everything is collapsed. - p.add_argument('--nav', type=Path) + p.add_argument('--experimental-config', type=Path, help=""" +JSON file of the following form +{ items: [ { file, label? } | { label, children: [...], id? } ], open: [ id, ... ] } + +Files added through this flag prepend '--infile' + +This flag will replace --infile and `{=include=}` directives in the future +""") # Deprecated flags, p.add_argument('--toc-depth', nargs='?', action=_DeprecatedDepthFlag, default=None) p.add_argument('--chunk-toc-depth', nargs='?', action=_DeprecatedDepthFlag, default=None) @@ -835,10 +974,6 @@ def _build_cli_html(p: argparse.ArgumentParser) -> None: p.add_argument('outfile', type=Path) def _run_cli_html(args: argparse.Namespace) -> None: - sidebar_open: frozenset[str] = frozenset() - if args.nav: - with open(args.nav) as nav_file: - sidebar_open = frozenset(json.load(nav_file).get("open", [])) with open(args.manpage_urls) as manpage_urls, open(Path(__file__).parent / "redirects.js") as redirects_script: redirects = None if args.redirects: @@ -848,8 +983,8 @@ def _run_cli_html(args: argparse.Namespace) -> None: md = HTMLConverter( args.revision, HTMLParameters(args.generator, args.stylesheet, args.script, - args.sidebar_depth, args.media_dir, sidebar_open, args.header, args.no_navheader), - json.load(manpage_urls), redirects) + args.sidebar_depth, args.media_dir, args.header, args.no_navheader), + json.load(manpage_urls), redirects, args.experimental_config) md.convert(args.infile, args.outfile) def build_cli(p: argparse.ArgumentParser) -> None: diff --git a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual_structure.py b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual_structure.py index 859ff5197d17..204b5aa9b933 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual_structure.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/nixos_render_docs/manual_structure.py @@ -13,8 +13,10 @@ from .utils import Freezeable # FragmentType is used to restrict structural include blocks. FragmentType = Literal['preface', 'part', 'chapter', 'section', 'appendix'] -# in the TOC all fragments are allowed, plus the all-encompassing book. -TocEntryType = Literal['book', 'preface', 'part', 'chapter', 'section', 'appendix', 'example', 'figure'] +# the TOC allows every fragment type. it also allows the enclosing book. +# it allows 'example' and 'figure'. +# --experimental-config adds a generic 'content' kind. +TocEntryType = Literal['book', 'preface', 'part', 'chapter', 'section', 'appendix', 'example', 'figure', 'content'] def is_include(token: Token) -> bool: return token.type == "fence" and token.info.startswith("{=include=} ") @@ -145,6 +147,7 @@ class TocEntry(Freezeable): next: TocEntry | None = None children: list[TocEntry] = dc.field(default_factory=list) starts_new_chunk: bool = False + open_id: str | None = None @property def root(self) -> TocEntry: @@ -193,9 +196,21 @@ class TocEntry(Freezeable): fragment_type_str = token.type[9:].removesuffix('s') assert fragment_type_str in get_args(TocEntryType) fragment_type = cast(TocEntryType, fragment_type_str) - for fragment, _path in included: - subentries = cls._collect_entries(xrefs, fragment, fragment_type) - entries[-1][1].children.append(subentries) + if (nav_label := token.meta.get('nav-label')) is not None: + children = [cls._collect_entries(xrefs, fragment, fragment_type) + for fragment, _path in included] + first = children[0].target + group = TocEntry( + fragment_type, + dc.replace(first, title_html=nav_label, toc_html=nav_label, title=nav_label), + children=children, + open_id=token.meta.get('nav-id', '')) + entries.append(('h1', group)) + token.meta['TocEntry'] = group + else: + for fragment, _path in included: + subentries = cls._collect_entries(xrefs, fragment, fragment_type) + entries[-1][1].children.append(subentries) elif token.type == 'heading_open' and (id := cast(str, token.attrs.get('id', ''))): while len(entries) > 1 and entries[-1][0] >= token.tag: entries[-2][1].children.append(entries.pop()[1]) diff --git a/pkgs/by-name/ni/nixos-render-docs/src/tests/test_html_header.py b/pkgs/by-name/ni/nixos-render-docs/src/tests/test_html_header.py index 7111959bea55..b0af6d8c4b99 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/tests/test_html_header.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/tests/test_html_header.py @@ -9,7 +9,7 @@ def render(tmp_path: Path, header: Path | None) -> str: infile = tmp_path / "index.md" infile.write_text(SAMPLE_BOOK) outfile = tmp_path / "index.html" - params = HTMLParameters("", [], [], 2, sidebar_open = [], media_dir=tmp_path, header = header) + params = HTMLParameters("", [], [], 2, media_dir=tmp_path, header = header) HTMLConverter("1.0.0", params, {}).convert(infile, outfile) return outfile.read_text() diff --git a/pkgs/by-name/ni/nixos-render-docs/src/tests/test_manual.py b/pkgs/by-name/ni/nixos-render-docs/src/tests/test_manual.py index 45bce4cb6e78..5da16ab7659b 100644 --- a/pkgs/by-name/ni/nixos-render-docs/src/tests/test_manual.py +++ b/pkgs/by-name/ni/nixos-render-docs/src/tests/test_manual.py @@ -1,7 +1,9 @@ +import json import xml.parsers.expat as expat from html.entities import name2codepoint from pathlib import Path +import pytest from nixos_render_docs.manual import HTMLConverter, HTMLParameters @@ -49,7 +51,7 @@ def _build(tmp_path: Path, sidebar_depth: int = 2, sidebar_open: frozenset[str] out.mkdir(exist_ok=True) conv = HTMLConverter( "1.0.0", - HTMLParameters("test-gen", [], [], sidebar_depth, Path("media"), sidebar_open), + HTMLParameters("test-gen", [], [], sidebar_depth, Path("media")), {}, ) conv.convert(tmp_path / "index.md", out / "index.html") @@ -88,10 +90,42 @@ def test_sidebar_is_collapsible_tree(tmp_path: Path) -> None: def test_nav_metadata_opens_selected_entries(tmp_path: Path) -> None: - # ids listed in the nav "open" set render as
    - html = _build(tmp_path, sidebar_depth=3, sidebar_open=frozenset({"chap-fpa"})) - assert '
    Guides' in html + assert '
    None: + # the config lists 'intro' in 'open'. + # the group has no id, so its key is empty. the group stays closed. + html = _render_with_config( + tmp_path, + { + "items": [ + {"label": "Guides", "children": [ + {"file": "intro.md"}, + ]}, + ], + "open": ["intro"], + }, + {"intro.md": "# Introduction {#intro}\n\nBody.\n"}, + ) + assert '
    Guides' in html + assert "
    " not in html def test_sidebar_depth_caps_the_tree(tmp_path: Path) -> None: @@ -169,3 +203,179 @@ def test_output_is_well_formed_xhtml(tmp_path: Path) -> None: assert {p.name for p in pages} == {"index.html", "chapter.html"} for page in pages: _parse_xhtml(page.read_text()) + + +_DEFAULT_INDEX = ( + "# Test manual {#book-test}\n\n" + "## Version 1\n\n" + "```{=include=} chapters\nmanual-chapter.md\n```\n" +) +_DEFAULT_MANUAL_CHAPTER = "# Manual chapter {#manual-chap}\n\nManual body.\n" + + +def _render_with_config( + tmp_path: Path, + config: object, + files: dict[str, str], + *, + index: str = _DEFAULT_INDEX, + manual_chapter: str = _DEFAULT_MANUAL_CHAPTER, + sidebar_depth: int = 6, +) -> str: + (tmp_path / "config.json").write_text(json.dumps(config)) + (tmp_path / "manual-chapter.md").write_text(manual_chapter) + for name, content in files.items(): + path = tmp_path / name + path.parent.mkdir(parents=True, exist_ok=True) + path.write_text(content) + + (tmp_path / "index.md").write_text(index) + out = tmp_path / "out" + out.mkdir(exist_ok=True) + + conv = HTMLConverter( + "1.0.0", + HTMLParameters("test-gen", [], [], sidebar_depth, Path("media")), + {}, + config_path=tmp_path / "config.json", + ) + conv.convert(tmp_path / "index.md", out / "index.html") + return (out / "index.html").read_text() + + +def test_config_content_renders_before_manual(tmp_path: Path) -> None: + html = _render_with_config( + tmp_path, + {"items": [{"label": "Intro", "file": "intro.md"}]}, + {"intro.md": "# Introduction {#intro}\n\nConfig intro body.\n"}, + ) + assert "Config intro body." in html + assert "Manual body." in html + assert html.index("Config intro body.") < html.index("Manual body.") + + +def test_config_grouping_node_is_sidebar_only(tmp_path: Path) -> None: + html = _render_with_config( + tmp_path, + { + "items": [ + { + "label": "Guides", "children": [ + {"label": "Install", "file": "install.md"}, + ] + } + ] + }, + {"install.md": "# Install {#install}\n\nInstall body.\n"}, + ) + # the group adds no heading and no anchor to the body. + assert "Guides" not in html + assert 'id="guides"' not in html + # the child renders as a page. + assert '

    Install' in html + assert "Install body." in html + # the sidebar nests the child under the group. + assert '
    Guides' in html + assert 'Install' in html + + +def test_config_leaf_derives_id_and_label_from_file(tmp_path: Path) -> None: + # the sidebar link reuses the heading id. the label reuses the heading title. + html = _render_with_config( + tmp_path, + {"items": [{"file": "intro.md"}]}, + {"intro.md": "# Introduction {#intro}\n\nBody.\n"}, + ) + assert '

    Introduction' in html + assert 'Introduction' in html + + +def test_config_leaf_label_differs_from_file_title(tmp_path: Path) -> None: + html = _render_with_config( + tmp_path, + { + "items": [ + {"label": "Sidebar Label", "file": "leaf1.md"} + ] + }, + {"leaf1.md": "# File Title {#leaf1}\n\nBody.\n"}, + ) + assert '

    File Title' in html + assert 'Sidebar Label' in html + + +def test_config_tree_nests_arbitrarily_deep(tmp_path: Path) -> None: + html = _render_with_config( + tmp_path, + { + "items": [ + {"label": "A", "children": [ + {"label": "B", "children": [ + {"label": "C", "file": "c.md"}, + ]}, + ]} + ] + }, + {"c.md": "# C File {#leaf-c}\n\nDeep body.\n"}, + ) + # only the leaf renders a heading. the groups A and B add no anchor. + assert '

    A' in html + assert '
    B' in html + assert 'C

  • ' in html + assert html.index('>A') < html.index('>B') < html.index('>C') + + +def test_config_id_is_cross_referenceable(tmp_path: Path) -> None: + html = _render_with_config( + tmp_path, + { + "items": [{"label": "Intro", "file": "intro.md"}] + }, + {"intro.md": "# Introduction {#intro}\n\nBody.\n"}, + manual_chapter="# Manual chapter {#manual-chap}\n\nSee [](#intro).\n", + ) + assert 'Introduction" in html + + +def test_config_duplicate_id_fails(tmp_path: Path) -> None: + with pytest.raises(RuntimeError) as excinfo: + _render_with_config( + tmp_path, + { + "items": [{"label": "Dup", "file": "dup.md"}] + }, + {"dup.md": "# Dup file {#dup}\n\nBody.\n"}, + manual_chapter="# Manual {#dup}\n\nBody.\n", + ) + assert "duplicate id" in str(excinfo.value.__cause__) + + +def test_config_malformed_node_fails(tmp_path: Path) -> None: + with pytest.raises(RuntimeError) as excinfo: + _render_with_config( + tmp_path, + {"items": [{"label": "Bad", "file": "x.md", "children": []}]}, + {}, + ) + assert "exactly one of" in str(excinfo.value.__cause__) + + with pytest.raises(RuntimeError) as excinfo: + _render_with_config( + tmp_path, + {"items": [{"file": 123}]}, + {}, + ) + assert "'file' must be a string" in str(excinfo.value.__cause__) + + with pytest.raises(RuntimeError) as excinfo: + _render_with_config( + tmp_path, + {"items": [{"children": [{"file": "x.md"}]}]}, + {"x.md": "# X {#x}\n\nB.\n"}, + ) + assert "a group requires a non-empty 'label'" in str(excinfo.value.__cause__) diff --git a/pkgs/by-name/ol/ollama/package.nix b/pkgs/by-name/ol/ollama/package.nix index f262cba0f285..fc81ab4fd70d 100644 --- a/pkgs/by-name/ol/ollama/package.nix +++ b/pkgs/by-name/ol/ollama/package.nix @@ -111,12 +111,12 @@ let # vendored in-tree. Pre-stage the pin (tracks upstream's # `LLAMA_CPP_VERSION` file) so the FetchContent step uses our copy # instead of trying to clone over the network in the sandbox. - llamaCppVersion = "b10091"; + llamaCppVersion = "b10242"; llamaCppSrc = fetchFromGitHub { owner = "ggml-org"; repo = "llama.cpp"; tag = llamaCppVersion; - hash = "sha256-ZHQ9hBnE9GayZRt0jgO4svzaAUfhRUg6cFu5dSe8J1w="; + hash = "sha256-mBqO6h9eiSAXqiHy1H3aK2ACbz1aYagmjAN7IpXNTcw="; }; wrapperOptions = [ @@ -152,13 +152,13 @@ let in goBuild (finalAttrs: { pname = "ollama"; - version = "0.32.5"; + version = "0.32.6"; src = fetchFromGitHub { owner = "ollama"; repo = "ollama"; tag = "v${finalAttrs.version}"; - hash = "sha256-SqxFMKTGu5e6FdB5abuYez8Aejf7JY7C6e6GuOMYd4w="; + hash = "sha256-B1Svfufa7puiZy+pDHeOTpX3+PWOuNjpMnpE/K3rl3Q="; }; vendorHash = "sha256-HMwoaFBMbpoy8f0I+O+i7kIa9BslLu3FcVWeaIOkpvs="; diff --git a/pkgs/by-name/op/openhack/package.nix b/pkgs/by-name/op/openhack/package.nix new file mode 100644 index 000000000000..e36e3a9d9458 --- /dev/null +++ b/pkgs/by-name/op/openhack/package.nix @@ -0,0 +1,57 @@ +{ + lib, + fetchFromGitHub, + nix-update-script, + python3Packages, + versionCheckHook, +}: + +python3Packages.buildPythonApplication (finalAttrs: { + pname = "openhack"; + version = "0.2.1"; + pyproject = true; + + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "openhackai"; + repo = "openhack"; + tag = "v${finalAttrs.version}"; + hash = "sha256-GY95oijrD/yTZI8DpbRVkCXRhMIw5Zsukt22tnglCVc="; + }; + + build-system = with python3Packages; [ hatchling ]; + + dependencies = with python3Packages; [ + aiohttp + httpx + openai + playwright + prompt-toolkit + pydantic + pydantic-settings + pygments + rich + tree-sitter + tree-sitter-javascript + tree-sitter-python + tree-sitter-typescript + ]; + + nativeInstallCheckInputs = [ versionCheckHook ]; + + doInstallCheck = true; + + pythonImportsCheck = [ "openhack" ]; + + passthru.updateScript = nix-update-script { }; + + meta = { + description = "Open Source Agentic Security Scanner"; + homepage = "https://github.com/openhackai/openhack"; + changelog = "https://github.com/openhackai/openhack/releases/tag/${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ fab ]; + mainProgram = "openhack"; + }; +}) diff --git a/pkgs/by-name/or/orchis-theme/package.nix b/pkgs/by-name/or/orchis-theme/package.nix index 9e216ff3410b..b4f323cac5b7 100644 --- a/pkgs/by-name/or/orchis-theme/package.nix +++ b/pkgs/by-name/or/orchis-theme/package.nix @@ -37,13 +37,13 @@ lib.checkListOfEnum "${pname}: theme tweaks" validTweaks tweaks stdenvNoCC.mkDerivation rec { inherit pname; - version = "2025-04-25"; + version = "2026-07-07"; src = fetchFromGitHub { repo = "Orchis-theme"; owner = "vinceliuice"; rev = version; - hash = "sha256-+2/CsgJ+rdDpCp+r5B/zys3PtFgtnu+ohTEUOtJNd1Y="; + hash = "sha256-oX6+tPe0nGsl+OzFZCpbKvE00Z/xvP+NoHY7QZ9YAo0="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/os/ostui/package.nix b/pkgs/by-name/os/ostui/package.nix index f9f07b3863bb..d8714f50f249 100644 --- a/pkgs/by-name/os/ostui/package.nix +++ b/pkgs/by-name/os/ostui/package.nix @@ -8,13 +8,13 @@ }: buildGoModule (finalAttrs: { pname = "ostui"; - version = "1.3.5"; + version = "1.3.6"; src = fetchFromSourcehut { owner = "~ser"; repo = "ostui"; rev = "v${finalAttrs.version}"; - hash = "sha256-9d5oaaRKIiU9SP13rnObBQO0DOqliF5SMiKxSas/Yqs="; + hash = "sha256-vHKY6uA3CRxZi3kBDNviLbVxSrXeZG6x8UhMS0GBxSg="; }; vendorHash = "sha256-cCyOG6nqlw2DPbA1dCuki5cpDy9LmZV/3YGyB3nCreI="; diff --git a/pkgs/by-name/pa/padne/package.nix b/pkgs/by-name/pa/padne/package.nix new file mode 100644 index 000000000000..2038c582ccfc --- /dev/null +++ b/pkgs/by-name/pa/padne/package.nix @@ -0,0 +1,3 @@ +{ python3Packages }: + +python3Packages.toPythonApplication python3Packages.padne diff --git a/pkgs/by-name/pa/pana/package.nix b/pkgs/by-name/pa/pana/package.nix index 6b279726dcbf..24d448898a57 100644 --- a/pkgs/by-name/pa/pana/package.nix +++ b/pkgs/by-name/pa/pana/package.nix @@ -9,13 +9,13 @@ }: buildDartApplication rec { pname = "pana"; - version = "0.23.14"; + version = "0.23.16"; src = fetchFromGitHub { owner = "dart-lang"; repo = "pana"; tag = version; - hash = "sha256-yBheou/u8TjL+MDhxd6AhWPJARLEcQF+ojmDqkv8zi4="; + hash = "sha256-cA707l5SGGh+tzD2TOx2eYEh3zfQawstFCTocgcnXJk="; }; dartEntryPoints = { diff --git a/pkgs/by-name/pa/pana/pubspec.lock.json b/pkgs/by-name/pa/pana/pubspec.lock.json index 56f6f5b351b8..d7354b95b70b 100644 --- a/pkgs/by-name/pa/pana/pubspec.lock.json +++ b/pkgs/by-name/pa/pana/pubspec.lock.json @@ -54,41 +54,41 @@ "dependency": "direct dev", "description": { "name": "build", - "sha256": "45d14a0fb23e018d8287c32fc98d726ce466b231928ed9b9200f29bd3ccd39ae", + "sha256": "b94f5da9ed3d081fd4ecc426c260998b5f4f4eb2f6d89b7e5472edef0b2b2a1b", "url": "https://pub.dev" }, "source": "hosted", - "version": "4.0.7" + "version": "4.0.10" }, "build_config": { "dependency": "direct dev", "description": { "name": "build_config", - "sha256": "f2c223156a26eea323e6244b85141d76413a80aeee9fe0b380773789fabaf8ae", + "sha256": "94eaf6708fe64408c632ef2689ca3777b112f9421306ccf4f8c84d7c5c9f83f8", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.3.1" + "version": "1.3.2" }, "build_daemon": { "dependency": "transitive", "description": { "name": "build_daemon", - "sha256": "fd754058c342243718d5171a95f352cfc9fcf0cba8cfa26df67cb13a5836db78", + "sha256": "79e05eaf15a48d7230b053a4363b8eaac0cc234bbd0134c3229455481f55cbc6", "url": "https://pub.dev" }, "source": "hosted", - "version": "4.1.2" + "version": "4.1.5" }, "build_runner": { "dependency": "direct dev", "description": { "name": "build_runner", - "sha256": "5367e521935b102bdf1e735d2aab461e36b2edca6517662d088dd04cc39f8d16", + "sha256": "90363d438bd9f84a4d5bbb83352251f57d2d9d771bc95a44e6a33fe25fa52774", "url": "https://pub.dev" }, "source": "hosted", - "version": "2.15.1" + "version": "2.16.0" }, "build_verify": { "dependency": "direct dev", @@ -124,11 +124,11 @@ "dependency": "transitive", "description": { "name": "built_value", - "sha256": "34e4067d30ce212937df995f03b69992eea683539ceeac7f679a1f1eba055b56", + "sha256": "31b24be6615ec7fcf70b3aa5a7469fe35826485e639a16dd7eb83ba30e4cc6a8", "url": "https://pub.dev" }, "source": "hosted", - "version": "8.12.6" + "version": "8.12.7" }, "checked_yaml": { "dependency": "transitive", @@ -154,11 +154,11 @@ "dependency": "direct main", "description": { "name": "cli_util", - "sha256": "5909d2c6b66817222779e1eedc19e0e28b76d1df7bd9856a4792ccb9881df358", + "sha256": "71e43f1976c3eae2d9468a5b4d6600bf8cae61508b87f27fa1799228935d48ab", "url": "https://pub.dev" }, "source": "hosted", - "version": "0.5.1" + "version": "0.5.2" }, "collection": { "dependency": "direct main", @@ -224,11 +224,11 @@ "dependency": "transitive", "description": { "name": "dart_style", - "sha256": "b60b8cb28aa514346eb8f6b005c60484ea65190f213b1986f6e391e0292d18f4", + "sha256": "3f88fc9c96c568d631356507355a2d1e983ee000c9ac008bdcb39b5bf53ce777", "url": "https://pub.dev" }, "source": "hosted", - "version": "3.1.11" + "version": "3.1.12" }, "ffi": { "dependency": "transitive", @@ -354,11 +354,11 @@ "dependency": "direct dev", "description": { "name": "json_serializable", - "sha256": "ffcd10cde35a93b2abbbcc26bd9971f4ca93763e8abe78d855e3c4177797e501", + "sha256": "e45aefa0324f08c683caafbb94b72837aa6193c61822799c916e45f4a263113d", "url": "https://pub.dev" }, "source": "hosted", - "version": "6.14.0" + "version": "6.14.1" }, "lints": { "dependency": "direct main", @@ -434,11 +434,11 @@ "dependency": "transitive", "description": { "name": "package_config", - "sha256": "f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc", + "sha256": "ffcf4cf3d6c0b74ac43708d9f56625506e8a68aa935abe9d267a7330f320eb5d", "url": "https://pub.dev" }, "source": "hosted", - "version": "2.2.0" + "version": "3.0.0" }, "path": { "dependency": "direct main", @@ -544,21 +544,21 @@ "dependency": "direct dev", "description": { "name": "source_gen", - "sha256": "ec37cc0e6694374cbef59ed79685572c870a54ede6fa30a3e420feb3adffea02", + "sha256": "a603f1fb984a7391ae5978d1b92bfaaa08b350dca5c825256f925818f7943bf5", "url": "https://pub.dev" }, "source": "hosted", - "version": "4.2.3" + "version": "4.2.4" }, "source_helper": { "dependency": "transitive", "description": { "name": "source_helper", - "sha256": "4227d54ceefd0bb8ca4c8fcb96e1719dc53f1ee1b6e2ca9d7a6069da160e4eae", + "sha256": "5e6f216fdf6376c9f3852381ae037499797a3385377d388b011dac98d303c67c", "url": "https://pub.dev" }, "source": "hosted", - "version": "1.3.12" + "version": "1.3.13" }, "source_map_stack_trace": { "dependency": "transitive", diff --git a/pkgs/by-name/qi/qidi-studio/package.nix b/pkgs/by-name/qi/qidi-studio/package.nix index 742ec7d2fa8a..72dc254448be 100644 --- a/pkgs/by-name/qi/qidi-studio/package.nix +++ b/pkgs/by-name/qi/qidi-studio/package.nix @@ -7,11 +7,11 @@ }: let pname = "qidi-studio"; - version = "2.07.02.10"; + version = "2.07.02.60"; src = fetchurl { url = "https://github.com/QIDITECH/QIDIStudio/releases/download/v${version}/QIDIStudio_v0${version}_Ubuntu24.AppImage"; - hash = "sha256-Ei5PV/XRWtCMlXF07AJu9UWplSr+8GdwAFvXwDE3TpM="; + hash = "sha256-1H0rLI3V8W1I+KIbolQg/Wat9WsACMy1RIdyU0s8seg="; }; appimageContents = appimageTools.extract { diff --git a/pkgs/by-name/re/renovate/package.nix b/pkgs/by-name/re/renovate/package.nix index 9f41bfb92f9c..8678860268b9 100644 --- a/pkgs/by-name/re/renovate/package.nix +++ b/pkgs/by-name/re/renovate/package.nix @@ -4,7 +4,7 @@ fetchFromGitHub, makeWrapper, nodejs_24, - pnpm_10, + pnpm_11, fetchPnpmDeps, pnpmConfigHook, python3, @@ -15,18 +15,23 @@ yq-go, cctools, }: + let nodejs = nodejs_24; + pnpm = pnpm_11; in stdenv.mkDerivation (finalAttrs: { pname = "renovate"; - version = "43.214.1"; + version = "44.13.1"; + + __structuredAttrs = true; + strictDeps = true; src = fetchFromGitHub { owner = "renovatebot"; repo = "renovate"; tag = finalAttrs.version; - hash = "sha256-S5ixP4Dp/YDv23kE5lvmp/Px6GrF9B6/wwSiKUwVWhA="; + hash = "sha256-2N+dQnuQwQNt7SZlIYq0CT2dRMiOF947MJZZ8BhZpcI="; }; postPatch = '' @@ -38,7 +43,7 @@ stdenv.mkDerivation (finalAttrs: { makeWrapper nodejs pnpmConfigHook - pnpm_10 + pnpm python3 yq-go ] @@ -49,9 +54,9 @@ stdenv.mkDerivation (finalAttrs: { pnpmDeps = fetchPnpmDeps { inherit (finalAttrs) pname version src; - pnpm = pnpm_10; - fetcherVersion = 3; - hash = "sha256-A8aL5ZF0tFKi0uCXxOQMzxByAIVyt76wnLvolFVYKuI="; + inherit pnpm; + fetcherVersion = 4; + hash = "sha256-xm4H+PIpVcisw8wKz77+v6iCcwEpkpLZ6awtwXPNBc8="; }; env.COREPACK_ENABLE_STRICT = 0; @@ -61,25 +66,17 @@ stdenv.mkDerivation (finalAttrs: { # relax nodejs version yq '.engines.node = "${nodejs.version}"' -i package.json + '' + # pnpm install gets run with --ignore-scripts so we need to manually build native dependencies (e.g. re2) + # Keep https://github.com/renovatebot/renovate/blob/main/pnpm-workspace.yaml#L9 in mind when updating, + # new native dependencies could bloat up binary size. + + '' + pnpm rebuild + rm -rf node_modules/.pnpm/re2*/node_modules/re2/build/Release/{obj.target,.deps} \ + node_modules/.pnpm/re2*/node_modules/re2/vendor pnpm build - find -name 'node_modules' -type d -exec rm -rf {} \; || true - pnpm install --offline --prod --ignore-scripts - '' - # The optional dependencies re2 and better-sqlite3 are not built by pnpm and need to be built manually. - # If re2 is not built, you will get an annoying warning when you run renovate. - # better-sqlite3 is required. - + '' - pushd node_modules/.pnpm/re2*/node_modules/re2 - - mkdir -p $HOME/.node-gyp/${nodejs.version} - echo 9 > $HOME/.node-gyp/${nodejs.version}/installVersion - ln -sfv ${nodejs}/include $HOME/.node-gyp/${nodejs.version} - export npm_config_nodedir=${nodejs} - npm run rebuild - rm -rf build/Release/{obj.target,.deps} vendor - - popd + pnpm prune --prod --ignore-scripts runHook postBuild ''; diff --git a/pkgs/by-name/tu/tuicr/package.nix b/pkgs/by-name/tu/tuicr/package.nix index 4901d33ee75b..2693e407b276 100644 --- a/pkgs/by-name/tu/tuicr/package.nix +++ b/pkgs/by-name/tu/tuicr/package.nix @@ -9,7 +9,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "tuicr"; - version = "0.20.0"; + version = "0.21.0"; __structuredAttrs = true; @@ -17,10 +17,10 @@ rustPlatform.buildRustPackage (finalAttrs: { owner = "agavra"; repo = "tuicr"; tag = "v${finalAttrs.version}"; - hash = "sha256-ByeWD4mC1DiH6L971mC7Qv6zUVmaf2lneewK2ZWXxg8="; + hash = "sha256-9QEDfDwb9Elm4R40/0pBz0EgTOoJJWWNraz2D0H6bAo="; }; - cargoHash = "sha256-MVDq+78HIwjqQiO7R/ZAXd16Bye0fktxbiRIzEOH7vQ="; + cargoHash = "sha256-efBYiq0FA9kpMwzHM2GiUC2rWyWC9QcgfCCVIu5bbPk="; strictDeps = true; diff --git a/pkgs/by-name/tu/tutanota-desktop/package.nix b/pkgs/by-name/tu/tutanota-desktop/package.nix index e3266e3d1778..3a3f9ba13e8d 100644 --- a/pkgs/by-name/tu/tutanota-desktop/package.nix +++ b/pkgs/by-name/tu/tutanota-desktop/package.nix @@ -1,45 +1,28 @@ { lib, + stdenvNoCC, appimageTools, fetchurl, makeWrapper, - gitUpdater, + undmg, }: -appimageTools.wrapType2 rec { +let pname = "tutanota-desktop"; version = "355.260720.0"; - src = fetchurl { + linuxSrc = fetchurl { url = "https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-${version}/tutanota-desktop-linux.AppImage"; hash = "sha256-sdKth9sy5yQ9cs4xQg4/zsgdvitxByKl8NCJgo3lL4o="; }; - extraPkgs = pkgs: [ pkgs.libsecret ]; - - nativeBuildInputs = [ makeWrapper ]; - - extraInstallCommands = - let - appimageContents = appimageTools.extract { inherit pname version src; }; - in - '' - install -Dm 444 ${appimageContents}/tutanota-desktop.desktop -t $out/share/applications - cp -r ${appimageContents}/usr/share/icons/. $out/share/icons - - substituteInPlace $out/share/applications/tutanota-desktop.desktop \ - --replace 'Exec=AppRun' 'Exec=${pname}' - - wrapProgram $out/bin/tutanota-desktop \ - --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" - ''; - - passthru.updateScript = gitUpdater { - url = "https://github.com/tutao/tutanota"; - rev-prefix = "tutanota-desktop-release-"; - allowedVersions = ".+\\.[0-9]{6}\\..+"; + darwinSrc = fetchurl { + url = "https://github.com/tutao/tutanota/releases/download/tutanota-desktop-release-${version}/tutanota-desktop-mac.dmg"; + hash = "sha256-oVipeWX6kuy0JqlB92hjcVl3Szwve7Lz5gd/mC7ieVg="; }; + passthru.updateScript = ./update.sh; + meta = { description = "Tuta official desktop client"; homepage = "https://tuta.com/"; @@ -48,6 +31,66 @@ appimageTools.wrapType2 rec { sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; maintainers = with lib.maintainers; [ s0ssh ]; mainProgram = "tutanota-desktop"; - platforms = [ "x86_64-linux" ]; + platforms = lib.platforms.darwin ++ [ "x86_64-linux" ]; }; -} + + linux = appimageTools.wrapType2 { + inherit + pname + version + passthru + meta + ; + src = linuxSrc; + + extraPkgs = pkgs: [ pkgs.libsecret ]; + + nativeBuildInputs = [ makeWrapper ]; + + extraInstallCommands = + let + appimageContents = appimageTools.extract { + inherit pname version; + src = linuxSrc; + }; + in + '' + install -Dm 444 ${appimageContents}/tutanota-desktop.desktop -t $out/share/applications + cp -r ${appimageContents}/usr/share/icons/. $out/share/icons + + substituteInPlace $out/share/applications/tutanota-desktop.desktop \ + --replace 'Exec=AppRun' 'Exec=${pname}' + + wrapProgram $out/bin/tutanota-desktop \ + --add-flags "\''${NIXOS_OZONE_WL:+\''${WAYLAND_DISPLAY:+--ozone-platform-hint=auto --enable-features=WaylandWindowDecorations --enable-wayland-ime=true}}" + ''; + }; + + darwin = stdenvNoCC.mkDerivation { + inherit + pname + version + passthru + meta + ; + src = darwinSrc; + + sourceRoot = "."; + + nativeBuildInputs = [ + undmg + makeWrapper + ]; + + installPhase = '' + runHook preInstall + + mkdir -p "$out/Applications" + cp -R "Tuta Mail.app" "$out/Applications/" + makeWrapper "$out/Applications/Tuta Mail.app/Contents/MacOS/Tuta Mail" "$out/bin/tutanota-desktop" + + runHook postInstall + ''; + }; +in +if stdenvNoCC.hostPlatform.isDarwin then darwin else linux diff --git a/pkgs/by-name/tu/tutanota-desktop/update.sh b/pkgs/by-name/tu/tutanota-desktop/update.sh new file mode 100755 index 000000000000..b7ddd8c932e2 --- /dev/null +++ b/pkgs/by-name/tu/tutanota-desktop/update.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env nix-shell +#!nix-shell -i bash -p bash curl jq common-updater-scripts nixVersions.latest + +set -euo pipefail + +repo="tutao/tutanota" +tagPrefix="tutanota-desktop-release-" + +latestTag=$(curl ${GITHUB_TOKEN:+-u ":$GITHUB_TOKEN"} -sSf \ + "https://api.github.com/repos/$repo/releases?per_page=100" \ + | jq -r --arg p "$tagPrefix" \ + '[.[] | select(.prerelease == false) | select(.tag_name | startswith($p))] | .[0].tag_name') +version="${latestTag#"$tagPrefix"}" + +currentVersion=$(nix-instantiate --eval -E "with import ./. { }; tutanota-desktop.version" | tr -d '"') + +echo "tutanota-desktop: current=$currentVersion latest=$version" +if [[ "$version" == "$currentVersion" ]]; then + echo "tutanota-desktop: already up to date" + exit 0 +fi + +base="https://github.com/$repo/releases/download/$tagPrefix$version" + +linuxHash=$(nix --extra-experimental-features nix-command hash convert --hash-algo sha256 --to sri \ + "$(nix-prefetch-url "$base/tutanota-desktop-linux.AppImage")") +update-source-version tutanota-desktop "$version" "$linuxHash" --system=x86_64-linux --ignore-same-version + +darwinHash=$(nix --extra-experimental-features nix-command hash convert --hash-algo sha256 --to sri \ + "$(nix-prefetch-url "$base/tutanota-desktop-mac.dmg")") +update-source-version tutanota-desktop "$version" "$darwinHash" --system=aarch64-darwin --ignore-same-version diff --git a/pkgs/by-name/uu/uutils-findutils/package.nix b/pkgs/by-name/uu/uutils-findutils/package.nix index 7c00a3ed9748..6511f9d8b131 100644 --- a/pkgs/by-name/uu/uutils-findutils/package.nix +++ b/pkgs/by-name/uu/uutils-findutils/package.nix @@ -8,16 +8,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "uutils-findutils"; - version = "0.9.0"; + version = "0.10.0"; src = fetchFromGitHub { owner = "uutils"; repo = "findutils"; tag = finalAttrs.version; - hash = "sha256-ILMInyjOMYlgPxrOjvLoBfkcaZ4aj6GeA/jiGPpNjiI="; + hash = "sha256-0M3sOHVsIKG3rPthikommvKvHB1Q1RohogjS9LT5yU0="; }; - cargoHash = "sha256-/rQTcyRXtluPKPuuZKn/qD/3U0PQLIqyq777/ww3q/0="; + cargoHash = "sha256-6M3kLNtvZ1nsCAkVJExQBWV72Bf9Kq5iei7SVpYsYio="; postInstall = '' rm $out/bin/testing-commandline diff --git a/pkgs/by-name/ve/vermouth/package.nix b/pkgs/by-name/ve/vermouth/package.nix index a59bc02c8c26..e16679466705 100644 --- a/pkgs/by-name/ve/vermouth/package.nix +++ b/pkgs/by-name/ve/vermouth/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchFromGitHub, - fetchpatch, cmake, nix-update-script, kdePackages, @@ -14,7 +13,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "vermouth"; - version = "1.9.7"; + version = "2.0.1"; __structuredAttrs = true; strictDeps = true; @@ -23,18 +22,9 @@ stdenv.mkDerivation (finalAttrs: { owner = "dekomote"; repo = "vermouth"; tag = "v${finalAttrs.version}"; - hash = "sha256-hcsvTvvuzuqTGgOdWt3sxyoJqjZjlUPlnlYJUgNpV4g="; + hash = "sha256-5Bej9GJgOUqg3WI4kHkyWXjjTv+MmimZbCK4vxpBdeU="; }; - patches = [ - # backport fix for desktop file generation - # FIXME: remove in next update - (fetchpatch { - url = "https://github.com/dekomote/vermouth/commit/436a201091505c142a88848135fe04e1ec996a1a.diff"; - hash = "sha256-fIgcewbJOpi+qHPgOJRCr+67RbziPPGP4sC1dclydgQ="; - }) - ]; - nativeBuildInputs = [ cmake qt6.qtbase diff --git a/pkgs/by-name/vi/vikunja/package.nix b/pkgs/by-name/vi/vikunja/package.nix index 6f13470d5cdb..684b72a32d15 100644 --- a/pkgs/by-name/vi/vikunja/package.nix +++ b/pkgs/by-name/vi/vikunja/package.nix @@ -14,12 +14,12 @@ }: let - version = "2.4.0"; + version = "2.5.0"; src = fetchFromGitHub { owner = "go-vikunja"; repo = "vikunja"; rev = "v${version}"; - hash = "sha256-0yAFrq+qzLZLXPblWY2lkoJ2idzENR3YqdFNiDqep6U="; + hash = "sha256-qI4mkgcN9yYRmh5V+KzIHupX7uWsszV4Xb31OYvukxQ="; }; frontend = stdenv.mkDerivation (finalAttrs: { @@ -37,7 +37,7 @@ let ; pnpm = pnpm_10; fetcherVersion = 3; - hash = "sha256-MnkwuEaBEY81LXInDao2Fi+FvKFyvsVS/QeXdS4FhPQ="; + hash = "sha256-xZBgE4GM59Ihl5a3qgcmkjR4Q3wYlcsiDapiNEzBQOg="; }; nativeBuildInputs = [ @@ -102,7 +102,7 @@ buildGoModule { mage ]; - vendorHash = "sha256-4JOwr6QCWglxXbRkcko2nsAxEhVbHDO1S2vI91NFM/8="; + vendorHash = "sha256-bn+bcGzeB0/KkhPNkbjK/EgKQG3iqVlJxtt6betGUNE="; inherit frontend; diff --git a/pkgs/by-name/vt/vte/package.nix b/pkgs/by-name/vt/vte/package.nix index 3cec20862b25..b31a5c683e22 100644 --- a/pkgs/by-name/vt/vte/package.nix +++ b/pkgs/by-name/vt/vte/package.nix @@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: { pname = "vte"; - version = "0.84.0"; + version = "0.84.1"; outputs = [ "out" @@ -49,7 +49,7 @@ stdenv.mkDerivation (finalAttrs: { src = fetchurl { url = "mirror://gnome/sources/vte/${lib.versions.majorMinor finalAttrs.version}/vte-${finalAttrs.version}.tar.xz"; - hash = "sha256-BBTjFYODaut4eNol9nxRX36IeZF+zDfJLia4Po2Pw+M="; + hash = "sha256-rKHKqEeK6827HWeJf7NRHrdgHeuuaBDhahW2+iXzGsg="; }; patches = [ diff --git a/pkgs/by-name/we/wezterm/package.nix b/pkgs/by-name/we/wezterm/package.nix index de796c26355f..9b5b5224bb4d 100644 --- a/pkgs/by-name/we/wezterm/package.nix +++ b/pkgs/by-name/we/wezterm/package.nix @@ -29,14 +29,14 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "wezterm"; - version = "0-unstable-2026-07-16"; + version = "0-unstable-2026-08-05"; src = fetchFromGitHub { owner = "wezterm"; repo = "wezterm"; - rev = "76b606ec597a3c0263fa60321548637451c0a547"; + rev = "4b1c3c151eb530e569f867e1461693c56fe89695"; fetchSubmodules = true; - hash = "sha256-FLU1R78C1xLPsJ1udBk9bW0BbVry4lGiC0kvPfMI66c="; + hash = "sha256-cZ5RDeHP9cBa1Qu6E96lRjKW4aC/wMJBZNpUZ2kAWuU="; }; postPatch = '' @@ -59,7 +59,7 @@ rustPlatform.buildRustPackage (finalAttrs: { # https://github.com/wezterm/wezterm/blob/main/nix/flake.nix#L134 auditable = false; - cargoHash = "sha256-jY7lTOfbT74tAZ7he1xudCN7BUxZBzY+8+e1d2g2v4I="; + cargoHash = "sha256-4jm0uMj0/6fcLHSvd7y12h1QjQ/VavkmNc5L/ebQez0="; nativeBuildInputs = [ installShellFiles diff --git a/pkgs/by-name/wo/woodpecker-plugin-git/package.nix b/pkgs/by-name/wo/woodpecker-plugin-git/package.nix index ec2afe92615a..fa0598bbf17a 100644 --- a/pkgs/by-name/wo/woodpecker-plugin-git/package.nix +++ b/pkgs/by-name/wo/woodpecker-plugin-git/package.nix @@ -8,16 +8,16 @@ buildGoModule (finalAttrs: { pname = "woodpecker-plugin-git"; - version = "2.9.2"; + version = "2.9.3"; src = fetchFromGitHub { owner = "woodpecker-ci"; repo = "plugin-git"; tag = finalAttrs.version; - hash = "sha256-vfHYEZpOAdf88Wqf6/PtbVsymKmQhBr0y2UOGmTGdjY="; + hash = "sha256-sXKR7DEcCVB6y2aHVB/57iacaijC4vLqV7/Mddrev48="; }; - vendorHash = "sha256-zCcYAWO0hn6iLxTxOsjn2bS0+sHuzpq3K24N9jd+qPY="; + vendorHash = "sha256-I3G3Skq7gltFEkL1gJDWTRlbKKnebW9zvoGGGKoQJuI="; env.CGO_ENABLED = "0"; diff --git a/pkgs/by-name/ze/zennotes-desktop/package.nix b/pkgs/by-name/ze/zennotes-desktop/package.nix index f587e96bd582..fd46071b07b4 100644 --- a/pkgs/by-name/ze/zennotes-desktop/package.nix +++ b/pkgs/by-name/ze/zennotes-desktop/package.nix @@ -13,14 +13,14 @@ buildNpmPackage (finalAttrs: { pname = "zennotes-desktop"; - version = "2.22.1"; - npmDepsHash = "sha256-JBZ1gWGyasfoSXkZp2cd0HPuqQ9XKh4sWOesAfGHp6I="; + version = "2.23.0"; + npmDepsHash = "sha256-qvfYrSzzIIuLQoWpDvXC4dt+OexEJNrz3nqjnycxo6I="; src = fetchFromGitHub { owner = "ZenNotes"; repo = "zennotes"; tag = "v${finalAttrs.version}"; - hash = "sha256-nSHl5O7xUbt/g18LV41Bgrcn6FwZXVHmZdaQXVVoDio="; + hash = "sha256-aGr1K6kSvpDELky0S/tH9cq6pbVivN4jTXrmbKE95vc="; }; npmWorkspace = "apps/desktop"; diff --git a/pkgs/by-name/zm/zmx/package.nix b/pkgs/by-name/zm/zmx/package.nix index 7648925b1527..e88f85917288 100644 --- a/pkgs/by-name/zm/zmx/package.nix +++ b/pkgs/by-name/zm/zmx/package.nix @@ -24,7 +24,7 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "zmx"; - version = "0.6.0"; + version = "0.7.0"; __structuredAttrs = true; strictDeps = true; @@ -32,13 +32,13 @@ stdenv.mkDerivation (finalAttrs: { owner = "neurosnap"; repo = "zmx"; tag = "v${finalAttrs.version}"; - hash = "sha256-OkXtVf/LdBrZL6FH9TGx+mIhUXt2eSugLxZyMd+HL6k="; + hash = "sha256-cWTeFRycSZFEbjCYIzKplNhV9SDM1kDl8CeQPOR3uyk="; }; zigDeps = zig.fetchDeps { inherit (finalAttrs) src pname version; fetchAll = true; - hash = "sha256-TwKoeaE4g5G7t7smKoqHkCCh998nSqKx5k6sO2vDlGs="; + hash = "sha256-w2jTusfDpW5Vk0lVhi2VNEGtir2n0NKQePsKSE2jpmc="; }; postConfigure = '' @@ -58,6 +58,10 @@ stdenv.mkDerivation (finalAttrs: { doCheck = true; + preCheck = '' + export ZMX_DIR="$TMPDIR/zmx-test" + ''; + postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' installShellCompletion --cmd ${finalAttrs.meta.mainProgram} \ --bash <($out/bin/zmx completions bash) \ diff --git a/pkgs/development/python-modules/afsapi/default.nix b/pkgs/development/python-modules/afsapi/default.nix index aba9b655633a..826b3608a16d 100644 --- a/pkgs/development/python-modules/afsapi/default.nix +++ b/pkgs/development/python-modules/afsapi/default.nix @@ -12,14 +12,14 @@ buildPythonPackage (finalAttrs: { pname = "afsapi"; - version = "1.0.1"; + version = "1.0.2"; pyproject = true; src = fetchFromGitHub { owner = "wlcrs"; repo = "python-afsapi"; tag = finalAttrs.version; - hash = "sha256-OMz8zJrU1qymvhD9mnf248687wpqfgUnXna7Cbr83No="; + hash = "sha256-ZfP8LboBDrxXULtocOTZJ0Ku/zgear4NW5ckcHUKXc4="; }; build-system = [ diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index 9b212fa9c108..8df9e0f9eb37 100644 --- a/pkgs/development/python-modules/boto3-stubs/default.nix +++ b/pkgs/development/python-modules/boto3-stubs/default.nix @@ -358,13 +358,13 @@ buildPythonPackage (finalAttrs: { pname = "boto3-stubs"; - version = "1.43.62"; + version = "1.43.64"; pyproject = true; src = fetchPypi { pname = "boto3_stubs"; inherit (finalAttrs) version; - hash = "sha256-pUG/DSBCStQnlAuJOP/zS+oo/A05mQa989GTNxAWRVo="; + hash = "sha256-coJym7MD6kvZ5WhSBJ8Sr1Y768p3wD/A6geIZCfMUDU="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/claude-agent-sdk/default.nix b/pkgs/development/python-modules/claude-agent-sdk/default.nix index b9aed7f1f68f..8bbc247598db 100644 --- a/pkgs/development/python-modules/claude-agent-sdk/default.nix +++ b/pkgs/development/python-modules/claude-agent-sdk/default.nix @@ -14,14 +14,14 @@ buildPythonPackage (finalAttrs: { pname = "claude-agent-sdk"; - version = "0.2.110"; + version = "0.2.130"; pyproject = true; src = fetchFromGitHub { owner = "anthropics"; repo = "claude-agent-sdk-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-tz26ueGAMFM7sD95FoAzhKHvNo7NV9fYZoKfJy/t8Lw="; + hash = "sha256-7hFgXoQ1OlKMrHWc2nhfqPuj1pDRw5OfIOgeGlc4CFw="; }; build-system = [ hatchling ]; @@ -48,6 +48,11 @@ buildPythonPackage (finalAttrs: { "test_query_with_async_iterable" ]; + disabledTestPaths = [ + # Tests require claude code with is non-free + "tests/test_close_cancellation.py" + ]; + meta = { description = "Python SDK for Claude Agent"; homepage = "https://github.com/anthropics/claude-agent-sdk-python"; diff --git a/pkgs/development/python-modules/debuglater/default.nix b/pkgs/development/python-modules/debuglater/default.nix index 31cc01f860ef..df29b0dc683f 100644 --- a/pkgs/development/python-modules/debuglater/default.nix +++ b/pkgs/development/python-modules/debuglater/default.nix @@ -7,21 +7,24 @@ numpy, pandas, pytestCheckHook, + setuptools, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "debuglater"; version = "1.4.4"; - format = "setuptools"; + pyproject = true; src = fetchFromGitHub { owner = "ploomber"; repo = "debuglater"; - tag = version; + tag = finalAttrs.version; hash = "sha256-o9IAk3EN8ghEft7Y7Xx+sEjWMNgoyiZ0eiBqnCyXkm8="; }; - propagatedBuildInputs = [ colorama ]; + build-system = [ setuptools ]; + + dependencies = [ colorama ]; optional-dependencies = { all = [ dill ]; @@ -32,15 +35,20 @@ buildPythonPackage rec { pandas pytestCheckHook ] - ++ optional-dependencies.all; + ++ lib.flatten (builtins.attrValues finalAttrs.passthru.optional-dependencies); pythonImportsCheck = [ "debuglater" ]; + disabledTests = [ + # Assertion error + "test_data_structures" + ]; + meta = { description = "Module for post-mortem debugging of Python programs"; homepage = "https://github.com/ploomber/debuglater"; - changelog = "https://github.com/ploomber/debuglater/blob/${version}/CHANGELOG.md"; + changelog = "https://github.com/ploomber/debuglater/blob/${finalAttrs.src.tag}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/emerge/default.nix b/pkgs/development/python-modules/emerge/default.nix index 810182d8afbb..c95d29caaee0 100644 --- a/pkgs/development/python-modules/emerge/default.nix +++ b/pkgs/development/python-modules/emerge/default.nix @@ -5,6 +5,7 @@ buildPythonPackage, fetchFromGitHub, writableTmpDirAsHomeHook, + nix-update-script, cudaPackages, @@ -37,6 +38,7 @@ callPackage, cudaSupport ? config.cudaSupport, + withMkl ? stdenv.hostPlatform.isx86_64 && config.allowUnfree, }: let @@ -61,7 +63,7 @@ in buildPythonPackage (finalAttrs: { pname = "emerge"; - version = "2.8.1"; + version = "2.8.2"; pyproject = true; __structuredAttrs = true; @@ -69,7 +71,7 @@ buildPythonPackage (finalAttrs: { owner = "FennisRobert"; repo = "EMerge"; tag = "v${finalAttrs.version}"; - hash = "sha256-TArhxtPAGEmPI4L+/pgy+RhV9atAZ5Ig0TkUDoV+eXQ="; + hash = "sha256-wxJeSiHfYTY7mRll8cxJSpdciun+uw5V7FLTUKuHu28="; }; postPatch = '' @@ -103,7 +105,7 @@ buildPythonPackage (finalAttrs: { ]; buildInputs = - lib.optionals stdenv.hostPlatform.isx86_64 [ + lib.optionals withMkl [ mkl ] ++ lib.optionals cudaSupport [ @@ -145,11 +147,16 @@ buildPythonPackage (finalAttrs: { ; tests = callPackage ./tests { }; + + updateScript = nix-update-script { + extraArgs = [ "--version-regex=^v(2\\.[0-9].*)$" ]; + }; }; meta = { description = "Electromagnetic field computation program"; homepage = "https://github.com/FennisRobert/EMerge"; + mainProgram = "emerge"; license = lib.licenses.gpl2Plus; maintainers = with lib.maintainers; [ eljamm ]; teams = with lib.teams; [ ngi ]; diff --git a/pkgs/development/python-modules/emsutil/default.nix b/pkgs/development/python-modules/emsutil/default.nix index c33ac5646c7b..b7d315d28144 100644 --- a/pkgs/development/python-modules/emsutil/default.nix +++ b/pkgs/development/python-modules/emsutil/default.nix @@ -2,6 +2,7 @@ lib, buildPythonPackage, fetchFromGitHub, + nix-update-script, # build-system hatchling, @@ -51,6 +52,11 @@ buildPythonPackage (finalAttrs: { "emsutil" ]; + # TODO: remove after new release (>0.8.3) + passthru.updateScript = nix-update-script { + extraArgs = [ "--version=branch" ]; + }; + meta = { description = "Utilities for the EMerge software suite"; homepage = "https://github.com/FennisRobert/emsutil"; diff --git a/pkgs/development/python-modules/gehomesdk/default.nix b/pkgs/development/python-modules/gehomesdk/default.nix index 93211b5ad7ea..6dcb3dcd6c82 100644 --- a/pkgs/development/python-modules/gehomesdk/default.nix +++ b/pkgs/development/python-modules/gehomesdk/default.nix @@ -15,12 +15,12 @@ buildPythonPackage (finalAttrs: { pname = "gehomesdk"; - version = "2026.7.2"; + version = "2026.8.0"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-dSx+fmQU8UJTVaBaNWyJh302CDb7LcyELSnL0B0sbjk="; + hash = "sha256-4WGkodI608LmlHpzYfPIrexZBNAsImmj2B55+WJgq2E="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix index 37baef3a4a08..f28fe712ab79 100644 --- a/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix +++ b/pkgs/development/python-modules/google-cloud-access-context-manager/default.nix @@ -9,13 +9,13 @@ buildPythonPackage (finalAttrs: { pname = "google-cloud-access-context-manager"; - version = "0.6.0"; + version = "0.6.1"; pyproject = true; src = fetchPypi { pname = "google_cloud_access_context_manager"; inherit (finalAttrs) version; - hash = "sha256-dgJn+6H4voY24qjXwwICfzECYP/4BRxGuLCbl9VGjuA="; + hash = "sha256-TZmOSoHEJPUfbFxqrLJ9eAYRbTC1VscIrAqJw3/lGtg="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/hakuin/default.nix b/pkgs/development/python-modules/hakuin/default.nix index ffe2bd5358d8..1f760768a110 100644 --- a/pkgs/development/python-modules/hakuin/default.nix +++ b/pkgs/development/python-modules/hakuin/default.nix @@ -6,23 +6,28 @@ hatchling, jinja2, nltk, + pyprojectVersionPatchHook, sqlglot, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "hakuin"; version = "0.2.2"; pyproject = true; + __structuredAttrs = true; + src = fetchFromGitHub { owner = "pruzko"; repo = "hakuin"; - tag = version; + tag = finalAttrs.version; hash = "sha256-97nh+woUsCXcoO2i5KprCwJiE24V3mg91qcNgy7bpgg="; }; build-system = [ hatchling ]; + nativeBuildInputs = [ pyprojectVersionPatchHook ]; + dependencies = [ aiohttp jinja2 @@ -40,5 +45,6 @@ buildPythonPackage rec { homepage = "https://github.com/pruzko/hakuin"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ fab ]; + mainProgram = "hk"; }; -} +}) diff --git a/pkgs/development/python-modules/keystoneauth1/default.nix b/pkgs/development/python-modules/keystoneauth1/default.nix index 9f81f82eada2..0e78d02fe9dc 100644 --- a/pkgs/development/python-modules/keystoneauth1/default.nix +++ b/pkgs/development/python-modules/keystoneauth1/default.nix @@ -69,11 +69,8 @@ buildPythonPackage rec { ] ++ lib.concatAttrValues optional-dependencies; - # test_keystoneauth_betamax_fixture is incompatible with urllib3 2.0.0 - # https://bugs.launchpad.net/keystoneauth/+bug/2020112 checkPhase = '' - stestr run \ - -E "keystoneauth1.tests.unit.test_betamax_fixture.TestBetamaxFixture.test_keystoneauth_betamax_fixture" + stestr run ''; pythonImportsCheck = [ "keystoneauth1" ]; diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix index 59fca361568d..80a80136f5d7 100644 --- a/pkgs/development/python-modules/mypy-boto3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3/default.nix @@ -335,8 +335,8 @@ in "sha256-3JYcWKFk0dKJg/qn+EBvxeAO5xh5PXCU3dTEWDr1oXI="; mypy-boto3-connect = - buildMypyBoto3Package "connect" "1.43.58" - "sha256-lDeveEiymjAvHh3JoGLQR1dP8h6n/4+UMIt6LVIYmPc="; + buildMypyBoto3Package "connect" "1.43.64" + "sha256-zWW/IqPu2ado8nc+ggaY+7/jko3HBfjcDPRUoM5p7z0="; mypy-boto3-connect-contact-lens = buildMypyBoto3Package "connect-contact-lens" "1.43.0" @@ -399,8 +399,8 @@ in "sha256-4VGCEZbno4w3H5+bc+2/f4ZkgefUDgWOOBkuGTVqvWk="; mypy-boto3-directconnect = - buildMypyBoto3Package "directconnect" "1.43.35" - "sha256-EaazNjN3MOBQLjSaLi01grlO9evVVu0ST5ZOf1dAk9M="; + buildMypyBoto3Package "directconnect" "1.43.63" + "sha256-ncNugcKv/gD//CzbxTeDJK5wuXeaVhIET0xr9aA2NIA="; mypy-boto3-discovery = buildMypyBoto3Package "discovery" "1.43.0" @@ -431,8 +431,8 @@ in "sha256-LE8moRJrwRp3T4UGkj+vdRyq9Qw7t/UxcQm1Dw3/Dfs="; mypy-boto3-dynamodb = - buildMypyBoto3Package "dynamodb" "1.43.0" - "sha256-8M6jjgWPHQc2HstV2PQGZdgktCz0hkckx/zMi/OUb80="; + buildMypyBoto3Package "dynamodb" "1.43.64" + "sha256-hZfd19X5LPAOeqCHWZPlzwmYjwF+70G5TUfAjnZ1tdA="; mypy-boto3-dynamodbstreams = buildMypyBoto3Package "dynamodbstreams" "1.43.0" @@ -443,8 +443,8 @@ in "sha256-dXNkOcMonYrBh4yzeubd+v3mW42s9XpmpfvgbtgoJgY="; mypy-boto3-ec2 = - buildMypyBoto3Package "ec2" "1.43.59" - "sha256-cAk90nXgbA1YkS9DQr+oM/zJH1+1p5V5g/nlG+Fo3i0="; + buildMypyBoto3Package "ec2" "1.43.64" + "sha256-4gEYjeyfYdWjolPQvClPEZlUxIfUTZcU3nsq8kLDHOU="; mypy-boto3-ec2-instance-connect = buildMypyBoto3Package "ec2-instance-connect" "1.43.0" @@ -602,8 +602,8 @@ in "sha256-oPQuxAKSUTpHGyq1J80W57cISh+d+4IGN8ClJdhkfnw="; mypy-boto3-iam = - buildMypyBoto3Package "iam" "1.43.60" - "sha256-Sh82poyz+WLAAPIFYgQ0bRwZYWoSJ5l8VweyY55zTYM="; + buildMypyBoto3Package "iam" "1.43.64" + "sha256-EUU75nZ9iJzC7j7SFCNjPBYXN6MUac7hZw9ekzkt3zk="; mypy-boto3-identitystore = buildMypyBoto3Package "identitystore" "1.43.0" @@ -622,8 +622,8 @@ in "sha256-9P8m5QYikdsimepaivrYcb/tP1iThyPZWFMkyo24+bo="; mypy-boto3-inspector2 = - buildMypyBoto3Package "inspector2" "1.43.53" - "sha256-eY0CZnh9rwCj3gnNUsN9x65urg8641Yd6QsowbxJipk="; + buildMypyBoto3Package "inspector2" "1.43.64" + "sha256-7xAA1OyNETjna5Yehnnzd8u3OJF8P3lMsBFE0/0tx/4="; mypy-boto3-internetmonitor = buildMypyBoto3Package "internetmonitor" "1.43.0" @@ -858,8 +858,8 @@ in "sha256-ZlvcxMsMtkPwzyBpxGWffcD2g73aNIU6WG7jYn66ZjU="; mypy-boto3-mediaconvert = - buildMypyBoto3Package "mediaconvert" "1.43.39" - "sha256-3s5d1ZZ+XoVjYP3uZ2zuaAjH76fbj0j0a5v2H3Ji8vA="; + buildMypyBoto3Package "mediaconvert" "1.43.63" + "sha256-qvQo6w4QfSTVfmJhu7tZFGV6///8pJwEijs3oLT/nTg="; mypy-boto3-medialive = buildMypyBoto3Package "medialive" "1.43.27" @@ -946,8 +946,8 @@ in "sha256-rkVxsY4MQ+eB3uQhD3kI7bBpCHiDVcQDNUXA5zUyeok="; mypy-boto3-network-firewall = - buildMypyBoto3Package "network-firewall" "1.43.62" - "sha256-byxKwV6TDM/mo/my8h9aVDzbYMywCVSU/RfyNv9sW6Q="; + buildMypyBoto3Package "network-firewall" "1.43.63" + "sha256-tb67mpqB0urStehtFhyqMiZGCzjokt7GoLSMINH8U00="; mypy-boto3-networkmanager = buildMypyBoto3Package "networkmanager" "1.43.0" @@ -982,8 +982,8 @@ in "sha256-JEuEjo0htTuDCZx2nNJK2Zq59oSUqkMf4BrNamerfVk="; mypy-boto3-organizations = - buildMypyBoto3Package "organizations" "1.43.52" - "sha256-Z3hs0TLev/W3O9GI7k9oo3gSR9lRkn/dlo46ILyMDWo="; + buildMypyBoto3Package "organizations" "1.43.64" + "sha256-kyUieR7tYYUGbEOi6ftCEDD07+QfcyJ2cOWqrk2FVAs="; mypy-boto3-osis = buildMypyBoto3Package "osis" "1.43.0" @@ -1310,8 +1310,8 @@ in "sha256-V1og1LY/ORrXbfFVs4vF8LYe30/kvG71F3rWwXmNSJ4="; mypy-boto3-sso-admin = - buildMypyBoto3Package "sso-admin" "1.43.38" - "sha256-XItUg7rif3WcSEFp5+7vLqibBz9j43OpmA+whTlu/iM="; + buildMypyBoto3Package "sso-admin" "1.43.64" + "sha256-wesA1gX4AOwwJs5LKmr6O+MZV8mJFpGh/Gh1wluUvgk="; mypy-boto3-sso-oidc = buildMypyBoto3Package "sso-oidc" "1.43.0" @@ -1394,8 +1394,8 @@ in "sha256-zwxwpve6uEpXNyMQzaFPIEqDI/JoP5ks2wmO5gqLf7c="; mypy-boto3-wafv2 = - buildMypyBoto3Package "wafv2" "1.43.59" - "sha256-QxQd/4lPo4kDjmeTrXrF+Eon+EYKG5kRZ1bAIsu2K6s="; + buildMypyBoto3Package "wafv2" "1.43.63" + "sha256-8hUgFNVUOcsjOyECvMlw0S0uG6A8XTv2EBWi06Cj2QY="; mypy-boto3-wellarchitected = buildMypyBoto3Package "wellarchitected" "1.43.0" @@ -1422,8 +1422,8 @@ in "sha256-2glzIKBlui8YPvzI74bT4ADqEZ0lH9CuZqHtwz64Z3k="; mypy-boto3-workspaces = - buildMypyBoto3Package "workspaces" "1.43.30" - "sha256-1OsfLVGw+V5J8nV343HEp8JOHpk81UawKRmAoE/eBNc="; + buildMypyBoto3Package "workspaces" "1.43.64" + "sha256-zfdA0TU8uzHfqWOt1o16Y6ANoN9PPtth8J9/DARMc+A="; mypy-boto3-workspaces-web = buildMypyBoto3Package "workspaces-web" "1.43.0" diff --git a/pkgs/development/python-modules/oslo-db/default.nix b/pkgs/development/python-modules/oslo-db/default.nix index 3f6f9053f759..279b5f511dd6 100644 --- a/pkgs/development/python-modules/oslo-db/default.nix +++ b/pkgs/development/python-modules/oslo-db/default.nix @@ -59,7 +59,7 @@ buildPythonPackage rec { checkPhase = '' runHook preCheck - stestr run -e <(echo "oslo_db.tests.sqlalchemy.test_utils.TestModelQuery.test_project_filter_allow_none") + stestr run runHook postCheck ''; diff --git a/pkgs/development/python-modules/oslo-i18n/default.nix b/pkgs/development/python-modules/oslo-i18n/default.nix index c93201cd9e3a..4f65f6174cdc 100644 --- a/pkgs/development/python-modules/oslo-i18n/default.nix +++ b/pkgs/development/python-modules/oslo-i18n/default.nix @@ -40,10 +40,7 @@ buildPythonPackage rec { checkPhase = '' runHook preCheck - stestr run -e <(echo " - # list is not deduped - oslo_i18n.tests.test_gettextutils.GettextTest.test_get_available_languages - ") + stestr run runHook postCheck ''; diff --git a/pkgs/development/python-modules/osprofiler/default.nix b/pkgs/development/python-modules/osprofiler/default.nix index f4eb83ef4c3c..8e480eabcc73 100644 --- a/pkgs/development/python-modules/osprofiler/default.nix +++ b/pkgs/development/python-modules/osprofiler/default.nix @@ -1,26 +1,34 @@ { lib, buildPythonPackage, + ddt, + docutils, + elasticsearch, fetchPypi, netaddr, + opentelemetry-exporter-otlp, + opentelemetry-sdk, oslo-concurrency, oslo-config, oslo-serialization, oslo-utils, prettytable, + pymongo, + redis, requests, setuptools, + stestrCheckHook, webob, }: buildPythonPackage rec { pname = "osprofiler"; - version = "4.3.0"; + version = "4.4.0"; pyproject = true; src = fetchPypi { inherit pname version; - hash = "sha256-d6jaKyO7X5BIBUvVzMRdCshFdMqKiO8SC4+sbohk4kw="; + hash = "sha256-bgjffu9q/A0tAngT1A5DyyKPDrPrNEHWFJXCgA6/oyA="; }; build-system = [ setuptools ]; @@ -36,11 +44,16 @@ buildPythonPackage rec { webob ]; - # NOTE(vinetos): OSProfiler depends on jeager-client which use opentracing - # Opentracing and jeager-client are archived since 2022. - # As this package is made only to support old OpenStack clients and bindings, - # We do not really care - doCheck = false; + nativeCheckInputs = [ + ddt + docutils + elasticsearch + opentelemetry-exporter-otlp + opentelemetry-sdk + pymongo + redis + stestrCheckHook + ]; pythonImportsCheck = [ "osprofiler" ]; diff --git a/pkgs/development/python-modules/padne/default.nix b/pkgs/development/python-modules/padne/default.nix new file mode 100644 index 000000000000..f2751a1e36ad --- /dev/null +++ b/pkgs/development/python-modules/padne/default.nix @@ -0,0 +1,156 @@ +{ + lib, + stdenv, + buildPythonPackage, + fetchFromGitHub, + + kicad, + + # build-time + cmake, + ninja, + pkg-config, + python, + + # run-time + boost, + gmp, + mpfr, + + # build-system + nanobind, + scikit-build-core, + setuptools, + setuptools-scm, + wheel, + + # dependencies + lxml, + numpy, + pygerber, + pyopengl, + pyside6, + scipy, + sexpdata, + shapely, + + # tests + pytestCheckHook, + typeguard, +}: + +buildPythonPackage (finalAttrs: { + pname = "padne"; + version = "0.3"; + pyproject = true; + dontUseCmakeConfigure = true; # handled by python + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "atx"; + repo = "padne"; + tag = "v${finalAttrs.version}"; + hash = "sha256-eFrBjmLZQnfMG7nl9gHPb0Qr8MCAdhjzRIp5n1IzguM="; + fetchSubmodules = true; + }; + + postPatch = '' + # `padne` tries to import `pcbnew` directly from `KiCad`, falling back to + # `kigadgets` if that fails. + # However, `kigadgets` only supports KiCad v5-v9, whereas Nixpkgs is on + # v10, so drop it as a dependency to avoid a broken fallback. + sed -i '/kigadgets/d' pyproject.toml + ''; + + nativeBuildInputs = [ + cmake + ninja + pkg-config + ]; + + buildInputs = [ + boost + gmp + mpfr + nanobind + ]; + + cmakeFlags = [ + (lib.cmakeFeature "nanobind_DIR" "${nanobind}/${python.sitePackages}/nanobind/cmake") + ]; + + build-system = [ + nanobind + scikit-build-core + setuptools + setuptools-scm + wheel + ]; + + dependencies = [ + kicad + lxml + numpy + finalAttrs.passthru.pygerber + pyopengl + pyside6 + scipy + sexpdata + shapely + ]; + + pythonImportsCheck = [ + "padne" + ]; + + nativeCheckInputs = [ + pytestCheckHook + typeguard + ]; + + preCheck = '' + # remove src module, so tests use the installed module, instead + mv padne _padne + ''; + + disabledTests = lib.optionals stdenv.hostPlatform.isAarch64 [ + # AssertionError: Center distance 4.8999999999999995 not ~5.0 + "test_basic_rectangle_distance_map" + ]; + + passthru = { + # Padne needs a more recent version of `pygerber` than the one in Nixpkgs, + # which is currently the 2.4.3 stable release. + pygerber = pygerber.overrideAttrs { + version = "2.4.3-unstable-2026-03-20"; + src = fetchFromGitHub { + owner = "Argmaster"; + repo = "pygerber"; + rev = "5446d44d424897e1b1a68c48c160ed9b4e828f44"; + hash = "sha256-AhLIBh1dAmmOLBw6XaJIeYhUAh1BSv/ALVc4qOfD7g4="; + }; + # TODO: + # 46 failed, 592 passed, 1 xfailed, 61 warnings, 96 errors in 16.52s + dontUsePytestCheck = true; + }; + }; + + meta = { + description = "KiCad-focused Power Delivery Network Simulator"; + longDescription = '' + Padne is a KiCad-native power delivery network analysis tool. + + It uses the finite element method in order to simulate the voltage drop + induced by DC currents on printed circuit boards. + + This allows easy identification of resistive bottlenecks, design of high + current distribution networks or implementing complex heating elements. + ''; + homepage = "https://github.com/atx/padne"; + changelog = "https://github.com/atx/padne/releases/tag/${finalAttrs.src.tag}"; + mainProgram = "padne"; + license = with lib.licenses; [ gpl3Plus ]; + maintainers = with lib.maintainers; [ eljamm ]; + teams = with lib.teams; [ ngi ]; + }; +}) diff --git a/pkgs/development/python-modules/python-cinderclient/default.nix b/pkgs/development/python-modules/python-cinderclient/default.nix index 7f7ea4edc134..6b3c99c167a8 100644 --- a/pkgs/development/python-modules/python-cinderclient/default.nix +++ b/pkgs/development/python-modules/python-cinderclient/default.nix @@ -62,19 +62,7 @@ buildPythonPackage rec { checkPhase = '' runHook preCheck - # File "/build/python-cinderclient-9.6.0/cinderclient/client.py", line 196, in request - # if raise_exc and resp.status_code >= 400: - # ^^^^^^^^^^^^^^^^^^^^^^^ - # - # TypeError: '>=' not supported between instances of 'Mock' and 'int' - stestr run -e <(echo " - cinderclient.tests.unit.test_client.ClientTest.test_keystone_request_raises_auth_failure_exception - cinderclient.tests.unit.test_client.ClientTest.test_sessionclient_request_method - cinderclient.tests.unit.test_client.ClientTest.test_sessionclient_request_method_raises_badrequest - cinderclient.tests.unit.test_client.ClientTest.test_sessionclient_request_method_raises_overlimit - cinderclient.tests.unit.test_shell.ShellTest.test_password_prompted - cinderclient.tests.unit.test_shell.TestLoadVersionedActions.test_load_versioned_actions_with_help - ") + stestr run runHook postCheck ''; diff --git a/pkgs/development/python-modules/python-glanceclient/default.nix b/pkgs/development/python-modules/python-glanceclient/default.nix index a6035fd9b3ee..1090b0dabd55 100644 --- a/pkgs/development/python-modules/python-glanceclient/default.nix +++ b/pkgs/development/python-modules/python-glanceclient/default.nix @@ -26,23 +26,10 @@ let disabledTests = [ # Skip tests which require networking. - "test_http_chunked_response" - "test_v1_download_has_no_stray_output_to_stdout" - "test_v2_requests_valid_cert_verification" - "test_download_has_no_stray_output_to_stdout" - "test_v1_requests_cert_verification_no_compression" - "test_v1_requests_cert_verification" - "test_v2_download_has_no_stray_output_to_stdout" - "test_v2_requests_bad_ca" - "test_v2_requests_bad_cert" - "test_v2_requests_cert_verification_no_compression" - "test_v2_requests_cert_verification" - "test_v2_requests_valid_cert_no_key" - "test_v2_requests_valid_cert_verification_no_compression" - "test_log_request_id_once" - # asserts exact amount of mock calls - "test_cache_schemas_gets_when_forced" - "test_cache_schemas_gets_when_not_exists" + "glanceclient.tests.unit.test_http.TestClient.test_http_chunked_response" + "glanceclient.tests.unit.test_http.TestClient.test_log_request_id_once" + "glanceclient.tests.unit.test_http.TestClient.test_log_request_id_once" + ''glanceclient\.tests\.unit\.test_ssl\.TestHTTPSVerifyCert\..*'' ]; in buildPythonPackage { diff --git a/pkgs/development/python-modules/python-ironicclient/default.nix b/pkgs/development/python-modules/python-ironicclient/default.nix index f9f7219795b5..cf6e4579b01f 100644 --- a/pkgs/development/python-modules/python-ironicclient/default.nix +++ b/pkgs/development/python-modules/python-ironicclient/default.nix @@ -69,16 +69,7 @@ buildPythonPackage rec { checkPhase = '' runHook preCheck - stestr run -e <(echo " - ironicclient.tests.unit.osc.v1.test_baremetal_chassis.TestChassisCreate.test_chassis_create_no_options - ironicclient.tests.unit.osc.v1.test_baremetal_chassis.TestChassisCreate.test_chassis_create_with_description - ironicclient.tests.unit.osc.v1.test_baremetal_chassis.TestChassisCreate.test_chassis_create_with_extra - ironicclient.tests.unit.osc.v1.test_baremetal_chassis.TestChassisCreate.test_chassis_create_with_uuid - ironicclient.tests.unit.osc.v1.test_baremetal_conductor.TestBaremetalConductorShow.test_conductor_show - ironicclient.tests.unit.osc.v1.test_baremetal_node.TestBaremetalCreate - ironicclient.tests.unit.osc.v1.test_baremetal_node.TestBaremetalShow.test_baremetal_show - ironicclient.tests.unit.osc.v1.test_baremetal_node.TestNodeHistoryEventGet.test_baremetal_node_history_list - ") + stestr run runHook postCheck ''; diff --git a/pkgs/development/python-modules/python-jenkins/default.nix b/pkgs/development/python-modules/python-jenkins/default.nix index 85ee49cea231..6c0edc0c21d9 100644 --- a/pkgs/development/python-modules/python-jenkins/default.nix +++ b/pkgs/development/python-modules/python-jenkins/default.nix @@ -55,10 +55,7 @@ buildPythonPackage rec { multiprocess ]; checkPhase = '' - # Skip tests that fail due to setuptools>=66.0.0 rejecting PEP 440 - # non-conforming versions. See - # https://github.com/pypa/setuptools/issues/2497 for details. - stestr run -E "tests.test_plugins.(PluginsTestScenarios.test_plugin_version_comparison|PluginsTestScenarios.test_plugin_version_object_comparison|PluginsTest.test_plugin_equal|PluginsTest.test_plugin_not_equal)" + stestr run ''; meta = { diff --git a/pkgs/development/python-modules/python-mistralclient/default.nix b/pkgs/development/python-modules/python-mistralclient/default.nix index 51ea1a97ce52..4ec57797a9bf 100644 --- a/pkgs/development/python-modules/python-mistralclient/default.nix +++ b/pkgs/development/python-modules/python-mistralclient/default.nix @@ -3,6 +3,7 @@ buildPythonPackage, cliff, fetchFromGitHub, + fetchpatch, keystoneauth1, openstackdocstheme, openstacksdk, @@ -36,6 +37,14 @@ buildPythonPackage rec { hash = "sha256-FNfee7d8gTcsTdv7lxqDbniUiKQvUXHRSkAlNOCn/k4="; }; + patches = [ + # Fix unit test failure caused by osprofiler 4.4.0 + (fetchpatch { + url = "https://github.com/openstack/python-mistralclient/commit/4cee2bb25a4d15e7dd1802f3e7e75520177446db.patch"; + hash = "sha256-H8JSvPFcHZJsnIWpV0WPvkqyvmg8SBbpsUzqcZeFBwA="; + }) + ]; + env.PBR_VERSION = version; nativeBuildInputs = [ @@ -83,7 +92,7 @@ buildPythonPackage rec { meta = { description = "OpenStack Mistral Command-line Client"; - homepage = "https://opendev.org/openstack/python-mistralclient/"; + homepage = "https://github.com/openstack/python-mistralclient"; license = lib.licenses.asl20; mainProgram = "mistral"; teams = [ lib.teams.openstack ]; diff --git a/pkgs/development/python-modules/rioxarray/default.nix b/pkgs/development/python-modules/rioxarray/default.nix index 9d6b609b8cba..15b5db9d5900 100644 --- a/pkgs/development/python-modules/rioxarray/default.nix +++ b/pkgs/development/python-modules/rioxarray/default.nix @@ -22,14 +22,14 @@ buildPythonPackage (finalAttrs: { pname = "rioxarray"; - version = "0.22.0"; + version = "0.23.0"; pyproject = true; src = fetchFromGitHub { owner = "corteva"; repo = "rioxarray"; tag = finalAttrs.version; - hash = "sha256-+0TJeEjAKIqi6cbLZiv14dPKW8Xza+4tn/Erzn88ZS0="; + hash = "sha256-3zRfoCHINLZt88tIu9wSOyZGzQEryxMSWhfEBcviKSQ="; }; build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/streamlit-folium/default.nix b/pkgs/development/python-modules/streamlit-folium/default.nix index b1e2f97e26e1..2faff3e74b20 100644 --- a/pkgs/development/python-modules/streamlit-folium/default.nix +++ b/pkgs/development/python-modules/streamlit-folium/default.nix @@ -15,14 +15,14 @@ buildPythonPackage (finalAttrs: { pname = "streamlit-folium"; - version = "0.27.3"; + version = "0.27.4"; pyproject = true; src = fetchFromGitHub { owner = "randyzwitch"; repo = "streamlit-folium"; tag = "v${finalAttrs.version}"; - hash = "sha256-nxUK8o9OqdD0/tktSncTgxk3q4nAhmmR8A7isZsxsFI="; + hash = "sha256-DpkAwbSi8nQ2E9ItxCq89ubPGn5u8/caYj0GaGuTnR4="; }; postPatch = '' diff --git a/pkgs/development/python-modules/tiered-debug/default.nix b/pkgs/development/python-modules/tiered-debug/default.nix index 8a43026f5fcd..75937691c058 100644 --- a/pkgs/development/python-modules/tiered-debug/default.nix +++ b/pkgs/development/python-modules/tiered-debug/default.nix @@ -7,16 +7,16 @@ pytest-cov-stub, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "tiered-debug"; - version = "1.4.0"; + version = "1.5.1"; pyproject = true; src = fetchFromGitHub { owner = "untergeek"; repo = "tiered-debug"; - tag = "v${version}"; - hash = "sha256-lGt2cnT5Pjb87msgnDawn2gg2VtWXwniHM1wTjHU/x4="; + tag = "v${finalAttrs.version}"; + hash = "sha256-PIqRReT+m5nlq9koD88XJMeUvUsRwrXCqZDTylZGgPg="; }; build-system = [ hatchling ]; @@ -37,8 +37,8 @@ buildPythonPackage rec { meta = { description = "Python logging helper module that allows for multiple tiers of debug logging"; homepage = "https://github.com/untergeek/tiered-debug"; - changelog = "https://github.com/untergeek/tiered-debug/releases/tag/${src.tag}"; + changelog = "https://github.com/untergeek/tiered-debug/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/tree-sitter-typescript/default.nix b/pkgs/development/python-modules/tree-sitter-typescript/default.nix new file mode 100644 index 000000000000..45ecab1ef036 --- /dev/null +++ b/pkgs/development/python-modules/tree-sitter-typescript/default.nix @@ -0,0 +1,41 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools, + tree-sitter, +}: + +buildPythonPackage (finalAttrs: { + pname = "tree-sitter-typescript"; + version = "0.23.2"; + pyproject = true; + + src = fetchFromGitHub { + owner = "tree-sitter"; + repo = "tree-sitter-typescript"; + tag = "v${finalAttrs.version}"; + hash = "sha256-CU55+YoFJb6zWbJnbd38B7iEGkhukSVpBN7sli6GkGY="; + }; + + build-system = [ setuptools ]; + + optional-dependencies = { + core = [ + tree-sitter + ]; + }; + + # There are no tests + doCheck = false; + + pythonImportsCheck = [ "tree_sitter_typescript" ]; + + meta = { + description = "TypeScript grammar for tree-sitter"; + homepage = "https://github.com/tree-sitter/tree-sitter-typescript"; + changelog = "https://github.com/tree-sitter/tree-sitter-typescript/releases/tag/v${finalAttrs.src.tag}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ fab ]; + }; +}) diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 017ac7b28d25..1c55f3f9197a 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12793,6 +12793,8 @@ self: super: with self; { paddlex = callPackage ../development/python-modules/paddlex { }; + padne = callPackage ../development/python-modules/padne { }; + pagelabels = callPackage ../development/python-modules/pagelabels { }; paginate = callPackage ../development/python-modules/paginate { }; @@ -20760,6 +20762,8 @@ self: super: with self; { tree-sitter-sql = callPackage ../development/python-modules/tree-sitter-sql { }; + tree-sitter-typescript = callPackage ../development/python-modules/tree-sitter-typescript { }; + tree-sitter-yaml = callPackage ../development/python-modules/tree-sitter-yaml { }; tree-sitter-zeek = callPackage ../development/python-modules/tree-sitter-zeek { };