Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-03-19 12:12:47 +00:00
committed by GitHub
47 changed files with 2099 additions and 211 deletions
@@ -14,6 +14,8 @@
designed to run on affordable, low-power devices. Available as [services.meshtasticd]
(#opt-services.meshtasticd.enable).
- [Goupile](https://goupile.org/en), an open-source design tool for secure forms including Clinical Report Forms (eCRF). Available as [services.goupile](#opt-services.goupile.enable).
- [knot-resolver](https://www.knot-resolver.cz/) in version 6. Available as `services.knot-resolver`. A module for knot-resolver 5 was already available as `services.kresd`.
- [ImmichFrame](https://immichframe.dev/), display your photos from Immich as a digital photo frame. Available as `services.immichframe`.
+1
View File
@@ -1651,6 +1651,7 @@
./services/web-apps/goatcounter.nix
./services/web-apps/gotify-server.nix
./services/web-apps/gotosocial.nix
./services/web-apps/goupile.nix
./services/web-apps/grav.nix
./services/web-apps/grocy.nix
./services/web-apps/guacamole-client.nix
@@ -298,7 +298,6 @@ in
let
enabledTables = lib.filterAttrs (_: table: table.enable) cfg.tables;
deletionsScript = pkgs.writeScript "nftables-deletions" ''
#! ${pkgs.nftables}/bin/nft -f
${
if cfg.flushRuleset then
"flush ruleset"
@@ -313,9 +312,9 @@ in
${cfg.extraDeletions}
'';
deletionsScriptVar = "/var/lib/nftables/deletions.nft";
makeDeletions = "${pkgs.nftables}/bin/nft -f ${deletionsScriptVar}";
ensureDeletions = pkgs.writeShellScript "nftables-ensure-deletions" ''
touch ${deletionsScriptVar}
chmod +x ${deletionsScriptVar}
'';
saveDeletionsScript = pkgs.writeShellScript "nftables-save-deletions" ''
cp ${deletionsScript} ${deletionsScriptVar}
@@ -380,7 +379,7 @@ in
saveDeletionsScript
];
ExecStop = [
deletionsScriptVar
makeDeletions
cleanupDeletionsScript
];
StateDirectory = "nftables";
+147
View File
@@ -0,0 +1,147 @@
{
lib,
pkgs,
config,
...
}:
let
cfg = config.services.goupile;
settingsFormat = pkgs.formats.ini { };
in
{
options.services.goupile = {
enable = lib.mkEnableOption "Goupile server";
package = lib.mkPackageOption pkgs "goupile" { };
enableSandbox = lib.mkOption {
type = lib.types.bool;
default = true;
description = "Enable the sandbox option.";
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
options = {
HTTP.Port = lib.mkOption {
type = lib.types.port;
default = 8889;
description = "The port goupile runs on";
};
Data.RootDirectory = lib.mkOption {
type = lib.types.str;
default = "/var/lib/goupile";
description = "Goupile's data directory.";
};
};
};
default = { }; # default will be lost for submodules if overriden
example = lib.literalExpression ''
{
HTTP.Port = 8888;
}
'';
description = ''
The options for `systemd.services.goupile` in ini format.
The configuration options available can be found here
https://github.com/Koromix/rygel/blob/goupile/3.11.1/src/goupile/server/admin.cc#L41
'';
};
configFile = lib.mkOption {
type = lib.types.path;
description = ''
The configuration file to be passed to goupile server.
By default the configuration file is created from `services.goupile.settings`.
'';
};
hostName = lib.mkOption {
type = lib.types.str;
default = "goupile";
description = "Nginx service name for goupile service.";
};
};
config = lib.mkIf cfg.enable (
lib.mkMerge [
{
services.nginx = {
enable = lib.mkDefault true;
virtualHosts.${cfg.hostName} = {
locations."/".proxyPass = "http://${cfg.hostName}:${builtins.toString cfg.settings.HTTP.Port}";
};
};
}
{
services.goupile.configFile = settingsFormat.generate "goupile.ini" cfg.settings;
}
{
systemd.services.goupile = {
wants = [ "network-online.target" ];
after = [ "network-online.target" ];
wantedBy = [ "multi-user.target" ];
documentation = [ "https://goupile.org/en" ];
description = "Goupile eCRF";
serviceConfig = {
ExecStart = ''
${lib.getExe cfg.package} \
${lib.optionalString cfg.enableSandbox "--sandbox"} \
-C ${cfg.configFile}
'';
DynamicUser = true;
RuntimeDirectory = "goupile";
RuntimeDirectoryPreserve = "yes";
StateDirectory = "goupile";
UMask = 0077;
WorkingDirectory = "%S/goupile";
SystemCallArchitectures = "native";
SystemCallFilter = [
"~@privileged"
"~@resources"
"~@obsolete"
"~@mount"
"@system-service"
"@file-system"
"@basic-io"
"@clock"
];
ProtectHome = true;
PrivateUsers = true;
PrivateDevices = true;
ProtectKernelLogs = true;
ProtectControlGroups = true;
ProtectKernelModules = true;
CapabilityBoundingSet = [
"CAP_SYS_PTRACE"
"CAP_CHOWN"
"CAP_DAC_OVERRIDE"
"CAP_FOWNER"
"CAP_KILL" # Required for child process management
"CAP_NET_BIND_SERVICE"
"CAP_SETGID"
"CAP_SETUID"
"CAP_SYS_CHROOT"
"CAP_SYS_RESOURCE"
];
Restart = "always";
RestartSec = 20;
TimeoutStopSec = 30;
LimitNOFILE = 4096;
};
};
}
]
);
meta.maintainers = lib.teams.ngi.members;
}
+1
View File
@@ -690,6 +690,7 @@ in
gotenberg = runTest ./gotenberg.nix;
gotify-server = runTest ./gotify-server.nix;
gotosocial = runTest ./web-apps/gotosocial.nix;
goupile = runTest ./web-apps/goupile;
grafana = handleTest ./grafana { };
graphite = runTest ./graphite.nix;
grav = runTest ./web-apps/grav.nix;
@@ -0,0 +1,178 @@
import os
import openpyxl
import tempfile
from playwright.sync_api import sync_playwright
BASE_URL = "http://localhost:8889"
# NOTE: these are the passwords
ADMIN_PASSWD = "car-shop-in-the-mall"
ALICE_PASSWD = "user-goes-to-the-car-shop"
def run_test():
is_headful = os.getenv("HEADFUL") == "1"
with sync_playwright() as p:
browser = p.chromium.launch(headless=not is_headful)
context = browser.new_context(
accept_downloads=True, record_video_dir="/tmp/videos/"
)
# more default timeout for slow nixos test vms
context.set_default_timeout(90 * 1000)
page = context.new_page()
page.goto(f"{BASE_URL}/admin")
# admin and doman setup
page.get_by_role("textbox", name="Domain name *").fill("domain")
page.get_by_role("textbox", name="Domain title *").fill("domain")
page.get_by_role("textbox", name="Password *").fill(ADMIN_PASSWD)
page.get_by_role("textbox", name="Confirmation").fill(ADMIN_PASSWD)
page.get_by_role("textbox", name="Decryption key *").click()
page.get_by_role("button", name="Installer").click()
# login to admin dashboard as admin
page.get_by_role("textbox", name="Username *").fill("admin")
page.get_by_role("textbox", name="Password *").fill(ADMIN_PASSWD)
page.get_by_role("button", name="Login").click()
# create a sample project, it will switch the view to project's configure page
page.get_by_text("Create new project").click()
page.get_by_role("textbox", name="Name *").fill("proj1")
page.get_by_role("button", name="Create").click()
# create a test non-root user, alice
page.get_by_text("Create new user").click()
page.get_by_role("textbox", name="Username *").fill("alice")
page.get_by_role("button", name="No", exact=True).click()
page.get_by_role("textbox", name="Password *").fill(ALICE_PASSWD)
page.get_by_role("textbox", name="Confirmation").fill(ALICE_PASSWD)
page.get_by_role("button", name="Create").click()
# give alice, permissions to access the project
page.get_by_role("button", name="Assign").nth(1).click()
page.get_by_text("Read", exact=True).click()
page.get_by_text("Save", exact=True).click()
page.get_by_text("Export", exact=True).click()
page.get_by_text("Download", exact=True).click()
# Open the project in new page
page.locator("form").get_by_role("button", name="Edit").click()
with page.expect_popup() as page1_info:
page.get_by_role("link", name="access").click()
page1 = page1_info.value
page1.set_default_timeout(120 * 1000)
# fill entries as admin (enter 1 for everything)
page1.get_by_role("button", name="Create new record").click()
page1.locator("#ins_tiles").get_by_text("Introduction").click()
page1.get_by_role("textbox", name="Inclusion date *").fill("2000-01-01")
page1.get_by_role("spinbutton", name="Age *").click()
page1.get_by_role("spinbutton", name="Age *").fill("1")
page1.get_by_role("button", name="Save").click()
page1.wait_for_timeout(1000)
page1.get_by_role("button", name="Advanced").click()
page1.get_by_role("spinbutton", name="Age *").click()
page1.get_by_role("spinbutton", name="Age *").fill("1")
page1.get_by_role("button", name="Save").click()
page1.wait_for_timeout(1000)
page1.get_by_role("button", name="Page layout").click()
page1.get_by_role("spinbutton", name="Variable A1").fill("1")
page1.get_by_role("button", name="Save").click()
page1.wait_for_timeout(1000)
# create export #1
page1.get_by_role("button", name="Data").click()
page1.wait_for_timeout(1000)
page1.get_by_role("button", name="Data exports").click()
with page1.expect_download() as download_info:
page1.get_by_role("button", name="Create export").click()
# logout as admin
page.get_by_role("button", name="admin", exact=True).click()
with page.expect_popup() as page2_info:
page.get_by_role("link", name="access").click()
page2 = page2_info.value
page2.set_default_timeout(120 * 1000)
page2.get_by_role("button", name="admin").click()
page2.get_by_role("button", name="Logout").click()
# login as alice
page2.get_by_role("textbox", name="Username *").fill("alice")
page2.get_by_role("textbox", name="Password *").fill(ALICE_PASSWD)
page2.get_by_role("button", name="Login").click()
# create entry as alice (fill `2` for everything)
page2.get_by_role("button", name="Create new record").click()
page2.get_by_text("1 Introduction").click()
page2.get_by_role("textbox", name="Inclusion date *").fill("2000-01-01")
page2.get_by_role("spinbutton", name="Age *").click()
page2.get_by_role("spinbutton", name="Age *").fill("2")
page2.get_by_role("button", name="Save").click()
page2.wait_for_timeout(1000)
page2.get_by_role("button", name="Advanced").click()
page2.get_by_role("spinbutton", name="Age *").click()
page2.get_by_role("spinbutton", name="Age *").fill("2")
page2.get_by_role("button", name="Save").click()
page2.wait_for_timeout(1000)
page2.get_by_role("button", name="Page layout").click()
page2.get_by_role("spinbutton", name="Variable A1").click()
page2.get_by_role("spinbutton", name="Variable A1").fill("2")
page2.get_by_role("button", name="Save").click()
page2.wait_for_timeout(1000)
# create export #2
page2.get_by_role("button", name="Data").click()
page2.wait_for_timeout(1000)
page2.get_by_role("button", name="Data exports").click()
page2.get_by_role("button", name="Previous exports").click()
with page2.expect_download() as download1_info:
page2.locator("a").filter(has_text="Download").click()
download1 = download1_info.value
save_path1 = os.path.join(tempfile.gettempdir(), download1.suggested_filename)
download1.save_as(save_path1)
print(f"exported all records to {save_path1}")
page2.get_by_role("button", name="Data exports").click()
with page2.expect_download() as download2_info:
page2.get_by_role("button", name="Create export").click()
download2 = download2_info.value
save_path2 = os.path.join(tempfile.gettempdir(), download2.suggested_filename)
download2.save_as(save_path2)
print(f"exported all records to {save_path2}")
context.close()
browser.close()
# check that exported files have correct entries
wb1 = openpyxl.load_workbook(save_path1)
for sheet, cell in zip(["intro", "advanced", "layout"], ["D2", "D2", "C2"]):
val = wb1[sheet][cell].value
assert val == 1, f"Sheet {sheet}, Cell {cell}: Expected 1 (admin), got {val}"
wb2 = openpyxl.load_workbook(save_path2)
for sheet, cell in zip(["intro", "advanced", "layout"], ["D3", "D3", "C3"]):
val = wb2[sheet][cell].value
assert val == 2, f"Sheet {sheet}, Cell {cell}: Expected 2 (alice), got {val}"
print("Test passed successfully!")
if __name__ == "__main__":
run_test()
+153
View File
@@ -0,0 +1,153 @@
{
lib,
pkgs,
...
}:
let
python = pkgs.python3.withPackages (
ps: with ps; [
requests
playwright
openpyxl
]
);
runScript = "${lib.getExe python} ${./basic_interaction_test.py}";
run-goupile-test = pkgs.writeShellScriptBin "run-goupile-test" ''
set -euo pipefail
export PLAYWRIGHT_BROWSERS_PATH=${pkgs.playwright-driver.browsers}
export PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1
# check if attached to a terminal
if [ -t 1 ]; then
# interactive testing
export HEADFUL=''${HEADFUL:-1}
export PWDEBUG=''${PWDEBUG:-0}
export DISPLAY=''${DISPLAY:-:0}
if [ "$(id -u)" = "0" ] && [ -d "/home/alice" ]; then
runuser -u alice \
-w DISPLAY,HEADFUL,PWDEBUG,PLAYWRIGHT_BROWSERS_PATH,PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD \
-- ${runScript}
else
${runScript}
fi
else
# non-interactive nixos test
# Print instructions to the nix logs
cat <<'EOF' | tee >(systemd-cat -t goupile-e2e)
================================================================================
NOTE: The goupile e2e test can be run interactively either inside the vm or on the host
- First, run `nix-build -A nixosTests.goupile.driverInteractive` and `./result/bin/nixos-test-driver`
- Run `start_all()` inside the repl
- Then `$(nix-build -A nixosTests.goupile.interactive-script)/bin/run-goupile-test` to run the full test interactively
- Or `env PWDEBUG=1 $(nix-build -A nixosTests.goupile.interactive-script)/bin/run-goupile-test` to show the playwright inspector to debug
================================================================================
EOF
echo "Starting smoke test..." | systemd-cat -t goupile-e2e
${runScript} 2>&1 | tee >(systemd-cat -t goupile-e2e)
fi
'';
in
{
name = "goupile";
passthru.interactive-script = run-goupile-test;
nodes.machine =
{
lib,
pkgs,
config,
...
}:
{
services.goupile = {
enable = true;
enableSandbox = true;
settings.HTTP.Port = 8889;
};
#systemd.services.goupile.environment.DEFAULT_SECCOMP_ACTION = "Log"; # Block|Log|Kill
networking = {
firewall.allowedTCPPorts = [ config.services.nginx.defaultHTTPListenPort ];
hostName = "goupile";
domain = "local";
};
# goupile tries to resolve it at runtime, resolve it instead of patching it out
# as the dns resolution step serves a purpose, to force glibc to load NSS libraries
# see server/goupile.cc and search for getaddrinfo or www.example.com
networking.extraHosts = ''
127.0.0.1 www.example.com
'';
environment.systemPackages = [
python
run-goupile-test
];
# more cores and memory to improve chromium performance
virtualisation.memorySize = lib.mkForce 8192;
virtualisation.cores = 4;
};
testScript =
{ nodes, ... }:
let
port = builtins.toString nodes.machine.services.goupile.settings.HTTP.Port;
in
# py
''
import os
start_all()
machine.wait_for_unit("goupile.service")
machine.wait_for_open_port(${port})
machine.succeed("curl -q http://localhost:${port}")
machine.succeed("curl -q http://goupile.local")
machine.succeed("curl -q http://localhost")
machine.succeed("run-goupile-test")
out_dir = os.environ.get("out", os.getcwd())
machine.copy_from_vm("/tmp/videos", out_dir)
'';
# Debug interactively with:
# - nix-build -A nixosTests.goupile.driverInteractive
# - ./result/bin/nixos-test-driver
# - run_tests()
# ssh -o User=root vsock%3 (can also do vsock/3, but % works with scp etc.)
interactive.sshBackdoor.enable = true;
interactive.nodes.machine =
{ config, ... }:
let
port = config.services.goupile.settings.HTTP.Port;
in
{
imports = [
# enable graphical session + users (alice, bob)
../../common/x11.nix
../../common/user-account.nix
];
services.xserver.enable = true;
test-support.displayManager.auto.user = "alice";
virtualisation.forwardPorts = [
{
from = "host";
host.port = port;
guest.port = port;
}
];
# forwarded ports need to be accessible
networking.firewall.allowedTCPPorts = [ port ];
};
meta.maintainers = lib.teams.ngi.members;
}
@@ -3008,8 +3008,8 @@ let
mktplcRef = {
publisher = "mesonbuild";
name = "mesonbuild";
version = "1.28.1";
hash = "sha256-Cu2sBg8wTjGLOMF4bCOG8noXZXZB2j5wSXZS2VxxNoA=";
version = "1.28.2";
hash = "sha256-Wb3cfATe8pc+LftmKyFj3q6kmdTHUMtoIHlChKKeEoU=";
};
meta = {
changelog = "https://marketplace.visualstudio.com/items/mesonbuild.mesonbuild/changelog";
@@ -4458,8 +4458,8 @@ let
mktplcRef = {
name = "vscode-stylelint";
publisher = "stylelint";
version = "2.0.2";
hash = "sha256-nJYy7HFycKXTQCHgaLP46CGl0hlgaexL1QZ8icGpeVo=";
version = "2.1.0";
hash = "sha256-cL86Gv2HAtvqNd+2vJPuKAgKVrp5pg6IECFm1Di8Eqk=";
};
meta = {
description = "Official Stylelint extension for Visual Studio Code";
@@ -15,13 +15,13 @@ let
vsix = stdenv.mkDerivation (finalAttrs: {
name = "gitlens-${finalAttrs.version}.vsix";
pname = "gitlens-vsix";
version = "17.11.0";
version = "17.11.1";
src = fetchFromGitHub {
owner = "gitkraken";
repo = "vscode-gitlens";
tag = "v${finalAttrs.version}";
hash = "sha256-MMUfl8Vc6mAjs0ZPWV0lHQdqRkKKY0FEx7mbz/yrk9k=";
hash = "sha256-BN6qgPYhZ+FuYnwmV0S3y2vOR4ZLC+VGWuEEPqfOqi4=";
};
pnpmDeps = fetchPnpmDeps {
@@ -472,13 +472,13 @@
"vendorHash": "sha256-mzDFyk2oImRXt72kFV5Ln++ScgoecpJEJtzUKjvCaws="
},
"grafana_grafana": {
"hash": "sha256-ifE5W6sUo/BTxO+noss+nqw+LDPlkxdpySlJ08n7Kd4=",
"hash": "sha256-XXnmPZstCrZ2NDMx/azDpvXknuEwqJ+GW0hiaH3+bDQ=",
"homepage": "https://registry.terraform.io/providers/grafana/grafana",
"owner": "grafana",
"repo": "terraform-provider-grafana",
"rev": "v4.27.1",
"rev": "v4.28.1",
"spdx": "MPL-2.0",
"vendorHash": "sha256-OCdknvuL/+khhFdopVLKEYKBwLbyPnziKamHDUEX+Zk="
"vendorHash": "sha256-OMrFGY8rIf32E6/TKSmR/AQPj+GS1e9V5UyPxzhXaNE="
},
"gridscale_gridscale": {
"hash": "sha256-FAKvQ/MEod5Ck0PG4ffQ+gQp6zZ0JDRXPOrOiDpWMls=",
+3 -3
View File
@@ -18,18 +18,18 @@
stdenv.mkDerivation rec {
pname = "audio-mirroring";
version = "0.1.1";
version = "0.1.3";
src = fetchFromGitHub {
owner = "mkg20001";
repo = "audio-mirroring";
tag = "v${version}";
hash = "sha256-f4V5ZJvXhdwqS4kx99Lr2Eb8r08PRd3T4mbRoAyyIqE=";
hash = "sha256-Idu15ZfY8JYVZhub0LRXYtWdiVCMVRyC3MVTX4JcbzY=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit pname version src;
hash = "sha256-+mAdxaaQOO7AIn/o/J13FbHIvtepk8/okGxO6p6aGzI=";
hash = "sha256-kiDGCl3De5dhDwwCf1F38gnGtfNpAVot0G0+Gxmyyp0=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -10,13 +10,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "cgl";
version = "0.60.9";
version = "0.60.10";
src = fetchFromGitHub {
owner = "coin-or";
repo = "Cgl";
rev = "releases/${finalAttrs.version}";
hash = "sha256-E84yCrgpRMjt7owPLPk1ATW+aeHNw8V24DHgkb6boIE=";
hash = "sha256-zkq8pdn4m56sGd3I6xID3M+u7BxVp0S5naKBjqAdeyE=";
};
nativeBuildInputs = [
+3 -3
View File
@@ -6,18 +6,18 @@
buildGoModule (finalAttrs: {
pname = "cnspec";
version = "13.0.0";
version = "13.1.1";
src = fetchFromGitHub {
owner = "mondoohq";
repo = "cnspec";
tag = "v${finalAttrs.version}";
hash = "sha256-qA48TBt1S4M6xyvfBELxbJd0R7PwY34naZctb4XRnwo=";
hash = "sha256-579zSogioTKdsqOwTptJUqN1IEWnPzEmWrSjllqIYOY=";
};
proxyVendor = true;
vendorHash = "sha256-CwR0/L+ptBKjBLLZ7I96+jxJyCAgM7V0etXz+H0vlhI=";
vendorHash = "sha256-ZPJGtI5HTetjSDfkXmF2elyXPO7AmQn1zmXzEjNIIXc=";
subPackages = [ "apps/cnspec" ];
+3 -3
View File
@@ -8,17 +8,17 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "codebook";
version = "0.3.32";
version = "0.3.34";
src = fetchFromGitHub {
owner = "blopker";
repo = "codebook";
tag = "v${finalAttrs.version}";
hash = "sha256-UkE1ND1ditGIlplHG6EslK2uDvRWz7jmn2UmUhlYbdE=";
hash = "sha256-BMPwYw7BHywyDJLgHzJt6HsrI23Y+Ng+vcUdFNJH68M=";
};
buildAndTestSubdir = "crates/codebook-lsp";
cargoHash = "sha256-27+9vjTHBxJ3WM2e3xmTO2CmJvsmqN4nhqD0Sf0YtEw=";
cargoHash = "sha256-q6oEHXGxItR9GW2vqpj2i6AN0hH8ybMQ+vkX4aljt/I=";
env = {
CARGO_PROFILE_RELEASE_LTO = "fat";
+2 -2
View File
@@ -6,10 +6,10 @@
let
pname = "fflogs";
version = "8.20.113";
version = "9.0.24";
src = fetchurl {
url = "https://github.com/RPGLogs/Uploaders-fflogs/releases/download/v${version}/fflogs-v${version}.AppImage";
hash = "sha256-mwbATBhkbeZ2f4KAytOgp8XbCL4dY7S7OPHj//4kqGQ=";
hash = "sha256-9L9eNpK2MI3P+mhUDCAzfi3YDdWpHGjiUS5LjksUjqo=";
};
extracted = appimageTools.extractType2 { inherit pname version src; };
in
+3 -3
View File
@@ -6,16 +6,16 @@
buildGoModule (finalAttrs: {
pname = "olm";
version = "1.4.2";
version = "1.4.3";
src = fetchFromGitHub {
owner = "fosrl";
repo = "olm";
tag = finalAttrs.version;
hash = "sha256-Tily8Srpr5GpKTYl3Ivm1b/VN2yEzbbHHABeoJvo3wo=";
hash = "sha256-4dzbSW9AoFitypVOD/N4/mnUJwh0USgOwVqcopLkcYs=";
};
vendorHash = "sha256-lqH/pMWeDsTJa39uJwHntCAUs0BwJiB0aMyFaI++5ms=";
vendorHash = "sha256-D93SPwXAeoTLCbScjyH8AB9TJIF2b/UbLNMIQYi+B+c=";
ldflags = [
"-s"
+2 -2
View File
@@ -11,13 +11,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "ft2-clone";
version = "2.11";
version = "2.12";
src = fetchFromGitHub {
owner = "8bitbubsy";
repo = "ft2-clone";
rev = "v${finalAttrs.version}";
hash = "sha256-thOQcsnFkDJh0P2Yu/1rCmt/M3Ikr88ffFHUDrgFNyk=";
hash = "sha256-Ca4vp2uEF7rZJ+0lAmVqC/6F+2CgbDLK2GkbG5Tn//0=";
};
nativeBuildInputs = [ cmake ];
+6 -3
View File
@@ -6,20 +6,21 @@
fetchFromGitLab,
nix-update-script,
versionCheckHook,
writableTmpDirAsHomeHook,
}:
buildGoModule (finalAttrs: {
pname = "gitlab-runner";
version = "18.8.0";
version = "18.9.0";
src = fetchFromGitLab {
owner = "gitlab-org";
repo = "gitlab-runner";
tag = "v${finalAttrs.version}";
hash = "sha256-rS7+BUdec+Z4G/dd5D/NHe3gbELWicg0Nmgx4zJAIX4=";
hash = "sha256-U13SouwEfCVy5M8fv6rkCX0F+ecVYdsocvAdt3yxPJA=";
};
vendorHash = "sha256-Br9TW+sg7PDOE2d8lVQ9Xv9+UD7JHzitdTOcyodHr+s=";
vendorHash = "sha256-Ak1Q8FnTD8LKcN9xRc1gpcnUiambGC3CJP84cwQqTtM=";
# For patchShebangs
buildInputs = [ bash ];
@@ -85,6 +86,8 @@ buildGoModule (finalAttrs: {
"-X ${ldflagsPackageVariablePrefix}.REVISION=v${finalAttrs.version}"
];
nativeCheckInputs = [ writableTmpDirAsHomeHook ];
preCheck = ''
# Make the tests pass outside of GitLab CI
export CI=0
@@ -1,5 +1,5 @@
diff --git a/shells/bash_test.go b/shells/bash_test.go
index 9ed9e65ff..02b6e6d5f 100644
index bbbe949f4..955992d3f 100644
--- a/shells/bash_test.go
+++ b/shells/bash_test.go
@@ -4,11 +4,9 @@ package shells
@@ -11,10 +11,10 @@ index 9ed9e65ff..02b6e6d5f 100644
"github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
"gitlab.com/gitlab-org/gitlab-runner/common"
)
@@ -90,65 +88,6 @@ func TestBash_CheckForErrors(t *testing.T) {
"gitlab.com/gitlab-org/gitlab-runner/common"
"gitlab.com/gitlab-org/gitlab-runner/common/spec"
@@ -78,65 +76,6 @@ func TestBash_CheckForErrors(t *testing.T) {
}
}
+5 -10
View File
@@ -43,19 +43,15 @@ stdenv.mkDerivation rec {
sha256 = "0017xg5agj3dy0hx71ijdcrxb72bjqv7x6aq7c9zxzyyw0mkxj0k";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-6/debian/patches/10_pthread_underlinkage.patch";
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-11/debian/patches/10_pthread_underlinkage.patch";
sha256 = "sha256-L9POADlkgQbUQEUmx4s3dxXG9tS0w2IefpRGuQNRMI0=";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-6/debian/patches/link-boost-system.patch";
sha256 = "sha256-ne6F2ZowB+TUmg3ePuUoPNxXI0ZJC6HEol3oQQHJTy4=";
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-11/debian/patches/scons.patch";
sha256 = "sha256-kHuFQCmkCkogqK6vfHKGYeZrMvsdQ7h8B3CcCtjLr50=";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-6/debian/patches/scons.patch";
sha256 = "sha256-Gah7SoVcd/Aljs0Nqo3YF0lZImUWtrGM4HbbQ4yrhHU=";
})
(fetchpatch {
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-6/debian/patches/boost-1.69.patch";
url = "https://sources.debian.org/data/main/g/glob2/0.9.4.4-11/debian/patches/boost-1.69.patch";
sha256 = "sha256-D7agFR4uyIHxQz690Q8EHPF+rTEoiGUpgkm7r5cL5SI=";
})
];
@@ -77,6 +73,7 @@ stdenv.mkDerivation rec {
scons
bsdiff # bspatch
];
buildInputs = [
libGLU
libGL
@@ -98,8 +95,6 @@ stdenv.mkDerivation rec {
"DATADIR=${placeholder "out"}/share/globulation2/glob2"
];
env.NIX_LDFLAGS = "-lboost_system";
meta = {
description = "RTS without micromanagement";
mainProgram = "glob2";
+77
View File
@@ -0,0 +1,77 @@
{
lib,
fetchFromGitHub,
versionCheckHook,
installShellFiles,
stdenv,
clangStdenv,
llvmPackages,
nixosTests,
# https://goupile.org/en/build recommends a Paranoid build
# which is not bit by bit reproducible, whereas others are
profile ? "Paranoid",
}:
assert lib.assertOneOf "profile" profile [
"Fast"
"Debug"
"Paranoid"
];
let
stdenv' = if (profile == "Paranoid") then clangStdenv else stdenv;
in
stdenv'.mkDerivation (finalAttrs: {
pname = "goupile";
version = "3.12.1";
# https://github.com/Koromix/rygel/tags
src = fetchFromGitHub {
owner = "Koromix";
repo = "rygel";
tag = "goupile/${finalAttrs.version}";
hash = "sha256-Pn/0tjezVKJedAtqj69avxeIK2l3l9FGioYSyEao12E=";
};
nativeBuildInputs = [
installShellFiles
]
++ lib.optionals (profile == "Paranoid") [
llvmPackages.bintools
];
# pipe2() is only exposed with _GNU_SOURCE
NIX_CFLAGS_COMPILE = [ "-D_GNU_SOURCE" ];
buildPhase = ''
runHook preBuild
./bootstrap.sh
echo "goupile = ${finalAttrs.version}" >FelixVersions.ini
./felix -s -p${profile} goupile
runHook postBuild
'';
installPhase = ''
runHook preInstall
installBin bin/${profile}/goupile
runHook postInstall
'';
doInstallCheck = true;
versionCheckProgramArg = "--version";
nativeInstallCheckInputs = [ versionCheckHook ];
passthru.tests = { inherit (nixosTests) goupile; };
meta = {
changelog = "https://github.com/Koromix/rygel/blob/${finalAttrs.src.rev}/src/goupile/CHANGELOG.md";
description = "Free design tool for secure forms including Clinical Report Forms (eCRF)";
homepage = "https://goupile.org/en";
license = lib.licenses.gpl3Plus; # sdpx headers
platforms = lib.platforms.linux; # https://goupile.org/en/build
mainProgram = "goupile";
teams = with lib.teams; [ ngi ];
};
})
+60 -65
View File
@@ -6,105 +6,106 @@
buildGoModule,
buildNpmPackage,
systemd,
grafana-alloy,
installShellFiles,
versionCheckHook,
nixosTests,
nix-update-script,
installShellFiles,
testers,
lld,
useLLD ? stdenv.hostPlatform.isArmv7,
}:
buildGoModule (finalAttrs: {
pname = "grafana-alloy";
version = "1.12.2";
version = "1.14.1";
src = fetchFromGitHub {
owner = "grafana";
repo = "alloy";
tag = "v${finalAttrs.version}";
hash = "sha256-C/yqsUjEwKnGRkxMOQkKfGdeERbvO/e7D7c3CyJ+cVY=";
hash = "sha256-zgbbbuq+sb+nU1vgzaxEHGY77k+TXFrlvcvs/NSqQAM=";
};
npmDeps = fetchNpmDeps {
src = "${finalAttrs.src}/internal/web/ui";
hash = "sha256-3J1Slka5bi+72NUaHBmDTtG1faJWRkOlkClKnUyiUsk=";
hash = "sha256-GT0yisPn+3FCtWL3he0i5zPMlaWNparQDefU69G4Yis=";
};
frontend = buildNpmPackage {
pname = "alloy-frontend";
inherit (finalAttrs) version src;
inherit (finalAttrs) npmDeps;
sourceRoot = "${finalAttrs.src.name}/internal/web/ui";
inherit (finalAttrs) npmDeps;
installPhase = ''
runHook preInstall
mkdir $out
mkdir -p $out
cp -av dist $out/share
runHook postInstall
'';
};
proxyVendor = true;
vendorHash = "sha256-Bq/6ld2LldSDhksNqGMHXZAeNHh74D07o2ETpQqMcP4=";
patchPhase = ''
cp -av ${finalAttrs.frontend}/share internal/web/ui/dist
'';
nativeBuildInputs = [
installShellFiles
modRoot = "collector";
proxyVendor = true;
vendorHash = "sha256-A1mbMmpUxg5T7//X5PL1CPGB1OMPhertFvz4sPFTgOg=";
subPackages = [ "." ];
ldflags = [
"-s"
"-w"
"-X github.com/grafana/alloy/internal/build.Version=${finalAttrs.version}"
"-X github.com/grafana/alloy/internal/build.Branch=v${finalAttrs.version}"
"-X github.com/grafana/alloy/internal/build.Revision=v${finalAttrs.version}"
"-X github.com/grafana/alloy/internal/build.BuildUser=nix@nixpkgs"
"-X github.com/grafana/alloy/internal/build.BuildDate=1970-01-01T00:00:00Z"
];
tags = [
"embedalloyui"
"netgo"
]
++ lib.optionals useLLD [ lld ];
++ lib.optionals stdenv.hostPlatform.isLinux [
"promtail_journal_enabled"
];
env =
lib.optionalAttrs useLLD {
NIX_CFLAGS_LINK = "-fuse-ld=lld";
}
// lib.optionalAttrs (stdenv.hostPlatform.isLinux) {
# uses go-systemd, which uses libsystemd headers
# Uses go-systemd, which uses libsystemd headers.
# https://github.com/coreos/go-systemd/issues/351
NIX_CFLAGS_COMPILE = "-I${lib.getDev systemd}/include";
};
ldflags =
let
prefix = "github.com/grafana/alloy/internal/build";
in
[
"-s"
"-w"
# https://github.com/grafana/alloy/blob/3201389252d2c011bee15ace0c9f4cdbcb978f9f/Makefile#L110
"-X ${prefix}.Branch=v${finalAttrs.version}"
"-X ${prefix}.Version=${finalAttrs.version}"
"-X ${prefix}.Revision=v${finalAttrs.version}"
"-X ${prefix}.BuildUser=nix"
"-X ${prefix}.BuildDate=1970-01-01T00:00:00Z"
];
nativeBuildInputs = [
installShellFiles
]
++ lib.optionals useLLD [ lld ];
tags = [
"netgo"
"builtinassets"
"promtail_journal_enabled"
];
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
mv -v $out/bin/otel_engine $out/bin/alloy
patchPhase = ''
# Copy frontend build in
cp -va "${finalAttrs.frontend}/share" "internal/web/ui/dist"
installShellCompletion --cmd alloy \
--bash <($out/bin/alloy completion bash) \
--fish <($out/bin/alloy completion fish) \
--zsh <($out/bin/alloy completion zsh)
'';
subPackages = [
"."
];
checkFlags = [
"-tags"
"nonetwork" # disable network tests
"-tags"
"nodocker" # disable docker tests
];
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
versionCheckProgramArg = "-v";
# go-systemd uses libsystemd under the hood, which does dlopen(libsystemd) at
# runtime.
# Add to RUNPATH so it can be found.
# runtime. Add to RPATH so it can be found.
postFixup = lib.optionalString stdenv.hostPlatform.isLinux ''
patchelf \
--set-rpath "${
@@ -113,20 +114,9 @@ buildGoModule (finalAttrs: {
$out/bin/alloy
'';
postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
installShellCompletion --cmd alloy \
--bash <($out/bin/alloy completion bash) \
--fish <($out/bin/alloy completion fish) \
--zsh <($out/bin/alloy completion zsh)
'';
passthru = {
tests = {
inherit (nixosTests) alloy;
version = testers.testVersion {
version = "v${finalAttrs.version}";
package = grafana-alloy;
};
};
updateScript = nix-update-script {
extraArgs = [
@@ -134,21 +124,26 @@ buildGoModule (finalAttrs: {
"v(.+)"
];
};
# for nix-update to be able to find and update the hash
# For nix-update to be able to find and update the hash.
inherit (finalAttrs) npmDeps;
};
meta = {
description = "Open source OpenTelemetry Collector distribution with built-in Prometheus pipelines and support for metrics, logs, traces, and profiles";
mainProgram = "alloy";
license = lib.licenses.asl20;
description = "OpenTelemetry Collector distribution with programmable pipelines";
longDescription = ''
Grafana Alloy is an open source OpenTelemetry Collector distribution with
built-in Prometheus pipelines and support for metrics, logs, traces, and
profiles.
'';
homepage = "https://grafana.com/oss/alloy";
changelog = "https://github.com/grafana/alloy/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.asl20;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [
azahi
flokli
hbjydev
];
platforms = lib.platforms.unix;
mainProgram = "alloy";
};
})
+3 -3
View File
@@ -17,7 +17,7 @@
withDocumentation ? stdenv.buildPlatform.canExecute stdenv.hostPlatform,
}:
let
version = "1.46.0";
version = "1.47.1";
in
rustPlatform.buildRustPackage {
inherit version;
@@ -34,10 +34,10 @@ rustPlatform.buildRustPackage {
owner = "casey";
repo = "just";
tag = version;
hash = "sha256-NE54LKS2bYBfQL+yLJPaG4iF7EiJfDqBfnsrlPo1+OE=";
hash = "sha256-HGrUiPe4vVYNISovTb9PZt8s6xCUg+OWkrp8dPm9tWg=";
};
cargoHash = "sha256-yyaJAWp6luizA/aQuUGhdxRX2Ofri4CeLIO3/ndSCzc=";
cargoHash = "sha256-ZRcYVvodaQmQtBGnkTIOI3PXC6YQ1kqycm6Xh/MwIqA=";
nativeBuildInputs =
lib.optionals (installShellCompletions || installManPages) [ installShellFiles ]
+2 -2
View File
@@ -24,11 +24,11 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "keycloak";
version = "26.5.5";
version = "26.5.6";
src = fetchzip {
url = "https://github.com/keycloak/keycloak/releases/download/${finalAttrs.version}/keycloak-${finalAttrs.version}.zip";
hash = "sha256-k6keuENMQ1S+4YN67E6vc48W8x4Le0Bw9E1+UBLyxh0=";
hash = "sha256-lkBSzM0kPYe3301EJkY/NShaKpBz+7NuAK/MPNLwMX4=";
};
nativeBuildInputs = [
+4 -1
View File
@@ -332,7 +332,10 @@ stdenv.mkDerivation rec {
The Programs handle Schematic Capture, and PCB Layout with Gerber output.
'';
license = lib.licenses.gpl3Plus;
maintainers = with lib.maintainers; [ korken89 ];
maintainers = with lib.maintainers; [
korken89
ryand56
];
platforms = lib.platforms.all;
broken = stdenv.hostPlatform.isDarwin;
mainProgram = "kicad";
+44 -44
View File
@@ -167,16 +167,16 @@
},
{
"name": "illuminate/collections",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/collections.git",
"reference": "f35c084f0d9bc57895515cb4d0665797c66285fd"
"reference": "86f874536cbda5f35c23a9908ee7f176caa4496e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/collections/zipball/f35c084f0d9bc57895515cb4d0665797c66285fd",
"reference": "f35c084f0d9bc57895515cb4d0665797c66285fd",
"url": "https://api.github.com/repos/illuminate/collections/zipball/86f874536cbda5f35c23a9908ee7f176caa4496e",
"reference": "86f874536cbda5f35c23a9908ee7f176caa4496e",
"shasum": ""
},
"require": {
@@ -223,11 +223,11 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-02-16T14:10:38+00:00"
"time": "2026-02-25T15:25:18+00:00"
},
{
"name": "illuminate/conditionable",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/conditionable.git",
@@ -273,7 +273,7 @@
},
{
"name": "illuminate/contracts",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/contracts.git",
@@ -321,16 +321,16 @@
},
{
"name": "illuminate/filesystem",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/filesystem.git",
"reference": "c4c3f8612f218afcf09f3c7f5c7dc9e282626800"
"reference": "b91eede30e1bde98cb51fb4c4f28269a8dea593e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/filesystem/zipball/c4c3f8612f218afcf09f3c7f5c7dc9e282626800",
"reference": "c4c3f8612f218afcf09f3c7f5c7dc9e282626800",
"url": "https://api.github.com/repos/illuminate/filesystem/zipball/b91eede30e1bde98cb51fb4c4f28269a8dea593e",
"reference": "b91eede30e1bde98cb51fb4c4f28269a8dea593e",
"shasum": ""
},
"require": {
@@ -384,11 +384,11 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-02-13T20:26:32+00:00"
"time": "2026-03-09T14:26:54+00:00"
},
{
"name": "illuminate/macroable",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/macroable.git",
@@ -434,16 +434,16 @@
},
{
"name": "illuminate/reflection",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/reflection.git",
"reference": "6188e97a587371b9951c2a7e337cd760308c17d7"
"reference": "348cf5da9de89b596d7723be6425fb048e2bf4bb"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/reflection/zipball/6188e97a587371b9951c2a7e337cd760308c17d7",
"reference": "6188e97a587371b9951c2a7e337cd760308c17d7",
"url": "https://api.github.com/repos/illuminate/reflection/zipball/348cf5da9de89b596d7723be6425fb048e2bf4bb",
"reference": "348cf5da9de89b596d7723be6425fb048e2bf4bb",
"shasum": ""
},
"require": {
@@ -481,20 +481,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-02-04T15:21:22+00:00"
"time": "2026-02-25T15:25:18+00:00"
},
{
"name": "illuminate/support",
"version": "v12.53.0",
"version": "v12.54.1",
"source": {
"type": "git",
"url": "https://github.com/illuminate/support.git",
"reference": "18d7d75366ddb9eded3b7f05173f791da47faf34"
"reference": "e54208c0b5693becd8d3bec02f07e8db9aa4f512"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/illuminate/support/zipball/18d7d75366ddb9eded3b7f05173f791da47faf34",
"reference": "18d7d75366ddb9eded3b7f05173f791da47faf34",
"url": "https://api.github.com/repos/illuminate/support/zipball/e54208c0b5693becd8d3bec02f07e8db9aa4f512",
"reference": "e54208c0b5693becd8d3bec02f07e8db9aa4f512",
"shasum": ""
},
"require": {
@@ -561,20 +561,20 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
"time": "2026-02-23T15:44:06+00:00"
"time": "2026-03-06T15:24:01+00:00"
},
{
"name": "laravel/prompts",
"version": "v0.3.13",
"version": "v0.3.14",
"source": {
"type": "git",
"url": "https://github.com/laravel/prompts.git",
"reference": "ed8c466571b37e977532fb2fd3c272c784d7050d"
"reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/prompts/zipball/ed8c466571b37e977532fb2fd3c272c784d7050d",
"reference": "ed8c466571b37e977532fb2fd3c272c784d7050d",
"url": "https://api.github.com/repos/laravel/prompts/zipball/9f0e371244eedfe2ebeaa72c79c54bb5df6e0176",
"reference": "9f0e371244eedfe2ebeaa72c79c54bb5df6e0176",
"shasum": ""
},
"require": {
@@ -618,22 +618,22 @@
"description": "Add beautiful and user-friendly forms to your command-line applications.",
"support": {
"issues": "https://github.com/laravel/prompts/issues",
"source": "https://github.com/laravel/prompts/tree/v0.3.13"
"source": "https://github.com/laravel/prompts/tree/v0.3.14"
},
"time": "2026-02-06T12:17:10+00:00"
"time": "2026-03-01T09:02:38+00:00"
},
{
"name": "nesbot/carbon",
"version": "3.11.1",
"version": "3.11.3",
"source": {
"type": "git",
"url": "https://github.com/CarbonPHP/carbon.git",
"reference": "f438fcc98f92babee98381d399c65336f3a3827f"
"reference": "6a7e652845bb018c668220c2a545aded8594fbbf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/f438fcc98f92babee98381d399c65336f3a3827f",
"reference": "f438fcc98f92babee98381d399c65336f3a3827f",
"url": "https://api.github.com/repos/CarbonPHP/carbon/zipball/6a7e652845bb018c668220c2a545aded8594fbbf",
"reference": "6a7e652845bb018c668220c2a545aded8594fbbf",
"shasum": ""
},
"require": {
@@ -725,7 +725,7 @@
"type": "tidelift"
}
],
"time": "2026-01-29T09:26:29+00:00"
"time": "2026-03-11T17:23:39+00:00"
},
{
"name": "psr/clock",
@@ -958,16 +958,16 @@
},
{
"name": "symfony/console",
"version": "v7.4.6",
"version": "v7.4.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "6d643a93b47398599124022eb24d97c153c12f27"
"reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/6d643a93b47398599124022eb24d97c153c12f27",
"reference": "6d643a93b47398599124022eb24d97c153c12f27",
"url": "https://api.github.com/repos/symfony/console/zipball/e1e6770440fb9c9b0cf725f81d1361ad1835329d",
"reference": "e1e6770440fb9c9b0cf725f81d1361ad1835329d",
"shasum": ""
},
"require": {
@@ -1032,7 +1032,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v7.4.6"
"source": "https://github.com/symfony/console/tree/v7.4.7"
},
"funding": [
{
@@ -1052,7 +1052,7 @@
"type": "tidelift"
}
],
"time": "2026-02-25T17:02:47+00:00"
"time": "2026-03-06T14:06:20+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -2495,11 +2495,11 @@
},
{
"name": "phpstan/phpstan",
"version": "2.1.40",
"version": "2.1.41",
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b",
"reference": "9b2c7aeb83a75d8680ea5e7c9b7fca88052b766b",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/a2eae8f20856b3afe74bf1f9726ce8c11438e300",
"reference": "a2eae8f20856b3afe74bf1f9726ce8c11438e300",
"shasum": ""
},
"require": {
@@ -2544,7 +2544,7 @@
"type": "github"
}
],
"time": "2026-02-23T15:04:35+00:00"
"time": "2026-03-16T18:24:10+00:00"
},
{
"name": "phpunit/php-code-coverage",
+3 -3
View File
@@ -7,19 +7,19 @@
}:
php.buildComposerProject2 (finalAttrs: {
pname = "laravel";
version = "5.24.7";
version = "5.24.9";
src = fetchFromGitHub {
owner = "laravel";
repo = "installer";
tag = "v${finalAttrs.version}";
hash = "sha256-szyoqX4wgJpQZO9H/WVq70A5n/3qV1SdBCKQc9vm4WY=";
hash = "sha256-RlY6is5rRks2mXdE2/EXuSWX2CxJuK+q8yfsDcZMFBo=";
};
nativeBuildInputs = [ makeWrapper ];
composerLock = ./composer.lock;
vendorHash = "sha256-yX6EmbopVUpbbVBfep1Rk84wUK5sxjrlzvii+s39SqA=";
vendorHash = "sha256-o7YryCZjTm/O4ts21NjODqacdXnjWZUH8Dmr8fPnDEg=";
# Adding npm (nodejs) and php composer to path
postInstall = ''
@@ -31,15 +31,15 @@
writeScript,
}:
let
id = "354596705";
id = "373278730";
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "multiviewer-for-f1";
version = "2.5.1";
version = "2.7.1";
src = fetchurl {
url = "https://releases.multiviewer.dev/download/${id}/multiviewer_${finalAttrs.version}_amd64.deb";
hash = "sha256-9ts5CZD14CzJHiC3YoKWIEKiFpOrcUX1tRUhE4it5Mo=";
url = "https://releases.multiviewer.app/download/${id}/multiviewer_${finalAttrs.version}_amd64.deb";
hash = "sha256-BKXw8a4fUT+B7KBc6p/Heo+sAtWAG5b/D2iohuNOotY=";
};
nativeBuildInputs = [
+2 -2
View File
@@ -29,13 +29,13 @@
lndir,
}:
let
version = "2.20.10";
version = "2.20.11";
src = fetchFromGitHub {
owner = "paperless-ngx";
repo = "paperless-ngx";
tag = "v${version}";
hash = "sha256-4kc1LyqcVKHQ/WnsZOL0zanbLIv27CGGgNZXVFBwCgQ=";
hash = "sha256-Bn5k6h80nSNxWYsIpqVLXp+udzxDCY8f/jbgDvyATM0=";
};
python = python3.override {
+3 -3
View File
@@ -7,13 +7,13 @@
rustPlatform.buildRustPackage {
pname = "piday25";
version = "0-unstable-2025-03-13";
version = "0-unstable-2026-03-18";
src = fetchFromGitHub {
owner = "elkasztano";
repo = "piday25";
rev = "68b417a3016c58a2948cb3b39c9bde985d82bdb8";
hash = "sha256-58ZBRmB990Tp+/nkuRZA+8cjCRFUBzdzu93Sk5uvKOE=";
rev = "3fdeb37e33572c0924fc8f23a62824df8f6a9496";
hash = "sha256-iNc6NUEekk793j3Ob02H9NB4SH1anYsWzixr8OiglOE=";
};
cargoHash = "sha256-3uztB5/VevFyEz3S+VlAUPgDrNDJcwaTnHuXXYAX+MY=";
+1021
View File
File diff suppressed because it is too large Load Diff
+146
View File
@@ -0,0 +1,146 @@
{
lib,
stdenv,
fetchFromGitHub,
gradle_9,
jdk25_headless,
makeBinaryWrapper,
nix-update-script,
versionCheckHook,
zig,
}:
let
jdk = jdk25_headless;
gradle = gradle_9;
gradleOverlay = gradle.override { java = jdk; };
in
stdenv.mkDerivation (finalAttrs: {
pname = "pkl-lsp";
version = "0.6.0";
src = fetchFromGitHub {
owner = "apple";
repo = "pkl-lsp";
tag = finalAttrs.version;
hash = "sha256-V6MrDpdh4jnSiXWD0UbF/XXpLa95smCbdj9/jT0Xb3w=";
leaveDotGit = true;
postFetch = ''
pushd $out
git rev-parse HEAD | tr -d '\n' > .commit-hash
rm -rf .git
popd
'';
};
# Dependencies for tree-sitter compilation specific versions from gradle/libs.versions.toml
treeSitterSrc = fetchFromGitHub {
owner = "tree-sitter";
repo = "tree-sitter";
rev = "v0.25.3";
hash = "sha256-xafeni6Z6QgPiKzvhCT2SyfPn0agLHo47y+6ExQXkzE=";
};
treeSitterPklSrc = fetchFromGitHub {
owner = "apple";
repo = "tree-sitter-pkl";
rev = "v0.20.0";
hash = "sha256-HfZ2NwO466Le2XFP1LZ2fLJgCq4Zq6hVpjChzsIoQgA=";
};
postPatch = ''
substituteInPlace buildSrc/src/main/kotlin/BuildInfo.kt \
--replace-fail 'val jdkVersion: Int = 22' \
'val jdkVersion: Int = ${lib.versions.major jdk.version}' \
--replace-fail 'val executable: Path get() = installDir.resolve(if (os.isWindows) "zig.exe" else "zig")' \
'val executable: Path get() = java.nio.file.Path.of("${lib.getExe zig}")' \
substituteInPlace build.gradle.kts \
--replace-fail 'dependsOn(setupTreeSitterRepo)' "" \
--replace-fail 'dependsOn(setupTreeSitterPklRepo)' "" \
--replace-fail 'dependsOn(tasks.named("installZig"))' ""
# Ensure all pkl-cli platform variants are cached
# Otherwise, deps.json only includes the current system's pkl-cli, and the tests fail
cat >> build.gradle.kts << 'GRADLE_PATCH'
val pklCliAllPlatforms by configurations.creating
dependencies {
for (platform in listOf("linux-amd64", "linux-aarch64", "macos-amd64", "macos-aarch64")) {
pklCliAllPlatforms("org.pkl-lang:pkl-cli-$platform:''${libs.versions.pkl.get()}")
}
}
GRADLE_PATCH
mkdir -p build/repos/{tree-sitter,tree-sitter-pkl}
cp -r $treeSitterSrc/* build/repos/tree-sitter/
cp -r $treeSitterPklSrc/* build/repos/tree-sitter-pkl/
chmod +w -R build/repos/{tree-sitter,tree-sitter-pkl}
'';
nativeBuildInputs = [
gradleOverlay
makeBinaryWrapper
zig
];
mitmCache = gradle.fetchDeps {
inherit (finalAttrs) pname;
data = ./deps.json;
};
__darwinAllowLocalNetworking = true;
gradleFlags = [
"-DreleaseBuild=true"
"-Dfile.encoding=utf-8"
"-Porg.gradle.java.installations.auto-download=false"
"-Porg.gradle.java.installations.auto-detect=false"
];
preBuild = ''
gradleFlagsArray+=(-DcommitId=$(cat .commit-hash))
'';
# running the checkPhase replaces the .jar produced by the buildPhase, and leads to this error:
# Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
# at org.pkl.lsp.cli.Main.main(Main.kt)
# Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
doCheck = false;
postInstallCheck = ''
gradle test
'';
installPhase = ''
runHook preInstall
install -D build/libs/pkl-lsp-${finalAttrs.version}.jar $out/lib/pkl-lsp/pkl-lsp.jar
makeWrapper ${lib.getExe' jdk "java"} $out/bin/pkl-lsp \
--add-flags "-jar $out/lib/pkl-lsp/pkl-lsp.jar"
runHook postInstall
'';
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "The Pkl Language Server";
homepage = "https://pkl-lang.org/lsp/current/index.html";
downloadPage = "https://github.com/apple/pkl-lsp";
changelog = "https://pkl-lang.org/lsp/current/CHANGELOG.html#release-${finalAttrs.version}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ ryota2357 ];
mainProgram = "pkl-lsp";
platforms = lib.lists.intersectLists (
lib.platforms.x86_64 ++ lib.platforms.aarch64
) jdk.meta.platforms;
sourceProvenance = with lib.sourceTypes; [
fromSource
binaryBytecode # mitm cache
binaryNativeCode # mitm cache
];
};
})
+2 -2
View File
@@ -6,10 +6,10 @@
}:
let
pname = "remnote";
version = "1.24.0";
version = "1.24.7";
src = fetchurl {
url = "https://download2.remnote.io/remnote-desktop2/RemNote-${version}.AppImage";
hash = "sha256-OV8o2AOoDXdz02tXbtelcIOVOT3PIiBYJf38mRuvWdM=";
hash = "sha256-W4KM7QgkO+5Rr12IxlTlqp63LAakUJlMOX68JWBet6c=";
};
appimageContents = appimageTools.extractType2 { inherit pname version src; };
in
+5 -5
View File
@@ -4,7 +4,7 @@
buildNpmPackage,
fetchFromGitHub,
makeWrapper,
electron_39,
electron_40,
vulkan-loader,
makeDesktopItem,
copyDesktopItems,
@@ -18,20 +18,20 @@
}:
let
electron = electron_39;
electron = electron_40;
in
buildNpmPackage (finalAttrs: {
pname = "shogihome";
version = "1.26.1";
version = "1.27.0";
src = fetchFromGitHub {
owner = "sunfish-shogi";
repo = "shogihome";
tag = "v${finalAttrs.version}";
hash = "sha256-7kDk85tN4uP0WJnof8yyn0M85Qairls5ZqhKwwhRQxc=";
hash = "sha256-T1MgcqCi9rwN86vgCAshokznMXh+masFLcO43sz2bo0=";
};
npmDepsHash = "sha256-Sft5fEf86o1uUJ+yszx9XgQBGNRc+9aKRyR5rOelgQw=";
npmDepsHash = "sha256-5tZQCxql6jZAEU+e/hkQYnaHy1l5dWaH/p2rbGDAX14=";
postPatch = ''
substituteInPlace package.json \
+6
View File
@@ -199,6 +199,12 @@ stdenv.mkDerivation (finalAttrs: {
# Not sure why this fails
+ lib.optionalString stdenv.hostPlatform.isAarch64 ''
rm llvm/test/tools/llvm-exegesis/AArch64/latency-by-opcode-name.s
''
# The second llvm-install-name-tool invocation fails with
# "is not a Mach-O file" on aarch64-linux, even on a fresh copy of
# the original yaml2obj output. Root cause unknown.
+ lib.optionalString stdenv.hostPlatform.isAarch64 ''
rm llvm/test/tools/llvm-objcopy/MachO/install-name-tool-change.test
'';
postInstall = ''
+3 -3
View File
@@ -10,16 +10,16 @@
buildNpmPackage rec {
pname = "vacuum-tube";
version = "1.6.0";
version = "1.6.1";
src = fetchFromGitHub {
owner = "shy1132";
repo = "VacuumTube";
tag = "v${version}";
hash = "sha256-BnFI517pXKsHQ8AJMRzAlXBTLMLhjyEasIhZdSHtyC0=";
hash = "sha256-DbcJJ9FL9LPCQrg6lGa5N9KC8stXLdaMI+2hKAiZFxQ=";
};
npmDepsHash = "sha256-R7DISsTJv/DDi8uJTWF+6/P8K86BguxtZNsaL2qCxhY=";
npmDepsHash = "sha256-/TAGGiNuT7YC29U9n6M+zD51kecbAPXzzEJU5ey1hXs=";
makeCacheWritable = true;
env = {
+3 -3
View File
@@ -9,11 +9,11 @@
}:
let
pname = "volanta";
version = "1.15.3";
build = "64ba2e0c";
version = "1.16.3";
build = "581a1e68";
src = fetchurl {
url = "https://cdn.volanta.app/software/volanta-app/${version}-${build}/volanta-${version}.AppImage";
hash = "sha256-rTonFExYHXLuRWf98IsNE7KqGrRMRC+Hke6CGKJWLAA=";
hash = "sha256-5187tE37dRyqjBa8P0Jwio2lBd8qd+tEZgl/98nGQy8=";
};
appImageContents = appimageTools.extract { inherit pname version src; };
in
+3 -3
View File
@@ -9,20 +9,20 @@
stdenv.mkDerivation (finalAttrs: {
pname = "vultisig-cli";
version = "0.5.0";
version = "0.6.0";
src = fetchFromGitHub {
owner = "vultisig";
repo = "vultisig-sdk";
tag = "v${finalAttrs.version}";
hash = "sha256-vpWoKxdiUSSI8xGYXmnduJnB3zB3jpBMxz+9eGXJgvM=";
hash = "sha256-eQvWD0Jubtp0wfmuTBN4Mr4rKqoEvMiAGI5D8GAHYDY=";
};
missingHashes = ./missing-hashes.json;
offlineCache = yarn-berry.fetchYarnBerryDeps {
inherit (finalAttrs) src missingHashes;
hash = "sha256-ZJfLfaTvJKyCh4FtOs7IyZskBBjrJLjI0/9hphclFvU=";
hash = "sha256-SQ2C01dVSzJwzCvJUclcSiGTPz7RJfO3fYPCZbvnAHk=";
};
nativeBuildInputs = [
@@ -7,17 +7,17 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "zed-discord-presence";
version = "0.10.1";
version = "0.11.0";
src = fetchFromGitHub {
owner = "xhyrom";
repo = "zed-discord-presence";
tag = "v${finalAttrs.version}";
hash = "sha256-7bTLMrvcgT5/ziyD4ieDGx7218rezQToHqAwEAwYB/E=";
hash = "sha256-HmSJipRWVB1rXyO5ZK1ksyCLDzSJD820Klo88A7NLx4=";
};
cargoBuildFlags = [ "--package discord-presence-lsp" ];
cargoHash = "sha256-cOG9VeKdi1mSYpOPGYXLwHksEKJypvSK6vMFaO7TYBg=";
cargoHash = "sha256-x9sB90jW7v2SGggLILgLbBfFV7DkJazcrUiKAfIroMA=";
passthru.updateScript = nix-update-script { };
@@ -0,0 +1,58 @@
{
lib,
mkCoqDerivation,
coq,
ceres-bs,
equations,
metarocq-erasure-plugin,
version ? null,
}:
(mkCoqDerivation {
pname = "CakeMLExtraction";
owner = "peregrine-project";
repo = "cakeml-backend";
opam-name = "rocq-cakeml-extraction";
inherit version;
defaultVersion =
let
case = coq: mr: out: {
cases = [
coq
mr
];
inherit out;
};
in
with lib.versions;
lib.switch
[
coq.coq-version
metarocq-erasure-plugin.version
]
[
(case (range "9.0" "9.1") (range "1.4" "1.5.1") "0.1.0")
]
null;
release = {
"0.1.0".sha256 = "sha256-diDUTj0l4vliov9+Lg8lNRdkLE7JAfJn8OU7J/HgmDE=";
};
releaseRev = v: "v${v}";
mlPlugin = false;
useDune = false;
buildInputs = [
equations
metarocq-erasure-plugin
ceres-bs
];
propagatedBuildInputs = [ coq.ocamlPackages.findlib ];
meta = with lib; {
homepage = "https://peregrine-project.github.io/";
description = "CakeML backend for Peregrine";
maintainers = with maintainers; [ _4ever2 ];
};
})
@@ -0,0 +1,101 @@
{
lib,
pkgs,
pkg-config,
mkCoqDerivation,
coq,
wasmcert,
compcert,
metarocq-erasure-plugin,
metarocq-safechecker-plugin,
ExtLib,
version ? null,
}:
with lib;
mkCoqDerivation {
pname = "CertiRocq";
owner = "CertiRocq";
repo = "certirocq";
opam-name = "rocq-certirocq";
mlPlugin = true;
inherit version;
defaultVersion =
let
case = coq: mr: out: {
cases = [
coq
mr
];
inherit out;
};
in
lib.switch
[
coq.coq-version
metarocq-erasure-plugin.version
]
[
(case "9.1" "1.5.1-9.1" "0.9.1+9.1")
]
null;
release = {
"0.9.1+9.1".sha256 = "sha256-YsweBaoq8+QG63e7Llp/4bHldAFnSQSyMumJkb+Bsp0=";
};
releaseRev = v: "v${v}";
buildInputs = [
pkgs.clang
];
propagatedBuildInputs = [
wasmcert
compcert
ExtLib
metarocq-erasure-plugin
metarocq-safechecker-plugin
];
patchPhase = ''
patchShebangs ./configure.sh
patchShebangs ./clean_extraction.sh
patchShebangs ./make_plugin.sh
'';
configurePhase = ''
./configure.sh local
'';
buildPhase = ''
runHook preBuild
make all
make plugins
runHook postBuild
'';
installPhase = ''
runHook preInstall
OUTDIR=$out/lib/coq/${coq.coq-version}/user-contrib
DST=$OUTDIR/CertiRocq/Plugin/runtime make -C runtime install
COQLIBINSTALL=$OUTDIR make -C theories install
COQLIBINSTALL=$OUTDIR make -C libraries install
COQLIBINSTALL=$OUTDIR COQPLUGININSTALL=$OCAMLFIND_DESTDIR make -C plugin install
COQLIBINSTALL=$OUTDIR COQPLUGININSTALL=$OCAMLFIND_DESTDIR make -C cplugin install
runHook postInstall
'';
meta = {
description = "CertiRocq";
maintainers = with maintainers; [
womeier
_4ever2
];
license = licenses.mit;
};
}
+10 -10
View File
@@ -8,7 +8,6 @@
libGL,
openal,
luajit,
lua5_1,
freetype,
physfs,
libmodplug,
@@ -22,14 +21,14 @@
cmake,
}:
stdenv.mkDerivation rec {
stdenv.mkDerivation (finalAttrs: {
pname = "love";
version = "11.5";
src = fetchFromGitHub {
owner = "love2d";
repo = "love";
rev = version;
tag = finalAttrs.version;
sha256 = "sha256-wZktNh4UB3QH2wAIIlnYUlNoXbjEDwUmPnT4vesZNm0=";
};
@@ -40,7 +39,7 @@ stdenv.mkDerivation rec {
buildInputs = [
SDL2
openal
(if stdenv.isDarwin then lua5_1 else luajit)
luajit
freetype
physfs
libmodplug
@@ -51,7 +50,7 @@ stdenv.mkDerivation rec {
which
libtool
]
++ lib.optionals stdenv.isLinux [
++ lib.optionals stdenv.hostPlatform.isLinux [
libx11 # SDL2 optional depend, for SDL_syswm.h
libGLU
libGL
@@ -61,9 +60,10 @@ stdenv.mkDerivation rec {
# On Darwin, autotools doesn't compile macOS-specific module (src/common/macosx.mm),
# leading to stubbed functions and segfaults
cmakeFlags = [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5" # Required by LÖVE's CMakeLists.txt
"-DCMAKE_SKIP_BUILD_RPATH=ON" # Don't include build directory in RPATH
"-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" # Use install RPATH even during build
(lib.cmakeFeature "CMAKE_POLICY_VERSION_MINIMUM" "3.5") # Required by LÖVE's CMakeLists.txt
(lib.cmakeBool "CMAKE_SKIP_BUILD_RPATH" true) # Don't include build directory in RPATH
(lib.cmakeBool "CMAKE_BUILD_WITH_INSTALL_RPATH" true) # Use install RPATH even during build
(lib.cmakeBool "LOVE_JIT" true) # Enable LuaJIT support even though it is warned about for Apple
];
env.NIX_CFLAGS_COMPILE = "-DluaL_reg=luaL_Reg"; # needed since luajit-2.1.0-beta3
@@ -81,7 +81,7 @@ stdenv.mkDerivation rec {
cp $src/platform/unix/love.6 $out/share/man/man1/love.1
gzip -9n $out/share/man/man1/love.1
''
+ lib.optionalString stdenv.isLinux ''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
# Install Linux-specific files (desktop, mime, icons)
mkdir -p $out/share/applications
mkdir -p $out/share/mime/packages
@@ -112,4 +112,4 @@ stdenv.mkDerivation rec {
platforms = lib.platforms.linux ++ lib.platforms.darwin;
maintainers = [ lib.maintainers.raskin ];
};
}
})
@@ -9,14 +9,14 @@
buildPythonPackage (finalAttrs: {
pname = "gvm-tools";
version = "25.4.8";
version = "25.4.9";
pyproject = true;
src = fetchFromGitHub {
owner = "greenbone";
repo = "gvm-tools";
tag = "v${finalAttrs.version}";
hash = "sha256-tKUaUo9Sr4d9mLdbbmn+OmAgUcEuwWSzCYY4BPJ4UKw=";
hash = "sha256-dt7njGUqi6zfwUz0gSdOHWnSUJ+yJ7qJ3RttoPweR3c=";
};
__darwinAllowLocalNetworking = true;
@@ -13,14 +13,14 @@
buildPythonPackage rec {
pname = "osc";
version = "1.24.0";
version = "1.25.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "openSUSE";
repo = "osc";
rev = version;
hash = "sha256-EPt+HTvDhBEs1sf1yrG+aawRcP1yd/+kY4OTeVHHFt4=";
hash = "sha256-ES4HhWlJx7fRf9rXWBeAANyCy1eC1Rz6yFczXvQ66Vo=";
};
buildInputs = [ bashInteractive ]; # needed for bash-completion helper
@@ -13,14 +13,14 @@
buildPythonPackage (finalAttrs: {
pname = "polyswarm-api";
version = "3.16.0";
version = "3.17.1";
pyproject = true;
src = fetchFromGitHub {
owner = "polyswarm";
repo = "polyswarm-api";
tag = finalAttrs.version;
hash = "sha256-mdsgHwbGThy2Lzvgzb0mItwJkNspLiqGZzBGGuQdatM=";
hash = "sha256-nL+DolLBnw/yahNqeCYtepAMFw4yHWXTajz3+KxF9R8=";
};
build-system = [ setuptools ];
+2 -2
View File
@@ -21,8 +21,8 @@ let
in
buildMongoDB {
inherit avxSupport;
version = "7.0.30";
hash = "sha256-z0stPphy9EliDkanlDCHJ+ck3p1gUTMQ83uOW7kvlmI=";
version = "7.0.31";
hash = "sha256-Vk/XsnYut0Hfad/X6LZw6gJX1NHc4/6XT8y1KehpLMk=";
patches = [
# ModuleNotFoundError: No module named 'mongo_tooling_metrics':
# NameError: name 'SConsToolingMetrics' is not defined:
+2
View File
@@ -68,9 +68,11 @@ let
callPackage ../development/coq-modules/bignums { }
else
null;
CakeMLExtraction = callPackage ../development/coq-modules/CakeMLExtraction { };
category-theory = callPackage ../development/coq-modules/category-theory { };
ceres = callPackage ../development/coq-modules/ceres { };
ceres-bs = callPackage ../development/coq-modules/ceres-bs { };
CertiRocq = callPackage ../development/coq-modules/CertiRocq { };
Cheerios = callPackage ../development/coq-modules/Cheerios { };
coinduction = callPackage ../development/coq-modules/coinduction { };
CoLoR = callPackage ../development/coq-modules/CoLoR (