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 =