diff --git a/ci/OWNERS b/ci/OWNERS index 8f741686635f..695c91aa1af0 100644 --- a/ci/OWNERS +++ b/ci/OWNERS @@ -58,8 +58,10 @@ /pkgs/top-level/by-name-overlay.nix @infinisil @philiptaron /pkgs/stdenv @philiptaron @NixOS/stdenv /pkgs/stdenv/generic @Ericson2314 @NixOS/stdenv -/pkgs/stdenv/generic/check-meta.nix @Ericson2314 @adisbladis @NixOS/stdenv -/pkgs/stdenv/generic/meta-types.nix @adisbladis @NixOS/stdenv +/pkgs/stdenv/generic/problems.nix @infinisil +/pkgs/test/problems @infinisil +/pkgs/stdenv/generic/check-meta.nix @infinisil @Ericson2314 @adisbladis @NixOS/stdenv +/pkgs/stdenv/generic/meta-types.nix @infinisil @adisbladis @NixOS/stdenv /pkgs/stdenv/cross @Ericson2314 @NixOS/stdenv /pkgs/build-support @philiptaron /pkgs/build-support/cc-wrapper @Ericson2314 diff --git a/doc/redirects.json b/doc/redirects.json index ad19777f2dd2..f5dbb8bb65f8 100644 --- a/doc/redirects.json +++ b/doc/redirects.json @@ -629,6 +629,9 @@ "chap-stdenv": [ "index.html#chap-stdenv" ], + "sec-problems": [ + "index.html#sec-problems" + ], "sec-using-llvm": [ "index.html#sec-using-llvm" ], diff --git a/doc/using/configuration.chapter.md b/doc/using/configuration.chapter.md index ac67d7a61459..e47e35fc1aa4 100644 --- a/doc/using/configuration.chapter.md +++ b/doc/using/configuration.chapter.md @@ -11,6 +11,8 @@ By default, Nix will prevent installation if any of the following criteria are t - The package has known security vulnerabilities but has not or can not be updated for some reason, and a list of issues has been entered into the package's `meta.knownVulnerabilities`. +- There are problems for packages which must be acknowledged, e.g. deprecation notices. + Each of these criteria can be altered in the Nixpkgs configuration. :::{.note} @@ -166,6 +168,57 @@ There are several ways to tweak how Nix handles a package which has been marked Note that `permittedInsecurePackages` is only checked if `allowInsecurePredicate` is not specified. +## Packages with problems {#sec-problems} + +A package may have several problems associated with it. +These can be either manually declared in `meta.problems`, or automatically generated from its other `meta` attributes. +Each problem has a name, a "kind", a message, and optionally a list of URLs. +Not all kinds can be manually specified in `meta.problems`, and some kinds can exist only up to once per package. +Currently, the following problem kinds are known (with more reserved to be added in the future): + +- "removal": The package is planned to be removed some time in the future. Unique. +- "deprecated": The package relies on software which has reached its end of life. +- "maintainerless": Automatically generated for packages with `meta.maintainers == []`. Unique, not manually specifiable. + +Each problem has a handler that deals with it, which can be one of "error", "warn" or "ignore". +"error" will disallow evaluating a package, while "warn" will simply print a message to the log. + +The handler for problems can be specified using `config.problems.handlers.${packageName}.${problemName} = "${handler}";`. + +There is also the possibility to specify some generic matchers, which can set a handler for more than a specific problem of a specific package. +This works through the `config.problems.matchers` option: + +```nix +{ + problems.matchers = [ + # Fail to build any packages which are about to be removed anyway + { + kind = "removal"; + handler = "error"; + } + + # Get warnings when using packages with no declared maintainers + { + kind = "maintainerless"; + handler = "warn"; + } + + # You deeply care about this package and want to absolutely know when it has any problems + { + package = "hello"; + handler = "error"; + } + ]; +} +``` + +Matchers can match one or more of package name, problem name or problem kind. +If multiple conditions are present, all must be met to match. +If multiple matchers match a problem, then the highest severity handler will be chosen. +The current default value contains `{ kind = "removal"; handler = "warn"; }`, meaning that people will be notified about package removals in advance. + +Package names for both `problems.handlers` and `problems.matchers` are taken from `lib.getName`, which looks at the `pname` first and falls back to extracting the "pname" part from the `name` attribute. + ## Modify packages via `packageOverrides` {#sec-modify-via-packageOverrides} You can define a function called `packageOverrides` in your local `~/.config/nixpkgs/config.nix` to override Nix packages. It must be a function that takes pkgs as an argument and returns a modified set of packages. diff --git a/nixos/modules/misc/documentation.nix b/nixos/modules/misc/documentation.nix index 462575f17e81..516bf903187b 100644 --- a/nixos/modules/misc/documentation.nix +++ b/nixos/modules/misc/documentation.nix @@ -282,8 +282,11 @@ in default = false; description = '' Whether to generate the manual page index caches at runtime using - a systemd service. Note that this is currently only supported by the - man-db module. + a systemd service. + + ::: {.note} + This is currently only supported by the man-db module. + ::: ''; }; diff --git a/nixos/modules/programs/nm-applet.nix b/nixos/modules/programs/nm-applet.nix index 285e0a896280..7aecbadd2ebf 100644 --- a/nixos/modules/programs/nm-applet.nix +++ b/nixos/modules/programs/nm-applet.nix @@ -5,6 +5,9 @@ ... }: +let + cfg = config.programs.nm-applet; +in { meta = { maintainers = lib.teams.freedesktop.members; @@ -21,15 +24,19 @@ It is needed for Appindicator environments, like Enlightenment. ''; }; + + package = lib.mkPackageOption pkgs "networkmanagerapplet" { }; }; - config = lib.mkIf config.programs.nm-applet.enable { + config = lib.mkIf cfg.enable { + environment.systemPackages = [ cfg.package ]; + systemd.user.services.nm-applet = { description = "Network manager applet"; wantedBy = [ "graphical-session.target" ]; partOf = [ "graphical-session.target" ]; after = [ "graphical-session.target" ]; - serviceConfig.ExecStart = "${pkgs.networkmanagerapplet}/bin/nm-applet ${lib.optionalString config.programs.nm-applet.indicator "--indicator"}"; + serviceConfig.ExecStart = "${cfg.package}/bin/nm-applet ${lib.optionalString cfg.indicator "--indicator"}"; }; services.dbus.packages = [ pkgs.gcr ]; diff --git a/nixos/tests/lomiri.nix b/nixos/tests/lomiri.nix index 45b4b59c3103..b548288c62c6 100644 --- a/nixos/tests/lomiri.nix +++ b/nixos/tests/lomiri.nix @@ -9,7 +9,18 @@ let # In case it ever shows up in the VM, we could OCR for it instead wallpaperText = "Lorem ipsum"; - # tmpfiles setup to make OCRing on terminal output more reliable + # setup to make OCRing on terminal output more reliable + terminalTextColour = { + r = 91; + g = 113; + b = 102; + }; + terminalTextColourString = + lib: + let + toHex = component: lib.optionalString (component < 16) "0" + lib.trivial.toHexString component; + in + "#${toHex terminalTextColour.r}${toHex terminalTextColour.g}${toHex terminalTextColour.b}"; terminalOcrTmpfilesSetup = { pkgs, @@ -18,7 +29,7 @@ let }: let white = "255, 255, 255"; - black = "0, 0, 0"; + foreground = "${toString terminalTextColour.r}, ${toString terminalTextColour.g}, ${toString terminalTextColour.b}"; colorSection = color: { Color = color; Bold = true; @@ -27,9 +38,9 @@ let terminalColors = pkgs.writeText "customized.colorscheme" ( lib.generators.toINI { } { Background = colorSection white; - Foreground = colorSection black; - Color2 = colorSection black; - Color2Intense = colorSection black; + Foreground = colorSection foreground; + Color2 = colorSection foreground; + Color2Intense = colorSection foreground; } ); terminalConfig = pkgs.writeText "terminal.ubports.conf" ( @@ -75,7 +86,7 @@ let }; }; - sharedTestFunctions = '' + sharedTestFunctions = lib: '' from collections.abc import Callable import tempfile import subprocess @@ -120,6 +131,17 @@ let ) return check_for_color_continued_presence_retry + def ensure_terminal_running() -> None: + """ + Ensure that lomiri-terminal-app has finished starting up. + """ + + terminalTextColor: str = "${terminalTextColourString lib}" + with machine.nested("Waiting for the screen to have terminalTextColor {} on it:".format(terminalTextColor)): + retry(check_for_color(terminalTextColor)) + with machine.nested("Ensuring terminalTextColor {} stays present on the screen:".format(terminalTextColor)): + retry(fn=check_for_color_continued_presence(terminalTextColor), timeout_seconds=5) + def ensure_lomiri_running() -> None: """ Ensure that Lomiri has finished starting up. @@ -183,7 +205,6 @@ let # Using the keybind has a chance of instantly closing the menu again? Just click the button mouse_click(15, 15) - ''; makeIndicatorTest = @@ -237,7 +258,7 @@ let testScript = { nodes, ... }: - sharedTestFunctions + (sharedTestFunctions lib) + '' start_all() machine.wait_for_unit("multi-user.target") @@ -330,7 +351,7 @@ in testScript = { nodes, ... }: - sharedTestFunctions + (sharedTestFunctions lib) + '' start_all() machine.wait_for_unit("multi-user.target") @@ -451,7 +472,7 @@ in testScript = { nodes, ... }: - sharedTestFunctions + (sharedTestFunctions lib) + '' start_all() machine.wait_for_unit("multi-user.target") @@ -463,7 +484,7 @@ in # Working terminal keybind is good with subtest("terminal keybind works"): machine.send_key("ctrl-alt-t") - wait_for_text(r"(${user}|machine)") + ensure_terminal_running() machine.screenshot("terminal_opens") machine.send_key("alt-f4") @@ -474,7 +495,7 @@ in # Just try the terminal again, we know that it should work machine.send_chars("Terminal\n") - wait_for_text(r"(${user}|machine)") + ensure_terminal_running() machine.send_key("alt-f4") # We want support for X11 apps @@ -598,7 +619,7 @@ in testScript = { nodes, ... }: - sharedTestFunctions + (sharedTestFunctions lib) + '' start_all() machine.wait_for_unit("multi-user.target") @@ -610,7 +631,7 @@ in # Working terminal keybind is good with subtest("terminal keybind works"): machine.send_key("ctrl-alt-t") - wait_for_text(r"(${user}|machine)") + ensure_terminal_running() machine.screenshot("terminal_opens") # for the LSS lomiri-content-hub test to work reliably, we need to kick off peer collecting @@ -744,7 +765,7 @@ in testScript = { nodes, ... }: - sharedTestFunctions + (sharedTestFunctions lib) + '' start_all() machine.wait_for_unit("multi-user.target") @@ -773,7 +794,7 @@ in # Lomiri in desktop mode should use the correct keymap with subtest("lomiri session keymap works"): machine.send_key("ctrl-alt-t") - wait_for_text(r"(${user}|machine)") + ensure_terminal_running() machine.screenshot("terminal_opens") machine.send_chars("touch ${pwInput}\n") diff --git a/pkgs/applications/editors/vim/plugins/generated.nix b/pkgs/applications/editors/vim/plugins/generated.nix index c5434d85a6eb..cff7dac62928 100644 --- a/pkgs/applications/editors/vim/plugins/generated.nix +++ b/pkgs/applications/editors/vim/plugins/generated.nix @@ -5422,6 +5422,19 @@ final: prev: { meta.hydraPlatforms = [ ]; }; + flow-nvim = buildVimPlugin { + pname = "flow.nvim"; + version = "2.0.2-unstable-2026-02-25"; + src = fetchFromGitHub { + owner = "0xstepit"; + repo = "flow.nvim"; + rev = "1fe4ff584b53298e41a9f8cf108f23967cc9280c"; + hash = "sha256-fc3H89D2xW2GZuJiHDgRJz5zYt8FQ4Azqh0o5HGcgLw="; + }; + meta.homepage = "https://github.com/0xstepit/flow.nvim/"; + meta.hydraPlatforms = [ ]; + }; + fluent-vim = buildVimPlugin { pname = "fluent.vim"; version = "0-unstable-2025-04-26"; diff --git a/pkgs/applications/editors/vim/plugins/overrides.nix b/pkgs/applications/editors/vim/plugins/overrides.nix index 64b86ec1a5f7..567be4336b8b 100644 --- a/pkgs/applications/editors/vim/plugins/overrides.nix +++ b/pkgs/applications/editors/vim/plugins/overrides.nix @@ -1255,6 +1255,13 @@ assertNoAdditions { dependencies = [ self.nvzone-volt ]; }; + flow-nvim = super.flow-nvim.overrideAttrs { + nvimSkipModules = [ + # Optional barbecue integration requires flow.setup() first. + "barbecue.theme.flow" + ]; + }; + flutter-tools-nvim = super.flutter-tools-nvim.overrideAttrs { # Optional dap integration checkInputs = [ self.nvim-dap ]; diff --git a/pkgs/applications/editors/vim/plugins/vim-plugin-names b/pkgs/applications/editors/vim/plugins/vim-plugin-names index f52c88b888f6..786aef23203e 100644 --- a/pkgs/applications/editors/vim/plugins/vim-plugin-names +++ b/pkgs/applications/editors/vim/plugins/vim-plugin-names @@ -415,6 +415,7 @@ https://github.com/ncm2/float-preview.nvim/,, https://github.com/nvzone/floaterm/,HEAD, https://github.com/liangxianzhe/floating-input.nvim/,HEAD, https://github.com/floobits/floobits-neovim/,, +https://github.com/0xstepit/flow.nvim/,HEAD, https://github.com/projectfluent/fluent.vim/,HEAD, https://github.com/nvim-flutter/flutter-tools.nvim/,HEAD, https://github.com/nvim-focus/focus.nvim/,HEAD, 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 9a32fe550626..81ee3d210427 100644 --- a/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix +++ b/pkgs/applications/editors/vscode/extensions/anthropic.claude-code/default.nix @@ -8,8 +8,8 @@ vscode-utils.buildVscodeMarketplaceExtension { mktplcRef = { name = "claude-code"; publisher = "anthropic"; - version = "2.1.49"; - hash = "sha256-9WwA1TUM/h8kLoZV/ukh/4s3w9DnJ/cVAxypz4jlj6A="; + version = "2.1.59"; + hash = "sha256-j8tZSPTHlCFVCCCUl54MqvA3eRczfu8byEEbn7KHTPY="; }; postInstall = '' diff --git a/pkgs/applications/emulators/libretro/cores/play.nix b/pkgs/applications/emulators/libretro/cores/play.nix index 080531a78aa1..7bdb0142ac23 100644 --- a/pkgs/applications/emulators/libretro/cores/play.nix +++ b/pkgs/applications/emulators/libretro/cores/play.nix @@ -14,13 +14,13 @@ }: mkLibretroCore { core = "play"; - version = "0-unstable-2026-02-16"; + version = "0-unstable-2026-02-23"; src = fetchFromGitHub { owner = "jpd002"; repo = "Play-"; - rev = "2a125b5d28cb2c02cbd2fdb00ce268581ffca05b"; - hash = "sha256-tYB2xcIU7O6BizHSSS4CPQMbLsnlHZKqcx26WypWt1E="; + rev = "8369490f332bc09d1c8f9e707ee34e01cf13e4cb"; + hash = "sha256-/cltskT4cJ8/tExSN324JVGVCOhOWrOJg+47RaGR3yE="; fetchSubmodules = true; }; diff --git a/pkgs/by-name/an/ant/package.nix b/pkgs/by-name/an/ant/package.nix index d008fc95e832..b1049d4db3c6 100644 --- a/pkgs/by-name/an/ant/package.nix +++ b/pkgs/by-name/an/ant/package.nix @@ -2,7 +2,7 @@ fetchurl, lib, stdenv, - coreutils, + jre, makeWrapper, gitUpdater, }: @@ -11,6 +11,8 @@ stdenv.mkDerivation (finalAttrs: { pname = "ant"; version = "1.10.15"; + buildInputs = [ jre ]; + nativeBuildInputs = [ makeWrapper ]; src = fetchurl { @@ -19,60 +21,23 @@ stdenv.mkDerivation (finalAttrs: { }; installPhase = '' - mkdir -p $out/bin $out/share/ant + mkdir -p $out/share/ant mv * $out/share/ant/ # Get rid of the manual (35 MiB). Maybe we should put this in a - # separate output. Keep the antRun script since it's vanilla sh - # and needed for the task (but since we set ANT_HOME to - # a weird value, we have to move antRun to a weird location). - # Get rid of the other Ant scripts since we provide our own. - mv $out/share/ant/bin/antRun $out/bin/ - rm -rf $out/share/ant/{manual,bin,WHATSNEW} - mkdir $out/share/ant/bin - mv $out/bin/antRun $out/share/ant/bin/ + # separate output. + rm -rf $out/share/ant/{manual,WHATSNEW} - cat >> $out/bin/ant <&2 - exit 1 - fi - fi - - if [ -z \$NIX_JVM ]; then - if [ -e \$JAVA_HOME/bin/java ]; then - NIX_JVM=\$JAVA_HOME/bin/java - elif [ -e \$JAVA_HOME/bin/gij ]; then - NIX_JVM=\$JAVA_HOME/bin/gij - else - NIX_JVM=java - fi - fi - - LOCALCLASSPATH="\$ANT_HOME/lib/ant-launcher.jar\''${LOCALCLASSPATH:+:}\$LOCALCLASSPATH" - - exec \$NIX_JVM \$NIX_ANT_OPTS \$ANT_OPTS -classpath "\$LOCALCLASSPATH" \ - -Dant.home=\$ANT_HOME -Dant.library.dir="\$ANT_LIB" \ - org.apache.tools.ant.launch.Launcher \$NIX_ANT_ARGS \$ANT_ARGS \ - -cp "\$CLASSPATH" "\$@" - EOF - - chmod +x $out/bin/ant + # Wrap the wrappers. + for wrapper in ant runant.py runant.pl; do + wrapProgram "$out/share/ant/bin/$wrapper" \ + --set-default JAVA_HOME "${jre.home}" \ + --set-default ANT_HOME "$out/share/ant" \ + --prefix CLASSPATH : "$out/share/ant/lib" + done ''; passthru = { diff --git a/pkgs/by-name/ba/bazarr/package.nix b/pkgs/by-name/ba/bazarr/package.nix index 2fe57bc41fcb..f029fa8f1453 100644 --- a/pkgs/by-name/ba/bazarr/package.nix +++ b/pkgs/by-name/ba/bazarr/package.nix @@ -17,11 +17,11 @@ let in stdenv.mkDerivation rec { pname = "bazarr"; - version = "1.5.5"; + version = "1.5.6"; src = fetchzip { url = "https://github.com/morpheus65535/bazarr/releases/download/v${version}/bazarr.zip"; - hash = "sha256-YiR/hi+/vptjHxwBYsq/W3QdjT12+pv74AuU1ggM084="; + hash = "sha256-S3idNH9Wm9f6aNj69dERmeks1rLvUeQJYFebXa5cWQo="; stripRoot = false; }; diff --git a/pkgs/by-name/br/brave/package.nix b/pkgs/by-name/br/brave/package.nix index dd519168a40a..6f40737b9633 100644 --- a/pkgs/by-name/br/brave/package.nix +++ b/pkgs/by-name/br/brave/package.nix @@ -3,24 +3,24 @@ let pname = "brave"; - version = "1.87.190"; + version = "1.87.191"; allArchives = { aarch64-linux = { url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_arm64.deb"; - hash = "sha256-ktHcMh5sPgpj6lNtW1PAcJJoFSMZKoOawdKkAH27/OI="; + hash = "sha256-mwczK2IYt+88VfSyNLwSWRxBuGS+AzMcAGE2C8Bafno="; }; x86_64-linux = { url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-browser_${version}_amd64.deb"; - hash = "sha256-gQ1LSSKSVV7YOFTFHENDIQF73CyMr/nYNcxYOb/qw+w="; + hash = "sha256-p2gdKzk0YTZYciSvlpO0Q31w8/eNOE1WmhvWm0pop1I="; }; aarch64-darwin = { url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-arm64.zip"; - hash = "sha256-QCswcz18onnqn+xfM91hIk7ZCx9WZVR8gAu+3TnfPS4="; + hash = "sha256-ZXjEPtb6WV+izKbyaaR4MtcI0dS+tOlYQ/B8ngKt0GY="; }; x86_64-darwin = { url = "https://github.com/brave/brave-browser/releases/download/v${version}/brave-v${version}-darwin-x64.zip"; - hash = "sha256-zeLuQYY/ZNnxMLQKp73CB1j8FhTI0GqsarUPLz+5J0o="; + hash = "sha256-yDyzzTVlB2hHFzECe3C4Lv5RZTSqgyBOdN1HBdmI2aA="; }; }; diff --git a/pkgs/by-name/cl/claude-code-bin/manifest.json b/pkgs/by-name/cl/claude-code-bin/manifest.json index ca5c00dc5d2c..468877e95b2b 100644 --- a/pkgs/by-name/cl/claude-code-bin/manifest.json +++ b/pkgs/by-name/cl/claude-code-bin/manifest.json @@ -1,46 +1,46 @@ { - "version": "2.1.49", - "buildDate": "2026-02-19T22:40:53Z", + "version": "2.1.59", + "buildDate": "2026-02-25T23:40:08Z", "platforms": { "darwin-arm64": { "binary": "claude", - "checksum": "2b984814350ed9a9b70506bcbc10b77da46f5b3e06a9c6932f0731d042049b98", - "size": 184907552 + "checksum": "ef70dae6ed08b5538f6d157a8c8591f72c262fb8e570c94711bad3ae4ee44afa", + "size": 187104656 }, "darwin-x64": { "binary": "claude", - "checksum": "3155c5a13e8fa9976038a4b955c3ec006aa17c2c12d8bb8a2dd3056661eeed25", - "size": 190028768 + "checksum": "b3b69beae466ac1b7659bf5710ec1d5e7b20c848418cc701019462e0923ff0e0", + "size": 192258768 }, "linux-arm64": { "binary": "claude", - "checksum": "e4e4ea8a9f8bce5f8fbaae7bac7c7a1826ea7ba68b38b9c2951e8466bca91331", - "size": 222051812 + "checksum": "78b0ea5a64793149f550ad3ddcfcbc7147128a600243839f703fb5b6a2194859", + "size": 224884646 }, "linux-x64": { "binary": "claude", - "checksum": "e7a7565665ecbccca2c6912b2ef29da2b137d260201b931c737b7dd3821c6e2f", - "size": 224937041 + "checksum": "7a4a653982b07e0a8157f8d3b2c2f8e442520ab07b2fa2e692ba054dbba210c9", + "size": 227880817 }, "linux-arm64-musl": { "binary": "claude", - "checksum": "7500953b5c47930dff10f19d086a99414dff585b8db0c2367f795241229595f0", - "size": 215218820 + "checksum": "4f16635c098b8302d5eaf83fe726c3582e00d91cf56a37d18d0c91efbcac6cd9", + "size": 217281606 }, "linux-x64-musl": { "binary": "claude", - "checksum": "e6ca49650f42cdf6ff98d9d5b6c98e3fee547c03879eba5e93377f28ca84da24", - "size": 217437097 + "checksum": "3adaebe59f10524bd9d19ebb3d090c3207b67143c0f40ec1cfc544409f8ded60", + "size": 219578057 }, "win32-x64": { "binary": "claude.exe", - "checksum": "d370342a0b9a677180dfbedfa826acb77a5b4d6c032447d0d46e69d343d38d73", - "size": 233937056 + "checksum": "6dfdfa45ce01928317abb6c3774e0c533952c471002e468dd254022acd39e268", + "size": 236043424 }, "win32-arm64": { "binary": "claude.exe", - "checksum": "9d6a70d70e5f026ae0423e42e1399e2b20ba26eea2931b259d378c8c217ae9b1", - "size": 225988768 + "checksum": "aadd9629f391a76e23bab6d06f8a6fe38f01137831012c96356cac178820e960", + "size": 228253856 } } } diff --git a/pkgs/by-name/cl/claude-code/package-lock.json b/pkgs/by-name/cl/claude-code/package-lock.json index a65cebfe2f9a..94b45e50db21 100644 --- a/pkgs/by-name/cl/claude-code/package-lock.json +++ b/pkgs/by-name/cl/claude-code/package-lock.json @@ -1,12 +1,12 @@ { "name": "@anthropic-ai/claude-code", - "version": "2.1.50", + "version": "2.1.59", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@anthropic-ai/claude-code", - "version": "2.1.50", + "version": "2.1.59", "license": "SEE LICENSE IN README.md", "bin": { "claude": "cli.js" diff --git a/pkgs/by-name/cl/claude-code/package.nix b/pkgs/by-name/cl/claude-code/package.nix index e8543aecb2f9..bc7a7cf56c79 100644 --- a/pkgs/by-name/cl/claude-code/package.nix +++ b/pkgs/by-name/cl/claude-code/package.nix @@ -15,14 +15,14 @@ }: buildNpmPackage (finalAttrs: { pname = "claude-code"; - version = "2.1.50"; + version = "2.1.59"; src = fetchzip { url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${finalAttrs.version}.tgz"; - hash = "sha256-pSPZzbLhFsE8zwlp+CHB5MqS1gT3CeIlkoAtswmxCZs="; + hash = "sha256-Dam9aJ0qBdqU40ACfzGQHuytW6ur0fMLm8D5fIKd1TE="; }; - npmDepsHash = "sha256-/oQxdQjMVS8r7e1DUPEjhWOLOD/hhVCx8gjEWb3ipZQ="; + npmDepsHash = "sha256-K+8xoBc3apvxQ9hCpYywqgBcfLxMWSxacgJcMH8mK7E="; strictDeps = true; diff --git a/pkgs/by-name/co/colima/package.nix b/pkgs/by-name/co/colima/package.nix index e6fb4e031f7f..1470cbb89cc2 100644 --- a/pkgs/by-name/co/colima/package.nix +++ b/pkgs/by-name/co/colima/package.nix @@ -15,13 +15,13 @@ buildGoModule (finalAttrs: { pname = "colima"; - version = "0.9.1"; + version = "0.10.1"; src = fetchFromGitHub { owner = "abiosoft"; repo = "colima"; tag = "v${finalAttrs.version}"; - hash = "sha256-oRhpABYyP4T6kfmvJ4llPXcXWrSbxU7uUfvXQhm2huc="; + hash = "sha256-WYwHqMPHRF17j7EfZzxHAMV0JPGZKLfJCn0axpuh5sc="; # We need the git revision leaveDotGit = true; postFetch = '' @@ -36,7 +36,7 @@ buildGoModule (finalAttrs: { ] ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.DarwinTools ]; - vendorHash = "sha256-ZwgzKCOEhgKK2LNRLjnWP6qHI4f6OGORvt3CREJf55I="; + vendorHash = "sha256-UAnQZyZ4EcIZz55jXUjkJDjq3s0uLPBnwUPyNcBV6aE="; # disable flaky Test_extractZones # https://hydra.nixos.org/build/212378003/log diff --git a/pkgs/by-name/co/cosmic-applets/package.nix b/pkgs/by-name/co/cosmic-applets/package.nix index 19533ff4fdd3..8da525145261 100644 --- a/pkgs/by-name/co/cosmic-applets/package.nix +++ b/pkgs/by-name/co/cosmic-applets/package.nix @@ -20,14 +20,14 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-applets"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-applets"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-ONDfvyIy7sqgMpf2IrVUjLPkXUEOiN3OGK57P/4KVZQ="; + hash = "sha256-x2FHzgbxxHJEYlCK0bi5j7WdAqAlcocLYW20y2ionBc="; }; cargoHash = "sha256-FWpfgqPqjbzzv6yaBKx9eq+PHCCQ/TErx+TGWqmXqXA="; diff --git a/pkgs/by-name/co/cosmic-applibrary/package.nix b/pkgs/by-name/co/cosmic-applibrary/package.nix index 8e2f893cfdb3..98484a2c2249 100644 --- a/pkgs/by-name/co/cosmic-applibrary/package.nix +++ b/pkgs/by-name/co/cosmic-applibrary/package.nix @@ -11,17 +11,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-applibrary"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-applibrary"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-OxHfrtUrcVC5rdh3W56zNhNRNzYrX+VRJIiW19lAJPM="; + hash = "sha256-sHF5jNY6sAZtWPeIgYjrLlhpSzhfoU21kA0ejWRkf98="; }; - cargoHash = "sha256-apLIpb1VUuQRgOJ2mQioPyucbETzyh5wOeatMCLGrc4="; + cargoHash = "sha256-h/LjcSKnmZof4/OFyLDUFWcjn6TiTt8eRAJkj8lUC0Y="; nativeBuildInputs = [ just diff --git a/pkgs/by-name/co/cosmic-bg/package.nix b/pkgs/by-name/co/cosmic-bg/package.nix index c271bbd96b54..116d9e20b7f4 100644 --- a/pkgs/by-name/co/cosmic-bg/package.nix +++ b/pkgs/by-name/co/cosmic-bg/package.nix @@ -13,14 +13,14 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-bg"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-bg"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-/6VYiZ02y/UAA3fZ+CHb18BZAWBnm/3HAf7IdEhaeD0="; + hash = "sha256-epwCl68NWKgGMUrwIA7ALlOLMTLxyShqfV0ARXsZxrs="; }; postPatch = '' @@ -29,7 +29,7 @@ rustPlatform.buildRustPackage (finalAttrs: { "${cosmic-wallpapers}/share/backgrounds/cosmic/orion_nebula_nasa_heic0601a.jpg" ''; - cargoHash = "sha256-+NkraWjWHIMIyktAUlp3q2Ot1ib1QRsBBvfdbr5BXto="; + cargoHash = "sha256-BEQQy79s9B0GLr0w2+8N5s24Ko8ikWjRxf8DmLve8kc="; nativeBuildInputs = [ just diff --git a/pkgs/by-name/co/cosmic-comp/package.nix b/pkgs/by-name/co/cosmic-comp/package.nix index 517f7d621b35..43a4d66b4d4a 100644 --- a/pkgs/by-name/co/cosmic-comp/package.nix +++ b/pkgs/by-name/co/cosmic-comp/package.nix @@ -20,17 +20,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-comp"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-comp"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-AxMhcWBYN6q6IDKXXBWFi+WvSnSgF/lg5Ch9Obs+7uc="; + hash = "sha256-TGTKUF7rYZ/Koem4rPBFYHatzhhqpWe/1WmAqlY3odg="; }; - cargoHash = "sha256-hcQ6u4Aj5Av9T9uX0oDSbJG82g6E8IXcJc4Z2CfoRtg="; + cargoHash = "sha256-MI8cJzjZd2UeWBESu8xEDYQv0Oa4PRhc4pOCN0zDNO4="; separateDebugInfo = true; diff --git a/pkgs/by-name/co/cosmic-edit/package.nix b/pkgs/by-name/co/cosmic-edit/package.nix index 5fb92903b44d..a337eb75ac62 100644 --- a/pkgs/by-name/co/cosmic-edit/package.nix +++ b/pkgs/by-name/co/cosmic-edit/package.nix @@ -16,17 +16,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-edit"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-edit"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-yaDFlnORaPwh/2Zb3Nh1Hr/jA1Z/kQT6Y1zic0eVvwA="; + hash = "sha256-qmzVc09VFZBS5S/C5JL0OzPnCX5jERXPE8iFycDUj/A="; }; - cargoHash = "sha256-1Q+jdr7uSQTp+3z2fgQIyH33v/Ld9MPER3/WRJ34Mdg="; + cargoHash = "sha256-VEPahTeBPMx+xoZWRFgmbLLEw8l2QXqr/Sk06gW2Mds="; postPatch = '' substituteInPlace justfile --replace-fail '#!/usr/bin/env' "#!$(command -v env)" diff --git a/pkgs/by-name/co/cosmic-files/package.nix b/pkgs/by-name/co/cosmic-files/package.nix index 3b8bb5e01475..5d8af40db99e 100644 --- a/pkgs/by-name/co/cosmic-files/package.nix +++ b/pkgs/by-name/co/cosmic-files/package.nix @@ -2,6 +2,7 @@ lib, stdenv, fetchFromGitHub, + fetchpatch, rustPlatform, just, libcosmicAppHook, @@ -12,17 +13,25 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-files"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-files"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-kTPPYfga0to19ZC66bGj/ROsMceG8LuELl1OkwKSirU="; + hash = "sha256-KXXNYNGun1stXXzY4OWzOVLrLXAs5g7NNaSYajavDvU="; }; - cargoHash = "sha256-tkH9BIeTukdVJhN9yUgFdUUhyfqnx3tTqwu+LAAULog="; + cargoHash = "sha256-HMHS6HrOUVnrWbyGi9wadl9++onBNNCRw4r4nohvQzI="; + + patches = [ + (fetchpatch { + # patch for fixing build error introduced in `epoch-1.0.7` + url = "https://github.com/pop-os/cosmic-files/commit/49e3d95e7a5e02c279f2be1f1f4dfdba2fb532dc.patch"; + hash = "sha256-Ohf3K+ehFvIurPOReFDML+wfBvdxCi7Ef3eCoSLnXFM="; + }) + ]; nativeBuildInputs = [ just diff --git a/pkgs/by-name/co/cosmic-greeter/package.nix b/pkgs/by-name/co/cosmic-greeter/package.nix index 1da623e0dbed..c2f728f95750 100644 --- a/pkgs/by-name/co/cosmic-greeter/package.nix +++ b/pkgs/by-name/co/cosmic-greeter/package.nix @@ -19,7 +19,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-greeter"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-icons/package.nix b/pkgs/by-name/co/cosmic-icons/package.nix index 1cbae8c1200c..b7e6dde4e603 100644 --- a/pkgs/by-name/co/cosmic-icons/package.nix +++ b/pkgs/by-name/co/cosmic-icons/package.nix @@ -9,7 +9,7 @@ }: stdenvNoCC.mkDerivation (finalAttrs: { pname = "cosmic-icons"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-idle/package.nix b/pkgs/by-name/co/cosmic-idle/package.nix index 7b4c4476527e..491f236b2e38 100644 --- a/pkgs/by-name/co/cosmic-idle/package.nix +++ b/pkgs/by-name/co/cosmic-idle/package.nix @@ -16,7 +16,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-idle"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-initial-setup/package.nix b/pkgs/by-name/co/cosmic-initial-setup/package.nix index b7b9c6cbfb8f..a02b0b65bfd6 100644 --- a/pkgs/by-name/co/cosmic-initial-setup/package.nix +++ b/pkgs/by-name/co/cosmic-initial-setup/package.nix @@ -14,7 +14,7 @@ }: rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-initial-setup"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-launcher/package.nix b/pkgs/by-name/co/cosmic-launcher/package.nix index 77555f4ec9f1..d7e7c0e9d09c 100644 --- a/pkgs/by-name/co/cosmic-launcher/package.nix +++ b/pkgs/by-name/co/cosmic-launcher/package.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-launcher"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-notifications/package.nix b/pkgs/by-name/co/cosmic-notifications/package.nix index c0de9a245002..83ebdbc4243b 100644 --- a/pkgs/by-name/co/cosmic-notifications/package.nix +++ b/pkgs/by-name/co/cosmic-notifications/package.nix @@ -12,7 +12,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-notifications"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-osd/package.nix b/pkgs/by-name/co/cosmic-osd/package.nix index f99f701b4bac..06375b289bc9 100644 --- a/pkgs/by-name/co/cosmic-osd/package.nix +++ b/pkgs/by-name/co/cosmic-osd/package.nix @@ -15,7 +15,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-osd"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-panel/package.nix b/pkgs/by-name/co/cosmic-panel/package.nix index 83b81b26130f..e66dff463adb 100644 --- a/pkgs/by-name/co/cosmic-panel/package.nix +++ b/pkgs/by-name/co/cosmic-panel/package.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-panel"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-player/package.nix b/pkgs/by-name/co/cosmic-player/package.nix index d2d94ec2e3c8..f8bde4b5bd93 100644 --- a/pkgs/by-name/co/cosmic-player/package.nix +++ b/pkgs/by-name/co/cosmic-player/package.nix @@ -18,17 +18,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-player"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-player"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-ddwYgyyAaQr+0ULdCm7ZDLBfmXi014OR/G2KauYsI10="; + hash = "sha256-t0gm/LYXwHDnEo7WEgucWt0en54LYzlN2W52GwbMpwI="; }; - cargoHash = "sha256-8w66CbGoonmJ3cb5G4G7pPjjk1OVbdZFp9smuKchvRY="; + cargoHash = "sha256-IWL6x5nHcadQYW0bwA8uavLfJFshVigtqP42M4MiNYE="; nativeBuildInputs = [ just diff --git a/pkgs/by-name/co/cosmic-randr/package.nix b/pkgs/by-name/co/cosmic-randr/package.nix index 24c027829f11..c0106ba52fc9 100644 --- a/pkgs/by-name/co/cosmic-randr/package.nix +++ b/pkgs/by-name/co/cosmic-randr/package.nix @@ -12,7 +12,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-randr"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-screenshot/package.nix b/pkgs/by-name/co/cosmic-screenshot/package.nix index efbdfdb8af87..b41f944af41d 100644 --- a/pkgs/by-name/co/cosmic-screenshot/package.nix +++ b/pkgs/by-name/co/cosmic-screenshot/package.nix @@ -11,7 +11,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-screenshot"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-session/package.nix b/pkgs/by-name/co/cosmic-session/package.nix index 6b2adc3054e6..e04e59c55019 100644 --- a/pkgs/by-name/co/cosmic-session/package.nix +++ b/pkgs/by-name/co/cosmic-session/package.nix @@ -12,14 +12,14 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-session"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-session"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-dMx7ZSl+ZDZGwAbo3tWwSH8Tg00ZVTJsXNZrBHY4Xj4="; + hash = "sha256-PJkr2etwcgzTELzsAVb2agof8tRZGEnDTKJ+1/9Q3bU="; }; cargoHash = "sha256-wFh9AYQRZB9qK0vCrhW9Zk61Yg+VY3VPAqJRD47NbK4="; diff --git a/pkgs/by-name/co/cosmic-settings-daemon/package.nix b/pkgs/by-name/co/cosmic-settings-daemon/package.nix index 90d05a31f041..add7f40bfcf0 100644 --- a/pkgs/by-name/co/cosmic-settings-daemon/package.nix +++ b/pkgs/by-name/co/cosmic-settings-daemon/package.nix @@ -16,14 +16,14 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-settings-daemon"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-settings-daemon"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-nivViFs0swS5MUH+hfpBl5sFGBZ6XPo3E0PGONVmzxo="; + hash = "sha256-np1syOfFqL6eZpnlwNb8WOXB0oqSkxIshX0JiyDlN1A="; }; postPatch = '' @@ -33,7 +33,7 @@ rustPlatform.buildRustPackage (finalAttrs: { --replace-fail '/usr/share/themes/adw-gtk3' '${adw-gtk3}/share/themes/adw-gtk3' ''; - cargoHash = "sha256-KRV9WKOf9W0g4d2uKrAFEuDqJgr+CTpvtVLn7TIYuBw="; + cargoHash = "sha256-p0Dda0Chy8qJNIMAbSnqeC8kHDYIf4tsk7+NCd9/nDQ="; nativeBuildInputs = [ pkg-config ]; diff --git a/pkgs/by-name/co/cosmic-settings/package.nix b/pkgs/by-name/co/cosmic-settings/package.nix index 51b9cd81150a..c6a4429271dc 100644 --- a/pkgs/by-name/co/cosmic-settings/package.nix +++ b/pkgs/by-name/co/cosmic-settings/package.nix @@ -27,17 +27,17 @@ let in rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-settings"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-settings"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-IkWH8V5M8k3BB8UpnNMxM5z5uzKRatu/tbACywiqezg="; + hash = "sha256-bSguS+nrbKkxr8yGGmvRlPI9/b0uctLHKoV+y6Kc1Bw="; }; - cargoHash = "sha256-1T/Wd59AD8HVeTCeKb8BIdzw3n+nK5otevFmwn3YJRs="; + cargoHash = "sha256-fUfj/defu74AYNTG/Wv3lxGbrPmRHZYSwN5ZZ98zwKw="; nativeBuildInputs = [ cmake diff --git a/pkgs/by-name/co/cosmic-store/package.nix b/pkgs/by-name/co/cosmic-store/package.nix index f54f7a5e6187..c7175f806b78 100644 --- a/pkgs/by-name/co/cosmic-store/package.nix +++ b/pkgs/by-name/co/cosmic-store/package.nix @@ -15,17 +15,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-store"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-store"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-nFquLO/qMANbQRbOfjegZeMb2vCSKUK5/Y/U4ghuW64="; + hash = "sha256-B5WdvrK7dV8C9/M577S/gbxksA5zdmhDqkidFFAbyH0="; }; - cargoHash = "sha256-rrIIQ5bx4HMrxoUDH63qFJN7J+eyohSSewFZB5xMNjs="; + cargoHash = "sha256-5ak3jbGD4TUiJCKn4FCkOvkZK2LzZAlU0zvqp1q1BaY="; nativeBuildInputs = [ just diff --git a/pkgs/by-name/co/cosmic-term/package.nix b/pkgs/by-name/co/cosmic-term/package.nix index 2d16fff71181..097136d060d9 100644 --- a/pkgs/by-name/co/cosmic-term/package.nix +++ b/pkgs/by-name/co/cosmic-term/package.nix @@ -15,17 +15,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-term"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-term"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-Woko89mT0jBx1YhzO4yXyMfxAMDxPiMn1m51Cm1e7hQ="; + hash = "sha256-EN/eVQfUbJPQoU2rOYbfQBdr2cTff1VkQDp+hUEkbAE="; }; - cargoHash = "sha256-KXhjNBpTOk96+86PbDjeKtQ/VynRVV4a9SYbYGz4A6c="; + cargoHash = "sha256-ypb1hlOl1ot4pmeJK9VVuSa2YkzDqMQs0ylH3tWWpb8="; nativeBuildInputs = [ just diff --git a/pkgs/by-name/co/cosmic-wallpapers/package.nix b/pkgs/by-name/co/cosmic-wallpapers/package.nix index e402a4f1c077..ddc30dfd95b3 100644 --- a/pkgs/by-name/co/cosmic-wallpapers/package.nix +++ b/pkgs/by-name/co/cosmic-wallpapers/package.nix @@ -7,7 +7,7 @@ stdenvNoCC.mkDerivation (finalAttrs: { pname = "cosmic-wallpapers"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/co/cosmic-workspaces-epoch/package.nix b/pkgs/by-name/co/cosmic-workspaces-epoch/package.nix index 20c1dae7dd5a..a57dc9d61e6f 100644 --- a/pkgs/by-name/co/cosmic-workspaces-epoch/package.nix +++ b/pkgs/by-name/co/cosmic-workspaces-epoch/package.nix @@ -14,17 +14,17 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "cosmic-workspaces-epoch"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { owner = "pop-os"; repo = "cosmic-workspaces-epoch"; tag = "epoch-${finalAttrs.version}"; - hash = "sha256-HrW02lM1uSiI2UBC46Jjgv7r3urVcgS3Mrvfoig/EjI="; + hash = "sha256-0BD+61gQkVHrDb8hfOa1Tiy29Hu+TZCV6r/LdFMPy+k="; }; - cargoHash = "sha256-r5Do3eRBcwjA4IysyKgkHLz8Wo1WwdEl596ZENiQbEM="; + cargoHash = "sha256-IMjDZk42rj2a9ZUFksZ9VhI5RsB0t630Iy3eKtRqY7M="; separateDebugInfo = true; diff --git a/pkgs/by-name/fi/filezilla/package.nix b/pkgs/by-name/fi/filezilla/package.nix index 45c0920272a2..dc1c6ab2e8df 100644 --- a/pkgs/by-name/fi/filezilla/package.nix +++ b/pkgs/by-name/fi/filezilla/package.nix @@ -22,12 +22,12 @@ stdenv.mkDerivation { pname = "filezilla"; - version = "3.69.5"; + version = "3.69.6"; src = fetchsvn { url = "https://svn.filezilla-project.org/svn/FileZilla3/trunk"; - rev = "11338"; - hash = "sha256-OQZFwowkmiOcIjWoHkIFwsm6nuyMGSaBSn8zwVpCMAs="; + rev = "11365"; + hash = "sha256-KJI+UxKiwmZfVG0CiS3lDnjz+YNjTy7IoTcOmlGkluk="; }; configureFlags = [ diff --git a/pkgs/by-name/fr/freecad/0004-FreeCad-fix-boost-189-build.patch b/pkgs/by-name/fr/freecad/0004-FreeCad-fix-boost-189-build.patch new file mode 100644 index 000000000000..074933ce0fa7 --- /dev/null +++ b/pkgs/by-name/fr/freecad/0004-FreeCad-fix-boost-189-build.patch @@ -0,0 +1,13 @@ +diff --git a/cMake/FreeCAD_Helpers/SetupBoost.cmake b/cMake/FreeCAD_Helpers/SetupBoost.cmake +index 0bb1343..1a389bf 100644 +--- a/cMake/FreeCAD_Helpers/SetupBoost.cmake ++++ b/cMake/FreeCAD_Helpers/SetupBoost.cmake +@@ -3,7 +3,7 @@ macro(SetupBoost) + + set(_boost_TEST_VERSIONS ${Boost_ADDITIONAL_VERSIONS}) + +- set (BOOST_COMPONENTS filesystem program_options regex system thread date_time) ++ set (BOOST_COMPONENTS filesystem program_options regex thread date_time) + find_package(Boost ${BOOST_MIN_VERSION} + COMPONENTS ${BOOST_COMPONENTS} REQUIRED) + diff --git a/pkgs/by-name/fr/freecad/package.nix b/pkgs/by-name/fr/freecad/package.nix index 9bee57d7e7fd..8004f87368ae 100644 --- a/pkgs/by-name/fr/freecad/package.nix +++ b/pkgs/by-name/fr/freecad/package.nix @@ -104,6 +104,11 @@ freecad-utils.makeCustomizable ( # https://github.com/FreeCAD/FreeCAD/pull/21710 ./0003-FreeCad-fix-font-load-crash.patch + + # Fix build for boost 1.89 or later, remove once FreeCad 1.1 is released + # based on https://github.com/FreeCAD/FreeCAD/commit/0f6d00d2a547df0f5c2ba5ef0f79044a49b0a2d + ./0004-FreeCad-fix-boost-189-build.patch + (fetchpatch { url = "https://github.com/FreeCAD/FreeCAD/commit/8e04c0a3dd9435df0c2dec813b17d02f7b723b19.patch?full_index=1"; hash = "sha256-H6WbJFTY5/IqEdoi5N+7D4A6pVAmZR4D+SqDglwS18c="; diff --git a/pkgs/by-name/ga/garnet/deps.json b/pkgs/by-name/ga/garnet/deps.json index 40be469cabc4..8e15158cb50b 100644 --- a/pkgs/by-name/ga/garnet/deps.json +++ b/pkgs/by-name/ga/garnet/deps.json @@ -1,14 +1,14 @@ [ - { - "pname": "Azure.Core", - "version": "1.47.3", - "hash": "sha256-fWyfqF1lpnap4cF3l9J0fYtZbxIqm6UFsuJgN+/hwW4=" - }, { "pname": "Azure.Core", "version": "1.49.0", "hash": "sha256-ZLd8vl1QNHWYMOAx/ciDUNNfMGu2DFIfw37+FwiGI/4=" }, + { + "pname": "Azure.Core", + "version": "1.50.0", + "hash": "sha256-8Pjz0/2wTLK5uY7G5qrxQr4CsmrjiR8gL4g6zJymj5s=" + }, { "pname": "Azure.Identity", "version": "1.17.0", @@ -16,23 +16,53 @@ }, { "pname": "Azure.Storage.Blobs", - "version": "12.26.0", - "hash": "sha256-J6774WE6xlrsmhkmE1dapkrhK6dFByYxSHLs1OQPk48=" + "version": "12.27.0", + "hash": "sha256-Ag8kMe/NBfq+HSchFzm0VAAo9xVnrKHFHUjbQ4KpSh0=" }, { "pname": "Azure.Storage.Common", - "version": "12.25.0", - "hash": "sha256-4eMv4oOumO6FFx0VMsuIr6sWtouu4f6AajebTQjhj9Q=" + "version": "12.26.0", + "hash": "sha256-GPiEPi/caj5z2cMFP5TUx/Jrj/zXZmA/xqC9CEoI+qQ=" }, { "pname": "CommandLineParser", "version": "2.9.1", "hash": "sha256-ApU9y1yX60daSjPk3KYDBeJ7XZByKW8hse9NRZGcjeo=" }, + { + "pname": "diskann-garnet", + "version": "1.0.20", + "hash": "sha256-cH3rHJxl2IUvB9pC9recWvwx5mdrtbw2IiSZSIFgZPU=" + }, { "pname": "KeraLua", - "version": "1.4.6", - "hash": "sha256-7lXJhhQlEuRoaF18XiZYJDyhA8RIWpYWNB9kr4aARQc=" + "version": "1.4.9", + "hash": "sha256-xR8Ram6RX6B2kd+KYpa6URIzOW6SGrKLU33yi1nv5UU=" + }, + { + "pname": "Microsoft.AspNetCore.App.Ref", + "version": "8.0.23", + "hash": "sha256-MhWoomc6BwUta7PxbnGC3Fno+GQx3aUEtg/LBDAEi38=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.linux-arm64", + "version": "8.0.23", + "hash": "sha256-tG2pcAzeiDBouBrMVaYrCD2M2jCXJ4wk2sNOF2KQILk=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.linux-x64", + "version": "8.0.23", + "hash": "sha256-PGtAymoWt5+PBLjt+krej6KruhWy+D+dUE4PgVZSx88=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.osx-arm64", + "version": "8.0.23", + "hash": "sha256-fZQKWvYkS/fXUK8BIWD4dSOo1jltO0fDSy0TT+U3H9c=" + }, + { + "pname": "Microsoft.AspNetCore.App.Runtime.osx-x64", + "version": "8.0.23", + "hash": "sha256-HsEhlsBgaDkIDgVz3oPkFe3dRcYFqrHEnikKaTqqWpo=" }, { "pname": "Microsoft.Bcl.AsyncInterfaces", @@ -44,30 +74,40 @@ "version": "9.0.0", "hash": "sha256-ECgyZ53XqJoRcZexQpctEq1nHFXuW4YqFSx7Elsae7U=" }, + { + "pname": "Microsoft.Extensions.Configuration", + "version": "10.0.2", + "hash": "sha256-dBJAKDyp/sm+ZSMQfH0+4OH8Jnv1s20aHlWS6HNnH+c=" + }, { "pname": "Microsoft.Extensions.Configuration", "version": "9.0.8", "hash": "sha256-GnD1Ar/yZfCZQw2k/2jKteLG1lF/Dk7S3tgMvn+SFqc=" }, + { + "pname": "Microsoft.Extensions.Configuration.Abstractions", + "version": "10.0.2", + "hash": "sha256-P+0kaDGO+xB9KxF9eWHDJ4hzi05sUGM/uMNEX5NdBTE=" + }, { "pname": "Microsoft.Extensions.Configuration.Abstractions", "version": "9.0.8", "hash": "sha256-hes+QZM3DQ1R/8CDOdWObk6s1oGhzFqka8Qc7Baf9PY=" }, - { - "pname": "Microsoft.Extensions.Configuration.Abstractions", - "version": "9.0.9", - "hash": "sha256-Qmi+ftu17qqVVHJ+SgKvLrXCHJDrP5h4ZgTflgDWgzc=" - }, { "pname": "Microsoft.Extensions.Configuration.Binder", - "version": "9.0.9", - "hash": "sha256-p7hhHy1hGSJk6OQvaFhz4WFbtM8VkeKb3sSZTB61M0s=" + "version": "10.0.2", + "hash": "sha256-resI9gIxHh2cc+258/i+TjW8xxzKf4ZBTLIcWAMEYz0=" }, { "pname": "Microsoft.Extensions.DependencyInjection", - "version": "9.0.8", - "hash": "sha256-fJOwbtlmP6mXGYqHRCqtb7e08h5mFza6Wmd1NbNq3ug=" + "version": "10.0.2", + "hash": "sha256-/9UWQRAI2eoocnJWWf1ktnAx/1Gt65c16fc0Xqr9+CQ=" + }, + { + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", + "version": "10.0.2", + "hash": "sha256-UF9T13V5SQxJy2msfLmyovLmitZrjJayf8gHH+uK2eg=" }, { "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", @@ -76,8 +116,13 @@ }, { "pname": "Microsoft.Extensions.Logging", - "version": "9.0.8", - "hash": "sha256-SEVCMpVwjcQtTSs4lirb89A36MxLQwwqdDFWbr1VvP8=" + "version": "10.0.2", + "hash": "sha256-9+gfQwK32JMYscW1YvyCWEzc9mRZOjCACoD9U1vVaJI=" + }, + { + "pname": "Microsoft.Extensions.Logging.Abstractions", + "version": "10.0.2", + "hash": "sha256-ndKGzq8+2J/hvaIULwBui0L/jDyMQTAY24j+ohX5VX8=" }, { "pname": "Microsoft.Extensions.Logging.Abstractions", @@ -109,6 +154,11 @@ "version": "9.0.8", "hash": "sha256-8cz7l8ubkRIBd6gwDJcpJd66MYNU0LsvDH9+PU+mTJo=" }, + { + "pname": "Microsoft.Extensions.Options", + "version": "10.0.2", + "hash": "sha256-12AfUEDdta/pmZUyEyqSUfOk0YoA7JOfGmIYnZQ//qk=" + }, { "pname": "Microsoft.Extensions.Options", "version": "9.0.8", @@ -121,13 +171,13 @@ }, { "pname": "Microsoft.Extensions.Primitives", - "version": "9.0.8", - "hash": "sha256-K3T8krgXZmvQg87AQQrn9kiH2sDyKzRUMDyuB/ItmPc=" + "version": "10.0.2", + "hash": "sha256-8Ccrjjv9cFVf9RyCc7GS/Byt8+DXdSNea0UX3A5BEdA=" }, { "pname": "Microsoft.Extensions.Primitives", - "version": "9.0.9", - "hash": "sha256-bCd4Bj5uP4kT0hCvs0LZS8IVqEtpOIyhSiay5ijJbBA=" + "version": "9.0.8", + "hash": "sha256-K3T8krgXZmvQg87AQQrn9kiH2sDyKzRUMDyuB/ItmPc=" }, { "pname": "Microsoft.Identity.Client", @@ -180,9 +230,49 @@ "hash": "sha256-BDdJNDquVEplPJT3fYOakg26bSNyzNyUce+7mCjtc5o=" }, { - "pname": "System.ClientModel", - "version": "1.6.1", - "hash": "sha256-OMnamkT9Nt5ZSR6xPKFmOQRUjdn0a4nP9jkD2eZxxc0=" + "pname": "Microsoft.NETCore.App.Host.linux-arm64", + "version": "8.0.23", + "hash": "sha256-C7fkJ6CSrORo8ST27oN1bvApyFD/3P5G40LEJHan8dQ=" + }, + { + "pname": "Microsoft.NETCore.App.Host.linux-x64", + "version": "8.0.23", + "hash": "sha256-QSyUAyYwlDbFdWXKMD+Gm+2gkwjEZu+JyxpTIuIHl5w=" + }, + { + "pname": "Microsoft.NETCore.App.Host.osx-arm64", + "version": "8.0.23", + "hash": "sha256-7ztl28l8zPNREGKvR9IcrVDm13/Fi2xSqD8fjxE6yLM=" + }, + { + "pname": "Microsoft.NETCore.App.Host.osx-x64", + "version": "8.0.23", + "hash": "sha256-/eDywkBIggw2lt65yf1HFs8wSc1IgrTpEg/aKIz1y7g=" + }, + { + "pname": "Microsoft.NETCore.App.Ref", + "version": "8.0.23", + "hash": "sha256-Vevn8gsO4gCnGo0ns6B7i0MedAnEq3nBgnqx/E7aI44=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.linux-arm64", + "version": "8.0.23", + "hash": "sha256-DyEbaM692s4YBvufr3ebhFH9j2miUAisTIXT5E3fCYg=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.linux-x64", + "version": "8.0.23", + "hash": "sha256-s5iFeWfR2RebcBVPJcxxs2ceDdyol6ut2+g2kRCGIJs=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.osx-arm64", + "version": "8.0.23", + "hash": "sha256-IN/OdsXuwiuJG7gu/Gh7nVoL8rgUyMlK+LOkrHoyo+s=" + }, + { + "pname": "Microsoft.NETCore.App.Runtime.osx-x64", + "version": "8.0.23", + "hash": "sha256-86dZZBxKLtaQH17UBBIu1nO8CNfxT64ZBL+HRf1kd4A=" }, { "pname": "System.ClientModel", @@ -190,14 +280,14 @@ "hash": "sha256-R9tHPr+rDvwaS1RQUHVZHTnmAL9I79OvixuZ2Thp9rw=" }, { - "pname": "System.Diagnostics.DiagnosticSource", - "version": "6.0.1", - "hash": "sha256-Xi8wrUjVlioz//TPQjFHqcV/QGhTqnTfUcltsNlcCJ4=" + "pname": "System.ClientModel", + "version": "1.8.0", + "hash": "sha256-ZWVhuw3IRk9rZXkXERhesEET2KMMzHjUH/HDI288WK8=" }, { "pname": "System.Diagnostics.DiagnosticSource", - "version": "9.0.8", - "hash": "sha256-bVGcjEcZUVeY2jOvZeFnG+ym8ebUKOftx+gErNXeiK4=" + "version": "10.0.2", + "hash": "sha256-lt0piggvxkHfKmZAOZI8M0q0W/kMld5XwYcBWH3rj1o=" }, { "pname": "System.IdentityModel.Tokens.Jwt", @@ -206,13 +296,13 @@ }, { "pname": "System.IO.Hashing", - "version": "8.0.0", - "hash": "sha256-szOGt0TNBo6dEdC3gf6H+e9YW3Nw0woa6UnCGGGK5cE=" + "version": "10.0.1", + "hash": "sha256-k8EHcxnLitXo0CxoDZAxFmUlJJdKZVsZJ2+9zDMYB94=" }, { "pname": "System.IO.Pipelines", - "version": "9.0.9", - "hash": "sha256-bRMt0ib0KwKzHXgeAXZgegou5eX8lsm80Eu38bHBxBs=" + "version": "10.0.2", + "hash": "sha256-Guh0w9aMQ5wNSI9ecuoH4tGOX4VFnlNgepvBTPGFgzc=" }, { "pname": "System.Memory.Data", @@ -224,11 +314,6 @@ "version": "9.0.9", "hash": "sha256-wc7lhmydATxle8Wv124yFPT+bkpKpcCQL2TAPGodIAc=" }, - { - "pname": "System.Runtime.CompilerServices.Unsafe", - "version": "6.0.0", - "hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I=" - }, { "pname": "System.Security.Cryptography.ProtectedData", "version": "4.5.0", @@ -236,12 +321,12 @@ }, { "pname": "System.Text.Encodings.Web", - "version": "9.0.9", - "hash": "sha256-euYrJAKiTDCj/Rf1KVWI6IophDX828x5T9As9vAf81A=" + "version": "10.0.2", + "hash": "sha256-DWbSR+d8DJtkMclrKKbS5Ghlvi6YYrrxgHGfyDJx50o=" }, { "pname": "System.Text.Json", - "version": "9.0.9", - "hash": "sha256-I+GCgXZZUtgAta94BIBqy72HnZJ3egzNBOTxnVy2Ur8=" + "version": "10.0.2", + "hash": "sha256-Gf6L3mxsdvmN8gDyoUhfZDSFWKpmn9UjJ2v/p1CDFmk=" } ] diff --git a/pkgs/by-name/ga/garnet/package.nix b/pkgs/by-name/ga/garnet/package.nix index 145cc194cadf..14d4e0e39df4 100644 --- a/pkgs/by-name/ga/garnet/package.nix +++ b/pkgs/by-name/ga/garnet/package.nix @@ -8,13 +8,13 @@ buildDotnetModule rec { pname = "garnet"; - version = "1.0.89"; + version = "1.0.99"; src = fetchFromGitHub { owner = "microsoft"; repo = "garnet"; tag = "v${version}"; - hash = "sha256-DL87KIkC1lzqVJPAUqFp7d/MKFoWWS0Lo1/02dwkCxQ="; + hash = "sha256-TAIaIPjXuQ2euGPw/Dz2b3uxo6v0nrP/+RCGsimeeN8="; }; projectFile = "main/GarnetServer/GarnetServer.csproj"; @@ -22,10 +22,11 @@ buildDotnetModule rec { dotnet-sdk = with dotnetCorePackages; - sdk_9_0 + sdk_10_0 // { inherit (combinePackages [ + sdk_10_0 sdk_9_0 sdk_8_0 ]) @@ -36,7 +37,7 @@ buildDotnetModule rec { dotnetBuildFlags = [ "-f" - "net9.0" + "net10.0" ]; dotnetInstallFlags = dotnetBuildFlags; @@ -54,7 +55,10 @@ buildDotnetModule rec { homepage = "https://microsoft.github.io/garnet/"; changelog = "https://github.com/microsoft/garnet/releases/tag/v${version}"; license = lib.licenses.mit; - maintainers = with lib.maintainers; [ getchoo ]; + maintainers = with lib.maintainers; [ + getchoo + hythera + ]; mainProgram = "GarnetServer"; }; } diff --git a/pkgs/by-name/go/gotify-server/package.nix b/pkgs/by-name/go/gotify-server/package.nix index a2662ba7d118..435309cce8cb 100644 --- a/pkgs/by-name/go/gotify-server/package.nix +++ b/pkgs/by-name/go/gotify-server/package.nix @@ -10,16 +10,16 @@ buildGoModule (finalAttrs: { pname = "gotify-server"; - version = "2.8.0"; + version = "2.9.0"; src = fetchFromGitHub { owner = "gotify"; repo = "server"; tag = "v${finalAttrs.version}"; - hash = "sha256-wLkJ7zBz89e+ECuaNDcbOzHsA9Xiuz9jrqujnd4Mdzc="; + hash = "sha256-yfF4fS8SazjzTUHIHLGAvD2tJJMJ+W678d6Rsc+2weA="; }; - vendorHash = "sha256-vcrMWCNVqDMlIgamb0fBekNrb8qMj2Cb0b7KZbqJ1yg="; + vendorHash = "sha256-oO0wnwBQPJqeJkFoAoEIKRuvbvsbp18F7jwxPCYjsxg="; # No test doCheck = false; diff --git a/pkgs/by-name/go/gotify-server/ui.nix b/pkgs/by-name/go/gotify-server/ui.nix index 6978dc4905d7..6d0fe5e324d1 100644 --- a/pkgs/by-name/go/gotify-server/ui.nix +++ b/pkgs/by-name/go/gotify-server/ui.nix @@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: { yarnOfflineCache = fetchYarnDeps { yarnLock = "${finalAttrs.src}/yarn.lock"; - hash = "sha256-nU1K43ucv2DnDcIDee6I2t8fgz86NSyNvth2znlclsM="; + hash = "sha256-MKHpdRxL12T4/JVPCUE7nQresxnRBs9kvWGvfAhMESM="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/he/hedgedoc/package.nix b/pkgs/by-name/he/hedgedoc/package.nix index 8288642bcaa3..f55fa38d5f2e 100644 --- a/pkgs/by-name/he/hedgedoc/package.nix +++ b/pkgs/by-name/he/hedgedoc/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "hedgedoc"; - version = "1.10.6"; + version = "1.10.7"; src = fetchFromGitHub { owner = "hedgedoc"; repo = "hedgedoc"; tag = finalAttrs.version; - hash = "sha256-Utun/xGSYV20HJNwvV8q4iekRNE+oBx1kSo3rx5IZTQ="; + hash = "sha256-9HbvnnvC1eWoOxPE6yW2GcULgIrXDZ4B+mt7ZYz4j/Q="; }; # Generate this file with: diff --git a/pkgs/by-name/im/imgpkg/package.nix b/pkgs/by-name/im/imgpkg/package.nix index 3ad931011d20..09aedc16c4c8 100644 --- a/pkgs/by-name/im/imgpkg/package.nix +++ b/pkgs/by-name/im/imgpkg/package.nix @@ -6,13 +6,13 @@ buildGoModule (finalAttrs: { pname = "imgpkg"; - version = "0.47.0"; + version = "0.47.2"; src = fetchFromGitHub { owner = "carvel-dev"; repo = "imgpkg"; rev = "v${finalAttrs.version}"; - hash = "sha256-vmEdX7Hn7pfUpiGbhrzX4dhqrLhhvH95mSaABa6cJxg="; + hash = "sha256-DjygQ6wMbWOZxRezZ/SN4WsvngrKVnvAtTO6Bu9eHkM="; }; vendorHash = null; diff --git a/pkgs/by-name/in/infrastructure-agent/package.nix b/pkgs/by-name/in/infrastructure-agent/package.nix index ebf45d0c99b8..79d941ad3646 100644 --- a/pkgs/by-name/in/infrastructure-agent/package.nix +++ b/pkgs/by-name/in/infrastructure-agent/package.nix @@ -6,13 +6,13 @@ }: buildGoModule (finalAttrs: { pname = "infrastructure-agent"; - version = "1.72.4"; + version = "1.72.6"; src = fetchFromGitHub { owner = "newrelic"; repo = "infrastructure-agent"; rev = finalAttrs.version; - hash = "sha256-qhw21kOspIyAyFQYXy56NhGCSesjkPrhagXfcfyiBRQ="; + hash = "sha256-wMQL0RAhJ/pGOWUQouiod735pDR6bFVJr0SXk0p0gyQ="; }; vendorHash = "sha256-H41FxeJLrlaL/KbcBAS1WuMfVn6d+4So3egXb6E46/o="; diff --git a/pkgs/by-name/ki/kiro/package.nix b/pkgs/by-name/ki/kiro/package.nix index 78786443a763..a9758f966cfc 100644 --- a/pkgs/by-name/ki/kiro/package.nix +++ b/pkgs/by-name/ki/kiro/package.nix @@ -14,7 +14,7 @@ in inherit useVSCodeRipgrep; commandLineArgs = extraCommandLineArgs; - version = "0.10.0"; + version = "0.10.32"; pname = "kiro"; # You can find the current VSCode version in the About dialog: diff --git a/pkgs/by-name/ki/kiro/sources.json b/pkgs/by-name/ki/kiro/sources.json index 4b4299655054..d27fe150a3aa 100644 --- a/pkgs/by-name/ki/kiro/sources.json +++ b/pkgs/by-name/ki/kiro/sources.json @@ -1,14 +1,14 @@ { "x86_64-linux": { - "url": "https://prod.download.desktop.kiro.dev/releases/stable/linux-x64/signed/0.10.0/tar/kiro-ide-0.10.0-stable-linux-x64.tar.gz", - "hash": "sha256-P9s/9l+y44tZ3QRKWDqA9G4N3Z2NErp/f6SYo3ztrAQ=" + "url": "https://prod.download.desktop.kiro.dev/releases/stable/linux-x64/signed/0.10.32/tar/kiro-ide-0.10.32-stable-linux-x64.tar.gz", + "hash": "sha256-m9c5QYJnHmJBtWuVTwg2iJldDOvtVVM2g9gDVxn6JOU=" }, "x86_64-darwin": { - "url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-x64/signed/0.10.0/kiro-ide-0.10.0-stable-darwin-x64.dmg", - "hash": "sha256-fFvBOuxlaIpH7A2v6i4s8Qgly8zAJ6VEHvlkWGNZ1oo=" + "url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-x64/signed/0.10.32/kiro-ide-0.10.32-stable-darwin-x64.dmg", + "hash": "sha256-h/k/yKAwguV35fNb83OnB8lXXhi5527O97Z6joP5ItQ=" }, "aarch64-darwin": { - "url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-arm64/signed/0.10.0/kiro-ide-0.10.0-stable-darwin-arm64.dmg", - "hash": "sha256-gnqAj2rgF20zCl/718RvnWrIdw3kR5JSVLATsxFyzNY=" + "url": "https://prod.download.desktop.kiro.dev/releases/stable/darwin-arm64/signed/0.10.32/kiro-ide-0.10.32-stable-darwin-arm64.dmg", + "hash": "sha256-G45sPTlMnO2Dxd20gKcfEmw2zZ37vqk06dkxvJe/LJM=" } } diff --git a/pkgs/by-name/li/libfilezilla/package.nix b/pkgs/by-name/li/libfilezilla/package.nix index e152bd8b2b8f..a33ed1687eee 100644 --- a/pkgs/by-name/li/libfilezilla/package.nix +++ b/pkgs/by-name/li/libfilezilla/package.nix @@ -13,12 +13,12 @@ stdenv.mkDerivation { pname = "libfilezilla"; - version = "0.52.0"; + version = "0.54.1"; src = fetchsvn { url = "https://svn.filezilla-project.org/svn/libfilezilla/trunk"; - rev = "11335"; - hash = "sha256-BjHqPC43UtwlYeKbgIaGU8jmWbg5UUiTN8vl1m2mZpo="; + rev = "11363"; + hash = "sha256-m4CfnovtZPvwwjlyWKx/L1OkjiIlKfR7tqg+xB+nqzw="; }; nativeBuildInputs = [ diff --git a/pkgs/by-name/ne/net-cpp/package.nix b/pkgs/by-name/ne/net-cpp/package.nix index 49a7d8db8614..961af44c5a4f 100644 --- a/pkgs/by-name/ne/net-cpp/package.nix +++ b/pkgs/by-name/ne/net-cpp/package.nix @@ -2,11 +2,11 @@ stdenv, lib, fetchFromGitLab, + fetchpatch, gitUpdater, makeFontsConf, testers, - # https://gitlab.com/ubports/development/core/lib-cpp/net-cpp/-/issues/5 - boost186, + boost, cmake, curl, doxygen, @@ -46,11 +46,26 @@ stdenv.mkDerivation (finalAttrs: { "doc" ]; - postPatch = lib.optionalString finalAttrs.finalPackage.doCheck '' - # Use wrapped python. Removing just the /usr/bin doesn't seem to work? - substituteInPlace tests/httpbin.h.in \ - --replace '/usr/bin/python3' '${lib.getExe pythonEnv}' - ''; + patches = [ + # Remove when version > 3.2.0 + (fetchpatch { + name = "0001-net-cpp-fix-compatibility-with-Boost-1.88.patch"; + url = "https://gitlab.com/ubports/development/core/lib-cpp/net-cpp/-/commit/9ff8651b11eb9dc0f64147001e10a57d1546a626.patch"; + hash = "sha256-IEa3nhnv0oa5WmhIDG3OMrZmmoAZFeedAzKXAKVTIQg="; + }) + ]; + + postPatch = + # https://gitlab.com/ubports/development/core/lib-cpp/net-cpp/-/merge_requests/22, too basic to bother with fetchpatch + '' + substituteInPlace src/CMakeLists.txt \ + --replace-fail 'find_package(Boost COMPONENTS system' 'find_package(Boost COMPONENTS' + '' + + lib.optionalString finalAttrs.finalPackage.doCheck '' + # Use wrapped python. Removing just the /usr/bin doesn't seem to work? + substituteInPlace tests/httpbin.h.in \ + --replace '/usr/bin/python3' '${lib.getExe pythonEnv}' + ''; strictDeps = true; @@ -63,7 +78,7 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = [ - boost186 + boost curl ]; diff --git a/pkgs/by-name/ol/ollama/package.nix b/pkgs/by-name/ol/ollama/package.nix index 6369f10dd48f..a2d338cbcd97 100644 --- a/pkgs/by-name/ol/ollama/package.nix +++ b/pkgs/by-name/ol/ollama/package.nix @@ -137,16 +137,17 @@ let in goBuild (finalAttrs: { pname = "ollama"; - version = "0.15.6"; + version = "0.17.0"; src = fetchFromGitHub { owner = "ollama"; repo = "ollama"; tag = "v${finalAttrs.version}"; - hash = "sha256-II9ffgkMj2yx7Sek5PuAgRnUIS1Kf1UeK71+DwAgBRE="; + hash = "sha256-bBoLUcWVsYxtwjJaa1hYTzodRSIT0yoF0raGItPLjR4="; }; - vendorHash = "sha256-r7bSHOYAB5f3fRz7lKLejx6thPx0dR4UXoXu0XD7kVM="; + vendorHash = "sha256-Lc1Ktdqtv2VhJQssk8K1UOimeEjVNvDWePE9WkamCos="; + proxyVendor = true; env = lib.optionalAttrs enableRocm { diff --git a/pkgs/by-name/om/omnictl/package.nix b/pkgs/by-name/om/omnictl/package.nix index 481745fffc86..a3ba5323ba32 100644 --- a/pkgs/by-name/om/omnictl/package.nix +++ b/pkgs/by-name/om/omnictl/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "omnictl"; - version = "1.4.9"; + version = "1.5.7"; src = fetchFromGitHub { owner = "siderolabs"; repo = "omni"; rev = "v${version}"; - hash = "sha256-oArRGnw4/goAlcw6skw7SRBoPlWAMYHv92Wu7qtBSEQ="; + hash = "sha256-cTc4ZcFBF5RXg0JoI8W+SGVWOWOP3pbZwvvNgMnCB8Y="; }; - vendorHash = "sha256-lVUe1XQr46uzx3kfj7KmoiGFUGEb7UT16IQSI8In8RU="; + vendorHash = "sha256-KMe/gUVA0BSRD0CgEGKnCkK0KR+kDRnPBs1nNcNT7lE="; ldflags = [ "-s" diff --git a/pkgs/by-name/op/openbao/package.nix b/pkgs/by-name/op/openbao/package.nix index 717e13c13fec..35c7920708e5 100644 --- a/pkgs/by-name/op/openbao/package.nix +++ b/pkgs/by-name/op/openbao/package.nix @@ -43,8 +43,8 @@ buildGoModule (finalAttrs: { # Fixes interactive CLI usage that needs stty https://github.com/openbao/openbao/pull/2535 (fetchpatch2 { name = "pr2535-fix-interactive-cli.patch"; - url = "https://github.com/openbao/openbao/commit/e3fec111e3f6fd543c79c08f46d2256cd93f78e7.patch"; - hash = "sha256-Q/hmJj+JbpWjDhXp+p2qjlAMSUVP279Ca7ihh/9khOQ="; + url = "https://github.com/openbao/openbao/commit/e3fec111e3f6fd543c79c08f46d2256cd93f78e7.patch?full_index=1"; + hash = "sha256-ixpWKfVT1dPAjF7RKS2tBpAr1YAqNkvf4/L7Be/C8Es="; }) ]; diff --git a/pkgs/by-name/pa/paper-plane/package.nix b/pkgs/by-name/pa/paper-plane/package.nix deleted file mode 100644 index c817c0f70e86..000000000000 --- a/pkgs/by-name/pa/paper-plane/package.nix +++ /dev/null @@ -1,136 +0,0 @@ -{ - lib, - stdenv, - fetchFromGitHub, - gtk4, - libadwaita, - tdlib, - rlottie, - rustPlatform, - meson, - ninja, - pkg-config, - rustc, - cargo, - desktop-file-utils, - blueprint-compiler, - libxml2, - libshumate, - gst_all_1, - buildPackages, -}: - -let - pname = "paper-plane"; - version = "0.1.0-beta.5"; - - src = fetchFromGitHub { - owner = "paper-plane-developers"; - repo = "paper-plane"; - tag = "v${version}"; - hash = "sha256-qcAHxNnF980BHMqLF86M06YQnEN5L/8nkyrX6HQjpBA="; - }; - - # Paper Plane requires a patch to the gtk4, but may be removed later - # https://github.com/paper-plane-developers/paper-plane/tree/main?tab=readme-ov-file#prerequisites - gtk4-paperplane = gtk4.overrideAttrs (prev: { - patches = (prev.patches or [ ]) ++ [ "${src}/build-aux/gtk-reversed-list.patch" ]; - }); - wrapPaperPlaneHook = buildPackages.wrapGAppsHook3.override { - gtk3 = gtk4-paperplane; - }; - # libadwaita has gtk4 in propagatedBuildInputs so it must be overrided - # to avoid linking two libraries, while libshumate doesn't - libadwaita-paperplane = libadwaita.override { - gtk4 = gtk4-paperplane; - }; - tdlib-paperplane = tdlib.overrideAttrs (prev: { - pname = "tdlib-paperplane"; - version = "1.8.19"; - src = fetchFromGitHub { - owner = "tdlib"; - repo = "td"; - rev = "2589c3fd46925f5d57e4ec79233cd1bd0f5d0c09"; - hash = "sha256-mbhxuJjrV3nC8Ja7N0WWF9ByHovJLmoLLuuzoU4khjU="; - }; - postPatch = '' - substituteInPlace CMakeLists.txt \ - --replace-fail "cmake_minimum_required(VERSION 3.0.2 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)" - substituteInPlace td/generate/tl-parser/CMakeLists.txt \ - --replace-fail "cmake_minimum_required(VERSION 3.0 FATAL_ERROR)" "cmake_minimum_required(VERSION 3.10)" - ''; - }); - rlottie-paperplane = rlottie.overrideAttrs (prev: { - pname = "rlottie-paperplane"; - version = "0-unstable-2022-09-14"; - src = fetchFromGitHub { - owner = "paper-plane-developers"; - repo = "rlottie"; - rev = "1dd47cec7eb8e1f657f02dce9c497ae60f7cf8c5"; - hash = "sha256-OIKnDikuJuRIR9Jvl1PnUA9UAV09EmgGdDTeWoVi7jk="; - }; - patches = [ ]; - env.NIX_CFLAGS_COMPILE = prev.env.NIX_CFLAGS_COMPILE + " -Wno-error"; - }); -in -stdenv.mkDerivation { - inherit pname version src; - - cargoDeps = rustPlatform.fetchCargoVendor { - inherit pname version src; - hash = "sha256-QEX7w8eMV7DJFONjq23o8eCV+lliugS0pcdufFhcZrM="; - }; - - nativeBuildInputs = [ - meson - ninja - pkg-config - rustPlatform.cargoSetupHook - rustPlatform.bindgenHook - rustc - cargo - wrapPaperPlaneHook - desktop-file-utils - blueprint-compiler - libxml2.bin - ]; - - buildInputs = [ - libshumate - libadwaita-paperplane - tdlib-paperplane - rlottie-paperplane - gst_all_1.gstreamer - gst_all_1.gst-libav - gst_all_1.gst-plugins-base - gst_all_1.gst-plugins-good - ]; - - mesonFlags = [ - # The API ID and hash provided here are for use with Paper Plane only. - # Redistribution of the key in Nixpkgs has been explicitly permitted - # by Paper Plane developers. Please do not use it in other projects. - "-Dtg_api_id=22303002" - "-Dtg_api_hash=3cc0969992690f032197e6609b296599" - ]; - - # Workaround for the gettext-sys issue - # https://github.com/Koka/gettext-rs/issues/114 - env.NIX_CFLAGS_COMPILE = lib.optionalString ( - stdenv.cc.isClang && lib.versionAtLeast stdenv.cc.version "16" - ) "-Wno-error=incompatible-function-pointer-types"; - - meta = { - homepage = "https://github.com/paper-plane-developers/paper-plane"; - description = "Chat over Telegram on a modern and elegant client"; - longDescription = '' - Paper Plane is an alternative Telegram client. It uses libadwaita - for its user interface and strives to meet the design principles - of the GNOME desktop. - ''; - license = lib.licenses.gpl3Plus; - maintainers = with lib.maintainers; [ aleksana ]; - mainProgram = "paper-plane"; - platforms = lib.platforms.unix; - }; -} diff --git a/pkgs/by-name/pe/persistent-cache-cpp/package.nix b/pkgs/by-name/pe/persistent-cache-cpp/package.nix index 0db45ec2837d..e3651b102035 100644 --- a/pkgs/by-name/pe/persistent-cache-cpp/package.nix +++ b/pkgs/by-name/pe/persistent-cache-cpp/package.nix @@ -2,6 +2,7 @@ stdenv, lib, fetchFromGitLab, + fetchpatch, gitUpdater, testers, boost, @@ -32,6 +33,15 @@ stdenv.mkDerivation (finalAttrs: { "doc" ]; + patches = [ + # Remove when version > 1.0.9 + (fetchpatch { + name = "0001-persistent-cache-cpp-Fix-compatibility-with-Boost-1.89.patch"; + url = "https://gitlab.com/ubports/development/core/lib-cpp/persistent-cache-cpp/-/commit/121397b58bdb2d6750a41bec0cf1676e4e9b8cf5.patch"; + hash = "sha256-QKPf5E49NNZ+rzCCknJNQjcd/bEgHuh23RBM892Xz1o="; + }) + ]; + postPatch = '' # Wrong concatenation substituteInPlace data/libpersistent-cache-cpp.pc.in \ diff --git a/pkgs/by-name/ra/radicle-explorer/package.nix b/pkgs/by-name/ra/radicle-explorer/package.nix index 75a993bf3aec..3a268662b20a 100644 --- a/pkgs/by-name/ra/radicle-explorer/package.nix +++ b/pkgs/by-name/ra/radicle-explorer/package.nix @@ -75,7 +75,7 @@ lib.fix ( # radicle-httpd using a more limited sparse checkout we need to carry a # separate hash. src = radicle-httpd.src.override { - hash = "sha256-Zt9RiuloWmb1eL6f2Gotvy+FMTUvSokOEGOIBrBeO/E="; + hash = "sha256-8lMUPt2eVlspMlRxUjOvjtCsd/EXg0IDSVjXxMVzbe4="; sparseCheckout = [ ]; }; diff --git a/pkgs/by-name/ra/radicle-httpd/package.nix b/pkgs/by-name/ra/radicle-httpd/package.nix index befead34f38f..2546734433e8 100644 --- a/pkgs/by-name/ra/radicle-httpd/package.nix +++ b/pkgs/by-name/ra/radicle-httpd/package.nix @@ -15,7 +15,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "radicle-httpd"; - version = "0.23.0"; + version = "0.24.0"; env.RADICLE_VERSION = finalAttrs.version; @@ -25,12 +25,12 @@ rustPlatform.buildRustPackage (finalAttrs: { repo = "z4V1sjrXqjvFdnCUbxPFqd5p4DtH5"; tag = "releases/${finalAttrs.version}"; sparseCheckout = [ "radicle-httpd" ]; - hash = "sha256-OpDW6qJOHN4f4smhc1vNO0DRzJW6114gQV4K1ZNicag="; + hash = "sha256-749hFe7GJz/YUmocW5MO7uKWLTo3W4wJYSXdIURcRtg="; }; sourceRoot = "${finalAttrs.src.name}/radicle-httpd"; - cargoHash = "sha256-m/2pP1mCU4SvPXU3qWOpbh3H/ykTOGgERYcP8Iu5DDs="; + cargoHash = "sha256-6uHukSsNnnk11tudFnNvNd+ZXmwGxMSYArsiaCaabWk="; nativeBuildInputs = [ asciidoctor diff --git a/pkgs/by-name/ra/rattler-build/package.nix b/pkgs/by-name/ra/rattler-build/package.nix index bc7f19c12254..a6b4cdbf67c8 100644 --- a/pkgs/by-name/ra/rattler-build/package.nix +++ b/pkgs/by-name/ra/rattler-build/package.nix @@ -14,16 +14,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "rattler-build"; - version = "0.57.2"; + version = "0.58.0"; src = fetchFromGitHub { owner = "prefix-dev"; repo = "rattler-build"; tag = "v${finalAttrs.version}"; - hash = "sha256-N8sNK/twsDQQt4WQh+4jB6yUX7Aj7kyIt3T0vabzv6U="; + hash = "sha256-PQXPAovUYOzPdMzK1Pu2TcQT+8LTXtJrlSII7uwORLI="; }; - cargoHash = "sha256-3uGrCDvaKZCusdHtqyAQ+9T6K6ZWovgBB4z/ZsrviU0="; + cargoHash = "sha256-h/0zlZj4+GD8tYcr9Ta1g6JAILK4LbM5an448+VrVHE="; doCheck = false; # test requires network access diff --git a/pkgs/by-name/re/reaper-go/package.nix b/pkgs/by-name/re/reaper-go/package.nix index 7943f2020afe..fc2e946e0f2e 100644 --- a/pkgs/by-name/re/reaper-go/package.nix +++ b/pkgs/by-name/re/reaper-go/package.nix @@ -6,16 +6,16 @@ buildGoModule (finalAttrs: { pname = "reaper-go"; - version = "0.2.6"; + version = "3.0.0"; src = fetchFromGitHub { owner = "ghostsecurity"; repo = "reaper"; tag = "v${finalAttrs.version}"; - hash = "sha256-ZSHG4pQTo+Z05MvBqFoscMaZuezScTuszOF8hn4UZXs="; + hash = "sha256-HPY0K+VC3XCYOMz+J1Nhz1+cNkbxCFeA161vblzE63M="; }; - vendorHash = "sha256-Kn/anDDHWfapWB/ZHu4MRmEQ7Nn8hjUMS+LWK9Dx/g4="; + vendorHash = "sha256-INK3esHVaUFrnCxd/U5s2AjYzUYDxI4OpFXskpzwOSU="; ldflags = [ "-s" diff --git a/pkgs/by-name/re/redmine/Gemfile.lock b/pkgs/by-name/re/redmine/Gemfile.lock index 4b962c0cd4cd..c91336ba1aea 100644 --- a/pkgs/by-name/re/redmine/Gemfile.lock +++ b/pkgs/by-name/re/redmine/Gemfile.lock @@ -123,9 +123,9 @@ GEM doorkeeper-i18n (5.2.8) doorkeeper (>= 5.2) drb (2.2.3) - erb (6.0.1) + erb (6.0.2) erubi (1.13.1) - faraday (2.14.0) + faraday (2.14.1) faraday-net_http (>= 2.0, < 3.5) json logger @@ -150,8 +150,9 @@ GEM activesupport (>= 6.0.0) railties (>= 6.0.0) io-console (0.8.2) - irb (1.16.0) + irb (1.17.0) pp (>= 0.6.0) + prism (>= 1.3.0) rdoc (>= 4.0.0) reline (>= 0.4.2) json (2.18.1) @@ -177,14 +178,14 @@ GEM mime-types (3.7.0) logger mime-types-data (~> 3.2025, >= 3.2025.0507) - mime-types-data (3.2026.0203) + mime-types-data (3.2026.0224) mini_magick (5.2.0) benchmark logger mini_mime (1.1.5) mini_portile2 (2.8.9) minitest (5.27.0) - mocha (3.0.1) + mocha (3.0.2) ruby2_keywords (>= 0.0.5) multi_xml (0.8.1) bigdecimal (>= 3.1, < 5) @@ -216,7 +217,7 @@ GEM snaky_hash (~> 2.0, >= 2.0.3) version_gem (~> 1.1, >= 1.1.9) parallel (1.27.0) - parser (3.3.10.1) + parser (3.3.10.2) ast (~> 2.4.1) racc pg (1.5.9) @@ -236,7 +237,7 @@ GEM puma (7.2.0) nio4r (~> 2.0) racc (1.8.1) - rack (3.2.4) + rack (3.2.5) rack-session (2.1.1) base64 (>= 0.1.0) rack (>= 3.0.0) @@ -262,8 +263,8 @@ GEM activesupport (>= 5.0.0) minitest nokogiri (>= 1.6) - rails-html-sanitizer (1.6.2) - loofah (~> 2.21) + rails-html-sanitizer (1.7.0) + loofah (~> 2.25) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) railties (7.2.3) actionpack (= 7.2.3) @@ -287,7 +288,7 @@ GEM htmlentities rbpdf-font (~> 1.19.0) rbpdf-font (1.19.1) - rdoc (7.1.0) + rdoc (7.2.0) erb psych (>= 4.0.0) tsort @@ -345,7 +346,7 @@ GEM crass (~> 1.0.2) nokogiri (>= 1.12.0) securerandom (0.4.1) - selenium-webdriver (4.40.0) + selenium-webdriver (4.41.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -396,7 +397,7 @@ GEM xpath (3.2.0) nokogiri (~> 1.8) yard (0.9.38) - zeitwerk (2.7.4) + zeitwerk (2.7.5) PLATFORMS ruby diff --git a/pkgs/by-name/re/redmine/gemset.nix b/pkgs/by-name/re/redmine/gemset.nix index 4938f8069f3f..65b2eea0c704 100644 --- a/pkgs/by-name/re/redmine/gemset.nix +++ b/pkgs/by-name/re/redmine/gemset.nix @@ -550,10 +550,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1rcpq49pyaiclpjp3c3qjl25r95hqvin2q2dczaynaj7qncxvv18"; + sha256 = "0ar4nmvk1sk7drjigqyh9nnps3mxg625b8chfk42557p8i6jdrlz"; type = "gem"; }; - version = "6.0.1"; + version = "6.0.2"; }; erubi = { groups = [ "default" ]; @@ -578,10 +578,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1ka175ci0q9ylpcy651pjj580diplkaskycn4n7jcmbyv7jwz6c6"; + sha256 = "077n5ss3z3ds4vj54w201kd12smai853dp9c9n7ii7g3q7nwwg54"; type = "gem"; }; - version = "2.14.0"; + version = "2.14.1"; }; faraday-net_http = { dependencies = [ "net-http" ]; @@ -750,6 +750,7 @@ irb = { dependencies = [ "pp" + "prism" "rdoc" "reline" ]; @@ -761,10 +762,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "01h8bdksg0cr8bw5dhlhr29ix33rp822jmshy6rdqz4lmk4mdgia"; + sha256 = "1bishrxfn2anwlagw8rzly7i2yicjnr947f48nh638yqjgdlv30n"; type = "gem"; }; - version = "1.16.0"; + version = "1.17.0"; }; json = { groups = [ @@ -927,10 +928,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0bradmf21c9g4z6f3hvqmnf6i2sbgp0630y2j5rq8a7h79lksdal"; + sha256 = "1zg5cyzhkdzkygspl676h8pad83l6gmwykvcd4snjzxkd00jx85y"; type = "gem"; }; - version = "3.2026.0203"; + version = "3.2026.0224"; }; mini_magick = { dependencies = [ @@ -993,10 +994,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0sblxmlf7m0wpz71vdjygjn53cfw42j0mmjp4zx6rpz3b5cjry3l"; + sha256 = "1y1dx5crlx7ppshzv7qqfj0mgpvzyxc0f107mvsvywcb3m9jk01x"; type = "gem"; }; - version = "3.0.1"; + version = "3.0.2"; }; multi_xml = { dependencies = [ "bigdecimal" ]; @@ -1182,10 +1183,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1256ws3w3gnfqj7r3yz2i9y1y7k38fhjphxpybkyb4fds8jsgxh6"; + sha256 = "0mwk9syajzdradzqzp3agf03d0cazqwbfd1439nxpkmxli5chq3g"; type = "gem"; }; - version = "3.3.10.1"; + version = "3.3.10.2"; }; pg = { groups = [ "default" ]; @@ -1229,6 +1230,7 @@ prism = { groups = [ "default" + "development" "test" ]; platforms = [ ]; @@ -1319,10 +1321,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "1xmnrk076sqymilydqgyzhkma3hgqhcv8xhy7ks479l2a3vvcx2x"; + sha256 = "1lyn3rh71rlf50p44xmsbha0pip4c95004j8kc9pm7xpq1s0kgac"; type = "gem"; }; - version = "3.2.4"; + version = "3.2.5"; }; rack-session = { dependencies = [ @@ -1411,10 +1413,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0q55i6mpad20m2x1lg5pkqfpbmmapk0sjsrvr1sqgnj2hb5f5z1m"; + sha256 = "128y5g3fyi8fds41jasrr4va1jrs7hcamzklk1523k7rxb64bc98"; type = "gem"; }; - version = "1.6.2"; + version = "1.7.0"; }; railties = { dependencies = [ @@ -1546,10 +1548,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0qvky4s2fx5xbaz1brxanalqbcky3c7xbqd6dicpih860zgrjj29"; + sha256 = "14iiyb4yi1chdzrynrk74xbhmikml3ixgdayjma3p700singfl46"; type = "gem"; }; - version = "7.1.0"; + version = "7.2.0"; }; regexp_parser = { groups = [ @@ -1841,10 +1843,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0nsys7ghl99zn2n4zjw3bi697qqnm6pmmi7aaafln79whnlpmvqn"; + sha256 = "08nxpr0lxn95ml19n0vy6dnw1gnhq9n1b0za5h18dwawsly1ghfd"; type = "gem"; }; - version = "4.40.0"; + version = "4.41.0"; }; simplecov = { dependencies = [ @@ -2198,9 +2200,9 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "12zcvhzfnlghzw03czy2ifdlyfpq0kcbqcmxqakfkbxxavrr1vrb"; + sha256 = "1pbkiwwla5gldgb3saamn91058nl1sq1344l5k36xsh9ih995nnq"; type = "gem"; }; - version = "2.7.4"; + version = "2.7.5"; }; } diff --git a/pkgs/by-name/re/redmine/package.nix b/pkgs/by-name/re/redmine/package.nix index 6bb71a66e369..a226ae68009a 100644 --- a/pkgs/by-name/re/redmine/package.nix +++ b/pkgs/by-name/re/redmine/package.nix @@ -4,7 +4,7 @@ stdenvNoCC, fetchurl, bundlerEnv, - ruby_3_3, + ruby_3_4, makeWrapper, nixosTests, openssl, @@ -19,7 +19,7 @@ let rubyEnv = bundlerEnv { name = "redmine-env-${version}"; - ruby = ruby_3_3; + ruby = ruby_3_4; gemdir = ./.; groups = [ "development" diff --git a/pkgs/by-name/ry/ryokucha/package.nix b/pkgs/by-name/ry/ryokucha/package.nix index 35ab71b0111b..8edb6dd23a80 100644 --- a/pkgs/by-name/ry/ryokucha/package.nix +++ b/pkgs/by-name/ry/ryokucha/package.nix @@ -11,13 +11,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "ryokucha"; - version = "0.3.1"; + version = "0.4.0"; src = fetchFromGitHub { owner = "ryonakano"; repo = "ryokucha"; rev = finalAttrs.version; - hash = "sha256-bmN8ZiFjUXtWMrZz7BJtO/9TMjcc4d3x8EpFvhvsewY="; + hash = "sha256-imKZSbNZHKIbLtD9E0D+AaKTvGSz8u2/2dJR0cpn/fo="; }; outputs = [ diff --git a/pkgs/by-name/ti/tigerbeetle/package.nix b/pkgs/by-name/ti/tigerbeetle/package.nix index 4e3cd89630da..d2a4c7581d82 100644 --- a/pkgs/by-name/ti/tigerbeetle/package.nix +++ b/pkgs/by-name/ti/tigerbeetle/package.nix @@ -10,14 +10,14 @@ let platform = if stdenvNoCC.hostPlatform.isDarwin then "universal-macos" else stdenvNoCC.hostPlatform.system; hash = builtins.getAttr platform { - "universal-macos" = "sha256-QKp57vN1ilcItu7zVab3p+VbFhnQxrtT8O/UwQj4YY8="; - "x86_64-linux" = "sha256-mpLKxgHwLyQOffODSOgOddwwPDd+hY46AxNVAwe5MQA="; - "aarch64-linux" = "sha256-rzoOkWauDZcJ0U2NmNTDPuBJCNJ6s9qyfJIrNbPNQMA="; + "universal-macos" = "sha256-93ELKDCjdEPnQO71CiwoeiVfNNVPbMAyXxeOG+1DY1E="; + "x86_64-linux" = "sha256-+5Ldd6APomJQZdahEywOGthmUyb89wpQrWrQ8pSU1yk="; + "aarch64-linux" = "sha256-VfJ8VthOi038zZSu7MwbOOP8FdTZnoYSU65TLZYyUSs="; }; in stdenvNoCC.mkDerivation (finalAttrs: { pname = "tigerbeetle"; - version = "0.16.73"; + version = "0.16.74"; src = fetchzip { url = "https://github.com/tigerbeetle/tigerbeetle/releases/download/${finalAttrs.version}/tigerbeetle-${platform}.zip"; diff --git a/pkgs/by-name/to/tor-browser/package.nix b/pkgs/by-name/to/tor-browser/package.nix index ea8863784510..407888bb80b8 100644 --- a/pkgs/by-name/to/tor-browser/package.nix +++ b/pkgs/by-name/to/tor-browser/package.nix @@ -102,7 +102,7 @@ let ++ lib.optionals mediaSupport [ ffmpeg_7 ] ); - version = "15.0.6"; + version = "15.0.7"; sources = { x86_64-linux = fetchurl { @@ -112,7 +112,7 @@ let "https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz" "https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-x86_64-${version}.tar.xz" ]; - hash = "sha256-ARHkr311mk4mIK+MruEiFLVa2tuJyrjl35moYDmROMo="; + hash = "sha256-/zUA3o9zPdZ/MZan5Uc2puGN+S8QvB42QtXDo8MucVM="; }; i686-linux = fetchurl { @@ -122,7 +122,7 @@ let "https://tor.eff.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz" "https://tor.calyxinstitute.org/dist/torbrowser/${version}/tor-browser-linux-i686-${version}.tar.xz" ]; - hash = "sha256-yO+iALaU5dqdk0fWKqpcCProNIqi5ilnfZpcga3JTWI="; + hash = "sha256-GZ2MT8bSVMKLwgTZGYYegdW94e6mJ97+oMBeZJMlHvY="; }; }; diff --git a/pkgs/by-name/tr/traefik/package.nix b/pkgs/by-name/tr/traefik/package.nix index a5dda5631657..e906a1a2284b 100644 --- a/pkgs/by-name/tr/traefik/package.nix +++ b/pkgs/by-name/tr/traefik/package.nix @@ -8,16 +8,16 @@ buildGo125Module (finalAttrs: { pname = "traefik"; - version = "3.6.8"; + version = "3.6.9"; # Archive with static assets for webui src = fetchzip { url = "https://github.com/traefik/traefik/releases/download/v${finalAttrs.version}/traefik-v${finalAttrs.version}.src.tar.gz"; - hash = "sha256-tZSU4DER94BTPrn1wxfew/xoADtvtRAu3O1O7dR3s+c="; + hash = "sha256-FM4SdiEB1hY064qDZD0BaKezmvzsGd85uIE49u4fx70="; stripRoot = false; }; - vendorHash = "sha256-ZvAVsyET2g9Y+N7pPn+JG8th2I385wgp5hTgEG9d26o="; + vendorHash = "sha256-rousXyjb2WcXNG6wG7Ddd8qanarrEKcdQO/8C4PS4Bs="; proxyVendor = true; diff --git a/pkgs/by-name/ty/ty/package.nix b/pkgs/by-name/ty/ty/package.nix index 04c464032b92..c078c7b1c2a7 100644 --- a/pkgs/by-name/ty/ty/package.nix +++ b/pkgs/by-name/ty/ty/package.nix @@ -14,14 +14,14 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "ty"; - version = "0.0.18"; + version = "0.0.19"; src = fetchFromGitHub { owner = "astral-sh"; repo = "ty"; tag = finalAttrs.version; fetchSubmodules = true; - hash = "sha256-GinkBZcRD9vxEHSGDoZb/TkpSPmPYoYOQ0tmrP8zJ+c="; + hash = "sha256-KBpbkwmbUzuNDcoUyf4Osz5HSW21d6gBu2mOqdOH+ng="; }; # For Darwin platforms, remove the integration test for file notifications, @@ -35,7 +35,7 @@ rustPlatform.buildRustPackage (finalAttrs: { cargoBuildFlags = [ "--package=ty" ]; - cargoHash = "sha256-3GCPejBOyLRZpanFrXHlaLWImMUEmoSejCazzG5sVfo="; + cargoHash = "sha256-L0jCIlmHHra0ofsbWZykL6KoYWuwSaUBDXKh49AfKKM="; nativeBuildInputs = [ installShellFiles ]; diff --git a/pkgs/by-name/va/valkey/package.nix b/pkgs/by-name/va/valkey/package.nix index fbaafb427ebb..b11bcdfa4960 100644 --- a/pkgs/by-name/va/valkey/package.nix +++ b/pkgs/by-name/va/valkey/package.nix @@ -25,13 +25,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "valkey"; - version = "9.0.2"; + version = "9.0.3"; src = fetchFromGitHub { owner = "valkey-io"; repo = "valkey"; rev = finalAttrs.version; - hash = "sha256-r0EbZn2j5QsKnt3PDq0+kTi49OyPQDtIyL8zhKkTP1M="; + hash = "sha256-cic4XBRFcSyttaMK6grzmi/RmrZiLRnYjMwGiU9teMw="; }; patches = lib.optional useSystemJemalloc ./use_system_jemalloc.patch; diff --git a/pkgs/by-name/vo/volt/package.nix b/pkgs/by-name/vo/volt/package.nix index fae896c4273c..ae6a213f2724 100644 --- a/pkgs/by-name/vo/volt/package.nix +++ b/pkgs/by-name/vo/volt/package.nix @@ -6,16 +6,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "volt"; - version = "1.5.0"; + version = "1.5.1"; src = fetchFromGitHub { owner = "hqnna"; repo = "volt"; tag = "v${finalAttrs.version}"; - hash = "sha256-o/wMeZca7ttTwRSqp5l6XmurDT1oClq7nvfv6WgnSj8="; + hash = "sha256-P14jLoONO3eFJ6DzHigAkZXZ++gcBHpJuK7+sVcBARM="; }; - cargoHash = "sha256-HIae9ZpFsa/XCkoesAaiWaotNloYCz+Km9cICM6r4qE="; + cargoHash = "sha256-3E4fZRxB+kF4fW7WCl+sLkDaQt0Z0tgGfzixvSNZP1c="; meta = { description = "Ergonomic terminal settings editor for the Amp coding agent"; diff --git a/pkgs/by-name/wi/wireshark/package.nix b/pkgs/by-name/wi/wireshark/package.nix index 5293c378af7e..fe93c80535cd 100644 --- a/pkgs/by-name/wi/wireshark/package.nix +++ b/pkgs/by-name/wi/wireshark/package.nix @@ -59,7 +59,7 @@ in stdenv.mkDerivation (finalAttrs: { pname = "wireshark-${if withQt then "qt" else "cli"}"; - version = "4.6.3"; + version = "4.6.4"; outputs = [ "out" @@ -70,7 +70,7 @@ stdenv.mkDerivation (finalAttrs: { repo = "wireshark"; owner = "wireshark"; tag = "v${finalAttrs.version}"; - hash = "sha256-DthYkAW6UYnsDLQf2h3jgJB8RZoasjREWV1NTtZv7PQ="; + hash = "sha256-h254dXxloBC5xQYcpeaLlAj2Ip4eQWHYSPPJLkIwQZw="; }; patches = [ diff --git a/pkgs/by-name/xd/xdg-desktop-portal-cosmic/package.nix b/pkgs/by-name/xd/xdg-desktop-portal-cosmic/package.nix index 890b03153145..a69f9f60f8a8 100644 --- a/pkgs/by-name/xd/xdg-desktop-portal-cosmic/package.nix +++ b/pkgs/by-name/xd/xdg-desktop-portal-cosmic/package.nix @@ -17,7 +17,7 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "xdg-desktop-portal-cosmic"; - version = "1.0.7"; + version = "1.0.8"; # nixpkgs-update: no auto update src = fetchFromGitHub { diff --git a/pkgs/by-name/za/zapzap/package.nix b/pkgs/by-name/za/zapzap/package.nix index 0ba38ef59de9..b3b2fa1dd18b 100644 --- a/pkgs/by-name/za/zapzap/package.nix +++ b/pkgs/by-name/za/zapzap/package.nix @@ -7,14 +7,14 @@ python3Packages.buildPythonApplication (finalAttrs: { pname = "zapzap"; - version = "6.2.10.1"; + version = "6.3.2"; pyproject = true; src = fetchFromGitHub { owner = "rafatosta"; repo = "zapzap"; tag = finalAttrs.version; - hash = "sha256-dNHDR9sZWPetdwpS5u0UCn5sCkDMEw5YoE4QBerU2Sg="; + hash = "sha256-PWs6W22ksZmPu3H3Yk535t0J4rfwGov5XaKMJBCXIIA="; }; nativeBuildInputs = [ diff --git a/pkgs/desktops/lomiri/services/biometryd/default.nix b/pkgs/desktops/lomiri/services/biometryd/default.nix index e02025cb850d..db01da04bb95 100644 --- a/pkgs/desktops/lomiri/services/biometryd/default.nix +++ b/pkgs/desktops/lomiri/services/biometryd/default.nix @@ -2,10 +2,10 @@ stdenv, lib, fetchFromGitLab, + fetchpatch, gitUpdater, testers, - # https://gitlab.com/ubports/development/core/biometryd/-/issues/8 - boost186, + boost, cmake, cmake-extras, dbus, @@ -39,6 +39,15 @@ stdenv.mkDerivation (finalAttrs: { "dev" ]; + patches = [ + # Remove when version > 0.4.0 + (fetchpatch { + name = "0001-biometryd-Fix-compatibility-with-Boost-1.87.patch"; + url = "https://gitlab.com/ubports/development/core/biometryd/-/commit/8def6dfb18ee56971f0f64e3622af2a5a39ab0f6.patch"; + hash = "sha256-PddZRML4Gc+s4aNeOyZwJJjmPSixMGFVFNcrO9dNDSI="; + }) + ]; + postPatch = '' # Substitute systemd's prefix in pkg-config call substituteInPlace data/CMakeLists.txt \ @@ -66,7 +75,7 @@ stdenv.mkDerivation (finalAttrs: { ]; buildInputs = [ - boost186 + boost cmake-extras dbus dbus-cpp diff --git a/pkgs/desktops/lomiri/services/lomiri-polkit-agent/1001-Fix-compat-with-libnotify-0.8.8.patch b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/1001-Fix-compat-with-libnotify-0.8.8.patch new file mode 100644 index 000000000000..a741c5442cd0 --- /dev/null +++ b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/1001-Fix-compat-with-libnotify-0.8.8.patch @@ -0,0 +1,36 @@ +From df28165c0955ab963aeda41ffda86651115f4efb Mon Sep 17 00:00:00 2001 +From: OPNA2608 +Date: Tue, 24 Feb 2026 21:04:37 +0100 +Subject: [PATCH] tests/authentication-test.cpp: Fix compat with libnotify + 0.8.8 + +--- + tests/authentication-test.cpp | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/tests/authentication-test.cpp b/tests/authentication-test.cpp +index 8c74867..2fee42d 100644 +--- a/tests/authentication-test.cpp ++++ b/tests/authentication-test.cpp +@@ -245,12 +245,16 @@ TEST_F(AuthenticationTest, BasicRequest) + EXPECT_EQ("Cancel", dialogs[0].actions[3]); + + /* Hints */ +-#if (NOTIFY_VERSION_MAJOR >= 0) && (NOTIFY_VERSION_MINOR >= 8) ++#if NOTIFY_CHECK_VERSION(0, 8, 0) ++#if NOTIFY_CHECK_VERSION(0, 8, 8) ++ EXPECT_EQ(4, dialogs[0].hints.size()); ++#else + EXPECT_EQ(3, dialogs[0].hints.size()); ++#endif // NOTIFY_CHECK_VERSION(0, 8, 8) + EXPECT_NE(dialogs[0].hints.end(), dialogs[0].hints.find("sender-pid")); + #else + EXPECT_EQ(2, dialogs[0].hints.size()); +-#endif ++#endif // NOTIFY_CHECK_VERSION(0, 8, 0) + EXPECT_NE(dialogs[0].hints.end(), dialogs[0].hints.find("x-lomiri-snap-decisions")); + EXPECT_NE(dialogs[0].hints.end(), dialogs[0].hints.find("x-lomiri-private-menu-model")); + +-- +2.51.2 + diff --git a/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix index 468d847f1469..daea4403b05b 100644 --- a/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-polkit-agent/default.nix @@ -27,6 +27,11 @@ stdenv.mkDerivation (finalAttrs: { hash = "sha256-JKU2lm5wco9aC2cu3lgJ9OfGAzKQO/wQXFPEdb9Uz3Y="; }; + patches = [ + # Remove when https://gitlab.com/ubports/development/core/lomiri-polkit-agent/-/merge_requests/17 merged & in release + ./1001-Fix-compat-with-libnotify-0.8.8.patch + ]; + strictDeps = true; nativeBuildInputs = [ diff --git a/pkgs/desktops/lomiri/services/lomiri-telephony-service/default.nix b/pkgs/desktops/lomiri/services/lomiri-telephony-service/default.nix index 0c387ce96abb..6675c88c140b 100644 --- a/pkgs/desktops/lomiri/services/lomiri-telephony-service/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-telephony-service/default.nix @@ -8,6 +8,7 @@ ayatana-indicator-messages, bash, cmake, + ctestCheckHook, dbus, dbus-glib, dbus-test-runner, @@ -111,6 +112,7 @@ stdenv.mkDerivation (finalAttrs: { ]; nativeCheckInputs = [ + ctestCheckHook dbus-test-runner dconf gnome-keyring @@ -124,27 +126,6 @@ stdenv.mkDerivation (finalAttrs: { # These rely on libphonenumber reformatting inputs to certain results # Seem to be broken for a small amount of numbers, maybe libphonenumber version change? (lib.cmakeBool "SKIP_QML_TESTS" true) - (lib.cmakeFeature "CMAKE_CTEST_ARGUMENTS" ( - lib.concatStringsSep ";" [ - # Exclude tests - "-E" - (lib.strings.escapeShellArg "(${ - lib.concatStringsSep "|" [ - # Flaky, randomly failing to launch properly & stuck until test timeout - # https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/issues/70 - "^HandlerTest" - "^OfonoAccountEntryTest" - "^TelepathyHelperSetupTest" - "^AuthHandlerTest" - "^ChatManagerTest" - "^AccountEntryTest" - "^AccountEntryFactoryTest" - "^PresenceRequestTest" - "^CallEntryTest" - ] - })") - ] - )) ]; env.NIX_CFLAGS_COMPILE = toString [ @@ -158,6 +139,25 @@ stdenv.mkDerivation (finalAttrs: { # Starts & talks to D-Bus services, breaks with parallelism enableParallelChecking = false; + disabledTests = [ + # Flaky, randomly failing to launch properly & stuck until test timeout + # https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/issues/70 + "AccountEntryTest" + "AccountEntryFactoryTest" + "AuthHandlerTest" + "CallEntryTest" + "ChatManagerTest" + "HandlerTest" + "OfonoAccountEntryTest" + "PresenceRequestTest" + "TelepathyHelperSetupTest" + + # Failing most of the time since libnotify 0.8.8 + # https://gitlab.com/ubports/development/core/lomiri-telephony-service/-/issues/75 + "ApproverTest" + "MessagingMenuTest" + ]; + preCheck = '' export QT_QPA_PLATFORM=minimal export QT_PLUGIN_PATH=${ diff --git a/pkgs/desktops/lomiri/services/lomiri-thumbnailer/default.nix b/pkgs/desktops/lomiri/services/lomiri-thumbnailer/default.nix index ef3ef0f8b044..a19023f42b5d 100644 --- a/pkgs/desktops/lomiri/services/lomiri-thumbnailer/default.nix +++ b/pkgs/desktops/lomiri/services/lomiri-thumbnailer/default.nix @@ -76,6 +76,14 @@ stdenv.mkDerivation (finalAttrs: { # Tests run in parallel to other builds, don't suck up cores substituteInPlace tests/headers/compile_headers.py \ --replace-fail 'max_workers=multiprocessing.cpu_count()' "max_workers=1" + '' + # https://gitlab.com/ubports/development/core/lomiri-thumbnailer/-/merge_requests/31 + # Too simple to bother with fetchpatch + + '' + substituteInPlace CMakeLists.txt \ + --replace-fail \ + 'find_package(Boost COMPONENTS filesystem iostreams regex system REQUIRED)' \ + 'find_package(Boost COMPONENTS filesystem iostreams regex REQUIRED)' ''; strictDeps = true; diff --git a/pkgs/development/python-modules/a2a-sdk/default.nix b/pkgs/development/python-modules/a2a-sdk/default.nix index 960b7d04ee19..c640fcb4bdf4 100644 --- a/pkgs/development/python-modules/a2a-sdk/default.nix +++ b/pkgs/development/python-modules/a2a-sdk/default.nix @@ -33,14 +33,14 @@ buildPythonPackage (finalAttrs: { pname = "a2a-sdk"; - version = "0.3.23"; + version = "0.3.24"; pyproject = true; src = fetchFromGitHub { owner = "a2aproject"; repo = "a2a-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-F7tu+coSNNrLT36DFaHdoFe7hBG5lA69O5ktnxfJlZI="; + hash = "sha256-NnLyLCoUFzTp9ji8OE+JxtCHMzy0Ri3uPLoN2HyAjxU="; }; build-system = [ diff --git a/pkgs/development/python-modules/aiotools/default.nix b/pkgs/development/python-modules/aiotools/default.nix new file mode 100644 index 000000000000..407f8a55725c --- /dev/null +++ b/pkgs/development/python-modules/aiotools/default.nix @@ -0,0 +1,45 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + setuptools-scm, + async-lru, + pytestCheckHook, + pytest-asyncio, +}: + +buildPythonPackage (finalAttrs: { + pname = "aiotools"; + version = "2.2.3"; + pyproject = true; + + src = fetchFromGitHub { + owner = "achimnol"; + repo = "aiotools"; + tag = finalAttrs.version; + hash = "sha256-uIG3JPqep4NGtZa7Qo8SOK9Ca1GNKyuBasFtwR9oG8U="; + }; + + build-system = [ + setuptools-scm + ]; + + dependencies = [ + async-lru + ]; + + nativeCheckInputs = [ + pytestCheckHook + pytest-asyncio + ]; + + pythonImportsCheck = [ "aiotools" ]; + + meta = { + description = "Idiomatic asyncio utilities"; + homepage = "https://github.com/achimnol/aiotools"; + changelog = "https://github.com/achimnol/aiotools/blob/${finalAttrs.src.tag}/CHANGES.md"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ robertjakub ]; + }; +}) diff --git a/pkgs/development/python-modules/boto3-stubs/default.nix b/pkgs/development/python-modules/boto3-stubs/default.nix index e9450a880920..badb39a19970 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.42.55"; + version = "1.42.57"; pyproject = true; src = fetchPypi { pname = "boto3_stubs"; inherit (finalAttrs) version; - hash = "sha256-GB9NOhFGYDHKte9vXZ4uohc3b1CQTJiV6kcPomSALJQ="; + hash = "sha256-i+hnFoIEBs4JlvcqpY40uhoeu0OGfYpCPGCsj+lE8wM="; }; 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 5308896a1ba0..3f7177a39da8 100644 --- a/pkgs/development/python-modules/claude-agent-sdk/default.nix +++ b/pkgs/development/python-modules/claude-agent-sdk/default.nix @@ -13,14 +13,14 @@ buildPythonPackage (finalAttrs: { pname = "claude-agent-sdk"; - version = "0.1.41"; + version = "0.1.44"; pyproject = true; src = fetchFromGitHub { owner = "anthropics"; repo = "claude-agent-sdk-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-+UKf4lUgYI3gIa//uEkOTaVkIV3wN9rpEaHIDYpgdIc="; + hash = "sha256-YRXSQsJYNhwV43x1iQbnwm23Hllr/SXl8Fv91/AWh8Y="; }; build-system = [ hatchling ]; diff --git a/pkgs/development/python-modules/fastapi-sso/default.nix b/pkgs/development/python-modules/fastapi-sso/default.nix index 73598fa3fc10..b4eda6492b34 100644 --- a/pkgs/development/python-modules/fastapi-sso/default.nix +++ b/pkgs/development/python-modules/fastapi-sso/default.nix @@ -17,14 +17,14 @@ buildPythonPackage (finalAttrs: { pname = "fastapi-sso"; - version = "0.20.0"; + version = "0.21.0"; pyproject = true; src = fetchFromGitHub { owner = "tomasvotava"; repo = "fastapi-sso"; tag = finalAttrs.version; - hash = "sha256-bj6csovJSVhzVaPfktJ68cOgULVifT1Ql14SL+paVG0="; + hash = "sha256-5CtblFFKf1b7ja5zF6oTtdKvUdWR9cQypiK4XzMVA5s="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/firecrawl-py/default.nix b/pkgs/development/python-modules/firecrawl-py/default.nix index 3055d73165b5..efc8e3752b31 100644 --- a/pkgs/development/python-modules/firecrawl-py/default.nix +++ b/pkgs/development/python-modules/firecrawl-py/default.nix @@ -3,6 +3,7 @@ aiohttp, buildPythonPackage, fetchFromGitHub, + httpx, nest-asyncio, pydantic, python-dotenv, @@ -11,24 +12,25 @@ websockets, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "firecrawl-py"; - version = "2.7.0"; + version = "2.8.0"; pyproject = true; src = fetchFromGitHub { owner = "mendableai"; repo = "firecrawl"; - tag = "v${version}"; - hash = "sha256-l42FfMrkqeFuAB4Sibxe4J+lifePSu2naIySEUGPQW0="; + tag = "v${finalAttrs.version}"; + hash = "sha256-7dB3jdp5jkRiNx63C5sjs3t85fuz5vzurfvYY5jWQyU="; }; - sourceRoot = "${src.name}/apps/python-sdk"; + sourceRoot = "${finalAttrs.src.name}/apps/python-sdk"; build-system = [ setuptools ]; dependencies = [ aiohttp + httpx nest-asyncio pydantic python-dotenv @@ -44,8 +46,8 @@ buildPythonPackage rec { meta = { description = "Turn entire websites into LLM-ready markdown or structured data. Scrape, crawl and extract with a single API"; homepage = "https://firecrawl.dev"; - changelog = "https://github.com/mendableai/firecrawl/releases/tag/${src.tag}"; + changelog = "https://github.com/mendableai/firecrawl/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.mit; maintainers = [ ]; }; -} +}) diff --git a/pkgs/development/python-modules/gotify/default.nix b/pkgs/development/python-modules/gotify/default.nix index ff964c5b4e30..31f2f3a79e20 100644 --- a/pkgs/development/python-modules/gotify/default.nix +++ b/pkgs/development/python-modules/gotify/default.nix @@ -66,5 +66,7 @@ buildPythonPackage rec { maintainers = [ lib.maintainers.joblade ]; + # https://github.com/d-k-bo/python-gotify/issues/6 + broken = lib.versionAtLeast gotify-server.version "2.9.0"; }; } diff --git a/pkgs/development/python-modules/guidata/default.nix b/pkgs/development/python-modules/guidata/default.nix index edb94e014924..e0466e7b83f8 100644 --- a/pkgs/development/python-modules/guidata/default.nix +++ b/pkgs/development/python-modules/guidata/default.nix @@ -2,6 +2,7 @@ lib, stdenv, buildPythonPackage, + pythonAtLeast, fetchFromGitHub, # build-system @@ -30,16 +31,19 @@ buildPythonPackage rec { pname = "guidata"; - version = "3.13.4"; + version = "3.14.2"; pyproject = true; src = fetchFromGitHub { owner = "PlotPyStack"; repo = "guidata"; tag = "v${version}"; - hash = "sha256-JuYxPkKeOQOzoDiyk50IhAiICUcKptyD5RUx4DaiOOI="; + hash = "sha256-iUfZX51Ef1PY7roy9ER8hG34BAhCLs3Sagoasd5BT3E="; }; + # https://github.com/PlotPyStack/guidata/issues/97 + disabled = pythonAtLeast "3.14"; + build-system = [ setuptools ]; diff --git a/pkgs/development/python-modules/iamdata/default.nix b/pkgs/development/python-modules/iamdata/default.nix index 046915c4496e..2955c1739b18 100644 --- a/pkgs/development/python-modules/iamdata/default.nix +++ b/pkgs/development/python-modules/iamdata/default.nix @@ -8,14 +8,14 @@ buildPythonPackage (finalAttrs: { pname = "iamdata"; - version = "0.1.202602251"; + version = "0.1.202602261"; pyproject = true; src = fetchFromGitHub { owner = "cloud-copilot"; repo = "iam-data-python"; tag = "v${finalAttrs.version}"; - hash = "sha256-kVzU8hOcMdlav0uwebWe4EPqw0zUIlz3uR4EH//uL+8="; + hash = "sha256-C2ubZ7R6tN9P27aRDeHJ94frgN/ZRpDSxGCS/qYrJqo="; }; __darwinAllowLocalNetworking = true; diff --git a/pkgs/development/python-modules/mitmproxy/default.nix b/pkgs/development/python-modules/mitmproxy/default.nix index 18986c0ad7c0..975fef721a06 100644 --- a/pkgs/development/python-modules/mitmproxy/default.nix +++ b/pkgs/development/python-modules/mitmproxy/default.nix @@ -9,6 +9,7 @@ certifi, cryptography, fetchFromGitHub, + fetchPypi, flask, h11, h2, @@ -24,9 +25,11 @@ pyparsing, pyperclip, pytest-asyncio, + pytest-cov-stub, pytest-timeout, pytest-xdist, pytestCheckHook, + pythonRelaxDepsHook, requests, ruamel-yaml, setuptools, @@ -37,6 +40,18 @@ zstandard, }: +let + # Workaround for https://github.com/mitmproxy/mitmproxy/pull/7953 + # nixpkgs' aioquic was updated to 1.3.0, which contains breaking changes that are unpatched in mitmproxy as of right now + aioquic' = aioquic.overrideAttrs (old: rec { + version = "1.2.0"; + src = fetchPypi { + pname = "aioquic"; + inherit version; + hash = "sha256-+RJjuz9xlIxciRW01Q7jcABPIKQW9n+rPcyQVWx+cZk="; + }; + }); +in buildPythonPackage rec { pname = "mitmproxy"; version = "12.2.1"; @@ -50,19 +65,23 @@ buildPythonPackage rec { }; pythonRelaxDeps = [ - "urwid" - "zstandard" - # requested by maintainer "brotli" # just keep those "typing-extensions" + + "urwid" + "asgiref" + "pyparsing" + "ruamel.yaml" + "tornado" + "wsproto" ]; build-system = [ setuptools ]; dependencies = [ - aioquic + aioquic' argon2-cffi asgiref brotli @@ -92,6 +111,7 @@ buildPythonPackage rec { nativeCheckInputs = [ hypothesis pytest-asyncio + pytest-cov-stub pytest-timeout pytest-xdist pytestCheckHook @@ -100,6 +120,12 @@ buildPythonPackage rec { __darwinAllowLocalNetworking = true; + postPatch = '' + # Rename to fix pytest exception + substituteInPlace pyproject.toml \ + --replace-warn "[tool.pytest.individual_coverage]" "[tool.mitmproxy.individual_coverage]" + ''; + preCheck = '' export HOME=$(mktemp -d) ''; diff --git a/pkgs/development/python-modules/mypy-boto3/default.nix b/pkgs/development/python-modules/mypy-boto3/default.nix index f614db74c875..73859f9eee01 100644 --- a/pkgs/development/python-modules/mypy-boto3/default.nix +++ b/pkgs/development/python-modules/mypy-boto3/default.nix @@ -163,8 +163,8 @@ in "sha256-uKbD5VkYnYO2PKd1Lp9PAg9+5p8X+LisT+N6TsqhZRY="; mypy-boto3-batch = - buildMypyBoto3Package "batch" "1.42.47" - "sha256-A8fLv0hcx6fofnf807NJ/FjLLDwOAx3BHFG8Cmae53g="; + buildMypyBoto3Package "batch" "1.42.57" + "sha256-aP8CxnYZiQs/5mWsCfWSz4RSsRkqSDNXVGuesSw0xdg="; mypy-boto3-billingconductor = buildMypyBoto3Package "billingconductor" "1.42.7" @@ -255,8 +255,8 @@ in "sha256-S2NgrjralqxjjGo39TwaUSStqspnhI/E2/BLXUGP0Hc="; mypy-boto3-cloudwatch = - buildMypyBoto3Package "cloudwatch" "1.42.49" - "sha256-KNDilDGBVmsRbN4IL6LF0MqE0oisoEzVGqnt8MDQl8c="; + buildMypyBoto3Package "cloudwatch" "1.42.56" + "sha256-Z5GriV29LChx+MDWhq5a2zlBjb1GUVmW4sgKWWZNDc8="; mypy-boto3-codeartifact = buildMypyBoto3Package "codeartifact" "1.42.3" @@ -443,16 +443,16 @@ in "sha256-92qhSUqTiLgbtvCdi/Mmgve18mcYR00ABL+bNy7/OnY="; mypy-boto3-ec2 = - buildMypyBoto3Package "ec2" "1.42.51" - "sha256-yeQ1LX3GmyIyhwmXwFqft35S6DiMM4KtMKOJMKgLbSo="; + buildMypyBoto3Package "ec2" "1.42.57" + "sha256-P/cfTjEunqaGhsGudBoYpn0hhYrFcutfxzfsvYtUpQg="; mypy-boto3-ec2-instance-connect = buildMypyBoto3Package "ec2-instance-connect" "1.42.3" "sha256-qe5aitxIPiQA2Et/+MtGVsnmWvk45Rg04/U/kR+tmK0="; mypy-boto3-ecr = - buildMypyBoto3Package "ecr" "1.42.53" - "sha256-ZabWBbalFzrpoNRS3lGLIYo/6F9q4h3xOVNmBeCqMc8="; + buildMypyBoto3Package "ecr" "1.42.57" + "sha256-HWo7KIcJDl8Ioos1tDkaNNF1dfUY9Szbh54idTI6QTc="; mypy-boto3-ecr-public = buildMypyBoto3Package "ecr-public" "1.42.3" @@ -511,8 +511,8 @@ in "sha256-DyAxO4HPA98ON9Q2Sp5HF1lQNp8yecGiEaV12m0E7zM="; mypy-boto3-es = - buildMypyBoto3Package "es" "1.42.3" - "sha256-LUatoDZMYamd9x0qPkbv0WikJ0txZmQRwd8J1Hczmvg="; + buildMypyBoto3Package "es" "1.42.56" + "sha256-52bnvdPDRbC/di9xSwDaoOqyNQIPXjqooUXVbypevaw="; mypy-boto3-events = buildMypyBoto3Package "events" "1.42.3" @@ -862,8 +862,8 @@ in "sha256-Z+TiVg/mjr0vTU+awHlS7GCynOeSl+IPl0n9GaLTsYE="; mypy-boto3-medialive = - buildMypyBoto3Package "medialive" "1.42.43" - "sha256-gDG9tW/b6kg1GYeKNV3rD5Jco5+Si1xrvn9VQpAkZrM="; + buildMypyBoto3Package "medialive" "1.42.56" + "sha256-MshslPZEBNOuIPrs0w2No6g8UzXNouSdRgM7WAkXlbc="; mypy-boto3-mediapackage = buildMypyBoto3Package "mediapackage" "1.42.3" @@ -938,8 +938,8 @@ in "sha256-BkxJ1ilQTVsOqdq63kNtKyKqxrKrEXUkg3v6EN73HR8="; mypy-boto3-neptune = - buildMypyBoto3Package "neptune" "1.42.3" - "sha256-npzoHPz/LS8q5fQOUT/niFRTZSEbOR8QquY7lt9huYE="; + buildMypyBoto3Package "neptune" "1.42.57" + "sha256-9oNjBSEUUy4OzQqYVCgujl86TOMyXCT2QMLDG3WU1Kc="; mypy-boto3-neptunedata = buildMypyBoto3Package "neptunedata" "1.42.45" @@ -966,8 +966,8 @@ in "sha256-o2X4h4K/Cf/TnZG3P5uDjdVmYJRcwPlv6DnSwdzOgc0="; mypy-boto3-opensearch = - buildMypyBoto3Package "opensearch" "1.42.13" - "sha256-NVhi7X3TpxHLoalx2LTleKBXUiWElWdr4NGdOlnuoXk="; + buildMypyBoto3Package "opensearch" "1.42.56" + "sha256-yGLOtl1C0Y4F/Q1yDUEx0nR5VcqFFpdt80Eix/DZ5ts="; mypy-boto3-opensearchserverless = buildMypyBoto3Package "opensearchserverless" "1.42.29" @@ -1394,8 +1394,8 @@ in "sha256-FEl4TtWX042gUuznqlc25HoIbMcCKhE85uuJPh8Kt+E="; mypy-boto3-wafv2 = - buildMypyBoto3Package "wafv2" "1.42.3" - "sha256-VWo+1TnWrbwmaXOwjeOIJoknL/XB5RjYGeTyL30E02Y="; + buildMypyBoto3Package "wafv2" "1.42.57" + "sha256-fCmLmGyNNPDQLK7eVKPPcimWQbodt3tgs/7F4MZW39Y="; mypy-boto3-wellarchitected = buildMypyBoto3Package "wellarchitected" "1.42.3" diff --git a/pkgs/development/python-modules/mypy-boto3/update.sh b/pkgs/development/python-modules/mypy-boto3/update.sh index 3e9b90693ad2..c1e929e2d2a9 100755 --- a/pkgs/development/python-modules/mypy-boto3/update.sh +++ b/pkgs/development/python-modules/mypy-boto3/update.sh @@ -5,7 +5,7 @@ set -eu -o pipefail source_file=pkgs/development/python-modules/mypy-boto3/default.nix -#nix-update python312Packages.botocore-stubs --commit --build +#nix-update python3Packages.botocore-stubs --commit --build packages=( mypy-boto3-accessanalyzer @@ -385,7 +385,7 @@ for package in "${packages[@]}"; do nixfmt ${source_file} - git commit ${source_file} -m "python312Packages.${package}: ${old_version} -> ${version}" + git commit ${source_file} -m "python3Packages.${package}: ${old_version} -> ${version}" fi done diff --git a/pkgs/development/python-modules/pproxy/default.nix b/pkgs/development/python-modules/pproxy/default.nix index 8e33dff6f88e..39b9f9f582ea 100644 --- a/pkgs/development/python-modules/pproxy/default.nix +++ b/pkgs/development/python-modules/pproxy/default.nix @@ -18,8 +18,8 @@ buildPythonPackage rec { src = fetchFromGitHub { owner = "qwj"; repo = "python-proxy"; - rev = "7fccf8dd62204f34b0aa3a70fc568fd6ddff7728"; - sha256 = "sha256-bOqDdNiaZ5MRi/UeF0hJwMs+rfQBKRsTmXrZ6ieIguo="; + tag = version; + hash = "sha256-DWxbU2LtXzec1T175cMVJuWuhnxWYhe0FH67stMyOTM="; }; nativeBuildInputs = [ setuptools ]; @@ -58,6 +58,6 @@ buildPythonPackage rec { mainProgram = "pproxy"; homepage = "https://github.com/qwj/python-proxy"; license = lib.licenses.mit; - maintainers = [ ]; + maintainers = [ lib.maintainers.ryand56 ]; }; } diff --git a/pkgs/development/python-modules/publicsuffixlist/default.nix b/pkgs/development/python-modules/publicsuffixlist/default.nix index 345291fefba1..24032e6f6723 100644 --- a/pkgs/development/python-modules/publicsuffixlist/default.nix +++ b/pkgs/development/python-modules/publicsuffixlist/default.nix @@ -11,12 +11,12 @@ buildPythonPackage (finalAttrs: { pname = "publicsuffixlist"; - version = "1.0.2.20260220"; + version = "1.0.2.20260226"; pyproject = true; src = fetchPypi { inherit (finalAttrs) pname version; - hash = "sha256-bqycplhOPDTD+3/ixsunRNE9d6J4BUpscrdEQG/CEP0="; + hash = "sha256-WbtWjyBMejYyqBsKArES1s6qvizbWdCnAVQQPpAs4HM="; }; postPatch = '' diff --git a/pkgs/development/python-modules/py-iam-expand/default.nix b/pkgs/development/python-modules/py-iam-expand/default.nix index 4b0ee718f0d3..0a8d9c1087d8 100644 --- a/pkgs/development/python-modules/py-iam-expand/default.nix +++ b/pkgs/development/python-modules/py-iam-expand/default.nix @@ -7,16 +7,16 @@ pytestCheckHook, }: -buildPythonPackage rec { +buildPythonPackage (finalAttrs: { pname = "py-iam-expand"; - version = "0.2.0"; + version = "0.3.0"; pyproject = true; src = fetchFromGitHub { owner = "prowler-cloud"; repo = "py-iam-expand"; - tag = version; - hash = "sha256-P6PWf7qkc/8/BeRycYgvFApIaUrbhKq4h718Nrs817U="; + tag = finalAttrs.version; + hash = "sha256-qe3eph3bvVy6Yql76e/OecHAXggp/KNLG1k0iWy4K1w="; }; build-system = [ poetry-core ]; @@ -30,8 +30,8 @@ buildPythonPackage rec { meta = { description = "Module to expand and deobfuscate AWS IAM actions"; homepage = "https://github.com/prowler-cloud/py-iam-expand"; - changelog = "https://github.com/prowler-cloud/py-iam-expand/releases/tag/${src.tag}"; + changelog = "https://github.com/prowler-cloud/py-iam-expand/releases/tag/${finalAttrs.src.tag}"; license = lib.licenses.asl20; maintainers = with lib.maintainers; [ fab ]; }; -} +}) diff --git a/pkgs/development/python-modules/pycookiecheat/default.nix b/pkgs/development/python-modules/pycookiecheat/default.nix index c6524a7b7e2d..652806390e30 100644 --- a/pkgs/development/python-modules/pycookiecheat/default.nix +++ b/pkgs/development/python-modules/pycookiecheat/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "pycookiecheat"; - version = "0.11"; + version = "0.8.0"; pyproject = true; src = fetchFromGitHub { owner = "n8henrie"; repo = "pycookiecheat"; - tag = version; - hash = "sha256-hP4J41ctAkrC6HIeKu6ITzK3W0PB7/tCz0cjP42I/J8="; + tag = "v${version}"; + hash = "sha256-jOyTfh2ZhKW/pMU7T5tfxaM0l/g59N+mirnbc0FLPbQ="; }; pythonRelaxDeps = [ @@ -64,7 +64,7 @@ buildPythonPackage rec { meta = { description = "Borrow cookies from your browser's authenticated session for use in Python scripts"; homepage = "https://github.com/n8henrie/pycookiecheat"; - changelog = "https://github.com/n8henrie/pycookiecheat/blob/${src.tag}/CHANGELOG.md"; + changelog = "https://github.com/n8henrie/pycookiecheat/blob/v${version}/CHANGELOG.md"; license = lib.licenses.mit; maintainers = with lib.maintainers; [ fab diff --git a/pkgs/development/python-modules/python-heatclient/default.nix b/pkgs/development/python-modules/python-heatclient/default.nix index f0ae95acce82..4a57db373570 100644 --- a/pkgs/development/python-modules/python-heatclient/default.nix +++ b/pkgs/development/python-modules/python-heatclient/default.nix @@ -26,14 +26,14 @@ buildPythonPackage (finalAttrs: { pname = "python-heatclient"; - version = "5.0.0"; + version = "5.1.0"; pyproject = true; src = fetchFromGitHub { owner = "openstack"; repo = "python-heatclient"; tag = finalAttrs.version; - hash = "sha256-BpxUUQTBZLR89ks31q5BcBajIP2vcD3Oot1dsXLalX4="; + hash = "sha256-KUFpFqjFtuF9VFQ0Fn9oVQSpwsocZhKY6vWtqpefUJs="; }; env.PBR_VERSION = finalAttrs.version; diff --git a/pkgs/development/python-modules/qdrant-client/default.nix b/pkgs/development/python-modules/qdrant-client/default.nix index a90cfeb26ef3..01b89ed34478 100644 --- a/pkgs/development/python-modules/qdrant-client/default.nix +++ b/pkgs/development/python-modules/qdrant-client/default.nix @@ -17,14 +17,14 @@ buildPythonPackage rec { pname = "qdrant-client"; - version = "1.16.2"; + version = "1.17.0"; pyproject = true; src = fetchFromGitHub { owner = "qdrant"; repo = "qdrant-client"; tag = "v${version}"; - hash = "sha256-sOZDQmwiTz3lZ1lR0xJDxMmNc5QauWLJV5Ida2INibY="; + hash = "sha256-4FH1YXoHDSOs0Tg+FkxEGtLhkNYZUhdIy4L0aYcMyM8="; }; build-system = [ poetry-core ]; diff --git a/pkgs/development/python-modules/requests-hardened/default.nix b/pkgs/development/python-modules/requests-hardened/default.nix new file mode 100644 index 000000000000..d1078070bfc3 --- /dev/null +++ b/pkgs/development/python-modules/requests-hardened/default.nix @@ -0,0 +1,46 @@ +{ + lib, + buildPythonPackage, + fetchFromGitHub, + + poetry-core, + requests, + + pproxy, + pytest-socket, + pysocks, + trustme, + pytestCheckHook, +}: +buildPythonPackage rec { + pname = "requests-hardened"; + version = "1.2.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "saleor"; + repo = "requests-hardened"; + tag = "v${version}"; + hash = "sha256-J4xQY2W5upJQ3hrA2hjkw8voLpxNPpekNwmyMKKAVAo="; + }; + + build-system = [ poetry-core ]; + dependencies = [ requests ]; + + nativeCheckInputs = [ + pproxy + pytest-socket + pysocks + trustme + pytestCheckHook + ]; + + pythonImportsCheck = [ "requests_hardened" ]; + + meta = { + description = "Library that adds hardened behavior to python requests"; + homepage = "https://github.com/saleor/requests-hardened"; + license = lib.licenses.bsd3; + maintainers = [ lib.maintainers.ryand56 ]; + }; +} diff --git a/pkgs/development/python-modules/scikit-hep-testdata/default.nix b/pkgs/development/python-modules/scikit-hep-testdata/default.nix index a792adea40de..cfab7955bb02 100644 --- a/pkgs/development/python-modules/scikit-hep-testdata/default.nix +++ b/pkgs/development/python-modules/scikit-hep-testdata/default.nix @@ -13,14 +13,14 @@ buildPythonPackage rec { pname = "scikit-hep-testdata"; - version = "0.6.0"; + version = "0.6.2"; pyproject = true; src = fetchFromGitHub { owner = "scikit-hep"; repo = "scikit-hep-testdata"; tag = "v${version}"; - hash = "sha256-mefyBbZRHNwCApnkhB0xrTLiQl9G+JsVNEaW2PDa6AM="; + hash = "sha256-RA/A8av/KXVimktrjU4lHHMw+SokS7niB6zWhgZ4+IQ="; }; build-system = [ setuptools-scm ]; diff --git a/pkgs/development/python-modules/svgdigitizer/default.nix b/pkgs/development/python-modules/svgdigitizer/default.nix index 1c12a5f258be..99e363c86928 100644 --- a/pkgs/development/python-modules/svgdigitizer/default.nix +++ b/pkgs/development/python-modules/svgdigitizer/default.nix @@ -28,14 +28,14 @@ buildPythonPackage rec { pname = "svgdigitizer"; - version = "0.14.1"; + version = "0.14.2"; pyproject = true; src = fetchFromGitHub { owner = "echemdb"; repo = "svgdigitizer"; tag = version; - hash = "sha256-ZOR9CviQhPyJQjbLpR53ZVwaarrICg87vtzCL1nq+jE="; + hash = "sha256-7F1q0AvkeqLIoWDNNBUc/91caiQ7kdIcKOkvdAajsLI="; }; build-system = [ diff --git a/pkgs/development/tools/ocaml/js_of_ocaml/compiler.nix b/pkgs/development/tools/ocaml/js_of_ocaml/compiler.nix index 5f73f419f420..1ece2268541f 100644 --- a/pkgs/development/tools/ocaml/js_of_ocaml/compiler.nix +++ b/pkgs/development/tools/ocaml/js_of_ocaml/compiler.nix @@ -12,7 +12,7 @@ sedlex, version ? if lib.versionAtLeast ocaml.version "4.13" then - "6.2.0" + "6.3.2" else if lib.versionAtLeast ocaml.version "4.11" then "6.0.1" else @@ -27,6 +27,7 @@ buildDunePackage { url = "https://github.com/ocsigen/js_of_ocaml/releases/download/${version}/js_of_ocaml-${version}.tbz"; hash = { + "6.3.2" = "sha256-qTr8llTsNGRwH7zg3M86i+uVCKyxLGBFd2vyzxBsq8A="; "6.2.0" = "sha256-fMZBd40bFyo1KogzPuDoxiE2WgrPzZuH44v9243Spdo="; "6.1.1" = "sha256-0x2kGq5hwCqqi01QTk6TcFIz0wPNgaB7tKxe7bA9YBQ="; "6.0.1" = "sha256-gT2+4rYuFUEEnqI6IOQFzyROJ+v6mFl4XPpT4obSxhQ="; diff --git a/pkgs/servers/mir/common.nix b/pkgs/servers/mir/common.nix index fa19b6d35f01..b9e7c4e3a3f6 100644 --- a/pkgs/servers/mir/common.nix +++ b/pkgs/servers/mir/common.nix @@ -96,6 +96,14 @@ stdenv.mkDerivation ( substituteInPlace src/platform/graphics/CMakeLists.txt \ --replace-fail "/usr/include/drm/drm_fourcc.h" "${lib.getDev libdrm}/include/libdrm/drm_fourcc.h" \ --replace-fail "/usr/include/libdrm/drm_fourcc.h" "${lib.getDev libdrm}/include/libdrm/drm_fourcc.h" + '' + # Boost.System was deprecated & dropped + + lib.optionalString (lib.strings.versionOlder version "2.23.0") '' + substituteInPlace \ + tests/CMakeLists.txt \ + tests/unit-tests/CMakeLists.txt \ + tests/mir_test_framework/CMakeLists.txt \ + --replace-fail 'Boost::system' "" ''; strictDeps = true; diff --git a/pkgs/servers/mir/default.nix b/pkgs/servers/mir/default.nix index 4671f0ddca2c..86e5c791a886 100644 --- a/pkgs/servers/mir/default.nix +++ b/pkgs/servers/mir/default.nix @@ -110,6 +110,23 @@ in ]; hash = "sha256-gzLVQW9Z6y+s2D7pKtp0ondQrjkzZ5iUYhGDPqFXD5M="; }) + + # Drop deprecated & removed Boost.System + # Remove when version > 2.22.2 + (fetchpatch { + name = "0301-mir-Disable-boost_system.patch"; + url = "https://github.com/canonical/mir/commit/0261aa6ce700311ee2b8723294451cdade1bc219.patch"; + excludes = [ + # hunk errors + "tests/CMakeLists.txt" + "tests/mir_test_framework/CMakeLists.txt" + "tests/unit-tests/CMakeLists.txt" + + # doesn't exist + "tests/window_management_tests/CMakeLists.txt" + ]; + hash = "sha256-UqClQFHzA1th2P7NH67dMJtncw8n/ey9RlPD5Z3VPk0="; + }) ]; }; } diff --git a/pkgs/stdenv/generic/check-meta.nix b/pkgs/stdenv/generic/check-meta.nix index cfc08ba9847f..27f8c854ec7e 100644 --- a/pkgs/stdenv/generic/check-meta.nix +++ b/pkgs/stdenv/generic/check-meta.nix @@ -10,10 +10,8 @@ let inherit (lib) all - attrNames attrValues concatMapStrings - concatMapStringsSep concatStrings filter findFirst @@ -26,7 +24,8 @@ let optionalString isAttrs isString - mapAttrs + warn + foldl' ; inherit (lib.lists) @@ -49,15 +48,17 @@ let inherit (builtins) getEnv - trace ; + inherit (import ./problems.nix { inherit lib; }) + problemsType + genCheckProblems + ; + checkProblems = genCheckProblems config; + # If we're in hydra, we can dispense with the more verbose error # messages and make problems easier to spot. inHydra = config.inHydra or false; - # Allow the user to opt-into additional warnings, e.g. - # import { config = { showDerivationWarnings = [ "maintainerless" ]; }; } - showWarnings = config.showDerivationWarnings; getNameWithVersion = attrs: attrs.name or "${attrs.pname or "«name-missing»"}-${attrs.version or "«version-missing»"}"; @@ -118,21 +119,6 @@ let hasUnfreeLicense = attrs: attrs ? meta.license && isUnfree attrs.meta.license; - hasNoMaintainers = - # To get usable output, we want to avoid flagging "internal" derivations. - # Because we do not have a way to reliably decide between internal or - # external derivation, some heuristics are required to decide. - # - # If `outputHash` is defined, the derivation is a FOD, such as the output of a fetcher. - # If `description` is not defined, the derivation is probably not a package. - # Simply checking whether `meta` is defined is insufficient, - # as some fetchers and trivial builders do define meta. - attrs: - (!attrs ? outputHash) - && (attrs ? meta.description) - && (attrs.meta.maintainers or [ ] == [ ]) - && (attrs.meta.teams or [ ] == [ ]); - isMarkedBroken = attrs: attrs.meta.broken or false; # Allow granular checks to allow only some broken packages @@ -317,7 +303,7 @@ let ${concatStrings (map (output: " - ${output}\n") missingOutputs)} ''; - metaTypes = + metaType = let types = import ./meta-types.nix { inherit lib; }; inherit (types) @@ -329,13 +315,14 @@ let any listOf bool + record ; platforms = listOf (union [ str (attrsOf any) ]); # see lib.meta.platformMatch in - { + record { # These keys are documented description = str; mainProgram = str; @@ -374,6 +361,8 @@ let unfree = bool; unsupported = bool; insecure = bool; + # This is checked in more detail further down + problems = problemsType; timeout = int; knownVulnerabilities = listOf str; badPlatforms = platforms; @@ -404,34 +393,7 @@ let identifiers = attrs; }; - # Map attrs directly to the verify function for performance - metaTypes' = mapAttrs (_: t: t.verify) metaTypes; - - checkMetaAttr = - k: v: - if metaTypes ? ${k} then - if metaTypes'.${k} v then - [ ] - else - [ - "key 'meta.${k}' has invalid value; expected ${metaTypes.${k}.name}, got\n ${ - toPretty { indent = " "; } v - }" - ] - else - [ - "key 'meta.${k}' is unrecognized; expected one of: \n [${ - concatMapStringsSep ", " (x: "'${x}'") (attrNames metaTypes) - }]" - ]; - - checkMeta = meta: concatMap (attr: checkMetaAttr attr meta.${attr}) (attrNames meta); - - metaInvalid = - if config.checkMeta then - meta: !all (attr: metaTypes ? ${attr} && metaTypes'.${attr} meta.${attr}) (attrNames meta) - else - meta: false; + metaInvalid = if config.checkMeta then meta: !metaType.verify meta else meta: false; checkOutputsToInstall = if config.checkMeta then @@ -447,7 +409,7 @@ let # e.g brokenness or license. # # Return { valid: "yes", "warn" or "no" } and additionally - # { reason: String; errormsg: String, remediation: String } if it is not valid, where + # { reason: String; msg: String, remediation: String } if it is not valid, where # reason is one of "unfree", "blocklisted", "broken", "insecure", ... # !!! reason strings are hardcoded into OfBorg, make sure to keep them in sync # Along with a boolean flag for each reason @@ -458,8 +420,8 @@ let if metaInvalid (attrs.meta or { }) then { reason = "unknown-meta"; - errormsg = "has an invalid meta attrset:${ - concatMapStrings (x: "\n - " + x) (checkMeta attrs.meta) + msg = "has an invalid meta attrset:${ + concatMapStrings (x: "\n - " + x) (metaType.errors "${getName attrs}.meta" attrs.meta) }\n"; remediation = ""; } @@ -468,7 +430,7 @@ let else if checkOutputsToInstall attrs then { reason = "broken-outputs"; - errormsg = "has invalid meta.outputsToInstall"; + msg = "has invalid meta.outputsToInstall"; remediation = remediateOutputsToInstall attrs; } @@ -476,25 +438,25 @@ let else if hasDeniedUnfreeLicense attrs && !(hasAllowlistedLicense attrs) then { reason = "unfree"; - errormsg = "has an unfree license (‘${showLicense attrs.meta.license}’)"; + msg = "has an unfree license (‘${showLicense attrs.meta.license}’)"; remediation = remediate_allowlist "Unfree" (remediate_predicate "allowUnfreePredicate" attrs); } else if hasBlocklistedLicense attrs then { reason = "blocklisted"; - errormsg = "has a blocklisted license (‘${showLicense attrs.meta.license}’)"; + msg = "has a blocklisted license (‘${showLicense attrs.meta.license}’)"; remediation = ""; } else if hasDeniedNonSourceProvenance attrs then { reason = "non-source"; - errormsg = "contains elements not built from source (‘${showSourceType attrs.meta.sourceProvenance}’)"; + msg = "contains elements not built from source (‘${showSourceType attrs.meta.sourceProvenance}’)"; remediation = remediate_allowlist "NonSource" (remediate_predicate "allowNonSourcePredicate" attrs); } else if hasDeniedBroken attrs then { reason = "broken"; - errormsg = "is marked as broken"; + msg = "is marked as broken"; remediation = remediate_allowlist "Broken" ""; } else if hasUnsupportedPlatform attrs && !allowUnsupportedSystem then @@ -506,7 +468,7 @@ let in { reason = "unsupported"; - errormsg = '' + msg = '' is not available on the requested hostPlatform: hostPlatform.system = "${hostPlatform.system}" package.meta.platforms = ${toPretty' (attrs.meta.platforms or [ ])} @@ -517,24 +479,12 @@ let else if hasDisallowedInsecure attrs then { reason = "insecure"; - errormsg = "is marked as insecure"; + msg = "is marked as insecure"; remediation = remediate_insecure attrs; } else null; - # Please also update the type in /pkgs/top-level/config.nix alongside this. - checkWarnings = - attrs: - if hasNoMaintainers attrs then - { - reason = "maintainerless"; - errormsg = "has no maintainers or teams"; - remediation = ""; - } - else - null; - # Helper functions and declarations to handle identifiers, extracted to reduce allocations hasAllCPEParts = cpeParts: @@ -695,54 +645,64 @@ let && ((config.checkMetaRecursively or false) -> all (d: d.meta.available or true) references); }; - validYes = { - valid = "yes"; - handled = true; - }; + handle = + { + attrs, + meta, + warnings ? [ ], + error ? null, + }: + let + withError = + if isNull error then + true + else + let + msg = + "Refusing to evaluate package '${getNameWithVersion attrs}' in ${pos_str meta} because it ${error.msg}" + + lib.optionalString (!inHydra && error.remediation != "") "\n${error.remediation}"; + in + if config ? handleEvalIssue then config.handleEvalIssue error.reason msg else throw msg; + + giveWarning = + acc: warning: + let + msg = + "Package '${getNameWithVersion attrs}' in ${pos_str meta} ${warning.msg}" + + lib.optionalString (!inHydra && warning.remediation != "") " ${warning.remediation}"; + in + warn msg acc; + in + # Give all warnings first, then error if any + builtins.seq (foldl' giveWarning null warnings) withError; assertValidity = { meta, attrs }: let invalid = checkValidity attrs; - warning = checkWarnings attrs; + problems = checkProblems attrs; in if isNull invalid then - if isNull warning then - validYes + if isNull problems then + { + valid = "yes"; + handled = true; + } else - let - msg = - if inHydra then - "Warning while evaluating ${getNameWithVersion attrs}: «${warning.reason}»: ${warning.errormsg}" - else - "Package ${getNameWithVersion attrs} in ${pos_str meta} ${warning.errormsg}, continuing anyway." - + (optionalString (warning.remediation != "") "\n${warning.remediation}"); - - handled = if elem warning.reason showWarnings then trace msg true else true; - in - warning - // { - valid = "warn"; - handled = handled; + { + valid = if isNull problems.error then "warn" else "no"; + handled = handle { + inherit attrs meta; + inherit (problems) error warnings; + }; } else - let - msg = - if inHydra then - "Failed to evaluate ${getNameWithVersion attrs}: «${invalid.reason}»: ${invalid.errormsg}" - else - '' - Package ‘${getNameWithVersion attrs}’ in ${pos_str meta} ${invalid.errormsg}, refusing to evaluate. - - '' - + invalid.remediation; - - handled = if config ? handleEvalIssue then config.handleEvalIssue invalid.reason msg else throw msg; - in - invalid - // { + { valid = "no"; - handled = handled; + handled = handle { + inherit attrs meta; + error = invalid; + }; }; in diff --git a/pkgs/stdenv/generic/meta-types.nix b/pkgs/stdenv/generic/meta-types.nix index a51ae2b12711..6e432d1ed609 100644 --- a/pkgs/stdenv/generic/meta-types.nix +++ b/pkgs/stdenv/generic/meta-types.nix @@ -5,23 +5,47 @@ # TODO: add a method to the module system types # see https://github.com/NixOS/nixpkgs/pull/273935#issuecomment-1854173100 let - inherit (builtins) + inherit (lib) isString isInt isAttrs isList all any + attrNames attrValues + concatMap isFunction isBool concatStringsSep + concatMapStringsSep isFloat + elem + mapAttrs ; isTypeDef = t: isAttrs t && t ? name && isString t.name && t ? verify && isFunction t.verify; - in lib.fix (self: { + + /* + `errors type "" value` gives a list of string error messages, + each prefixed with ": ", for why `value` is not of type `type` + + Only use this if `type.verify value` is false + + Types can override this by specifying their own `type.errors = ctx: value:` attribute + + This is intentionally not tied into `type.verify`, + in order to keep the successful path as fast as possible with minimal allocations + */ + errors = + t: + t.errors or (ctx: v: [ + "${ctx}: Invalid value; expected ${t.name}, got\n ${ + lib.generators.toPretty { indent = " "; } v + }" + ]); + string = { name = "string"; verify = isString; @@ -69,6 +93,14 @@ lib.fix (self: { verify = # attrsOf can be optimised to just isAttrs if t == self.any then isAttrs else attrs: isAttrs attrs && all verify (attrValues attrs); + errors = + ctx: attrs: + if !isAttrs attrs then + self.errors self.attrs ctx attrs + else + concatMap ( + name: lib.optionals (!verify attrs.${name}) (self.errors t "${ctx}.${name}" attrs.${name}) + ) (attrNames attrs); }; listOf = @@ -82,6 +114,19 @@ lib.fix (self: { verify = # listOf can be optimised to just isList if t == self.any then isList else v: isList v && all verify v; + errors = + ctx: v: + if !isList v then + self.errors self.list ctx v + else + lib.concatMap ({ valid, errors }: errors) ( + lib.filter ({ valid, errors }: !valid) ( + lib.imap0 (i: el: { + valid = verify el; + errors = self.errors t "${ctx}.${toString i}" el; + }) v + ) + ); }; union = @@ -95,4 +140,41 @@ lib.fix (self: { name = "union<${concatStringsSep "," (map (t: t.name) types)}>"; verify = v: any (func: func v) funcs; }; + + enum = + values: + assert isList values && all isString values; + { + name = "enum<${concatStringsSep "," values}>"; + verify = v: isString v && elem v values; + }; + + record = + fields: + assert isAttrs fields && all isTypeDef (attrValues fields); + let + # Map attrs directly to the verify function for performance + fieldVerifiers = mapAttrs (_: t: t.verify) fields; + in + { + name = "record"; + verify = v: isAttrs v && all (k: fieldVerifiers ? ${k} && fieldVerifiers.${k} v.${k}) (attrNames v); + errors = + ctx: v: + if !isAttrs v then + self.errors self.attrs ctx v + else + concatMap ( + k: + if fieldVerifiers ? ${k} then + lib.optionals (!fieldVerifiers.${k} v.${k}) (self.errors fields.${k} "${ctx}.${k}" v.${k}) + else + [ + "${ctx}: key '${k}' is unrecognized; expected one of: \n [${ + concatMapStringsSep ", " (x: "'${x}'") (attrNames fields) + }]" + ] + ) (attrNames v); + }; + }) diff --git a/pkgs/stdenv/generic/problems.nix b/pkgs/stdenv/generic/problems.nix new file mode 100644 index 000000000000..08d4b6e30ec0 --- /dev/null +++ b/pkgs/stdenv/generic/problems.nix @@ -0,0 +1,515 @@ +/* + This file implements everything around meta.problems, including: + - automaticProblems: Which problems get added automatically based on some condition + - configOptions: Module system options for config.problems + - problemsType: The check for meta.problems + - genHandlerSwitch: The logic to determine the handler for a specific problem based on config.problems + - genCheckProblems: The logic to determine which problems need to be handled and how the messages should look like + + There are tests to cover pretty much this entire file, so please run them when making changes ;) + + nix-build -A tests.problems +*/ + +{ lib }: + +rec { + + inherit (lib.strings) + escapeNixIdentifier + ; + + inherit (lib) + any + listToAttrs + concatStringsSep + optionalString + getName + optionalAttrs + pipe + isString + filterAttrs + mapAttrs + partition + elemAt + max + foldl' + elem + filter + concatMapStringsSep + optional + optionals + concatLists + all + attrNames + attrValues + length + mapAttrsToList + groupBy + subtractLists + genAttrs + ; + + handlers = rec { + # Ordered from less to more + levels = [ + "ignore" + "warn" + "error" + ]; + + lessThan = + a: b: + if a == "error" then + false + else if a == "warn" then + b == "error" + else + b != "ignore"; + + max = a: b: if lessThan a b then b else a; + }; + + # TODO: Combine this and automaticProblems into a `{ removal = { manual = true; ... }; ... }` structure for less error-prone changes + kinds = rec { + # Automatic and manual problem kinds + known = map (problem: problem.kindName) automaticProblems ++ manual; + # Problem kinds that are currently allowed to be specified in `meta.problems` + manual = [ + "removal" + "deprecated" + ]; + # Problem kinds that are currently only allowed to be specified once + unique = [ + "removal" + ]; + + # Same thing but a set with null values (comes in handy at times) + manual' = genAttrs manual (k: null); + unique' = genAttrs unique (k: null); + }; + + automaticProblems = [ + { + kindName = "maintainerless"; + condition = + # To get usable output, we want to avoid flagging "internal" derivations. + # Because we do not have a way to reliably decide between internal or + # external derivation, some heuristics are required to decide. + # + # If `outputHash` is defined, the derivation is a FOD, such as the output of a fetcher. + # If `description` is not defined, the derivation is probably not a package. + # Simply checking whether `meta` is defined is insufficient, + # as some fetchers and trivial builders do define meta. + attrs: + # Order of checks optimised for short-circuiting the common case of having maintainers + (attrs.meta.maintainers or [ ] == [ ]) + && (attrs.meta.teams or [ ] == [ ]) + && (!attrs ? outputHash) + && (attrs ? meta.description); + value.message = "This package has no declared maintainer, i.e. an empty `meta.maintainers` and `meta.teams` attribute."; + } + ]; + + genAutomaticProblems = + attrs: + listToAttrs ( + map (problem: lib.nameValuePair problem.kindName problem.value) ( + filter (problem: problem.condition attrs) automaticProblems + ) + ); + + # A module system type for Nixpkgs config + configOptions = + let + types = lib.types; + handlerType = types.enum handlers.levels; + problemKindType = types.enum kinds.known; + in + { + handlers = lib.mkOption { + type = with types; attrsOf (attrsOf handlerType); + default = { }; + description = '' + Specify how to handle packages with problems. + Each key has the format `packageName.problemName`, each value is one of "error", "warn" or "ignore". + + This option takes precedence over anything in `problems.matchers`. + + Package names are taken from `lib.getName`, which looks at the `pname` first and falls back to extracting the "pname" part from the `name` attribute. + + See Installing packages with problems in the NixOS manual. + ''; + }; + + matchers = lib.mkOption { + type = types.listOf ( + types.submodule ( + { config, ... }: + { + options = { + package = lib.mkOption { + type = types.nullOr types.str; + description = "Match problems of packages with this name"; + default = null; + }; + name = lib.mkOption { + type = types.nullOr types.str; + description = "Match problems with this problem name"; + default = null; + }; + kind = lib.mkOption { + type = types.nullOr problemKindType; + description = "Match problems of this problem kind"; + default = null; + }; + handler = lib.mkOption { + type = handlerType; + description = "Specify the handler for matched problems"; + }; + + # Temporary hack to get assertions in submodules, see global assertions below + assertions = lib.mkOption { + type = types.listOf types.anything; + default = [ ]; + internal = true; + }; + }; + config = { + assertions = + # Using optional because otherwise message would be evaluated even when assertion is true + ( + optional (config.package != null && config.name != null) { + assertion = false; + # TODO: Does it really matter if we let people specify this? Maybe not, so consider removing this assertion + message = '' + There is a problems.matchers with `package = "${config.package}"` and `name = "${config.name}". Use the following instead: + problems.handlers.${escapeNixIdentifier config.package}.${escapeNixIdentifier config.name} = "${config.handler}"; + ''; + } + ); + }; + } + ) + ); + default = [ ]; + description = '' + A more powerful and less ergonomic version of `problems.handlers`. + Each value is a matcher, that may match onto certain properties of a problem and specify a handler for them. + + If multiple matchers match a problem, the handler with the highest severity (error > warn > ignore) will be used. + Values in `problems.handlers` always take precedence over matchers. + + Any matchers must not contain both a `package` and `name` field, for this should be handled by using `problems.handlers` instead. + ''; + example = [ + { + kind = "maintainerless"; + handler = "warn"; + } + { + package = "myPackageICareAbout"; + handler = "error"; + } + ]; + }; + }; + + # The type for meta.problems + problemsType = + let + types = import ./meta-types.nix { inherit lib; }; + inherit (types) + str + listOf + attrsOf + record + enum + ; + kindType = enum kinds.manual; + subRecord = record { + kind = kindType; + message = str; + urls = listOf str; + }; + simpleType = attrsOf subRecord; + in + { + name = "problems"; + verify = + v: + v == { } + || + simpleType.verify v + && all (problem: problem ? message) (attrValues v) + && ( + let + kindGroups = groupBy (kind: kind) (mapAttrsToList (name: problem: problem.kind or name) v); + in + all (kind: kinds.manual' ? ${kind} && (kinds.unique' ? ${kind} -> length kindGroups.${kind} == 1)) ( + attrNames kindGroups + ) + ); + errors = + ctx: v: + let + kindGroups = groupBy (attrs: attrs.kind) ( + mapAttrsToList (name: problem: { + inherit name; + explicit = problem ? kind; + kind = problem.kind or name; + }) v + ); + in + if !simpleType.verify v then + types.errors simpleType ctx v + else + concatLists ( + mapAttrsToList (name: p: optional (!p ? message) "${ctx}.${name}: `.message` not specified") v + ) + ++ concatLists ( + mapAttrsToList ( + kind: kindGroup: + optionals (!kinds.manual' ? ${kind}) ( + map ( + el: + "${ctx}.${el.name}: Problem kind ${kind}, inferred from the problem name, is invalid; expected ${kindType.name}. You can specify an explicit problem kind with `${ctx}.${el.name}.kind`" + ) (filter (el: !el.explicit) kindGroup) + ) + ++ + optional (kinds.unique' ? ${kind} && length kindGroup > 1) + "${ctx}: Problem kind ${kind} should be unique, but is used for these problems: ${ + concatMapStringsSep ", " (el: el.name) kindGroup + }" + ) kindGroups + ); + }; + + /* + Construct a structure as follows, with the invariant that a more specific path always has a stricter handler, forming a lattice. + E.g. if `packageSpecific.foo.nameFallback.kindFallback == "warn"`, then `packageFallback.nameFallback.kindFallback` must be "ignore". + + packageSpecific. = { + nameSpecific. = { + kindSpecific. = ; + kindFallback = ; + }; + nameFallback = { + kindSpecific. = ; + kindFallback = ; + }; + }; + packageFallback = { + nameSpecific. = { + kindSpecific. = ; + kindFallback = ; + }; + nameFallback = { + kindSpecific. = ; + kindFallback = ; + }; + }; + + Returns both the structure itself for inspection and a function that can query it with very few allocations/lookups + + This allows collapsing arbitrarily many problem handlers/matchers into a predictable structure that can be queried in a predictable and fast way + */ + genHandlerSwitch = + config: + let + constraints = + # matchers have low priority + map (m: m // { priority = 0; }) config.problems.matchers + # handlers have higher priority + ++ concatLists ( + mapAttrsToList ( + package: forPackage: + mapAttrsToList (name: handler: { + inherit package name handler; + kind = null; + priority = 1; + }) forPackage + ) config.problems.handlers + ); + + getHandler = + list: + (foldl' + (acc: el: { + priority = max acc.priority el.priority; + handler = + if acc.priority == el.priority then + handlers.max acc.handler el.handler + else if acc.priority > el.priority then + acc.handler + else + el.handler; + }) + { + priority = 0; + handler = "ignore"; + } + list + ).handler; + + identOrder = [ + "kind" + "name" + "package" + ]; + + doLevel = + index: + let + ident = elemAt identOrder index; + nextLevel = if index + 1 == length identOrder then getHandler else doLevel (index + 1); + in + list: + let + # Partition all matchers into ident-specific (.wrong) and -unspecific (.right) ones + parted = partition (m: isNull m.${ident}) list; + # We only use the unspecific ones to compute the fallback + fallback = nextLevel parted.right; + specific = pipe parted.wrong [ + (groupBy (m: m.${ident})) + # For ident-specific handlers, the unspecific ones also apply + (mapAttrs (package: handlers: nextLevel (handlers ++ parted.right))) + # Memory optimisation: Don't need a specific handler if it would end up the same as the fallback + (filterAttrs (name: res: res != fallback)) + ]; + in + # Optimisation in case it's always the same handler, + # can propagate up for the entire switch to just be a string + if specific == { } && isString fallback then + fallback + else + { + "${ident}Fallback" = fallback; + "${ident}Specific" = specific; + }; + switch = doLevel 0 constraints; + in + { + inherit switch; + handlerForProblem = + if isString switch then + pname: name: kind: + switch + else + pname: name: kind: + let + switch' = switch.kindSpecific.${kind} or switch.kindFallback; + in + if isString switch' then + switch' + else + let + switch'' = switch'.nameSpecific.${name} or switch'.nameFallback; + in + if isString switch'' then + switch'' + else + switch''.packageSpecific.${pname} or switch''.packageFallback; + }; + + genCheckProblems = + config: + let + # This is here so that it gets cached for a (checkProblems config) thunk + inherit (genHandlerSwitch config) + handlerForProblem + ; + in + attrs: + let + pname = getName attrs; + manualProblems = attrs.meta.problems or { }; + in + if + # Fast path for when there's no problem that needs to be handled + # No automatic problems that needs handling + all ( + problem: + problem.condition attrs -> handlerForProblem pname problem.kindName problem.kindName == "ignore" + ) automaticProblems + && ( + # No manual problems + manualProblems == { } + # Or all manual problems are ignored + || all (name: handlerForProblem pname name (manualProblems.${name}.kind or name) == "ignore") ( + attrNames manualProblems + ) + ) + then + null + else + # Slow path, only here we actually figure out which problems we need to handle + let + problems = attrs.meta.problems or { } // genAutomaticProblems attrs; + problemsToHandle = filter (v: v.handler != "ignore") ( + mapAttrsToList (name: problem: rec { + inherit name; + # Kind falls back to the name + kind = problem.kind or name; + handler = handlerForProblem pname name kind; + inherit problem; + }) problems + ); + in + processProblems pname problemsToHandle; + + processProblems = + pname: problemsToHandle: + let + grouped = groupBy (v: v.handler) problemsToHandle; + + warnProblems = grouped.warn or [ ]; + errorProblems = grouped.error or [ ]; + + # assert annotatedProblems != [ ]; + fullMessage = + v: + "${v.name}${optionalString (v.kind != v.name) " (kind \"${v.kind}\")"}: " + + "${v.problem.message}${ + optionalString (v.problem.urls or [ ] != [ ]) " (${concatStringsSep ", " v.problem.urls})" + }"; + + warnings = map (x: { + reason = "problem"; + msg = "has the following problem: ${fullMessage x}"; + remediation = "See https://nixos.org/manual/nixpkgs/unstable#sec-problems"; # TODO: Add remediation, maybe just link to docs to keep it small + }) warnProblems; + + error = + if errorProblems == [ ] then + null + else + { + msg = '' + has problems: + ${concatMapStringsSep "\n" (x: "- ${fullMessage x}") errorProblems} + ''; + ## TODO: Add mention of problem.matchers, or maybe better link to docs of that + remediation = '' + See also https://nixos.org/manual/nixpkgs/unstable#sec-problems + To allow evaluation regardless, use: + - Nixpkgs import: import nixpkgs { config = ; } + - NixOS: nixpkgs.config = ; + - nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + ${concatMapStringsSep "\n " ( + problem: + ''${escapeNixIdentifier pname}.${escapeNixIdentifier problem.name} = "warn"; # or "ignore"'' + ) errorProblems} + }; + } + ''; + }; + in + { + inherit error warnings; + }; + +} diff --git a/pkgs/test/default.nix b/pkgs/test/default.nix index efcd4963136d..acd0982ed5f8 100644 --- a/pkgs/test/default.nix +++ b/pkgs/test/default.nix @@ -187,6 +187,11 @@ in texlive = recurseIntoAttrs (callPackage ./texlive { }); + # TODO: Temporarily disabled recursion so we can see the performance comparison in the PR, + # which only runs if there's exactly the same packages before and after, and this would add packages + #problems = recurseIntoAttrs (callPackage ./problems { }); + problems = callPackage ./problems { }; + cuda = callPackage ./cuda { }; trivial-builders = callPackage ../build-support/trivial-builders/test/default.nix { }; diff --git a/pkgs/test/problems/cases/deprecated-and-removal-and-maintainerless-error/default.nix b/pkgs/test/problems/cases/deprecated-and-removal-and-maintainerless-error/default.nix new file mode 100644 index 000000000000..496c562890a5 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-and-removal-and-maintainerless-error/default.nix @@ -0,0 +1,24 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."deprecated" = "error"; + "a"."removal" = "error"; + "a"."maintainerless" = "error"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.problems = { + deprecated.message = "Package is deprecated and replaced by b."; + removal.message = "Package will be removed."; + }; + meta.maintainers = [ ]; +} diff --git a/pkgs/test/problems/cases/deprecated-and-removal-and-maintainerless-error/expected-stderr b/pkgs/test/problems/cases/deprecated-and-removal-and-maintainerless-error/expected-stderr new file mode 100644 index 000000000000..35fc25e10a98 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-and-removal-and-maintainerless-error/expected-stderr @@ -0,0 +1,20 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:18 because it has problems: +- deprecated: Package is deprecated and replaced by b. +- maintainerless: This package has no declared maintainer, i.e. an empty `meta.maintainers` and `meta.teams` attribute. +- removal: Package will be removed. + +See also https://nixos.org/manual/nixpkgs/unstable#sec-problems +To allow evaluation regardless, use: +- Nixpkgs import: import nixpkgs { config = ; } +- NixOS: nixpkgs.config = ; +- nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + a.deprecated = "warn"; # or "ignore" + a.maintainerless = "warn"; # or "ignore" + a.removal = "warn"; # or "ignore" + }; + } diff --git a/pkgs/test/problems/cases/deprecated-and-removal-error/default.nix b/pkgs/test/problems/cases/deprecated-and-removal-error/default.nix new file mode 100644 index 000000000000..20a18cc17c78 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-and-removal-error/default.nix @@ -0,0 +1,22 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."deprecated" = "error"; + "a"."removal" = "error"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems = { + deprecated.message = "Package is deprecated and replaced by b"; + removal.message = "Package will be removed"; + }; + meta.maintainers = [ "hello" ]; +} diff --git a/pkgs/test/problems/cases/deprecated-and-removal-error/expected-stderr b/pkgs/test/problems/cases/deprecated-and-removal-error/expected-stderr new file mode 100644 index 000000000000..f23f10373fc3 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-and-removal-error/expected-stderr @@ -0,0 +1,18 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:16 because it has problems: +- deprecated: Package is deprecated and replaced by b +- removal: Package will be removed + +See also https://nixos.org/manual/nixpkgs/unstable#sec-problems +To allow evaluation regardless, use: +- Nixpkgs import: import nixpkgs { config = ; } +- NixOS: nixpkgs.config = ; +- nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + a.deprecated = "warn"; # or "ignore" + a.removal = "warn"; # or "ignore" + }; + } diff --git a/pkgs/test/problems/cases/deprecated-error/default.nix b/pkgs/test/problems/cases/deprecated-error/default.nix new file mode 100644 index 000000000000..405d394bd893 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-error/default.nix @@ -0,0 +1,20 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."deprecated" = "error"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems.deprecated = { + message = "Package is deprecated and replaced by b"; + }; + meta.maintainers = [ "hello" ]; +} diff --git a/pkgs/test/problems/cases/deprecated-error/expected-stderr b/pkgs/test/problems/cases/deprecated-error/expected-stderr new file mode 100644 index 000000000000..6eba972e8775 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-error/expected-stderr @@ -0,0 +1,16 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:15 because it has problems: +- deprecated: Package is deprecated and replaced by b + +See also https://nixos.org/manual/nixpkgs/unstable#sec-problems +To allow evaluation regardless, use: +- Nixpkgs import: import nixpkgs { config = ; } +- NixOS: nixpkgs.config = ; +- nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + a.deprecated = "warn"; # or "ignore" + }; + } diff --git a/pkgs/test/problems/cases/deprecated-ignore/default.nix b/pkgs/test/problems/cases/deprecated-ignore/default.nix new file mode 100644 index 000000000000..0ce36d294842 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-ignore/default.nix @@ -0,0 +1,18 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."deprecated" = "ignore"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems.deprecated.message = "Package is deprecated and is replaced by b."; + meta.maintainers = [ "hello" ]; +} diff --git a/pkgs/test/problems/cases/deprecated-ignore/expected-stderr b/pkgs/test/problems/cases/deprecated-ignore/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-ignore/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/deprecated-warn/default.nix b/pkgs/test/problems/cases/deprecated-warn/default.nix new file mode 100644 index 000000000000..bcafc3e96f6a --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-warn/default.nix @@ -0,0 +1,18 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."deprecated" = "warn"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems.deprecated.message = "Package a is deprecated and superseeded by b."; + meta.maintainers = [ "hello" ]; +} diff --git a/pkgs/test/problems/cases/deprecated-warn/expected-stderr b/pkgs/test/problems/cases/deprecated-warn/expected-stderr new file mode 100644 index 000000000000..c0cd1ab06bb6 --- /dev/null +++ b/pkgs/test/problems/cases/deprecated-warn/expected-stderr @@ -0,0 +1,2 @@ +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:15 has the following problem: deprecated: Package a is deprecated and superseeded by b. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/invalid-kind-error/default.nix b/pkgs/test/problems/cases/invalid-kind-error/default.nix new file mode 100644 index 000000000000..acb4d9e8b43e --- /dev/null +++ b/pkgs/test/problems/cases/invalid-kind-error/default.nix @@ -0,0 +1,15 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config.checkMeta = true; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems = { + invalid.message = "No maintainers"; + }; +} diff --git a/pkgs/test/problems/cases/invalid-kind-error/expected-stderr b/pkgs/test/problems/cases/invalid-kind-error/expected-stderr new file mode 100644 index 000000000000..dbe13602c3f8 --- /dev/null +++ b/pkgs/test/problems/cases/invalid-kind-error/expected-stderr @@ -0,0 +1,4 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:11 because it has an invalid meta attrset: + - a.meta.problems.invalid: Problem kind invalid, inferred from the problem name, is invalid; expected enum. You can specify an explicit problem kind with `a.meta.problems.invalid.kind` diff --git a/pkgs/test/problems/cases/maintainerless-and-removal-and-deprecated-warn/default.nix b/pkgs/test/problems/cases/maintainerless-and-removal-and-deprecated-warn/default.nix new file mode 100644 index 000000000000..6c58ecf5599c --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-and-removal-and-deprecated-warn/default.nix @@ -0,0 +1,24 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."maintainerless" = "warn"; + "a"."deprecated" = "warn"; + "a"."removal" = "warn"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.maintainers = [ ]; + meta.problems = { + removal.message = "Package to be removed."; + deprecated.message = "Package will be deprecated."; + }; +} diff --git a/pkgs/test/problems/cases/maintainerless-and-removal-and-deprecated-warn/expected-stderr b/pkgs/test/problems/cases/maintainerless-and-removal-and-deprecated-warn/expected-stderr new file mode 100644 index 000000000000..2170efd4cddb --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-and-removal-and-deprecated-warn/expected-stderr @@ -0,0 +1,4 @@ +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:18 has the following problem: deprecated: Package will be deprecated. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:18 has the following problem: maintainerless: This package has no declared maintainer, i.e. an empty `meta.maintainers` and `meta.teams` attribute. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:18 has the following problem: removal: Package to be removed. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/maintainerless-and-removal-warn/default.nix b/pkgs/test/problems/cases/maintainerless-and-removal-warn/default.nix new file mode 100644 index 000000000000..7d672a89f7c5 --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-and-removal-warn/default.nix @@ -0,0 +1,20 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."maintainerless" = "warn"; + "a"."removal" = "warn"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.maintainers = [ ]; + meta.problems.removal.message = "Package will be removed."; +} diff --git a/pkgs/test/problems/cases/maintainerless-and-removal-warn/expected-stderr b/pkgs/test/problems/cases/maintainerless-and-removal-warn/expected-stderr new file mode 100644 index 000000000000..0a6a99fd9d14 --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-and-removal-warn/expected-stderr @@ -0,0 +1,3 @@ +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:17 has the following problem: maintainerless: This package has no declared maintainer, i.e. an empty `meta.maintainers` and `meta.teams` attribute. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:17 has the following problem: removal: Package will be removed. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/maintainerless-error/default.nix b/pkgs/test/problems/cases/maintainerless-error/default.nix new file mode 100644 index 000000000000..e925b45e0862 --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-error/default.nix @@ -0,0 +1,18 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."maintainerless" = "error"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.maintainers = [ ]; +} diff --git a/pkgs/test/problems/cases/maintainerless-error/expected-stderr b/pkgs/test/problems/cases/maintainerless-error/expected-stderr new file mode 100644 index 000000000000..9d98ce9e40fb --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-error/expected-stderr @@ -0,0 +1,16 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:16 because it has problems: +- maintainerless: This package has no declared maintainer, i.e. an empty `meta.maintainers` and `meta.teams` attribute. + +See also https://nixos.org/manual/nixpkgs/unstable#sec-problems +To allow evaluation regardless, use: +- Nixpkgs import: import nixpkgs { config = ; } +- NixOS: nixpkgs.config = ; +- nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + a.maintainerless = "warn"; # or "ignore" + }; + } diff --git a/pkgs/test/problems/cases/maintainerless-ignore/default.nix b/pkgs/test/problems/cases/maintainerless-ignore/default.nix new file mode 100644 index 000000000000..8531510073d4 --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-ignore/default.nix @@ -0,0 +1,17 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."maintainerless" = "ignore"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.maintainers = [ ]; +} diff --git a/pkgs/test/problems/cases/maintainerless-ignore/expected-stderr b/pkgs/test/problems/cases/maintainerless-ignore/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-ignore/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/maintainerless-warn/default.nix b/pkgs/test/problems/cases/maintainerless-warn/default.nix new file mode 100644 index 000000000000..abaf4c5c2b16 --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-warn/default.nix @@ -0,0 +1,18 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."maintainerless" = "warn"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.maintainers = [ ]; +} diff --git a/pkgs/test/problems/cases/maintainerless-warn/expected-stderr b/pkgs/test/problems/cases/maintainerless-warn/expected-stderr new file mode 100644 index 000000000000..70a9385eec00 --- /dev/null +++ b/pkgs/test/problems/cases/maintainerless-warn/expected-stderr @@ -0,0 +1,2 @@ +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:16 has the following problem: maintainerless: This package has no declared maintainer, i.e. an empty `meta.maintainers` and `meta.teams` attribute. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/no-message/default.nix b/pkgs/test/problems/cases/no-message/default.nix new file mode 100644 index 000000000000..bc89ad823f5d --- /dev/null +++ b/pkgs/test/problems/cases/no-message/default.nix @@ -0,0 +1,22 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + checkMeta = true; + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.problems.removal = { }; +} diff --git a/pkgs/test/problems/cases/no-message/expected-stderr b/pkgs/test/problems/cases/no-message/expected-stderr new file mode 100644 index 000000000000..d40bf1e17280 --- /dev/null +++ b/pkgs/test/problems/cases/no-message/expected-stderr @@ -0,0 +1,4 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:20 because it has an invalid meta attrset: + - a.meta.problems.removal: `.message` not specified diff --git a/pkgs/test/problems/cases/no-problems-description/default.nix b/pkgs/test/problems/cases/no-problems-description/default.nix new file mode 100644 index 000000000000..66a201eab403 --- /dev/null +++ b/pkgs/test/problems/cases/no-problems-description/default.nix @@ -0,0 +1,19 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; +} diff --git a/pkgs/test/problems/cases/no-problems-description/expected-stderr b/pkgs/test/problems/cases/no-problems-description/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/no-problems-description/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/no-problems-fod/default.nix b/pkgs/test/problems/cases/no-problems-fod/default.nix new file mode 100644 index 000000000000..5b7cb9fdb202 --- /dev/null +++ b/pkgs/test/problems/cases/no-problems-fod/default.nix @@ -0,0 +1,21 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + outputHash = pkgs.lib.fakeHash; +} diff --git a/pkgs/test/problems/cases/no-problems-fod/expected-stderr b/pkgs/test/problems/cases/no-problems-fod/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/no-problems-fod/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/no-problems-team-maintainer/default.nix b/pkgs/test/problems/cases/no-problems-team-maintainer/default.nix new file mode 100644 index 000000000000..605bf0c2f696 --- /dev/null +++ b/pkgs/test/problems/cases/no-problems-team-maintainer/default.nix @@ -0,0 +1,21 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.teams = [ "hello" ]; + meta.description = "Some package"; +} diff --git a/pkgs/test/problems/cases/no-problems-team-maintainer/expected-stderr b/pkgs/test/problems/cases/no-problems-team-maintainer/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/no-problems-team-maintainer/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/no-problems/default.nix b/pkgs/test/problems/cases/no-problems/default.nix new file mode 100644 index 000000000000..2780c964ae4b --- /dev/null +++ b/pkgs/test/problems/cases/no-problems/default.nix @@ -0,0 +1,21 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.maintainers = [ "hello" ]; + meta.description = "Some package"; +} diff --git a/pkgs/test/problems/cases/no-problems/expected-stderr b/pkgs/test/problems/cases/no-problems/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/no-problems/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/non-attrs-problem/default.nix b/pkgs/test/problems/cases/non-attrs-problem/default.nix new file mode 100644 index 000000000000..167630e49314 --- /dev/null +++ b/pkgs/test/problems/cases/non-attrs-problem/default.nix @@ -0,0 +1,21 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + checkMeta = true; + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems.florp = true; +} diff --git a/pkgs/test/problems/cases/non-attrs-problem/expected-stderr b/pkgs/test/problems/cases/non-attrs-problem/expected-stderr new file mode 100644 index 000000000000..f4abb09ff994 --- /dev/null +++ b/pkgs/test/problems/cases/non-attrs-problem/expected-stderr @@ -0,0 +1,5 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:19 because it has an invalid meta attrset: + - a.meta.problems.florp: Invalid value; expected attrs, got + true diff --git a/pkgs/test/problems/cases/package-name-matcher/default.nix b/pkgs/test/problems/cases/package-name-matcher/default.nix new file mode 100644 index 000000000000..570c9f6f389c --- /dev/null +++ b/pkgs/test/problems/cases/package-name-matcher/default.nix @@ -0,0 +1,20 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.matchers = [ + { + package = "a"; + name = "b"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; +} diff --git a/pkgs/test/problems/cases/package-name-matcher/expected-stderr b/pkgs/test/problems/cases/package-name-matcher/expected-stderr new file mode 100644 index 000000000000..9e38189c515f --- /dev/null +++ b/pkgs/test/problems/cases/package-name-matcher/expected-stderr @@ -0,0 +1,5 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Failed assertions: +- There is a problems.matchers with `package = "a"` and `name = "b". Use the following instead: + problems.handlers.a.b = "error"; diff --git a/pkgs/test/problems/cases/problem-urls/default.nix b/pkgs/test/problems/cases/problem-urls/default.nix new file mode 100644 index 000000000000..1674e046caf9 --- /dev/null +++ b/pkgs/test/problems/cases/problem-urls/default.nix @@ -0,0 +1,28 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.matchers = [ + { + package = "a"; + handler = "error"; + } + ]; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.maintainers = [ "hello" ]; + meta.description = "Some package"; + meta.problems.removal = { + message = "Removed because of XYZ."; + urls = [ + "https://example.com" + "https://anotherexample.com" + ]; + }; +} diff --git a/pkgs/test/problems/cases/problem-urls/expected-stderr b/pkgs/test/problems/cases/problem-urls/expected-stderr new file mode 100644 index 000000000000..e27b57297ef0 --- /dev/null +++ b/pkgs/test/problems/cases/problem-urls/expected-stderr @@ -0,0 +1,16 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:20 because it has problems: +- removal: Removed because of XYZ. (https://example.com, https://anotherexample.com) + +See also https://nixos.org/manual/nixpkgs/unstable#sec-problems +To allow evaluation regardless, use: +- Nixpkgs import: import nixpkgs { config = ; } +- NixOS: nixpkgs.config = ; +- nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + a.removal = "warn"; # or "ignore" + }; + } diff --git a/pkgs/test/problems/cases/removal-error/default.nix b/pkgs/test/problems/cases/removal-error/default.nix new file mode 100644 index 000000000000..5fd17d518612 --- /dev/null +++ b/pkgs/test/problems/cases/removal-error/default.nix @@ -0,0 +1,17 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers.a.removal = "error"; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems = { + removal.message = "This package has been abandoned upstream and will be removed."; + }; +} diff --git a/pkgs/test/problems/cases/removal-error/expected-stderr b/pkgs/test/problems/cases/removal-error/expected-stderr new file mode 100644 index 000000000000..9d60a973e552 --- /dev/null +++ b/pkgs/test/problems/cases/removal-error/expected-stderr @@ -0,0 +1,16 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:13 because it has problems: +- removal: This package has been abandoned upstream and will be removed. + +See also https://nixos.org/manual/nixpkgs/unstable#sec-problems +To allow evaluation regardless, use: +- Nixpkgs import: import nixpkgs { config = ; } +- NixOS: nixpkgs.config = ; +- nix-* commands: Put below code in ~/.config/nixpkgs/config.nix + + { + problems.handlers = { + a.removal = "warn"; # or "ignore" + }; + } diff --git a/pkgs/test/problems/cases/removal-ignore/default.nix b/pkgs/test/problems/cases/removal-ignore/default.nix new file mode 100644 index 000000000000..0cccb8873b27 --- /dev/null +++ b/pkgs/test/problems/cases/removal-ignore/default.nix @@ -0,0 +1,17 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { + problems.handlers = { + "a"."removal" = "ignore"; + }; + }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.problems.removal.message = "To be removed"; +} diff --git a/pkgs/test/problems/cases/removal-ignore/expected-stderr b/pkgs/test/problems/cases/removal-ignore/expected-stderr new file mode 100644 index 000000000000..c255c1d5a32b --- /dev/null +++ b/pkgs/test/problems/cases/removal-ignore/expected-stderr @@ -0,0 +1 @@ +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/cases/removal-twice-error/default.nix b/pkgs/test/problems/cases/removal-twice-error/default.nix new file mode 100644 index 000000000000..7898a9ae30ee --- /dev/null +++ b/pkgs/test/problems/cases/removal-twice-error/default.nix @@ -0,0 +1,22 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config.checkMeta = true; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.description = "Some package"; + meta.problems = { + removal = { + message = "This package has been abandoned upstream and will be removed"; + }; + removal2 = { + kind = "removal"; + message = "This package has been abandoned upstream and will be removed2"; + }; + }; +} diff --git a/pkgs/test/problems/cases/removal-twice-error/expected-stderr b/pkgs/test/problems/cases/removal-twice-error/expected-stderr new file mode 100644 index 000000000000..86177f4c31f4 --- /dev/null +++ b/pkgs/test/problems/cases/removal-twice-error/expected-stderr @@ -0,0 +1,4 @@ +(stack trace truncated; use '--show-trace' to show the full, detailed trace) + +error: Refusing to evaluate package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:12 because it has an invalid meta attrset: + - a.meta.problems: Problem kind removal should be unique, but is used for these problems: removal, removal2 diff --git a/pkgs/test/problems/cases/removal-warn/default.nix b/pkgs/test/problems/cases/removal-warn/default.nix new file mode 100644 index 000000000000..60475d75591a --- /dev/null +++ b/pkgs/test/problems/cases/removal-warn/default.nix @@ -0,0 +1,14 @@ +{ nixpkgs }: +let + pkgs = import nixpkgs { + system = "x86_64-linux"; + overlays = [ ]; + config = { }; + }; +in +pkgs.stdenvNoCC.mkDerivation { + pname = "a"; + version = "0"; + meta.maintainers = [ "hello" ]; + meta.problems.removal.message = "Package to be removed."; +} diff --git a/pkgs/test/problems/cases/removal-warn/expected-stderr b/pkgs/test/problems/cases/removal-warn/expected-stderr new file mode 100644 index 000000000000..619e727b9f1b --- /dev/null +++ b/pkgs/test/problems/cases/removal-warn/expected-stderr @@ -0,0 +1,2 @@ +evaluation warning: Package 'a-0' in /nix/store/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee-default.nix:11 has the following problem: removal: Package to be removed. See https://nixos.org/manual/nixpkgs/unstable#sec-problems +warning: you did not specify '--add-root'; the result might be removed by the garbage collector diff --git a/pkgs/test/problems/default.nix b/pkgs/test/problems/default.nix new file mode 100644 index 000000000000..1e2ce5108bbe --- /dev/null +++ b/pkgs/test/problems/default.nix @@ -0,0 +1,60 @@ +{ + lib, + nix, + runCommand, + removeReferencesTo, + path, + gitMinimal, +}: +let + nixpkgs = lib.cleanSource path; + unitResult = import ./unit.nix { inherit lib; }; +in +assert lib.assertMsg (unitResult == [ ]) + "problems/unit.nix failing: ${lib.generators.toPretty { } unitResult}"; +lib.mapAttrs ( + name: _: + let + nixFile = "${./cases + "/${name}/default.nix"}"; + result = runCommand "test-problems-${name}" { nativeBuildInputs = [ removeReferencesTo ]; } '' + export NIX_STATE_DIR=$(mktemp -d) + mkdir $out + + command=( + # FIXME: Using this version because it doesn't print a trace by default + # Probably should have some regex-style error matching instead + "${lib.getBin nix}/bin/nix-instantiate" + ${nixFile} + # Readonly mode because we don't need to write anything to the store + "--readonly-mode" + "--arg" + "nixpkgs" + "${nixpkgs}" + ) + + echo "''${command[*]@Q}" > $out/command + echo "Running ''${command[*]@Q}" + set +e + "''${command[@]}" >$out/stdout 2>$out/stderr + set +e + echo "$?" > $out/code + echo "Command exited with code $(<$out/code)" + remove-references-to -t ${nixFile} $out/stderr + if grep '(stack trace truncated.*)' $out/stderr; then + sed -i -n '/(stack trace truncated.*)/,$ p' $out/stderr + fi + sed -i 's/^ //' $out/stderr + ''; + checker = runCommand "test-problems-check-${name}" { } '' + if ! PAGER=cat ${lib.getExe gitMinimal} diff --no-index ${ + ./cases + "/${name}/expected-stderr" + } ${result}/stderr ; then + echo "Output of $(< ${result}/command) does not match what was expected. To adapt:" + echo "cp ${result}/stderr ${lib.path.removePrefix path ./cases + "/${name}/expected-stderr"}" + exit 1 + fi + touch $out + ''; + in + checker +) (builtins.readDir ./cases) diff --git a/pkgs/test/problems/unit.nix b/pkgs/test/problems/unit.nix new file mode 100644 index 000000000000..073ddaa12cfa --- /dev/null +++ b/pkgs/test/problems/unit.nix @@ -0,0 +1,153 @@ +{ lib }: +let + p = import ../../stdenv/generic/problems.nix { inherit lib; }; + + genHandlerTest = + let + slowReference = + config: package: name: kind: + # Try to find an explicit handler + (config.problems.handlers.${package} or { }).${name} + # Fall back, iterating through the matchers + or (lib.pipe config.problems.matchers [ + # Find matches + (lib.filter ( + matcher: + (matcher.name != null -> name == matcher.name) + && (matcher.kind != null -> kind == matcher.kind) + && (matcher.package != null -> package == matcher.package) + )) + # Extract handler level + (map (matcher: matcher.handler)) + # Take the strongest matched handler level + (lib.foldl' p.handlers.max "ignore") + ]); + + genValue = + f: + map + ( + package: + map + ( + name: + map (kind: f package name kind) [ + "k1" + "k2" + "k3" + ] + ) + [ + "n1" + "n2" + "n3" + ] + ) + [ + "p1" + "p2" + "p3" + ]; + + in + v: { + expr = genValue (p.genHandlerSwitch { problems = v; }).handlerForProblem; + expected = genValue (slowReference { + problems = v; + }); + }; +in +lib.runTests { + testHandlersLessThan = + let + levels = p.handlers.levels; + slowReference = + a: b: + lib.lists.findFirstIndex (v: v == a) (abort "Shouldn't happen") levels + < lib.lists.findFirstIndex (v: v == b) (abort "Shouldn't happen") levels; + + genValue = + f: + lib.genList ( + i: lib.genList (j: f (lib.elemAt levels i) (lib.elemAt levels j)) (lib.length levels) + ) (lib.length levels); + in + { + expr = genValue p.handlers.lessThan; + expected = genValue slowReference; + }; + + testHandlerEmpty = genHandlerTest { + matchers = [ ]; + handlers = { }; + }; + + testHandlerNameSpecificHandlers = genHandlerTest { + matchers = [ ]; + handlers.p1.n1 = "error"; + handlers.p1.n2 = "warn"; + handlers.p1.n3 = "ignore"; + }; + + testHandlerPackageSpecificHandlers = genHandlerTest { + matchers = [ ]; + handlers.p1.n1 = "error"; + handlers.p2.n1 = "warn"; + handlers.p3.n1 = "ignore"; + }; + + testHandlersOverrideMatchers = genHandlerTest { + matchers = [ + { + package = "p1"; + name = "n1"; + kind = null; + handler = "error"; + } + ]; + handlers.p1.n1 = "warn"; + }; + + testMatchersDefault = genHandlerTest { + matchers = [ + # Everything should warn by default + { + package = null; + name = null; + kind = null; + handler = "warn"; + } + ]; + handlers = { }; + }; + + testMatchersComplicated = genHandlerTest { + matchers = [ + { + package = "p1"; + name = null; + kind = null; + handler = "warn"; + } + { + package = "p1"; + name = "n1"; + kind = null; + handler = "error"; + } + { + package = "p1"; + name = null; + kind = "k1"; + handler = "error"; + } + { + package = "p1"; + name = "n2"; + kind = "k2"; + handler = "error"; + } + ]; + handlers = { }; + }; +} diff --git a/pkgs/top-level/aliases.nix b/pkgs/top-level/aliases.nix index 5fd39cb8884d..3c7ce72a1dc9 100644 --- a/pkgs/top-level/aliases.nix +++ b/pkgs/top-level/aliases.nix @@ -1512,6 +1512,7 @@ mapAliases { pal = throw "pal has been removed, as it was broken"; # Added 2025-08-25 pam_pgsql = pam-pgsql; # Added 2025-12-16 pangolin = throw "pangolin has been removed due to lack of maintenance"; # Added 2025-11-17 + paper-plane = throw "'paper-plane' has been removed as it is unmaintained upstream and depends on vulnerable tdlib version."; # Added 2026-02-26 paperless-ng = throw "'paperless-ng' has been renamed to/replaced by 'paperless-ngx'"; # Converted to throw 2025-10-27 parcellite = throw "'parcellite' was remove due to lack of maintenance and relying on gtk2"; # Added 2025-10-03 patchelfStable = throw "'patchelfStable' has been renamed to/replaced by 'patchelf'"; # Converted to throw 2025-10-27 diff --git a/pkgs/top-level/config.nix b/pkgs/top-level/config.nix index 80d56c112e18..7efb30525420 100644 --- a/pkgs/top-level/config.nix +++ b/pkgs/top-level/config.nix @@ -45,11 +45,18 @@ let internal = true; }; + # Should be replaced by importing in the future + # see also https://github.com/NixOS/nixpkgs/pull/207187 warnings = mkOption { type = types.listOf types.str; default = [ ]; internal = true; }; + assertions = mkOption { + type = types.listOf types.anything; + default = [ ]; + internal = true; + }; # Config options @@ -448,6 +455,8 @@ let compatibility of configurations with 26.05. ''; }; + + problems = (import ../stdenv/generic/problems.nix { inherit lib; }).configOptions; }; in @@ -470,9 +479,35 @@ in inherit options; config = { - warnings = optionals config.warnUndeclaredOptions ( - mapAttrsToList (k: v: "undeclared Nixpkgs option set: config.${k}") config._undeclared or { } - ); + warnings = + optionals config.warnUndeclaredOptions ( + mapAttrsToList (k: v: "undeclared Nixpkgs option set: config.${k}") config._undeclared or { } + ) + ++ lib.optional (config.showDerivationWarnings != [ ]) '' + `config.showDerivationWarnings = [ "maintainerless" ]` is deprecated, use `config.problems` instead: + + config.problems.matchers = [ { kind = "maintainerless"; handler = "warn"; } ]; + + See this page for more details: https://nixos.org/manual/nixpkgs/unstable#sec-problems + ''; + + assertions = + # Collect the assertions from the problems.matchers.* submodules, propagate them into here + lib.concatMap (matcher: matcher.assertions) config.problems.matchers; + + # Put the default value for matchers in here (as in, not as an *actual* mkDefault default value), + # to force it being merged with any custom values instead of being overridden. + problems.matchers = [ + # Be loud and clear about package removals + { + kind = "removal"; + handler = "warn"; + } + (lib.mkIf (lib.elem "maintainerless" config.showDerivationWarnings) { + kind = "maintainerless"; + handler = "warn"; + }) + ]; }; } diff --git a/pkgs/top-level/default.nix b/pkgs/top-level/default.nix index 29da5c93202c..607145be06aa 100644 --- a/pkgs/top-level/default.nix +++ b/pkgs/top-level/default.nix @@ -126,7 +126,16 @@ let }; # take all the rest as-is - config = lib.showWarnings configEval.config.warnings configEval.config; + config = + let + failedAssertionsString = lib.concatMapStringsSep "\n" (x: "- ${x.message}") ( + lib.filter (x: !x.assertion) configEval.config.assertions + ); + in + if failedAssertionsString != "" then + throw "Failed assertions:\n${failedAssertionsString}" + else + lib.showWarnings configEval.config.warnings configEval.config; # A few packages make a new package set to draw their dependencies from. # (Currently to get a cross tool chain, or forced-i686 package.) Rather than diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 3ac8fcefc770..1dbbac7c9d5b 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -538,6 +538,8 @@ self: super: with self; { aiotedee = callPackage ../development/python-modules/aiotedee { }; + aiotools = callPackage ../development/python-modules/aiotools { }; + aiotractive = callPackage ../development/python-modules/aiotractive { }; aiounifi = callPackage ../development/python-modules/aiounifi { }; @@ -16556,6 +16558,8 @@ self: super: with self; { requests-gssapi = callPackage ../development/python-modules/requests-gssapi { }; + requests-hardened = callPackage ../development/python-modules/requests-hardened { }; + requests-hawk = callPackage ../development/python-modules/requests-hawk { }; requests-http-message-signatures =