Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2025-11-03 00:17:57 +00:00
committed by GitHub
21 changed files with 320 additions and 75 deletions
+1
View File
@@ -992,6 +992,7 @@
./services/monitoring/gitwatch.nix
./services/monitoring/glances.nix
./services/monitoring/glpi-agent.nix
./services/monitoring/go-csp-collector.nix
./services/monitoring/goss.nix
./services/monitoring/grafana-image-renderer.nix
./services/monitoring/grafana-reporter.nix
@@ -0,0 +1,106 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.go-csp-collector;
inherit (lib)
boolToString
concatStringsSep
getExe
isBool
literalExpression
maintainers
mapAttrsToList
mkEnableOption
mkIf
mkOption
mkPackageOption
types
;
settingsToArgs =
settings:
concatStringsSep " " (
mapAttrsToList (
name: value:
let
flag = "-${name}";
in
if isBool value then "${flag}=${boolToString value}" else "${flag} ${toString value}"
) settings
);
in
{
meta.maintainers = with maintainers; [ stepbrobd ];
options.services.go-csp-collector = {
enable = mkEnableOption "go-csp-collector, a content security policy violation collector";
package = mkPackageOption pkgs "go-csp-collector" { };
settings = mkOption {
type = types.submodule {
freeformType =
with types;
attrsOf (oneOf [
bool
path
str
]);
options = {
port = mkOption {
type = types.port;
description = "The port to listen on.";
default = 8080;
example = 8080;
};
output-format = mkOption {
type = types.enum [
"text"
"json"
];
description = "Define how the violation reports are formatted for output.";
default = "text";
example = "text";
};
};
};
description = ''
Settings for go-csp-collector. See
<https://github.com/jacobbednarz/go-csp-collector> for supported options.
'';
default = { };
example = literalExpression ''
{
debug = true;
health-check-path = "/health";
}
'';
};
};
config = mkIf cfg.enable {
systemd.packages = [ cfg.package ];
systemd.services.go-csp-collector = {
description = "CSP violation collector";
wantedBy = [ "multi-user.target" ];
after = [ "network.target" ];
serviceConfig = {
ReadOnlyPaths = cfg.settings.filter-file or "";
ExecStart = [
""
"${getExe cfg.package} ${settingsToArgs cfg.settings}"
];
};
};
};
}
+1
View File
@@ -646,6 +646,7 @@ in
gns3-server = runTest ./gns3-server.nix;
gnupg = runTest ./gnupg.nix;
go-camo = runTest ./go-camo.nix;
go-csp-collector = runTest ./go-csp-collector.nix;
go-httpbin = runTest ./go-httpbin.nix;
go-neb = runTest ./go-neb.nix;
goatcounter = runTest ./goatcounter.nix;
+66
View File
@@ -0,0 +1,66 @@
{ lib, ... }:
{
name = "go-csp-collector";
meta.maintainers = with lib.maintainers; [ stepbrobd ];
nodes.machine =
{ pkgs, ... }:
{
services.go-csp-collector = {
enable = true;
settings = {
debug = true;
port = 9999;
health-check-path = "/health";
filter-file = pkgs.writeText "filter" "chrome-extension://";
};
};
};
testScript = ''
import json
# health check
machine.wait_for_unit("go-csp-collector.service")
machine.wait_for_open_port(9999)
machine.succeed("curl -f http://localhost:9999/health")
# send valid csp report
machine.succeed(
"curl -f -X POST http://127.0.0.1:9999/ "
"-H 'Content-Type: application/csp-report' "
"-d '" + json.dumps({
"csp-report": {
"document-uri": "https://example.com/",
"referrer": "https://example.com/",
"violated-directive": "script-src",
"effective-directive": "script-src",
"original-policy": "script-src 'self'",
"blocked-uri": "https://example.org/malicious.js",
"status-code": 200
}
}) + "'"
)
logs = machine.succeed("journalctl -u go-csp-collector.service")
assert "level=debug" in logs, "debug mode not enabled"
assert "blocked_uri" in logs, "csp report not logged"
assert "https://example.org/malicious.js" in logs, "blocked uri not in logs"
# check rejection
machine.fail(
"curl -f -X POST http://[::1]:9999/ "
"-H 'Content-Type: application/csp-report' "
"-d '" + json.dumps({
"csp-report": {
"document-uri": "https://example.com/",
"blocked-uri": "chrome-extension://something",
"violated-directive": "script-src"
}
}) + "'"
)
logs = machine.succeed("journalctl -u go-csp-collector.service")
assert "invalid resource" in logs, "filter rejection not logged"
assert "chrome-extension://" in logs, "filtered uri pattern not in logs"
'';
}
@@ -7,8 +7,8 @@ vscode-utils.buildVscodeMarketplaceExtension {
mktplcRef = {
name = "claude-code";
publisher = "anthropic";
version = "2.0.30";
hash = "sha256-KQ+3yk5WmHIiu6evpPSWfzEbqVKFj2XY8wwGxcqGOJc=";
version = "2.0.31";
hash = "sha256-ylcb5Ty9x9uj38OY0RXsS+YNKVKUzc1c5x6RJsZ3E2g=";
};
meta = {
@@ -741,11 +741,11 @@
"vendorHash": null
},
"integrations_github": {
"hash": "sha256-W7VO2HVP9XMEs0KBTBsyhkLfuTaqrxLSyR54SGTemG0=",
"hash": "sha256-Xicv5L4DnSoIs4vCXDVawHzxKI7PzTfdBZ4+0jzg1uc=",
"homepage": "https://registry.terraform.io/providers/integrations/github",
"owner": "integrations",
"repo": "terraform-provider-github",
"rev": "v6.7.4",
"rev": "v6.7.5",
"spdx": "MIT",
"vendorHash": null
},
@@ -1039,11 +1039,11 @@
"vendorHash": "sha256-57F7YS7r+/O8qSWfNhrT/5XAaq7CfX7RchY/45WBauw="
},
"opsgenie_opsgenie": {
"hash": "sha256-Mhpqi/9qgkRXZ/b2u2VFsJQBYwVgrJ5boqszvUKFu7A=",
"hash": "sha256-Y67kcg/ovvZc22l1CBz0Mqu7DAIit5F0jQNfQrl2EGI=",
"homepage": "https://registry.terraform.io/providers/opsgenie/opsgenie",
"owner": "opsgenie",
"repo": "terraform-provider-opsgenie",
"rev": "v0.6.38",
"rev": "v0.6.40",
"spdx": "MPL-2.0",
"vendorHash": null
},
+1 -1
View File
@@ -13,7 +13,7 @@ stdenv.mkDerivation {
owner = "magicmonty";
repo = "bash-git-prompt";
rev = "e733ada3e93fd9fdb6e9d1890e38e6e523522da7";
hash = "sha256-FWeYzISY4+cS2xg6skfcpTXgbkBs41E/EzEb3JNdFoQ=";
hash = "sha256-6uUoYSjpGJGOgnLiIR0SdmLZKPG4GNB+e2Y9HpJUODQ=";
};
buildInputs = [ python3 ];
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "@anthropic-ai/claude-code",
"version": "2.0.30",
"version": "2.0.31",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@anthropic-ai/claude-code",
"version": "2.0.30",
"version": "2.0.31",
"license": "SEE LICENSE IN README.md",
"bin": {
"claude": "cli.js"
+3 -3
View File
@@ -7,14 +7,14 @@
}:
buildNpmPackage (finalAttrs: {
pname = "claude-code";
version = "2.0.30";
version = "2.0.31";
src = fetchzip {
url = "https://registry.npmjs.org/@anthropic-ai/claude-code/-/claude-code-${finalAttrs.version}.tgz";
hash = "sha256-8XpxFnS+d8xYvK21bsVyCz879Gl39i/wDWr6RtEGE3Q=";
hash = "sha256-KQRc9h2DG1bwWvMR1EnMWi9qygPF0Fsr97+TyKef3NI=";
};
npmDepsHash = "sha256-ZDRgLH3AhkcLBrzUys/ON2OBvBV7trPmlOJ2l6gQpV4=";
npmDepsHash = "sha256-lv596UikbuAuiJ1Wl5xMJvSNITfGOnDvI1dLtaJagCY=";
postPatch = ''
cp ${./package-lock.json} package-lock.json
+3 -6
View File
@@ -32,7 +32,7 @@
minizip-ng,
openal,
pugixml,
SDL2,
sdl3,
sfml,
xxHash,
xz,
@@ -113,7 +113,7 @@ stdenv.mkDerivation (finalAttrs: {
pugixml
qt6.qtbase
qt6.qtsvg
SDL2
sdl3
sfml
xxHash
xz
@@ -161,16 +161,13 @@ stdenv.mkDerivation (finalAttrs: {
qtWrapperArgs = lib.optionals stdenv.hostPlatform.isLinux [
"--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ vulkan-loader ]}"
# https://bugs.dolphin-emu.org/issues/11807
# The .desktop file should already set this, but Dolphin may be launched in other ways
"--set QT_QPA_PLATFORM xcb"
];
doInstallCheck = true;
postInstall =
lib.optionalString stdenv.hostPlatform.isLinux ''
install -D $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
install -Dm644 $src/Data/51-usb-device.rules $out/etc/udev/rules.d/51-usb-device.rules
''
+ lib.optionalString stdenv.hostPlatform.isDarwin ''
# Only gets installed automatically if the standalone executable is used
+2 -2
View File
@@ -18,13 +18,13 @@ stdenv.mkDerivation (finalAttrs: {
# the Equicord repository. Dates as tags (and automatic releases) were the compromise
# we came to with upstream. Please do not change the version schema (e.g., to semver)
# unless upstream changes the tag schema from dates.
version = "2025-10-18";
version = "2025-11-02";
src = fetchFromGitHub {
owner = "Equicord";
repo = "Equicord";
tag = "${finalAttrs.version}";
hash = "sha256-OTndJGxnr7Laf7So0vmSP+8OuyFDVV4xXi8tkuSR3U0=";
hash = "sha256-SThWYUi4h3OpsP28ouHW1f8+m1dr+wMAYhA/90LBYPg=";
};
pnpmDeps = pnpm_10.fetchDeps {
@@ -0,0 +1,53 @@
{
lib,
buildGoModule,
fetchFromGitHub,
versionCheckHook,
nix-update-script,
nixosTests,
}:
buildGoModule (finalAttrs: {
pname = "go-csp-collector";
version = "0.0.16-unstable-2025-10-10";
src = fetchFromGitHub {
owner = "jacobbednarz";
repo = "go-csp-collector";
rev = "a0cf22ac6d1f5c8972bf53671ba174767d2adcd5";
hash = "sha256-xFvO8ZuJQ5luCDOTPHtVeb1+3VvIKSwjt2TqkxBIY58=";
};
vendorHash = "sha256-SrQahSHO5ZIkcLR3BR5CR5BTStW1pH1Ij1Eql0b3tuU=";
ldflags = [
"-s"
"-w"
"-X main.Rev=${finalAttrs.version}"
];
postInstall = ''
install -Dm644 init/go-csp-collector.service $out/lib/systemd/system/go-csp-collector.service
substituteInPlace $out/lib/systemd/system/go-csp-collector.service \
--replace-fail "/usr/local/bin/go-csp-collector" "$out/bin/go-csp-collector"
'';
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "-version";
passthru = {
updateScript = nix-update-script { };
tests.service = nixosTests.go-csp-collector;
};
meta = {
description = "A content security policy violation collector written in Golang";
homepage = "https://github.com/jacobbednarz/go-csp-collector";
changelog = "https://github.com/jacobbednarz/go-csp-collector/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.mit;
mainProgram = "go-csp-collector";
maintainers = with lib.maintainers; [ stepbrobd ];
};
})
+3 -3
View File
@@ -10,16 +10,16 @@
buildGoModule (finalAttrs: {
pname = "qovery-cli";
version = "1.52.0";
version = "1.53.0";
src = fetchFromGitHub {
owner = "Qovery";
repo = "qovery-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-m6NdZ4K0FAZvTloworoK3Lluu9ySCGfS4L216ImByb8=";
hash = "sha256-kE45z/uObUcmjiYm7zO14Lhroe7PkD0pSYnRw4HbHcc=";
};
vendorHash = "sha256-9rAAeJVKBndb4w3LNJLLBvkX5me/Y3GnA55SYGOxqi4=";
vendorHash = "sha256-TDvlICfKLtrG/0KPpfrN61wpUZejaJGiRR4DUBNEllY=";
env.CGO_ENABLED = 0;
+5 -2
View File
@@ -4,11 +4,12 @@
fetchFromGitHub,
cmake,
boost,
nix-update-script,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "quantlib";
version = "1.39";
version = "1.40";
outputs = [
"out"
@@ -19,7 +20,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "lballabio";
repo = "QuantLib";
rev = "v${finalAttrs.version}";
hash = "sha256-UrFamEIeFTR0finNGESlDYbvrmD8jtv73tDUJ17P7WA=";
hash = "sha256-cyri+kCwIFO/ccnqWhO8qOXNPIV0g6iiNvBYtN667pA=";
};
nativeBuildInputs = [ cmake ];
@@ -33,6 +34,8 @@ stdenv.mkDerivation (finalAttrs: {
cp ./quantlib-config $out/bin/
'';
passthru.updateScript = nix-update-script { };
meta = with lib; {
description = "Free/open-source library for quantitative finance";
homepage = "https://quantlib.org";
@@ -15,24 +15,18 @@
wayland,
}:
let
icon = fetchurl {
url = "https://raw.githubusercontent.com/PathOfBuildingCommunity/PathOfBuilding-Launcher/9ee18657fa6597c42811152604da4e6b73fac342/PathOfBuilding.ico";
hash = "sha256-9EW4ld+xg7GLfd4dEY/xUCBMnKb3uu7LBq2Of3Gq1Y8=";
};
in
rustPlatform.buildRustPackage rec {
pname = "rusty-path-of-building";
version = "0.2.6";
version = "0.2.7";
src = fetchFromGitHub {
owner = "meehl";
repo = "rusty-path-of-building";
rev = "v${version}";
hash = "sha256-U2OWNV8bUNXo8/Sro+gV/o3O/D1lMWVlbX3tCONmGOk=";
hash = "sha256-J/tTifOcbY1mfcNbQFN4Vdyl78O7vTVbfew3fcnVyTA=";
};
cargoHash = "sha256-xB7nhCqUalGE0M762Zw7vVFKzz/TgnMU77xbEHorJ2U=";
cargoHash = "sha256-Oekl6SDIvgFIzPnve7nuib3fEjPGC46F/TNULmgOpew=";
nativeBuildInputs = [
pkg-config
@@ -62,13 +56,7 @@ rustPlatform.buildRustPackage rec {
];
postInstall = ''
icotool -x ${icon}
for size in 16 32 48 256; do
mkdir -p $out/share/icons/hicolor/"$size"x"$size"/apps
install -Dm 644 *PathOfBuilding*"$size"x"$size"*.png \
$out/share/icons/hicolor/"$size"x"$size"/apps/pathofbuilding.png
done
install -Dm444 assets/icon.png $out/share/icons/hicolor/256x256/apps/path-of-building.png
'';
postFixup = ''
@@ -88,13 +76,13 @@ rustPlatform.buildRustPackage rec {
desktopItems = [
(makeDesktopItem {
name = "rusty-path-of-building";
name = "rusty-path-of-building-1";
desktopName = "Path of Building";
comment = "Offline build planner for Path of Exile";
exec = "rusty-path-of-building poe1";
terminal = false;
type = "Application";
icon = "pathofbuilding";
icon = "path-of-building";
categories = [ "Game" ];
keywords = [
"poe"
@@ -111,7 +99,7 @@ rustPlatform.buildRustPackage rec {
exec = "rusty-path-of-building poe2";
terminal = false;
type = "Application";
icon = "pathofbuilding";
icon = "path-of-building";
categories = [ "Game" ];
keywords = [
"poe"
+2 -2
View File
@@ -7,14 +7,14 @@
python3.pkgs.buildPythonApplication rec {
pname = "vunnel";
version = "0.41.0";
version = "0.43.0";
pyproject = true;
src = fetchFromGitHub {
owner = "anchore";
repo = "vunnel";
tag = "v${version}";
hash = "sha256-YlyhIT8hlkFGo7xBjxa/5feiqv7H2HfA/E4+gz9cCkw=";
hash = "sha256-DHuNhizYDY/z3DPAPPOgGWn1m86yGHamiVCHGxlaC1w=";
leaveDotGit = true;
};
@@ -19,14 +19,14 @@
buildPythonPackage rec {
pname = "avwx-engine";
version = "1.9.6";
version = "1.9.7";
pyproject = true;
src = fetchFromGitHub {
owner = "avwx-rest";
repo = "avwx-engine";
tag = version;
hash = "sha256-RxQm1n+U2UTzg1QlPwmOaPUWUptAj30URHfs9Degf/c=";
hash = "sha256-j+WT0v1h+dOGW90u+LIVQ0xIE4YzsWRo2E0mGOZUU1A=";
};
build-system = [ hatchling ];
@@ -86,6 +86,9 @@ buildPythonPackage rec {
"SQAStoreUtilsTest"
"SQAStoreTest"
# ValueError: Expected dim to be an integer greater than or equal to 2. Found dim=1.
"test_get_model"
# ValueError: `db_settings` argument should be of type ax.storage.sqa_store
"test_get_next_trials_with_db"
@@ -15,7 +15,9 @@
pyre-extensions,
pyro-ppl,
scipy,
threadpoolctl,
torch,
typing-extensions,
# optional-dependencies
pymoo,
@@ -27,14 +29,14 @@
buildPythonPackage rec {
pname = "botorch";
version = "0.15.1";
version = "0.16.0";
pyproject = true;
src = fetchFromGitHub {
owner = "pytorch";
owner = "meta-pytorch";
repo = "botorch";
tag = "v${version}";
hash = "sha256-6hAsKIlwycZtLZn1vkcu4fR85uACA4FSkT5e/wos17A=";
hash = "sha256-XpcmWJcKaIxrM79MgjG7IF/DphTH402iltlh8ISeZ64=";
};
build-system = [
@@ -49,7 +51,9 @@ buildPythonPackage rec {
pyre-extensions
pyro-ppl
scipy
threadpoolctl
torch
typing-extensions
];
optional-dependencies = {
@@ -62,6 +66,11 @@ buildPythonPackage rec {
pytestCheckHook
];
disabledTestPaths = [
# Requires unpackaged pfns
"test_community/models/test_prior_fitted_network.py"
];
disabledTests = [
"test_all_cases_covered"
@@ -93,7 +102,7 @@ buildPythonPackage rec {
requiredSystemFeatures = [ "big-parallel" ];
meta = {
changelog = "https://github.com/pytorch/botorch/blob/${src.tag}/CHANGELOG.md";
changelog = "https://github.com/meta-pytorch/botorch/blob/${src.tag}/CHANGELOG.md";
description = "Bayesian Optimization in PyTorch";
homepage = "https://botorch.org";
license = lib.licenses.mit;
@@ -1,15 +1,23 @@
{
lib,
buildPythonPackage,
pythonOlder,
fetchFromGitHub,
# build-system
flit-core,
# dependencies
pythonOlder,
typing-extensions,
azure-identity,
# optional-dependencies
azure-storage-blob,
azure-storage-file-datalake,
google-cloud-storage,
boto3,
# tests
azure-identity,
psutil,
pydantic,
pytestCheckHook,
@@ -23,27 +31,28 @@
buildPythonPackage rec {
pname = "cloudpathlib";
version = "0.22.0";
version = "0.23.0";
pyproject = true;
disabled = pythonOlder "3.8";
src = fetchFromGitHub {
owner = "drivendataorg";
repo = "cloudpathlib";
tag = "v${version}";
hash = "sha256-IeNYfYDvCALvK0CV4J6434E3lSz+/JvolQzQXZ8NizQ=";
hash = "sha256-lRZYWGX3Yqs1GTIL3ugOiu+K9RF6vJdbKP/SZAStHLc=";
};
postPatch = ''
postPatch =
# missing pytest-reportlog test dependency
substituteInPlace pyproject.toml \
--replace-fail "--report-log reportlog.jsonl" ""
'';
''
substituteInPlace pyproject.toml \
--replace-fail "--report-log reportlog.jsonl" ""
'';
build-system = [ flit-core ];
dependencies = lib.optional (pythonOlder "3.11") typing-extensions;
dependencies = lib.optionals (pythonOlder "3.11") [
typing-extensions
];
optional-dependencies = {
all = optional-dependencies.azure ++ optional-dependencies.gs ++ optional-dependencies.s3;
@@ -71,10 +80,13 @@ buildPythonPackage rec {
]
++ optional-dependencies.all;
meta = with lib; {
__darwinAllowLocalNetworking = true;
meta = {
description = "Python pathlib-style classes for cloud storage services such as Amazon S3, Azure Blob Storage, and Google Cloud Storage";
homepage = "https://github.com/drivendataorg/cloudpathlib";
license = licenses.mit;
maintainers = with maintainers; [ GaetanLepage ];
changelog = "https://github.com/drivendataorg/cloudpathlib/blob/${src.tag}/HISTORY.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ GaetanLepage ];
};
}
@@ -2,27 +2,33 @@
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
setuptools-scm,
# dependencies
jaxtyping,
linear-operator,
mpmath,
scikit-learn,
scipy,
setuptools,
setuptools-scm,
torch,
# tests
pytestCheckHook,
}:
buildPythonPackage rec {
pname = "gpytorch";
version = "1.14";
version = "1.14.2";
pyproject = true;
src = fetchFromGitHub {
owner = "cornellius-gp";
repo = "gpytorch";
tag = "v${version}";
hash = "sha256-whZjqAs3nyjKMzAGi+OnyBtboq0UuV8m11A4IzkWtec=";
hash = "sha256-yDIGiA7q4e6T7SdnO+ALcc3ezmJK964T5Nn48+NGJV8=";
};
build-system = [
@@ -30,8 +36,6 @@ buildPythonPackage rec {
setuptools-scm
];
pythonRelaxDeps = [ "jaxtyping" ];
dependencies = [
jaxtyping
linear-operator
@@ -56,10 +60,12 @@ buildPythonPackage rec {
"test_t_matmul_matrix"
];
meta = with lib; {
meta = {
description = "Highly efficient and modular implementation of Gaussian Processes, with GPU acceleration";
homepage = "https://gpytorch.ai";
license = licenses.mit;
maintainers = with maintainers; [ veprbl ];
downloadPage = "https://github.com/cornellius-gp/gpytorch";
changelog = "https://github.com/cornellius-gp/gpytorch/releases/tag/${src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ veprbl ];
};
}