Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-04-29 18:31:42 +00:00
committed by GitHub
41 changed files with 458 additions and 190 deletions
+14
View File
@@ -14271,6 +14271,13 @@
githubId = 10689811;
name = "Torben Schweren";
};
kittyandrew = {
email = "alias.nixpkgs.maintainer@kittymail.me";
github = "kittyandrew";
githubId = 45767571;
matrix = "@kittyandrew:ndrew.me";
name = "kittyandrew";
};
kittywitch = {
email = "kat@inskip.me";
github = "kittywitch";
@@ -26050,6 +26057,13 @@
githubId = 26052996;
name = "Erik Parawell";
};
stealthybox = {
email = "leigh@null.net";
github = "stealthybox";
githubId = 2754700;
name = "Leigh Capili";
keys = [ { fingerprint = "05E7 89C9 142C DD05 8261 4EF8 5943 2144 444F B382"; } ];
};
steamwalker = {
email = "steamwalker@xs4all.nl";
github = "steamwalker";
@@ -9,9 +9,11 @@ let
cfg = config.services.grafana-to-ntfy;
in
{
meta.maintainers = with lib.maintainers; [ kittyandrew ];
options = {
services.grafana-to-ntfy = {
enable = lib.mkEnableOption "Grafana-to-ntfy (ntfy.sh) alerts channel";
enable = lib.mkEnableOption "grafana-to-ntfy, a Grafana/Alertmanager to ntfy.sh bridge";
package = lib.mkPackageOption pkgs "grafana-to-ntfy" { };
@@ -33,64 +35,127 @@ in
};
ntfyBAuthPass = lib.mkOption {
type = lib.types.path;
type = lib.types.nullOr lib.types.path;
description = ''
The path to the password for the specified ntfy-sh user.
Setting this option is required when using a ntfy-sh instance with access control enabled.
'';
default = null;
example = "/run/secrets/grafana-to-ntfy-ntfy-pass";
};
bauthUser = lib.mkOption {
type = lib.types.str;
type = lib.types.nullOr lib.types.str;
description = ''
The user that you will authenticate with in the Grafana webhook settings.
You can set this to whatever you like, as this is not the same as the ntfy-sh user.
The user for Basic Auth on incoming webhook requests from Grafana or Alertmanager.
When set together with {option}`bauthPass`, incoming requests require Basic Auth.
When both are null, the endpoint is open (unauthenticated).
'';
default = "admin";
default = null;
example = "admin";
};
bauthPass = lib.mkOption {
type = lib.types.path;
description = "The path to the password you will use in the Grafana webhook settings.";
type = lib.types.nullOr lib.types.path;
description = ''
Path to the password file for Basic Auth on incoming webhook requests.
When set together with {option}`bauthUser`, incoming requests require Basic Auth.
When both are null, the endpoint is open (unauthenticated).
'';
default = null;
example = "/run/secrets/grafana-to-ntfy-bauth-pass";
};
markdown = lib.mkOption {
type = lib.types.bool;
description = "Enable Markdown formatting in ntfy notifications. Sets the X-Markdown header.";
default = false;
};
port = lib.mkOption {
type = lib.types.port;
description = "Port to listen on.";
default = 8080;
};
address = lib.mkOption {
type = lib.types.str;
description = "Address to listen on.";
default = "127.0.0.1";
example = "0.0.0.0";
};
};
};
};
config = lib.mkIf cfg.enable {
systemd.services.grafana-to-ntfy = {
wantedBy = [ "multi-user.target" ];
assertions = [
{
assertion = (cfg.settings.bauthUser == null) == (cfg.settings.bauthPass == null);
message = "services.grafana-to-ntfy: bauthUser and bauthPass must both be set or both be null";
}
{
assertion = (cfg.settings.ntfyBAuthUser == null) == (cfg.settings.ntfyBAuthPass == null);
message = "services.grafana-to-ntfy: ntfyBAuthUser and ntfyBAuthPass must both be set or both be null";
}
];
script = ''
export BAUTH_PASS=$(${lib.getExe' config.systemd.package "systemd-creds"} cat BAUTH_PASS_FILE)
${lib.optionalString (cfg.settings.ntfyBAuthPass != null) ''
export NTFY_BAUTH_PASS=$(${lib.getExe' config.systemd.package "systemd-creds"} cat NTFY_BAUTH_PASS_FILE)
''}
exec ${lib.getExe cfg.package}
'';
systemd.services.grafana-to-ntfy = {
description = "Grafana/Alertmanager to ntfy.sh bridge";
wantedBy = [ "multi-user.target" ];
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
script =
let
optionalCred = name: envVar: ''
export ${envVar}="$(${lib.getExe' config.systemd.package "systemd-creds"} cat ${name})"
'';
in
''
${lib.optionalString (cfg.settings.bauthPass != null) (optionalCred "BAUTH_PASS_FILE" "BAUTH_PASS")}
${lib.optionalString (cfg.settings.ntfyBAuthPass != null) (
optionalCred "NTFY_BAUTH_PASS_FILE" "NTFY_BAUTH_PASS"
)}
exec ${lib.getExe cfg.package}
'';
environment = {
NTFY_URL = cfg.settings.ntfyUrl;
ROCKET_PORT = toString cfg.settings.port;
ROCKET_ADDRESS = cfg.settings.address;
}
// lib.optionalAttrs (cfg.settings.bauthUser != null) {
BAUTH_USER = cfg.settings.bauthUser;
}
// lib.optionalAttrs (cfg.settings.ntfyBAuthUser != null) {
NTFY_BAUTH_USER = cfg.settings.ntfyBAuthUser;
}
// lib.optionalAttrs cfg.settings.markdown {
MARKDOWN = "true";
};
serviceConfig = {
LoadCredential = [
"BAUTH_PASS_FILE:${cfg.settings.bauthPass}"
]
++ lib.optional (
cfg.settings.ntfyBAuthPass != null
) "NTFY_BAUTH_PASS_FILE:${cfg.settings.ntfyBAuthPass}";
LoadCredential =
lib.optional (cfg.settings.bauthPass != null) "BAUTH_PASS_FILE:${cfg.settings.bauthPass}"
++ lib.optional (
cfg.settings.ntfyBAuthPass != null
) "NTFY_BAUTH_PASS_FILE:${cfg.settings.ntfyBAuthPass}";
DynamicUser = true;
Restart = "always";
RestartSec = 5;
# Hardening
AmbientCapabilities = [ "" ];
CapabilityBoundingSet = [ "" ];
DeviceAllow = "";
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = true;
NoNewPrivileges = true;
PrivateDevices = true;
PrivateTmp = true;
PrivateUsers = true;
ProcSubset = "pid";
ProtectClock = true;
@@ -101,6 +166,8 @@ in
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RemoveIPC = true;
RestrictAddressFamilies = [
"AF_INET"
"AF_INET6"
@@ -108,11 +175,12 @@ in
];
RestrictNamespaces = true;
RestrictRealtime = true;
MemoryDenyWriteExecute = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
SystemCallFilter = [
"@system-service"
"~@privileged"
"~@resources"
];
UMask = "0077";
};
+1
View File
@@ -678,6 +678,7 @@ in
gotosocial = runTest ./web-apps/gotosocial.nix;
goupile = runTest ./web-apps/goupile;
grafana = handleTest ./grafana { };
grafana-to-ntfy = runTest ./grafana-to-ntfy.nix;
graphite = runTest ./graphite.nix;
grav = runTest ./web-apps/grav.nix;
graylog = runTest ./graylog.nix;
+166
View File
@@ -0,0 +1,166 @@
{ lib, ... }:
let
ports = {
grafana-to-ntfy = 8080;
ntfy-sh = 8081;
grafana = 3000;
alertmanager = 9093;
};
ntfyTopic = "grafana-alerts";
in
{
name = "grafana-to-ntfy";
meta.maintainers = with lib.maintainers; [ kittyandrew ];
nodes.machine = {
services.grafana-to-ntfy = {
enable = true;
settings = {
ntfyUrl = "http://127.0.0.1:${toString ports.ntfy-sh}/${ntfyTopic}";
port = ports.grafana-to-ntfy;
address = "127.0.0.1";
};
};
services.ntfy-sh = {
enable = true;
settings = {
listen-http = "127.0.0.1:${toString ports.ntfy-sh}";
base-url = "http://127.0.0.1:${toString ports.ntfy-sh}";
};
};
services.grafana = {
enable = true;
settings = {
server.http_port = ports.grafana;
server.http_addr = "127.0.0.1";
security.admin_user = "admin";
security.admin_password = "admin";
security.secret_key = "test-only-dummy-key";
};
provision.alerting = {
contactPoints.settings = {
apiVersion = 1;
contactPoints = [
{
orgId = 1;
name = "grafana-to-ntfy";
receivers = [
{
uid = "cp_webhook";
type = "webhook";
disableResolveMessage = false;
settings = {
url = "http://127.0.0.1:${toString ports.grafana-to-ntfy}";
httpMethod = "POST";
};
}
];
}
];
};
policies.settings = {
apiVersion = 1;
policies = [
{
orgId = 1;
receiver = "grafana-to-ntfy";
group_by = [ "..." ];
group_wait = "0s";
group_interval = "1s";
repeat_interval = "1h";
}
];
};
};
};
services.prometheus.alertmanager = {
enable = true;
listenAddress = "127.0.0.1";
port = ports.alertmanager;
configuration = {
route = {
receiver = "grafana-to-ntfy";
group_by = [ "..." ];
group_wait = "0s";
group_interval = "1s";
repeat_interval = "2h";
};
receivers = [
{
name = "grafana-to-ntfy";
webhook_configs = [
{ url = "http://127.0.0.1:${toString ports.grafana-to-ntfy}"; }
];
}
];
};
};
};
interactive.nodes.machine = {
services.grafana-to-ntfy.settings.address = lib.mkForce "0.0.0.0";
services.grafana.settings.server.http_addr = lib.mkForce "0.0.0.0";
services.prometheus.alertmanager.listenAddress = lib.mkForce "0.0.0.0";
services.ntfy-sh.settings.listen-http = lib.mkForce "0.0.0.0:${toString ports.ntfy-sh}";
networking.firewall.enable = false;
virtualisation.forwardPorts = lib.mapAttrsToList (_: port: {
from = "host";
host = { inherit port; };
guest = { inherit port; };
}) ports;
};
testScript = ''
import json
machine.wait_for_unit("grafana-to-ntfy.service")
machine.wait_for_unit("ntfy-sh.service")
machine.wait_for_unit("grafana.service")
machine.wait_for_unit("alertmanager.service")
machine.wait_for_open_port(${toString ports.grafana-to-ntfy})
machine.wait_for_open_port(${toString ports.ntfy-sh})
machine.wait_for_open_port(${toString ports.grafana})
machine.wait_for_open_port(${toString ports.alertmanager})
with subtest("Health endpoint returns 200"):
machine.succeed("curl -sf http://127.0.0.1:${toString ports.grafana-to-ntfy}/health")
with subtest("Alertmanager alert arrives at ntfy"):
machine.succeed(
"curl -sf http://127.0.0.1:${toString ports.alertmanager}/api/v2/alerts"
" -X POST -H 'Content-Type: application/json'"
" -d '[{\"labels\": {\"alertname\": \"TestAlertFromAM\"}}]'"
)
# grep makes wait_until_succeeds retry: ntfy returns 200 with empty body when no messages exist
resp = machine.wait_until_succeeds(
"curl -sf 'http://127.0.0.1:${toString ports.ntfy-sh}/${ntfyTopic}/json?poll=1'"
" | grep '\"title\":\"Alertmanager\"'"
)
msg = json.loads(resp.strip())
assert msg["title"] == "Alertmanager", f"Expected title 'Alertmanager', got '{msg['title']}'"
assert "warning" in msg["tags"], f"Expected 'warning' in tags, got {msg['tags']}"
assert "firing" in msg["tags"], f"Expected 'firing' in tags, got {msg['tags']}"
with subtest("Grafana alert arrives at ntfy"):
machine.succeed(
"curl -sf http://127.0.0.1:${toString ports.grafana}/api/alertmanager/grafana/config/api/v1/receivers/test"
" -u admin:admin"
" -X POST -H 'Content-Type: application/json'"
""" -d '{"receivers": [{"name": "grafana-to-ntfy", "grafana_managed_receiver_configs": [{"uid": "cp_webhook", "name": "webhook", "type": "webhook", "disableResolveMessage": false, "settings": {"url": "http://127.0.0.1:${toString ports.grafana-to-ntfy}", "httpMethod": "POST"}}]}]}'"""
)
# grep ensures we wait for the Grafana message specifically (see above)
resp = machine.wait_until_succeeds(
"curl -sf 'http://127.0.0.1:${toString ports.ntfy-sh}/${ntfyTopic}/json?poll=1'"
" | grep 'FIRING'"
)
msg = json.loads(resp.strip())
assert "[FIRING:1]" in msg["title"], f"Expected Grafana title with '[FIRING:1]', got '{msg['title']}'"
assert "warning" in msg["tags"], f"Expected 'warning' in tags, got {msg['tags']}"
assert "firing" in msg["tags"], f"Expected 'firing' in tags, got {msg['tags']}"
'';
}
@@ -23716,13 +23716,12 @@ final: prev: {
vim-solarized8 = buildVimPlugin {
pname = "vim-solarized8";
version = "1.6.4-unstable-2026-03-11";
src = fetchFromGitHub {
owner = "lifepillar";
repo = "vim-solarized8";
rev = "4433b4411de92b2446a4d32f0d8bf1b25c476bf9";
hash = "sha256-Og6qmrSIfhtGgait/nwJg+uNrUtY/j83cUWZj2TwUFY=";
src = fetchgit {
url = "https://codeberg.org/lifepillar/vim-solarized8/";
rev = "5dfbfb00be8237619c680302fc9250e391b1686a";
hash = "sha256-qJLlHsXKcLC+bpirfcuBj3igK9dDk8L9oVGPzWhtkEI=";
};
meta.homepage = "https://github.com/lifepillar/vim-solarized8/";
meta.homepage = "https://codeberg.org/lifepillar/vim-solarized8/";
meta.license = lib.licenses.unfree;
meta.hydraPlatforms = [ ];
};
@@ -1691,7 +1691,7 @@ https://github.com/bohlender/vim-smt2/,,
https://github.com/justinmk/vim-sneak/,,
https://github.com/garbas/vim-snipmate/,,
https://github.com/honza/vim-snippets/,,
https://github.com/lifepillar/vim-solarized8/,,
https://codeberg.org/lifepillar/vim-solarized8/,,
https://github.com/tomlion/vim-solidity/,,
https://github.com/christoomey/vim-sort-motion/,,
https://github.com/tpope/vim-speeddating/,,
@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "mednafen-pce-fast";
version = "0-unstable-2026-04-17";
version = "0-unstable-2026-04-20";
src = fetchFromGitHub {
owner = "libretro";
repo = "beetle-pce-fast-libretro";
rev = "906b6465f1d4da2d04d8735b0d24ca0af0533590";
hash = "sha256-xg+irszrpUu689MyP2iJDl9a/YHR4RRqLJmRdu6/4Nw=";
rev = "95b5274dfeda36f7e77c70daa666a63302ad83cf";
hash = "sha256-BEt2g63jBOrgWk0tYp8DJVC65AbeSVRQz9rIMwjj2Sg=";
};
makefile = "Makefile";
+2 -2
View File
@@ -9,7 +9,7 @@
buildGoModule (finalAttrs: {
pname = "boulder";
version = "0.20260413.0";
version = "0.20260428.0";
src = fetchFromGitHub {
owner = "letsencrypt";
@@ -22,7 +22,7 @@ buildGoModule (finalAttrs: {
find $out -name .git -print0 | xargs -0 rm -rf
popd
'';
hash = "sha256-8saRz7g0KsXNr5oR4a2qd4kKDR686J0TIFMzsX/zlV0=";
hash = "sha256-ky6geY8pIBhnpwQ4bbzQN0+EQgOfwlo8EQ0rTZdtNIA=";
};
vendorHash = null;
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "chroma";
version = "2.23.1";
version = "2.24.0";
src = fetchFromGitHub {
owner = "alecthomas";
repo = "chroma";
tag = "v${finalAttrs.version}";
hash = "sha256-Znmcds0ru9VyH/0qE7KnW7l0QeRDoh9PnUPHTYPAA6w=";
hash = "sha256-KfojHrRJjGT03WeBobvBO9pHsJP6I7fSxzcSlmCsaxE=";
};
vendorHash = "sha256-3mmO5hjjIqVqKiSOrFFQH8OaQTviJVHrznMYsgHP82A=";
vendorHash = "sha256-Vq5k4Jz4r5iZs7Yy175Ubj92eSr4v1xCtbLYhfo3OAg=";
modRoot = "./cmd/chroma";
+2 -2
View File
@@ -29,11 +29,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "clightning";
version = "26.04";
version = "26.04.1";
src = fetchurl {
url = "https://github.com/ElementsProject/lightning/releases/download/v${finalAttrs.version}/clightning-v${finalAttrs.version}.zip";
hash = "sha256-6dxnhLkXIrfxqXi+UoBKsJw1YFIanOVGBYizJB0X3oU=";
hash = "sha256-MEsZ5GPCY6q/SNO+xcktfGiCZUVgl4p7pdMOiqIqFJM=";
};
# when building on darwin we need cctools to provide the correct libtool
+3 -5
View File
@@ -8,16 +8,16 @@
buildGoModule (finalAttrs: {
pname = "dgop";
version = "0.2.0";
version = "0.2.2";
src = fetchFromGitHub {
owner = "AvengeMedia";
repo = "dgop";
tag = "v${finalAttrs.version}";
hash = "sha256-CxTvTx7WYKj9usa1uZDUmCqS9+W0QoIeTGDlkhHLVho=";
hash = "sha256-kYEFJvJApcgVgFu6QpSoNk2t0hv7AlmBARc5HPe/n+s=";
};
vendorHash = "sha256-4GslUKwUCO8oOqylsclJmAZL/ds0plenzcTAwAXKtrc=";
vendorHash = "sha256-OxcSnBIDwbPbsXRHDML/Yaxcc5caoKMIDVHLFXaoSsc=";
ldflags = [
"-w"
@@ -28,8 +28,6 @@ buildGoModule (finalAttrs: {
nativeBuildInputs = [ installShellFiles ];
postInstall = ''
mv $out/bin/{cli,dgop}
installShellCompletion --cmd dgop \
--bash <($out/bin/dgop completion bash) \
--fish <($out/bin/dgop completion fish) \
@@ -10,7 +10,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "directx-shader-compiler";
version = "1.9.2602";
version = "1.10.2605.2";
# Put headers in dev, there are lot of them which aren't necessary for
# using the compiler binary.
@@ -23,7 +23,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "microsoft";
repo = "DirectXShaderCompiler";
rev = "v${finalAttrs.version}";
hash = "sha256-S3ar1LTV/9fYU2B5y8x0ESB20lMnAx8XQw9n3G4z0nk=";
hash = "sha256-FzfXxfhAyJw7rouWJEyeVdikG5TBM81yC+9iRg5tK3c=";
fetchSubmodules = true;
};
+5 -4
View File
@@ -9,10 +9,10 @@
}:
let
version = "2.8.5";
srcHash = "sha256-2Q6l+egcRntGjieXpXz/frGGw4GMhGXxQAUOAZfxBE4=";
vendorHash = "sha256-D92vOyTvlpOou/1WHS6xpb4e8igZMQhm4DP7SVSLKPI=";
manifestsHash = "sha256-X0Cf8UZufqUWKLxYVjblYNCz5IU/s+mI+h6TpTeks5k=";
version = "2.8.6";
srcHash = "sha256-pKP4g2pTMYtx/B/Y3ow7tvDdhCSuwbszzeLVXB0W7Bo=";
vendorHash = "sha256-VBafft9/AuXaHWvZymy7P9gaSuO8D6IZHfK68Ixp3mI=";
manifestsHash = "sha256-h/HR/rJwPWXiuoj9T+LajdsdT4Jo8/EuN+O1I7e9sjI=";
manifests = fetchzip {
url = "https://github.com/fluxcd/flux2/releases/download/v${version}/manifests.tar.gz";
@@ -82,6 +82,7 @@ buildGoModule rec {
jlesquembre
ryan4yin
SchahinRohani
stealthybox
superherointj
];
mainProgram = "flux";
+1
View File
@@ -126,6 +126,7 @@ buildGoModule rec {
"TestDNSUpdate" # requires network: release.forgejo.org
"TestMigrateWhiteBlocklist" # requires network: gitlab.com (DNS)
"TestURLAllowedSSH/Pushmirror_URL" # requires network git.gay (DNS)
"TestBleveDeleteIssue" # Known Flake-y https://github.com/NixOS/nixpkgs/issues/509878
];
in
[ "-skip=^${builtins.concatStringsSep "$|^" skippedTests}$" ];
+4 -4
View File
@@ -1,8 +1,8 @@
import ./generic.nix {
version = "15.0.0";
hash = "sha256-KAGHascGFj4X6b4BpRqQ8yCedNh0nvHfQgbzJh9fxAc=";
npmDepsHash = "sha256-AWvLcAS7EEy796kAQfiQ8sFSh/s+6zNCJEqe4qzQL3s=";
vendorHash = "sha256-bP7cykWKwNQrWm9jJT4YYAHRV66HaTwGkvhBqSHgWAA=";
version = "15.0.1";
hash = "sha256-40hyQ6MPskyty/LsMVczuDpbu2q3Syoj3c00HUS+pVE=";
npmDepsHash = "sha256-xWbnSX11RkLjtJ62qG6rD+xQAOnUuI99r9uEHakkZPY=";
vendorHash = "sha256-JUBAcRYgflrvoAK0OvaU/Xr6/BakgaUtYwtvBF9vyk0=";
lts = true;
nixUpdateExtraArgs = [
"--override-filename"
+20 -9
View File
@@ -1,28 +1,39 @@
{
lib,
rustPlatform,
fetchFromGitHub,
rustPlatform,
nixosTests,
nix-update-script,
}:
rustPlatform.buildRustPackage {
rustPlatform.buildRustPackage (finalAttrs: {
pname = "grafana-to-ntfy";
version = "0-unstable-2025-01-25";
version = "2026.4.29";
src = fetchFromGitHub {
owner = "kittyandrew";
repo = "grafana-to-ntfy";
rev = "64d11f553776bbf7695d9febd74da1bad659352d";
hash = "sha256-GO9VE9wymRk+QKGFyDpd0wS9GCY3pjpFUe37KIcnKxc=";
tag = "v${finalAttrs.version}";
hash = "sha256-ac0T8SNCDH9kQTKIfYn9KinnrSCYIBpNByO6NQ8UntA=";
};
cargoHash = "sha256-w4HSxdihElPz0q05vWjajQ9arZjAzd82L0kEKk1Uk8s=";
cargoHash = "sha256-RuWXlofcruR69sg+RO2v1DBgxaPEyu8TeZEiZP7rBV8=";
# No unit tests; all testing is NixOS VM-based integration tests
doCheck = false;
passthru = {
tests.grafana-to-ntfy = nixosTests.grafana-to-ntfy;
updateScript = nix-update-script { };
};
meta = {
description = "Bridge to forward Grafana alerts to ntfy.sh notification service";
description = "Bridge to forward Grafana and Prometheus Alertmanager alerts to ntfy.sh";
homepage = "https://github.com/kittyandrew/grafana-to-ntfy";
changelog = "https://github.com/kittyandrew/grafana-to-ntfy/releases/tag/v${finalAttrs.version}";
license = lib.licenses.agpl3Only;
platforms = lib.platforms.linux;
maintainers = [ ];
maintainers = with lib.maintainers; [ kittyandrew ];
mainProgram = "grafana-to-ntfy";
};
}
})
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
efiSupport = true;
}
// removeAttrs args [ "grub2" ]
)
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
ieee1275Support = true;
}
// removeAttrs args [ "grub2" ]
)
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
zfsSupport = false;
}
// removeAttrs args [ "grub2" ]
)
@@ -0,0 +1,11 @@
{
grub2_pvhgrub_image,
...
}@args:
grub2_pvhgrub_image.override (
{
grubPlatform = "xen";
}
// removeAttrs args [ "grub2_pvhgrub_image" ]
)
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
xenSupport = true;
}
// removeAttrs args [ "grub2" ]
)
+11
View File
@@ -0,0 +1,11 @@
{
grub2,
...
}@args:
grub2.override (
{
xenPvhSupport = true;
}
// removeAttrs args [ "grub2" ]
)
+2 -2
View File
@@ -8,10 +8,10 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "halo";
version = "2.23.1";
version = "2.24.0";
src = fetchurl {
url = "https://github.com/halo-dev/halo/releases/download/v${finalAttrs.version}/halo-${finalAttrs.version}.jar";
hash = "sha256-oU3MdmHnpf0TOwdEJb8UD2LIqEJ2BQ0puMIs1BBmA2M=";
hash = "sha256-71br2gG8vl3EyvC+AYzqJOtgHnhdEmcRAjXSXXXqI5s=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -6,16 +6,16 @@
}:
buildGoModule (finalAttrs: {
pname = "hysteria";
version = "2.8.1";
version = "2.8.2";
src = fetchFromGitHub {
owner = "apernet";
repo = "hysteria";
rev = "app/v${finalAttrs.version}";
hash = "sha256-KxCf9btvEbwP+oWL6A6rWpQsRJPifohFLDIdr+0XwzM=";
hash = "sha256-HgZVwaHL5q8aOxHhVt6RaHaBxoj83ujHaqLemQkLRUM=";
};
vendorHash = "sha256-NXBxrKptXTZzEXZ5hYHtC3wbFIYgL9avJay6DJHRMLU=";
vendorHash = "sha256-oHxnawchsHU/M1PZ0zXR5luopso1FptXi+PL5pNgdj0=";
proxyVendor = true;
ldflags =
+5 -3
View File
@@ -9,6 +9,7 @@
clinfo,
gdk-pixbuf,
gtk4,
libadwaita,
libdrm,
ocl-icd,
vulkan-loader,
@@ -24,16 +25,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lact";
version = "0.8.4";
version = "0.9.0";
src = fetchFromGitHub {
owner = "ilya-zlobintsev";
repo = "LACT";
tag = "v${finalAttrs.version}";
hash = "sha256-5z4IAiApUjlsSL0EX1PQH6rceeQxAD8f3CKmYO2x8gQ=";
hash = "sha256-c5GJf8AYgaAN3O6AVSEbJybEYb6lSHf7R24/1PKYhyM=";
};
cargoHash = "sha256-mCmAj9yLei0ZNtsBh+YeVlCmbHyT69LIHFnwbAk+Ido=";
cargoHash = "sha256-Y+XdCmaDXdP7x22bYm//Ov7+IzlCr8GpFOgCXGFCfbA=";
nativeBuildInputs = [
pkg-config
@@ -45,6 +46,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
buildInputs = [
gdk-pixbuf
gtk4
libadwaita
libdrm
ocl-icd
vulkan-loader
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "mcp-grafana";
version = "0.11.6";
version = "0.12.0";
src = fetchFromGitHub {
owner = "grafana";
repo = "mcp-grafana";
tag = "v${finalAttrs.version}";
hash = "sha256-cJjapd2phI4NgMAPzsKrs74+sEK7ykfKHQx24FVpHoQ=";
hash = "sha256-JlTyTUm1gvOKsRu2dGAPWv0IyU2fVjrsO+6wHxMGFDg=";
};
vendorHash = "sha256-a9VgfzJmbTudYSLqhBBnkpq37xghtxWTzpcd7rMlZmA=";
vendorHash = "sha256-dTCOD6/+o3ZHI2qAb97ZJaMyAg0dqIisrHhUkgXzw7w=";
ldflags = [
"-s"
@@ -61,9 +61,9 @@ done
continue
fi
# packages in the nix store should have an empty metadata file
# packages in the nix store should have a metadata file without 'version' (see createNupkgMetadata)
# packages installed with 'dotnet tool' may be missing 'source'
used_source="$(jq -r 'if has("source") then .source elif has("contentHash") then "__unknown" else "" end' "$version"/.nupkg.metadata)"
used_source="$(jq -r 'if has("source") then .source elif has("version") then "__unknown" else "" end' "$version"/.nupkg.metadata)"
found=false
if [[ -z "$used_source" || -d "$used_source" ]]; then
+4 -4
View File
@@ -23,25 +23,25 @@
# runs without an external linter, which leaves `jsPlugins` configs inert.
stdenv.mkDerivation (finalAttrs: {
pname = "oxlint";
version = "1.60.0";
version = "1.62.0";
src = fetchFromGitHub {
owner = "oxc-project";
repo = "oxc";
tag = "oxlint_v${finalAttrs.version}";
hash = "sha256-RMADw7oEf407J7/KDmIma0k3JKALMBkLqp9pyE+uRkA=";
hash = "sha256-BsfLVHGSyje1GAEaRfe4qmv6lcOiJjTmnd0L8/xIp24=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-Xla3mPOkBIfA4BMd+3/lO3mXy4V96DgyT+CzuhTTAd0=";
hash = "sha256-9DBME09qjjfypmj09Zuc8NdVTWC5/kAU83YAb+TeCPY=";
};
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;
pnpm = pnpm_10;
fetcherVersion = 3;
hash = "sha256-fomJmm0GXIClng63wql3hCo1Pf4CbVUiEtbvAv9DPIo=";
hash = "sha256-rgrwA8xZcEkxoFofHBz+AbGXLLCcihPb3435HAaphHs=";
};
dontUseCmakeConfigure = true;
+2 -2
View File
@@ -9,12 +9,12 @@
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "pyspread";
version = "2.4";
version = "2.4.5";
src = fetchPypi {
pname = "pyspread";
inherit (finalAttrs) version;
hash = "sha256-MZlR2Rap5oMRfCmswg9W//FYFkSEki7eyMNhLoGZgJM=";
hash = "sha256-7Nurn9OmK6LEz5TT543JUYKc/LjpkwfN/7r0ebS1PfY=";
};
pyproject = true;
+2 -2
View File
@@ -8,11 +8,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "questdb";
version = "9.3.2";
version = "9.3.5";
src = fetchurl {
url = "https://github.com/questdb/questdb/releases/download/${finalAttrs.version}/questdb-${finalAttrs.version}-no-jre-bin.tar.gz";
hash = "sha256-64ffNDBbaPoKGOeidCnqXT8NkWIq+UAOrfRkh8sSQp4=";
hash = "sha256-TvymN030Q9k9qPbBvrtHcOjT9KILw0tzCle1pdI7Bj8=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -14,16 +14,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "timr-tui";
version = "1.8.0";
version = "1.8.1";
src = fetchFromGitHub {
owner = "sectore";
repo = "timr-tui";
tag = "v${finalAttrs.version}";
hash = "sha256-kxXAH8IUe1LOoS8ch9OL6sS0oeviSN6H7hBJ6ZY+oQw=";
hash = "sha256-9HaKBrW0MkNzDErEIINztLyGpN4mkGF5RpmXohgbK6A=";
};
cargoHash = "sha256-zNbXxT0Z1TtqitD4P7m8TgEvg8C0AOslrVNKD/Nd9cQ=";
cargoHash = "sha256-J6Zi8oEAsbxMQe+oCk9T6Ic1hPdNXI9iFmn4Z0d0lFE=";
# Enable upstream "sound" feature when requested
buildFeatures = lib.optionals enableSound [ "sound" ];
+13 -11
View File
@@ -1,41 +1,43 @@
{
lib,
fetchFromGitHub,
fetchpatch,
python3,
writableTmpDirAsHomeHook,
}:
python3.pkgs.buildPythonApplication (finalAttrs: {
pname = "xnlinkfinder";
version = "6.0";
version = "8.2";
pyproject = true;
src = fetchFromGitHub {
owner = "xnl-h4ck3r";
repo = "xnLinkFinder";
tag = "v${finalAttrs.version}";
hash = "sha256-UMHMWHLJOhEeR+vO4YE3aNzdsvMAXPpQHQgdFf1QeMY=";
hash = "sha256-xym8ruHPAseqmWLUtCPTlpr3REDrpbWor66aNvfASjA=";
};
patches = [
# Clean-up setup.py
(fetchpatch {
name = "clean-up.patch";
url = "https://github.com/xnl-h4ck3r/xnLinkFinder/commit/8ef5e2ecf4c627b389cb7bb526f10fffe84acc13.patch";
hash = "sha256-14j3dFgehhPdqAe4e9FsB8sD66hKnNaPmDJRV1mQTDo=";
})
pythonRemoveDeps = [
# python already provides urllib.parse
"urlparse3"
];
build-system = with python3.pkgs; [ setuptools ];
nativeBuildInputs = [ writableTmpDirAsHomeHook ];
dependencies = with python3.pkgs; [
beautifulsoup4
html5lib
inflect
lxml
playwright
psutil
pypdf
pyyaml
requests
termcolor
tldextract
urllib3
];
@@ -47,7 +49,7 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
meta = {
description = "Tool to discover endpoints, potential parameters, and a target specific wordlist for a given target";
homepage = "https://github.com/xnl-h4ck3r/xnLinkFinder";
changelog = "https://github.com/xnl-h4ck3r/xnLinkFinder/blob/${finalAttrs.version}/CHANGELOG.md";
changelog = "https://github.com/xnl-h4ck3r/xnLinkFinder/blob/${finalAttrs.src.tag}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "xnLinkFinder";
@@ -23,19 +23,19 @@
buildPythonPackage (finalAttrs: {
pname = "llguidance";
version = "1.7.2";
version = "1.7.4";
pyproject = true;
src = fetchFromGitHub {
owner = "guidance-ai";
repo = "llguidance";
tag = "v${finalAttrs.version}";
hash = "sha256-Eu+hhYCVoZWMdwrjiHyvbGwjYKnbkBETZNMQ+SOb8AU=";
hash = "sha256-vEF9+nlYP8LnlROgDU0HPg8H+OmZCQARoE6ngGIw7NM=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src pname version;
hash = "sha256-oeFm9dPqlJWPnrA7//D31E1W2St+zIRd8pzR6gUhiTg=";
hash = "sha256-5dJkC0Iz0IBXxSq5ZeorLta7WEd81ajagSoXt1Zsq7Q=";
};
nativeBuildInputs = [
@@ -1,43 +0,0 @@
diff --git a/test/draw_test.py b/test/draw_test.py
index ed99f0ce9..0484ef53d 100644
--- a/test/draw_test.py
+++ b/test/draw_test.py
@@ -7496,6 +7496,10 @@ class DrawModuleTest(unittest.TestCase):
with self.assertRaises(TypeError):
draw.polygon(surf, col, points, 0)
+ @unittest.skipIf(
+ True,
+ "https://github.com/pygame-community/pygame-ce/pull/3680#issuecomment-3796052119",
+ )
def test_aafunctions_depth_segfault(self):
"""Ensure future commits don't break the segfault fixed by pull request
https://github.com/pygame-community/pygame-ce/pull/3008
diff --git a/test/surface_test.py b/test/surface_test.py
index c2c91f4f5..35b9e1aaf 100644
--- a/test/surface_test.py
+++ b/test/surface_test.py
@@ -286,6 +286,7 @@ class SurfaceTypeTest(unittest.TestCase):
for pt in test_utils.rect_outer_bounds(fill_rect):
self.assertNotEqual(s1.get_at(pt), color)
+ @unittest.skipIf(True, "https://github.com/libsdl-org/sdl2-compat/issues/575")
def test_fill_rle(self):
"""Test RLEACCEL flag with fill()"""
color = (250, 25, 25, 255)
diff --git a/test/window_test.py b/test/window_test.py
index b8dd1f005..5b7939908 100644
--- a/test/window_test.py
+++ b/test/window_test.py
@@ -113,10 +113,7 @@ class WindowTypeTest(unittest.TestCase):
self.win.always_on_top = False
self.assertFalse(self.win.always_on_top)
- @unittest.skipIf(
- SDL < (2, 0, 18),
- "requires SDL 2.0.18+",
- )
+ @unittest.skipIf(True, "https://github.com/pygame-community/pygame-ce/pull/3680")
def test_mouse_rect(self):
self.win.mouse_rect = None
self.assertIsNone(self.win.mouse_rect)
@@ -15,14 +15,14 @@ let
variants = {
# ./update-xanmod.sh lts
lts = {
version = "6.18.24";
hash = "sha256-BYy5AzTDQIMBJNwWIZ4uGjPKvXGgei7PAOT5gCvlp1Q=";
version = "6.18.25";
hash = "sha256-MC2hFOGC7WL0mrD4JEeCgRCNBYBYDt63jIP+HCgnTAg=";
isLTS = true;
};
# ./update-xanmod.sh main
main = {
version = "6.19.14";
hash = "sha256-xp5IBA4epb+3SCJIkbxqzymwvz4T9p7NOP9y6iy6DZk=";
version = "7.0.2";
hash = "sha256-RXdgP6jpy6GfZ70WG6k6rrryjHV2uUaqy4e+4jCgJek=";
};
};
@@ -58,7 +58,6 @@ let
# Preemption
PREEMPT = lib.mkOverride 60 yes;
PREEMPT_VOLUNTARY = lib.mkOverride 60 no;
# Google's BBRv3 TCP congestion Control
TCP_CONG_BBR = yes;
@@ -90,6 +89,9 @@ let
X86_FRED = yes;
X86_POSTED_MSI = yes;
}
// lib.optionalAttrs (lib.versionOlder (lib.versions.majorMinor version) "7.0") {
PREEMPT_VOLUNTARY = lib.mkOverride 60 no;
}
// lib.optionalAttrs (lib.versionAtLeast (lib.versions.majorMinor version) "6.13") {
# Lazy preemption
PREEMPT = lib.mkOverride 70 no;
@@ -4,10 +4,11 @@ nvidia_x11: sha256:
stdenv,
lib,
fetchFromGitHub,
buildPackages,
m4,
glibc,
libtirpc,
pkg-config,
addDriverRunpath,
libtirpc,
}:
stdenv.mkDerivation {
@@ -21,23 +22,29 @@ stdenv.mkDerivation {
inherit sha256;
};
env = {
LIBRARY_PATH = "${glibc}/lib";
env = lib.optionalAttrs (lib.versionOlder nvidia_x11.persistencedVersion "450.51") {
NIX_CFLAGS_COMPILE = toString [ "-I${libtirpc.dev}/include/tirpc" ];
NIX_LDFLAGS = toString [ "-ltirpc" ];
};
NIX_LDFLAGS = [ "-ltirpc" ];
depsBuildBuild = [ buildPackages.stdenv.cc ];
nativeBuildInputs = [
m4
pkg-config
addDriverRunpath
];
buildInputs = [
libtirpc
stdenv.cc.cc.lib
];
makeFlags = nvidia_x11.passthru.mod.makeFlags ++ [ "DATE=true" ];
makeFlags = [
"DATE=true"
"DO_STRIP="
"HOST_CC=\$(CC_FOR_BUILD)"
"HOST_LD=\$(LD_FOR_BUILD)"
];
installFlags = [ "PREFIX=$(out)" ];
@@ -47,8 +54,7 @@ stdenv.mkDerivation {
cp $out/{bin,origBin}/nvidia-persistenced
patchelf --set-interpreter /lib64/ld-linux-x86-64.so.2 $out/origBin/nvidia-persistenced
patchelf --set-rpath "$(patchelf --print-rpath $out/bin/nvidia-persistenced):${nvidia_x11}/lib" \
$out/bin/nvidia-persistenced
addDriverRunpath $out/bin/nvidia-persistenced
'';
meta = {
-26
View File
@@ -2471,32 +2471,6 @@ with pkgs;
withXorg = false;
};
grub2 = callPackage ../tools/misc/grub/default.nix { };
grub2_efi = grub2.override {
efiSupport = true;
};
grub2_ieee1275 = grub2.override {
ieee1275Support = true;
};
grub2_light = grub2.override {
zfsSupport = false;
};
grub2_xen = grub2.override {
xenSupport = true;
};
grub2_xen_pvh = grub2.override {
xenPvhSupport = true;
};
grub2_pvgrub_image = grub2_pvhgrub_image.override {
grubPlatform = "xen";
};
gruut = with python3.pkgs; toPythonApplication gruut;
gruut-ipa = with python3.pkgs; toPythonApplication gruut-ipa;
+3 -3
View File
@@ -35965,10 +35965,10 @@ with self;
TextCSV_XS = buildPerlPackage {
pname = "Text-CSV_XS";
version = "1.52";
version = "1.62";
src = fetchurl {
url = "mirror://cpan/authors/id/H/HM/HMBRAND/Text-CSV_XS-1.52.tgz";
hash = "sha256-5BWqcFut+Es1ncTA8MmC8b9whIHaoUdW8xNufInA5B0=";
url = "mirror://cpan/authors/id/H/HM/HMBRAND/Text-CSV_XS-1.62.tgz";
hash = "sha256-FxBpPt2u/dVudNpCuqntZ25+rtKOvTA60jyYL+8rFBU=";
};
meta = {
description = "Comma-Separated Values manipulation routines";