Merge master into staging-next

This commit is contained in:
nixpkgs-ci[bot]
2026-08-24 18:08:36 +00:00
committed by GitHub
101 changed files with 2554 additions and 286 deletions

View File

@@ -957,7 +957,6 @@ The following situations are fully or partially exempt:
If you believe that someone is using automation without appropriate disclosure and review, you can politely ask them if thats the case and point them to this policy as appropriate.
Please assume good faith and remain civil; its not always possible to determine, and it is more likely that someone overlooked this policy than deliberately violated it.
If you think someone is continuing to break the policy after this, please escalate to the [Nixpkgs core team](https://nixos.org/community/teams/nixpkgs-core/) rather than fighting over it.
If a contribution is clearly in violation of the policy (e.g. the contributor admits it was not followed, or there are AI tool attributions that do not meet our required format), it can be closed or hidden, preferably after informing the contributor of the policy and giving them a chance to address the violations.
Deliberate violations of this policy are considered to break the [Code of Conduct](https://github.com/NixOS/.github/blob/master/CODE_OF_CONDUCT.md) clause against “Wasting other peoples time with low quality contributions, including but not limited to LLM and bot spam”.

View File

@@ -108,6 +108,8 @@
- [Umbriel](https://docs.noctalia.dev/umbriel/), a Wayland compositor built on wlroots and SceneFX. Available as [programs.umbriel](#opt-programs.umbriel.enable).
- [Rundeck](https://www.rundeck.com), Self-Service Operations [services.rundeck](#opt-services.rundeck.enable).
## Backward Incompatibilities {#sec-release-26.11-incompatibilities}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
@@ -207,6 +209,10 @@
- `chatgpt` has been retargeted to OpenAI's new ChatGPT desktop app, while the previous app has been renamed to `chatgpt-classic`.
- NetBox was updated to `>= 4.6.8`. Have a look at the breaking changes
of the [4.6 release](https://github.com/netbox-community/netbox/releases/tag/v4.6.0),
make the required changes to your database, if needed, then upgrade by setting `services.netbox.package = pkgs.netbox_4_6;` in your configuration.
## Other Notable Changes {#sec-release-26.11-notable-changes}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->

View File

@@ -1824,6 +1824,7 @@
./services/web-apps/romm.nix
./services/web-apps/rss-bridge.nix
./services/web-apps/rsshub.nix
./services/web-apps/rundeck.nix
./services/web-apps/rustical.nix
./services/web-apps/rutorrent.nix
./services/web-apps/screego.nix

View File

@@ -434,11 +434,12 @@ in
package = lib.mkOption {
type = types.package;
default =
if lib.versionAtLeast config.system.stateVersion "26.05" then pkgs.netbox_4_5 else pkgs.netbox_4_4;
if lib.versionAtLeast config.system.stateVersion "26.11" then pkgs.netbox_4_6 else pkgs.netbox_4_5;
defaultText = lib.literalExpression ''
if lib.versionAtLeast config.system.stateVersion "26.05"
then pkgs.netbox_4_5
else pkgs.netbox_4_4;
if lib.versionAtLeast config.system.stateVersion "26.11" then
pkgs.netbox_4_6
else
pkgs.netbox_4_5;
'';
description = ''
NetBox package to use.

View File

@@ -0,0 +1,651 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.rundeck;
settingsFormat = pkgs.formats.javaProperties { };
effectivePort = if cfg.ssl.enable then cfg.ssl.port else cfg.serverPort;
scheme = if cfg.ssl.enable then "https" else "http";
configFile = settingsFormat.generate "rundeck-config.properties" cfg.settings;
frameworkFile = settingsFormat.generate "framework.properties" cfg.frameworkSettings;
realmFile = pkgs.writeText "realm.properties" ''
${cfg.adminUser}:@ADMIN_PASSWORD@,user,admin
'';
replaceSecret =
placeholder: file: target:
"replace-secret ${
lib.escapeShellArgs [
placeholder
file
target
]
}";
rundeckStartScript = pkgs.writeShellScript "start-rundeck" ''
# Generate SSH
if [ ! -f ${cfg.dataDir}/.ssh/id_${cfg.sshKeyType} ]; then
umask 0077
${lib.getExe' pkgs.openssh "ssh-keygen"} -t ${cfg.sshKeyType} ${
lib.optionalString (cfg.sshKeyType == "rsa") "-b 4096"
} -N "" -f ${cfg.dataDir}/.ssh/id_${cfg.sshKeyType}
chmod 644 ${cfg.dataDir}/.ssh/id_${cfg.sshKeyType}.pub
chown ${cfg.user}:${cfg.group} ${cfg.dataDir}/.ssh/id_${cfg.sshKeyType} ${cfg.dataDir}/.ssh/id_${cfg.sshKeyType}.pub
fi
${lib.getExe cfg.package} \
--skipinstall \
-b ${cfg.dataDir} \
-c ${cfg.configDir} \
-p ${cfg.dataDir}/projects
'';
in
{
options = {
services.rundeck = {
enable = lib.mkEnableOption "Rundeck service";
package = lib.mkPackageOption pkgs "rundeck" { };
adminUser = lib.mkOption {
type = lib.types.str;
default = "admin";
description = "Username for the Rundeck admin user";
example = "rundeck-admin";
};
adminPasswordFile = lib.mkOption {
type = lib.types.path;
description = "Path to a file containing the admin password";
example = "/run/secrets/rundeck-admin-password";
};
user = lib.mkOption {
type = lib.types.str;
default = "rundeck";
description = "User account under which Rundeck runs";
};
group = lib.mkOption {
type = lib.types.str;
default = "rundeck";
description = "Group account under which Rundeck runs";
};
serverHostname = lib.mkOption {
type = lib.types.str;
default = "localhost";
description = "Hostname for the Rundeck server";
};
serverURL = lib.mkOption {
type = lib.types.str;
default = "${scheme}://${cfg.serverHostname}:${toString effectivePort}";
defaultText = lib.literalMD ''
`<scheme>://<serverHostname>:<port>`, where scheme is `https` when
`ssl.enable` else `http`, and port is `ssl.port` when `ssl.enable`
else `serverPort`.
'';
description = "Complete Grails server URL";
example = "https://myhost:4443/rundeck";
};
serverPort = lib.mkOption {
type = lib.types.port;
default = 4440;
description = "Port on which Rundeck will listen";
};
serverUUID = lib.mkOption {
type = lib.types.str;
default = "";
description = "UUID for the Rundeck server (automatically generated if not specified)";
};
dataDir = lib.mkOption {
type = lib.types.path;
default = "/var/lib/rundeck";
description = "Directory for Rundeck runtime data (RDECK_BASE)";
};
configDir = lib.mkOption {
type = lib.types.path;
default = "/etc/rundeck";
description = "Directory for Rundeck configuration files";
};
javaOpts = lib.mkOption {
type = lib.types.listOf lib.types.str;
default = [
"-Xmx1024m"
"-Xms256m"
"-XX:MaxMetaspaceSize=256m"
"-server"
];
description = "Additional Java options for Rundeck";
};
aclPolicies = lib.mkOption {
type = lib.types.attrsOf lib.types.str;
default = { };
description = "ACL policies for Rundeck, where the attribute name is the filename and the value is the policy content";
example = lib.literalExpression ''
{
"admin.aclpolicy" = '''
description: Admin access for administrators
context:
project: '.*'
for:
resource:
- allow: '*'
job:
- allow: '*'
node:
- allow: '*'
by:
group: admin
---
description: Admin access in application scope
context:
application: 'rundeck'
for:
resource:
- allow: '*'
project:
- allow: '*'
by:
group: admin
''';
}
'';
};
sshKeyType = lib.mkOption {
type = lib.types.enum [
"rsa"
"ed25519"
];
default = "rsa";
description = "Type of SSH key to generate (rsa for compatibility, ed25519 for better security)";
};
openFirewall = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Whether to open the Rundeck port in the firewall";
};
startTimeout = lib.mkOption {
type = lib.types.int;
default = 180;
description = "Timeout in seconds before systemd considers the service startup as failed";
example = 120;
};
database = {
type = lib.mkOption {
type = lib.types.enum [
"h2"
"postgresql"
"mysql"
];
default = "h2";
description = "Database type to use (h2, postgresql, or mysql)";
};
host = lib.mkOption {
type = lib.types.str;
default = "localhost";
description = "Database host";
};
port = lib.mkOption {
type = lib.types.nullOr lib.types.port;
default =
if cfg.database.type == "postgresql" then
5432
else if cfg.database.type == "mysql" then
3306
else
null;
defaultText = lib.literalExpression ''
if config.services.rundeck.database.type == "postgresql" then
5432
else if config.services.rundeck.database.type == "mysql" then
3306
else
null
'';
description = "Database port (defaults: PostgreSQL: 5432, MySQL: 3306)";
};
name = lib.mkOption {
type = lib.types.str;
default = "rundeck";
description = "Database name";
};
username = lib.mkOption {
type = lib.types.str;
default = "rundeck";
description = "Database username";
};
passwordFile = lib.mkOption {
type = lib.types.nullOr lib.types.path;
default = null;
description = "Path to a file containing the database password";
example = "/run/secrets/rundeck-db-password";
};
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
};
default = { };
description = ''
Configuration written to `rundeck-config.properties`.
See <https://docs.rundeck.com/docs/administration/configuration/config-file-reference.html>
for available options.
Secrets must not be set here, as this ends up world-readable in the Nix
store. Use the dedicated `*File` options instead.
'';
example = lib.literalExpression ''
{
"rundeck.feature.repository.enabled" = "true";
"rundeck.projectsStorageType" = "db";
"rundeck.gui.title" = "My Rundeck Instance";
"rdeck.security.useHMacRequestTokens" = "true";
"rundeck.web.jetty.servlet.MaxFormKeys" = "2000";
}
'';
};
frameworkSettings = lib.mkOption {
type = lib.types.submodule {
freeformType = settingsFormat.type;
};
default = { };
description = ''
Configuration written to `framework.properties`.
See <https://docs.rundeck.com/docs/administration/configuration/config-file-reference.html>
for available options.
'';
example = lib.literalExpression ''
{
"framework.ssh.timeout" = "120";
"framework.ssh.user" = "deploy";
}
'';
};
ssl = {
enable = lib.mkEnableOption "SSL support";
port = lib.mkOption {
type = lib.types.port;
default = 4443;
description = "Port on which Rundeck will listen for HTTPS when ssl.enable is true";
};
keyStore = lib.mkOption {
type = lib.types.path;
example = "/etc/rundeck/ssl/keystore";
description = "Path to the keystore containing the SSL certificate";
};
keyStorePasswordFile = lib.mkOption {
type = lib.types.path;
description = "Path to a file containing the SSL keystore password";
example = "/run/secrets/rundeck-keystore-password";
};
};
};
};
config = lib.mkIf cfg.enable {
assertions = [
{
assertion =
cfg.database.type == "h2"
|| (cfg.database.host != "" && cfg.database.username != "" && cfg.database.passwordFile != null);
message = "When using external database (PostgreSQL/MySQL), host, username, and passwordFile must be provided";
}
{
assertion = cfg.database.type == "h2" || cfg.database.port != null;
message = "Database port must be set when using an external database";
}
];
services.rundeck.settings = {
"server.address" = lib.mkDefault "0.0.0.0";
"server.port" = lib.mkDefault (toString cfg.serverPort);
"grails.serverURL" = lib.mkDefault cfg.serverURL;
"logging.config" = lib.mkDefault "${cfg.configDir}/log4j2.properties";
"dataSource.url" = lib.mkDefault (
if cfg.database.type == "h2" then
"jdbc:h2:file:${cfg.dataDir}/data/rundeckdb;DB_CLOSE_ON_EXIT=FALSE;NON_KEYWORDS=MONTH,HOUR,MINUTE,YEAR,SECONDS"
else if cfg.database.type == "postgresql" then
"jdbc:postgresql://${cfg.database.host}:${toString cfg.database.port}/${cfg.database.name}"
else
"jdbc:mysql://${cfg.database.host}:${toString cfg.database.port}/${cfg.database.name}?autoReconnect=true&useSSL=false"
);
"dataSource.driverClassName" = lib.mkDefault (
if cfg.database.type == "h2" then
"org.h2.Driver"
else if cfg.database.type == "postgresql" then
"org.postgresql.Driver"
else
"org.mariadb.jdbc.Driver"
);
"dataSource.username" = lib.mkDefault cfg.database.username;
}
// lib.optionalAttrs (cfg.database.passwordFile != null) {
"dataSource.password" = lib.mkDefault "@DB_PASSWORD@";
}
// lib.optionalAttrs (cfg.database.type == "h2") {
"dataSource.dialect" = lib.mkDefault "org.hibernate.dialect.H2Dialect";
}
// lib.optionalAttrs (cfg.database.type == "mysql") {
"dataSource.dialect" = lib.mkDefault "org.hibernate.dialect.MariaDB103Dialect";
}
// lib.optionalAttrs cfg.ssl.enable {
"server.https.port" = lib.mkDefault (toString cfg.ssl.port);
"server.ssl.keyStore" = lib.mkDefault (toString cfg.ssl.keyStore);
"server.ssl.keyStorePassword" = lib.mkDefault "@KEYSTORE_PASSWORD@";
};
services.rundeck.frameworkSettings = {
"framework.server.name" = lib.mkDefault cfg.serverHostname;
"framework.server.hostname" = lib.mkDefault cfg.serverHostname;
"framework.server.port" = lib.mkDefault (toString effectivePort);
"framework.server.url" = lib.mkDefault cfg.serverURL;
"framework.ssh.keypath" = lib.mkDefault "${cfg.dataDir}/.ssh/id_${cfg.sshKeyType}";
"framework.ssh.user" = lib.mkDefault cfg.user;
"framework.ssh.timeout" = lib.mkDefault "60";
"rdeck.base" = cfg.dataDir;
"framework.projects.dir" = "${cfg.dataDir}/projects";
"framework.etc.dir" = toString cfg.configDir;
"framework.var.dir" = "${cfg.dataDir}/var";
"framework.tmp.dir" = "${cfg.dataDir}/var/tmp";
"framework.logs.dir" = "${cfg.dataDir}/var/logs";
"framework.libext.dir" = "${cfg.dataDir}/libext";
"rundeck.server.uuid" = if cfg.serverUUID != "" then cfg.serverUUID else "@SERVER_UUID@";
};
users.users.${cfg.user} = {
isSystemUser = true;
group = cfg.group;
home = cfg.dataDir;
createHome = true;
};
users.groups.${cfg.group} = { };
systemd.tmpfiles.settings."10-rundeck" = {
"${cfg.dataDir}" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/etc" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/data" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/projects" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/libext" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/var" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/var/logs" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/var/tmp" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.dataDir}/.ssh" = {
d = {
mode = "0700";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.configDir}" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"${cfg.configDir}/ssl" = {
d = {
mode = "0750";
user = cfg.user;
group = cfg.group;
};
};
"/var/log/rundeck" = {
L = {
argument = "${cfg.dataDir}/var/logs";
};
};
};
environment.etc."rundeck/jaas-loginmodule.conf" = {
mode = "0640";
user = cfg.user;
group = cfg.group;
text = ''
RDpropertyfilelogin {
org.eclipse.jetty.jaas.spi.PropertyFileLoginModule required
debug="true"
file="/etc/rundeck/realm.properties";
};
'';
};
environment.etc."rundeck/log4j2.properties" = {
mode = "0640";
user = cfg.user;
group = cfg.group;
text = ''
status = info
name = RundeckPro
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{DEFAULT} %-5p %c{1} - %m%n
appender.file.type = RollingFile
appender.file.name = FILE
appender.file.fileName = ${cfg.dataDir}/var/logs/rundeck.log
appender.file.filePattern = ${cfg.dataDir}/var/logs/rundeck.%d{yyyy-MM-dd}.log
appender.file.layout.type = PatternLayout
appender.file.layout.pattern = %d{DEFAULT} [%t] %-5p %c{1} - %m%n
appender.file.policies.type = Policies
appender.file.policies.time.type = TimeBasedTriggeringPolicy
appender.file.policies.time.interval = 1
appender.file.policies.time.modulate = true
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
rootLogger.appenderRef.file.ref = FILE
logger.hibernate.name = org.hibernate
logger.hibernate.level = ERROR
'';
};
systemd.services.rundeck = {
description = "Rundeck Service";
wantedBy = [ "multi-user.target" ];
after = [
"network.target"
]
++ lib.optional (cfg.database.type == "mysql") "mysql.service"
++ lib.optional (cfg.database.type == "postgresql") "postgresql.service";
wants =
lib.optional (cfg.database.type == "mysql") "mysql.service"
++ lib.optional (cfg.database.type == "postgresql") "postgresql.service";
environment = {
RDECK_BASE = cfg.dataDir;
RUNDECK_CONFIG_DIR = cfg.configDir;
JAVA_OPTS = lib.concatStringsSep " " cfg.javaOpts;
};
path = [ pkgs.replace-secret ];
serviceConfig = {
User = cfg.user;
Group = cfg.group;
ExecStart = rundeckStartScript;
WorkingDirectory = cfg.dataDir;
RuntimeDirectory = "rundeck";
RuntimeDirectoryMode = "0750";
UMask = "0027";
LimitNOFILE = 65536;
ReadWritePaths = [
cfg.dataDir
cfg.configDir
];
RestartSec = "10s";
Restart = "always";
TimeoutStartSec = "${toString cfg.startTimeout}s";
CapabilityBoundingSet = [ "CAP_SYS_ADMIN" ];
AmbientCapabilities = [ "CAP_SYS_ADMIN" ];
LimitCORE = 0;
LockPersonality = true;
MemorySwapMax = 0;
MemoryZSwapMax = 0;
PrivateDevices = true;
PrivateTmp = true;
ProtectClock = true;
ProtectControlGroups = true;
ProtectHome = true;
ProtectHostname = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectProc = "invisible";
RemoveIPC = true;
RestrictAddressFamilies = [
"AF_UNIX"
"AF_INET"
"AF_INET6"
"AF_NETLINK"
];
RestrictNamespaces = true;
RestrictRealtime = true;
RestrictSUIDSGID = true;
SystemCallArchitectures = "native";
};
preStart = ''
${lib.optionalString (cfg.serverUUID == "") ''
# Generate UUID
UUID_FILE="${cfg.dataDir}/.uuid"
if [ ! -f "$UUID_FILE" ]; then
umask 0137
${lib.getExe' pkgs.util-linux "uuidgen"} > "$UUID_FILE"
fi
''}
install -m 0640 ${configFile} ${cfg.configDir}/rundeck-config.properties
install -m 0640 ${frameworkFile} ${cfg.configDir}/framework.properties
install -m 0600 ${realmFile} ${cfg.configDir}/realm.properties
${replaceSecret "@ADMIN_PASSWORD@" cfg.adminPasswordFile "${cfg.configDir}/realm.properties"}
${lib.optionalString (cfg.database.passwordFile != null) (
replaceSecret "@DB_PASSWORD@" cfg.database.passwordFile "${cfg.configDir}/rundeck-config.properties"
)}
${lib.optionalString cfg.ssl.enable (
replaceSecret "@KEYSTORE_PASSWORD@" cfg.ssl.keyStorePasswordFile
"${cfg.configDir}/rundeck-config.properties"
)}
${lib.optionalString (cfg.serverUUID == "") (
replaceSecret "@SERVER_UUID@" "${cfg.dataDir}/.uuid" "${cfg.configDir}/framework.properties"
)}
if [ -f ${cfg.dataDir}/etc/framework.properties ]; then
install -m 0640 ${cfg.configDir}/framework.properties ${cfg.dataDir}/etc/framework.properties
fi
${lib.concatStringsSep "\n" (
lib.mapAttrsToList (
name: content:
"install -m 0640 ${pkgs.writeText "rundeck-${name}" content} ${cfg.dataDir}/etc/${name}"
) cfg.aclPolicies
)}
'';
};
networking.firewall.allowedTCPPorts = lib.mkIf cfg.openFirewall [
(if cfg.ssl.enable then cfg.ssl.port else cfg.serverPort)
];
};
}

View File

@@ -1156,6 +1156,7 @@ in
netbox-upgrade = runTest ./web-apps/netbox-upgrade.nix;
netbox_4_4 = handleTest ./web-apps/netbox/default.nix { netbox = pkgs.netbox_4_4; };
netbox_4_5 = handleTest ./web-apps/netbox/default.nix { netbox = pkgs.netbox_4_5; };
netbox_4_6 = handleTest ./web-apps/netbox/default.nix { netbox = pkgs.netbox_4_6; };
netdata = runTest ./netdata.nix;
netfoil = runTest ./netfoil.nix;
netplan = runTest ./netplan.nix;
@@ -1553,6 +1554,7 @@ in
rsyslogd = handleTest ./rsyslogd.nix { };
rtkit = runTest ./rtkit.nix;
rtorrent = runTest ./rtorrent.nix;
rundeck = runTest ./rundeck.nix;
rush = runTest ./rush.nix;
rustfs = runTest ./rustfs.nix;
rustical = runTest ./web-apps/rustical.nix;

111
nixos/tests/rundeck.nix Normal file
View File

@@ -0,0 +1,111 @@
{
name = "rundeck";
nodes = {
rundeck =
{ pkgs, ... }:
{
environment.etc."rundeck-admin-password" = {
text = "testpassword";
mode = "0400";
user = "rundeck";
group = "rundeck";
};
services.rundeck = {
enable = true;
serverHostname = "rundeck";
adminUser = "testadmin";
adminPasswordFile = "/etc/rundeck-admin-password";
serverPort = 4441;
database.type = "h2";
openFirewall = true;
};
environment.systemPackages = with pkgs; [
curl
jq
];
};
};
testScript = ''
start_all()
def login_and_verify_api(machine, host, port, user, password, timeout=300):
"""Authenticate via Rundeck form login and verify API access."""
machine.wait_until_succeeds(
f"curl -s -c /tmp/cookies -L"
f" -d 'j_username={user}&j_password={password}'"
f" http://{host}:{port}/j_security_check -o /dev/null"
f" && curl -s -b /tmp/cookies -H 'Accept: application/json'"
f" http://{host}:{port}/api/26/system/info"
f" | jq -e '.system.rundeck.version'",
timeout=timeout,
)
def properties(machine, path):
return machine.succeed(f"cat {path}").replace("\\", "").replace(" = ", "=")
with subtest("Rundeck starts and serves homepage"):
rundeck.wait_for_unit("rundeck.service")
rundeck.wait_for_open_port(4441)
rundeck.wait_until_succeeds(
"curl -sL http://rundeck:4441 | grep -qi Rundeck"
)
with subtest("Regression - port is included in generated URLs"):
config = properties(rundeck, "/etc/rundeck/rundeck-config.properties")
framework = properties(rundeck, "/etc/rundeck/framework.properties")
assert "grails.serverURL=http://rundeck:4441" in config, config
assert "server.port=4441" in config, config
assert "framework.server.url=http://rundeck:4441" in framework, framework
with subtest("Structural settings end up in the generated config"):
config = properties(rundeck, "/etc/rundeck/rundeck-config.properties")
assert "dataSource.driverClassName=org.h2.Driver" in config, config
assert "dataSource.dialect=org.hibernate.dialect.H2Dialect" in config, config
with subtest("Server UUID is generated and substituted"):
framework = properties(rundeck, "/etc/rundeck/framework.properties")
assert "@SERVER_UUID@" not in framework, framework
rundeck.succeed(
"grep -qE '^rundeck\\.server\\.uuid = [0-9a-f-]{36}$'"
" /etc/rundeck/framework.properties"
)
with subtest("Secrets are substituted and not world-readable"):
rundeck.succeed(
"grep -qxF 'testadmin:testpassword,user,admin'"
" /etc/rundeck/realm.properties"
)
rundeck.fail("grep -q '@ADMIN_PASSWORD@' /etc/rundeck/realm.properties")
rundeck.succeed(
"[ \"$(stat -c %a /etc/rundeck/realm.properties)\" = 600 ]"
)
rundeck.succeed(
"[ \"$(stat -c %U /etc/rundeck/realm.properties)\" = rundeck ]"
)
with subtest("API authentication via form login"):
login_and_verify_api(rundeck, "rundeck", 4441, "testadmin", "testpassword")
rundeck.succeed(
"curl -s -b /tmp/cookies -X POST"
" -H 'Accept: application/json'"
" -H 'Content-Type: application/json'"
" -d '{\"name\":\"test-project\",\"config\":{}}'"
" http://rundeck:4441/api/26/projects"
" | jq -e '.name == \"test-project\"'"
)
rundeck.succeed(
"curl -s -b /tmp/cookies -H 'Accept: application/json'"
" http://rundeck:4441/api/26/projects"
" | jq -e 'any(.[]; .name == \"test-project\")'"
)
'';
}

View File

@@ -1,7 +1,7 @@
{ lib, pkgs, ... }:
let
oldNetbox = "netbox_4_4";
newNetbox = "netbox_4_5";
oldNetbox = "netbox_4_5";
newNetbox = "netbox_4_6";
apiVersion =
version:

View File

@@ -4591,8 +4591,8 @@ let
mktplcRef = {
name = "svelte-vscode";
publisher = "svelte";
version = "110.3.0";
hash = "sha256-vVLnjFOpOmfmkwP0Yz7zONrBgpNDFfFZ0TAAicxdZ64=";
version = "110.3.1";
hash = "sha256-C3lJ7MO6GTJIotBa71vQN/L6A8iWZ9viYNniT6I2DMQ=";
};
meta = {
changelog = "https://github.com/sveltejs/language-tools/releases";

View File

@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "mednafen-pce-fast";
version = "0-unstable-2026-07-31";
version = "0-unstable-2026-08-21";
src = fetchFromGitHub {
owner = "libretro";
repo = "beetle-pce-fast-libretro";
rev = "b211204c7026dff6e86e79b00185512e2421fff8";
hash = "sha256-NfVgWG76T6cbb44F8Qva7rlwlsuhF8H6WtKjLPNfs7k=";
rev = "bebe2b13a840fbfd45cb501f5cd0efe01bdb1735";
hash = "sha256-z30s5uYhqBht7ZviljAu5WZlOCTS9sYqWBD2/hbWUbs=";
};
makefile = "Makefile";

View File

@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "mednafen-supafaust";
version = "0-unstable-2026-07-22";
version = "0-unstable-2026-08-23";
src = fetchFromGitHub {
owner = "libretro";
repo = "supafaust";
rev = "d6187e5337e6c2646d003db3ab1936727ca75301";
hash = "sha256-r9sZGTpJo+jiEDZnzSgcwzBerI4BHL2p/WvJQpdW31g=";
rev = "642d1d1b6684aa7e306a02a89885f3f5456a5157";
hash = "sha256-malpQAapdRY/V4y2Csm36+Bo1WCRcAWnx4C4okC5S4k=";
};
makefile = "Makefile";

View File

@@ -1400,11 +1400,11 @@
"vendorHash": "sha256-kM5itT82W2uy/y5uJkZsMH308LjRMSNKBJC09e5k5+8="
},
"turbot_turbot": {
"hash": "sha256-sJODPeFzU3vaiHbKlGe1dR5Pi7aS56JcmZUe8Yg1BcQ=",
"hash": "sha256-Az+eTY+eksfH89DGqTd8RVwD8KDztz6Bctm0Mt7GBN4=",
"homepage": "https://registry.terraform.io/providers/turbot/turbot",
"owner": "turbot",
"repo": "terraform-provider-turbot",
"rev": "v1.13.3",
"rev": "v1.14.0",
"spdx": "MPL-2.0",
"vendorHash": null
},

View File

@@ -0,0 +1,47 @@
{
lib,
fetchFromGitHub,
nix-update-script,
openssl,
pkg-config,
rustPlatform,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "adhammer";
version = "1.3.10";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "icedracon";
repo = "adhammer";
tag = "v${finalAttrs.version}";
hash = "sha256-QQjiyvj3e5unEsh17UyKck2rs8oKeLO5eodBG7cn1LQ=";
};
cargoHash = "sha256-Ebkvxl/JyiZ84ucv7FmOluHTqYd14I3B6z53QNmVQZw=";
nativeBuildInputs = [
pkg-config
rustPlatform.bindgenHook
];
buildInputs = [ openssl ];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Active Directory security-assessment toolkit";
homepage = "https://github.com/icedracon/adhammer";
changelog = "https://github.com/icedracon/adhammer/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "adhammer";
};
})

View File

@@ -39,13 +39,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "art";
version = "1.26.7";
version = "1.26.8";
src = fetchFromGitHub {
owner = "artraweditor";
repo = "ART";
tag = finalAttrs.version;
hash = "sha256-HuXDdrfb3r8B5u4Ifvb3EfbF/b1mMbDAunOIBtEaKtk=";
hash = "sha256-kgDmGxdmKK/19vxruTQ0845iaRSWthlkYoeAFVaju2U=";
};
# Fix the build with CMake 4.

View File

@@ -7,16 +7,16 @@
buildGoModule (finalAttrs: {
pname = "baidupcs-go";
version = "4.0.1";
version = "4.0.2";
src = fetchFromGitHub {
owner = "qjfoidnh";
repo = "BaiduPCS-Go";
rev = "v${finalAttrs.version}";
hash = "sha256-AvwdAOjuQxdmhg+IJxQ9e9iMXqveLjoF/W7ntZZmES4=";
hash = "sha256-o0Oh6zLJT25+smEgWy7E8fTigJ2FLpBXoaZSYCRFvic=";
};
vendorHash = "sha256-oOZeBCHpAasi9K77xA+8HxZErGWKwb4OaWzWhHagtQE=";
vendorHash = "sha256-3kvB5QxtWuElhDIFFr3Awf5myf6l2Hx0M2k53ltQYeQ=";
doCheck = false;

View File

@@ -11,13 +11,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "cfitsio";
version = "4.6.4";
version = "4.7.0";
src = fetchFromGitHub {
owner = "HEASARC";
repo = "cfitsio";
tag = "cfitsio-${finalAttrs.version}";
hash = "sha256-8AFPTr8j8f+x1h78IXOV8GHkDPWvI8w8aRxyke3Dras=";
hash = "sha256-k05ylMYf+hsYur3BgNAweMeDc89rsBBtie+P7bd+7qg=";
};
outputs = [

View File

@@ -9,13 +9,13 @@
buildGoModule (finalAttrs: {
pname = "cloudflared";
version = "2026.7.3";
version = "2026.8.2";
src = fetchFromGitHub {
owner = "cloudflare";
repo = "cloudflared";
tag = finalAttrs.version;
hash = "sha256-hIDx9Nd7CKlM0vCKqkVHxBMj4QzvnnsYYMjhzOqcECU=";
hash = "sha256-6pepcjGOLbG+lJ/sGCU8tJVW4nVq7/xGkZ7lLz3KHRQ=";
};
vendorHash = null;

View File

@@ -0,0 +1,41 @@
{
lib,
rustPlatform,
fetchFromGitHub,
nix-update-script,
versionCheckHook,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "corrode-scanner";
version = "0.5.1";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "ul0gic";
repo = "corrode";
tag = "v${finalAttrs.version}";
hash = "sha256-cxmX0UOEI78P9K4glTh7B2b+/Uc5pHY961RamarvZm0=";
};
cargoHash = "sha256-f+gwucHpQu5IJqll/DmGYkNwu/5a2esl9URpwj7c3Pc=";
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Security scanner for finding exposed credentials, secrets, and vulnerabilities";
homepage = "https://github.com/ul0gic/corrode";
changelog = "https://github.com/ul0gic/corrode/releases/tag/${finalAttrs.src.tag}";
license = with lib.licenses; [
asl20
mit
];
maintainers = with lib.maintainers; [ fab ];
mainProgram = "corrode-scanner";
};
})

View File

@@ -6,11 +6,11 @@
}:
appimageTools.wrapType2 rec {
pname = "cubelify";
version = "1.25.13";
version = "1.25.14";
src = fetchurl {
url = "https://storage.cubelify.com/overlay/v1/Cubelify%20Overlay-${version}.AppImage";
hash = "sha512-1gNMoaEdh5qAySgRl9rjrFPLFpdTt6YxMaYdry4AJpQhNYxv45M1pq7D5HqJ4xgZHQZxfERPo+Wvfzk1rwaWog==";
hash = "sha512-R2J1u+XAeOwNe6lzsntXzIU0wk7UEXa4QBncpMnc3qgp/uYzaV+rBbk5+NyL+GBjLEVPkUDoMjoL2K2iCZpdYw==";
};
nativeBuildInputs = [ makeWrapper ];

View File

@@ -7,13 +7,13 @@
buildGoModule (finalAttrs: {
pname = "dapr-cli";
version = "1.18.1";
version = "1.18.2";
src = fetchFromGitHub {
owner = "dapr";
repo = "cli";
rev = "v${finalAttrs.version}";
hash = "sha256-lMHuXf4v4xcCcvTqVVXwszMjQ/C3P80J1hXh4Py/jls=";
hash = "sha256-A21Fk5WzlyMcHG2wpPQVChwkDdcCrDx3zhzl0KZLBS0=";
};
vendorHash = "sha256-P7zrfUcb/Hxo7QbIQfq9JSf2d7meZShQ++GG8HkEoLE=";

View File

@@ -10,13 +10,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "decker";
version = "1.69";
version = "1.70";
src = fetchFromGitHub {
owner = "JohnEarnest";
repo = "Decker";
rev = "v${finalAttrs.version}";
hash = "sha256-N1g+jaINbUZcTazvgfBc3G0QD4fevJMINRGL9Lp27us=";
hash = "sha256-QVv5kLwQZojTCUgnGTX2r622YOoYzIDjrWbj8mkFubE=";
};
buildInputs = [

View File

@@ -10,7 +10,7 @@ let
in
stdenvNoCC.mkDerivation {
pname = "dracula-theme";
version = "4.0.0-unstable-2026-03-01";
version = "4.0.0-unstable-2026-05-21";
__structuredAttrs = true;
strictDeps = true;
@@ -18,8 +18,8 @@ stdenvNoCC.mkDerivation {
src = fetchFromGitHub {
owner = "dracula";
repo = "gtk";
rev = "1188c8eabdfc33c42738862b91caf7fab884c767";
hash = "sha256-Z3dMgkk5SvpCWjxdm8hd5FBeEvq0uCJuj3zC5boQEdk=";
rev = "81d0287950e8093dd8f8c753347763bce8588465";
hash = "sha256-gbotOIGG55oqQZZNDkc9s5fPXvJQr+YHqxt5ZWS5bF8=";
};
installPhase = ''

View File

@@ -6,7 +6,7 @@
stdenv.mkDerivation {
pname = "etlegacy-assets";
version = "2.83.2";
version = "2.85.0";
srcs =
let

View File

@@ -22,7 +22,7 @@
versionCheckHook,
}:
let
version = "2.84.0";
version = "2.85.0";
fakeGit = writeScriptBin "git" ''
if [ "$1" = "describe" ]; then
echo "${version}"
@@ -49,7 +49,7 @@ stdenv.mkDerivation {
owner = "etlegacy";
repo = "etlegacy";
tag = "v${version}";
hash = "sha256-E1eR0OIfXn2QkSGYNu1JFXDIVrkz+pxM7IU0GVkvAFQ=";
hash = "sha256-oOgoM5BLBnmrmbdXFGYkVcQLYq8tVpLgnzJXax7g3vI=";
};
nativeBuildInputs = [

View File

@@ -20,7 +20,7 @@ let
in
symlinkJoin {
pname = "etlegacy";
version = "2.84.0";
version = "2.85.0";
paths = [
etlegacy-assets

View File

@@ -9,17 +9,17 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "flux9s";
version = "1.0.2";
version = "1.0.3";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "dgunzy";
repo = "flux9s";
tag = "v${finalAttrs.version}";
hash = "sha256-4D5gR4d6+typ7W9OYAsETO9q3tnfP0PweuxZSlXWQyI=";
hash = "sha256-9xk46wwQUegUJJWOLG3EkeTgHQ4qfhGISqcDUcsdBos=";
};
cargoHash = "sha256-Z3vhRCvlfzLxYw/fWri0eil6+H+gPHHA8tMxPqSU7ok=";
cargoHash = "sha256-VXWg6NrKNFRPwK6A3ttrwUSzLx3BjMDthtRwLX9Zrsg=";
nativeBuildInputs = [ pkg-config ];

View File

@@ -20,13 +20,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "gitify";
version = "7.3.3";
version = "7.5.0";
src = fetchFromGitHub {
owner = "gitify-app";
repo = "gitify";
tag = "v${finalAttrs.version}";
hash = "sha256-Kr4+U6UD/cfbAzIZ8GrPgxGmV8ktENxd9o2/x3C4v+c=";
hash = "sha256-ogF9YrnSaT31AnoxtvA0jnK5wHhlAvIj3T+TaKZM80U=";
};
nativeBuildInputs = [
@@ -46,7 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
inherit (finalAttrs) pname version src;
inherit pnpm;
fetcherVersion = 4;
hash = "sha256-Uxta96e9t0jOfsgR82fMuzc1V5KC0t1n2TJ90qv73wg=";
hash = "sha256-aG34cZF1xwPM5L/+OXUgOmJwLGcpNU59aobVSmTIvLw=";
};
env.ELECTRON_SKIP_BINARY_DOWNLOAD = 1;

View File

@@ -8,16 +8,16 @@
buildGoModule (finalAttrs: {
pname = "goshs";
version = "2.1.5";
version = "2.1.6";
src = fetchFromGitHub {
owner = "goshs-labs";
repo = "goshs";
tag = "v${finalAttrs.version}";
hash = "sha256-mVgBY1QhQ+tDQnfangqylNeCbBJTSJaM0y7vZ95BU3Y=";
hash = "sha256-0d4iB6Mtann0OZd/KyWnwq7+fCcWEibAzHSYe30Mce0=";
};
vendorHash = "sha256-LLYgb0DIFx97+ZXOlQc4yVdjjiw7ebXx76hADfWnlkw=";
vendorHash = "sha256-E+GZn7Trnz3KqzTsEfavWxP1dhsGPx4PyYYae8wjCb4=";
patches = [
# No upstream fix yet; remove when updating to a release that uses goldmark 1.7.17 or later.

View File

@@ -1,28 +1,28 @@
{
"@esbuild/aix-ppc64@npm:0.28.1": "98a9325bec976ebe1cbbf2441fdbe895b36733919b9df7d62e7b73a1e199810affeac17d172cc5cf61196c9b1ede8073ca5d088ca52b14800b76f49bacc480b3",
"@esbuild/android-arm64@npm:0.28.1": "ec3e3c62bc684a09393ca10a0f64b166938f66e4b1972f6db63bf55463bf039736549d9808e50996eb0fedea70744b466aeb816c44e78f2b5d232aeb9929e3ac",
"@esbuild/android-arm@npm:0.28.1": "cda56884826ac2aa5dd3be5df9e89834df3b46515cf14099ddfc5bcfc80122d4f8d74b3831a0ac447d87dda73ae90fba49dc4e352b11240c2b055cdca69a0a02",
"@esbuild/android-x64@npm:0.28.1": "7f2ba14ba06fd3f2faff467e6fceb2466cd44d1d6039ae1c01f24336a5a1ad0f9c3721000331ded3f250587e4be5e7194d68dd33c55339dc26e1200e13e16d2d",
"@esbuild/darwin-arm64@npm:0.28.1": "9798bd013921f8dc5126eb12eba4ddfce9198d11eba6ae844f66d25919d5d26be2aa46b4da8d442ad0e7673e88b2f3d9e505d71692cd030bda9a7b762921c05d",
"@esbuild/darwin-x64@npm:0.28.1": "aaddefac25e025e309c71dc5c7074d8c295f44779e41add06dbf65d48b2a6a72b579266748e7f0ab3b2be1ed07be8d541e954f75dda2a2992f36f4c805d91fe1",
"@esbuild/freebsd-arm64@npm:0.28.1": "a325b7833f978b62bf25157ea5a951e29b9b0a1db9665ee52498644c9b250977ab6f21c049137d0a271bb0442b3e6d6148c257bace84476196b46570ce837d62",
"@esbuild/freebsd-x64@npm:0.28.1": "f092ddacd0bc715f443b62382dd8ba8f85d272f62caa47f603e85b9c5b14fef67c610523006ca88cae19e2829fe41a2a0ae92b7c158ef1038c714552dea57554",
"@esbuild/linux-arm64@npm:0.28.1": "bfda225d3101bb3ed5a74f979d50564a17ccf3799ad65fb968c5b15c9ceb9077c105a9bb5763d42f33f1917ac709e5779cd2112e5420188963568e80ac8439f8",
"@esbuild/linux-arm@npm:0.28.1": "b440cf89adf6dd1079bcf7d9aa915f70f467002bbb69bda21f4a3d160c9ae93bc6d8eb73b2831c8607fb1527d8ada288d907440e36969cb60000e4df85b7c549",
"@esbuild/linux-ia32@npm:0.28.1": "4329d81cf06331e537c8ebb571a9d4ca968811bee7c7cb4f975b8343c9f7649a8b2b9902b0974be0e2224656b1a0d21f3b191304db8cec52d006b80061faf4c2",
"@esbuild/linux-loong64@npm:0.28.1": "76b4d0f2cf716576181065e3fd2d6ffa9b0d0c39987e8d3d1b8d1e8aaa2563779cd4f861c881e3e7a9302f2d03d5543b8f726a99603e6aa754c8154772d0f434",
"@esbuild/linux-mips64el@npm:0.28.1": "59825a73d04187818c6fb53b22e2915a4c0e6c8fee9017d75dcafbdc66699f2765377faf801495d69952230935557f58360481a7edd78073816270aa8bd0cbee",
"@esbuild/linux-ppc64@npm:0.28.1": "3186d54b33d9b4849d6fe4fa2aeed4966a4117f9a27bf2d59f07f3ea651a9724a2eb9aaaf98813aac6dc726710a337bfc2472dd714262894fabf498a369fbd74",
"@esbuild/linux-riscv64@npm:0.28.1": "f01572cf6398b466d44bfa68dbc5f56a37b74e645673198f7ba157d215ccba35ea46e220a2526008d5679cef47a4368dd46480d4ba4c7330a491d215fe3f649f",
"@esbuild/linux-s390x@npm:0.28.1": "aad20d457c0441d7bf2f6c8dbe74297d4c3a3c90cf709a971a4a19b2c70497bf91ac4a80fa6168ccf6063eb284ea0f41f2293283e8351348369af551ffe6f3cf",
"@esbuild/linux-x64@npm:0.28.1": "d361ac73388af397803dc26242265c8f00fce91d9dd587b04d230c686294585c541f43dee706e23f8d56754e3a3da653b00b3f55855182d60deabc024acf19f7",
"@esbuild/netbsd-arm64@npm:0.28.1": "73e2d620958bcb61367849046397dee40dbd9bd6d0d4172bb87ef90ad644ed16e48386debd1ef0323648358fc617c0d8fae58be984774a2e8622712c7ab7f04b",
"@esbuild/netbsd-x64@npm:0.28.1": "663a35913d3d3a2f566d31ec00477954cc570f386d56a5ffffa1d7bb58bccfbe241780fc429c2e41463cef5d1d422ca02fe174df970932b46d225ff0bd333b65",
"@esbuild/openbsd-arm64@npm:0.28.1": "8add19644eca9a23cefc2a109644df802c626cc3460adef6f030ce72d1fcb127a4ff2b14a21cb51bbd68ec5a652f0bd7105c1a0d76a30f44fbf822c010096cd9",
"@esbuild/openbsd-x64@npm:0.28.1": "ad12be1ed38cc61410aa6210f88b8aa8dc3e6ee717dce32dba6e7cbaa57414af6e5314e7cdf9baa4affafe2d6a88e230d361a0ddadf76d06070b63bbf0a97cb2",
"@esbuild/openharmony-arm64@npm:0.28.1": "5ecd637058887c8458ebc7e95c67adee2397ebd8e5f6c302c17816eeb77963b1feeaff4e3f7823c0d85f0fc10771caa96175e2f0909b00e60ca5d90d22690a15",
"@esbuild/sunos-x64@npm:0.28.1": "e3286191315e30471e9cc176281a5d7acf5b877a95ea2868195024548a984e08b0214ea90e504e5bb5c595f9d3da9a5b961b52f79988702036b59233378580c4",
"@esbuild/win32-arm64@npm:0.28.1": "55e83fa2b63511bc3d2138ff84091b452936072b5b8e24405a5669f04355263b3f452861c13fc0c01ad80ebeb0df069da0318631386c9d66cda8ccbeca0fa82e",
"@esbuild/win32-ia32@npm:0.28.1": "dcd2579f97b8b5217e807d3a069461635ff6c1f13bc6e678fb0e385db4bf569afbbfe9f54ee512f0e120c6cc2689889725b8e2efdb17e3bb1603cffb58a4b6b3",
"@esbuild/win32-x64@npm:0.28.1": "1d7e7661663e2b0d814550e461fd06b814b3ac1ffda1e84468da3b7c29a1ad8a6067a8b7dcf6e66e38918b43a440c6302052f1bdb40c48a6d49a82c616e12f2d"
"@esbuild/aix-ppc64@npm:0.28.2": "18ffc469b906f4639372614d41def04925cfccf6726818f1afd2d3eb5f062f1cd54500f5ad5d0f47dcbc913a4898745f5faf7deed71e199724610481c8b7d661",
"@esbuild/android-arm64@npm:0.28.2": "8b33309c4a4eff21f119098df601dde2d2b124f80e60680140c2f07157ae7d43f03a954563b823d1381edeca73fce8cfba01a22b9451cb15b24ff20a19731a6d",
"@esbuild/android-arm@npm:0.28.2": "e36e4134a04a1a753a24174f732b87d8288edc09e566f32d5ed1b03a0d703991c0286f006dd95de1ee29542b57558a47cbfdd9f46f26b5f3620a3ff099c67e00",
"@esbuild/android-x64@npm:0.28.2": "ec47bb2fb9e3a3c5b31c82511eb1a1141aa2747bef617977b7f50076bece97a61ae7de8a67b082fc88adb25cb34aa70567497306a19e6f93dc3d593961771683",
"@esbuild/darwin-arm64@npm:0.28.2": "1dc2f3613b0394d465db5999ab69ca7d2f5a7454e2d811735e5b34b7da7f1580d74aea6befd4501bef46eb28d68ff09741a500a352e2bd263d03c4962b04da7c",
"@esbuild/darwin-x64@npm:0.28.2": "7a83f9fe251dfd96a03d9a88b6b1278350b9f93c23c3cac6085ef70821932c941784794557c8e53343ced33a328e74a1a67f5e108f97f508fe266dfabbea6d5c",
"@esbuild/freebsd-arm64@npm:0.28.2": "685a5bb96c8ae53ab47fb829148ae44ca88d7f2414df3c85f0ec6d5f2146a389e96f4e7601fec1395303b7d0e14d8cdc08aaceeb4bf87c6528cb52a001e1ebcb",
"@esbuild/freebsd-x64@npm:0.28.2": "4c6515cda584dc87c40bb52403e8bdb64ff4e70988e552bcbbf0ea63db46271639b320c0edbceda6a31acf0160f58f3644aa11a8a61db3a04ca00b77c773fba5",
"@esbuild/linux-arm64@npm:0.28.2": "5a27e1ede494c2fdb049f9173d647fe7f987379e20f59014b069dfeed536bf72d0d596552a2c99e8781d9ae99557023f5b7613fba44b50ef1e06d4ea93f47751",
"@esbuild/linux-arm@npm:0.28.2": "b129de26545ee3e31934101b24b5d5c574d7da62acd580dfce81676978b5c779d815af7f24f60c1dacadff94d592a5ecee59e74b0c985a43db0bd0d590b5c48c",
"@esbuild/linux-ia32@npm:0.28.2": "c8c7ac9bd8e7162b8bac9f49dc695245356eeaca5b8327a8fd30f7ff323f59abad3286cf5fb5e7df00f58cdb2fca90f2f56c92fe03f2d27e43d7e24e602903a7",
"@esbuild/linux-loong64@npm:0.28.2": "2ea7ab75e2ba2e47e914eae905e6355a908629aeb15d090e53d4a2f7203eca06eeec60d82d0803e0e5c4c844d5b40b4190cefc3e3098ff2265db2e2f3158b24f",
"@esbuild/linux-mips64el@npm:0.28.2": "6977e4ea84b6e8736ce7f3dffd4154c04bc12b581f86655656a9969a08645eeb38836e90f2873baab085449548df0e3a276943d860f31fa65d018133f816b5f5",
"@esbuild/linux-ppc64@npm:0.28.2": "4f7215f686c425d0eeab1e8d76156a6640f3a6ea3bdc1c07777012618d1dd44c51f2260dfd83f37c36ba4c6df2053dc11f013806b7ac862d23799180103da8be",
"@esbuild/linux-riscv64@npm:0.28.2": "4035119fd362aa46652298da5ad659c33322e24ba6183d0b46bd411ef74689286539c4395f41c8ff994e555e88fd2f77e0ea4e518348d8f6dcd42697bb323c17",
"@esbuild/linux-s390x@npm:0.28.2": "cbc618cbd9aacd5648239c5f0625d156cb08e9097e6cb527365aee23504eb4883539268d34b6a40a2c3736146b8ae0b513616bc6f9a18e2312935a5eb373d901",
"@esbuild/linux-x64@npm:0.28.2": "87a9da362e944ac296cb9e7082aa8c34357e5274b986d0c2eaa2056b7dde43d93a72d249f93a696059630c81bf3a1a285981419fe25619656bf05466f91c61a4",
"@esbuild/netbsd-arm64@npm:0.28.2": "ddda9f430a486bb80e2eabe92642446a759573125fe2444a68e73a4c4da2e7f595d5948009ad4aca06c604ad65840001ee11e5192c626b5494cc14e69485dbe6",
"@esbuild/netbsd-x64@npm:0.28.2": "57789330e50f7c37dc0732958e8ce95d99961c4e667bf4513cd0957f0561ca015081926e6e9d8d0730961a4bdaf81516f5aaeee48fc2b74ed053ea2641598714",
"@esbuild/openbsd-arm64@npm:0.28.2": "5616d7b13e2a81a65e723553d23404b40c7e323c816bf6ad2176f4f0977dc6f4a329b90b42be6286e80efaa565b4d6f45d081d3f3bbd96e5024c110c321ac7d3",
"@esbuild/openbsd-x64@npm:0.28.2": "bc889ffd7784145b09624eea6ab781af08b439d627653668f6cca49101c5108a1b604f2c3fbfcc5278a5e22eba21b30685e9f0f98180265e7b511d27fb7a9b67",
"@esbuild/openharmony-arm64@npm:0.28.2": "0b879a2605598deb49cd0161b4e8f7bf3f7860fbda1c429d2f1dd4847e0afa441f40b74ef09131165477c053051682f2cb6b654077b7e8b374f8fc1a309bd5f1",
"@esbuild/sunos-x64@npm:0.28.2": "efc7fde222fe2eec0ced86cc10796df6a11268229073b3e6395482dd016b04aac701734ab59f927929e5e26c5316f6acecc152e1ac4dbb0228a0fe70fc8a5dd9",
"@esbuild/win32-arm64@npm:0.28.2": "a7d1d272c9ecaf0d7aec021ed2c4f9f31b93e276f482fa917c7fbab1e1c1420e57dcd72db841bc1e5131f7f7d98a0e3d96ee3d05b244b973b1b0c59bfec24af6",
"@esbuild/win32-ia32@npm:0.28.2": "462cfb1e452a5ec70b74713758557f504ed62ad2b4318eae690e9c59c02f57dc25dcafee7784b67f9c38c03f52d7db827176a2caa3a7ea94cd5f2023f7540b94",
"@esbuild/win32-x64@npm:0.28.2": "c97fb5efdc1f3b861338115db13576bc7135b76528a8e554604ada34d5016eebad951cce7db96620b17c39d55ac29d64211aba25a043c36202379dbc8e41f704"
}

View File

@@ -11,13 +11,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hedgedoc";
version = "1.11.1";
version = "1.12.0";
src = fetchFromGitHub {
owner = "hedgedoc";
repo = "hedgedoc";
tag = finalAttrs.version;
hash = "sha256-Xvz2kU1+DVp+BRa4zHM9e/xHjy41br7gZtBOpoaun0o=";
hash = "sha256-QYWDgQuSsMf8xElSK0MpthOMAB6EJXcxfOWcHrR4ODU=";
};
patches = [
@@ -32,7 +32,7 @@ stdenv.mkDerivation (finalAttrs: {
offlineCache = yarn-berry_4.fetchYarnBerryDeps {
inherit (finalAttrs) src missingHashes patches;
hash = "sha256-SkUWghEBq8WyKuSDyM7OZBVSyXxqKpxIaoFMsaY10A4=";
hash = "sha256-2qwTV9GRKnVIhK6dsSfis+JOTfjcdwW0RVdrJZa/uJc=";
};
nativeBuildInputs = [
@@ -85,6 +85,7 @@ stdenv.mkDerivation (finalAttrs: {
description = "Realtime collaborative markdown notes on all platforms";
license = lib.licenses.agpl3Only;
homepage = "https://hedgedoc.org";
changelog = "https://github.com/hedgedoc/hedgedoc/releases/tag/${finalAttrs.src.tag}";
mainProgram = "hedgedoc";
maintainers = with lib.maintainers; [ SuperSandro2000 ];
platforms = lib.platforms.linux;

View File

@@ -31,13 +31,13 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "homepage-dashboard";
version = "1.13.2";
version = "2.0.0";
src = fetchFromGitHub {
owner = "gethomepage";
repo = "homepage";
tag = "v${finalAttrs.version}";
hash = "sha256-d6NNtaThDfVErGx7fFdqLdjx4UZXMN6CZUBpMZFZYhQ=";
hash = "sha256-VBrLAfAWFyvuIM54+V0YXUc77WQxRpMQ4kiC/d0BrJ4=";
};
pnpmDeps = fetchPnpmDeps {
@@ -48,7 +48,7 @@ stdenv.mkDerivation (finalAttrs: {
;
pnpm = pnpm_10;
fetcherVersion = 3;
hash = "sha256-jAcAbi++Wbyi07YdPuIhDAeNT4fJVAIxp51boD30x3k=";
hash = "sha256-kv468v/5H1alTmFntl05cfgDz9zc2Tg5OMDrEXOUK/o=";
};
nativeBuildInputs = [

View File

@@ -0,0 +1,49 @@
{
lib,
fetchFromGitHub,
nix-update-script,
openssl,
pkg-config,
rustPlatform,
zstd,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "introspectme";
version = "0.0.2";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "bountyyfi";
repo = "IntrospectMe";
tag = "v${finalAttrs.version}";
hash = "sha256-PQSfIbcY3vgJhi2OcG6wqFH6xiWcBylJhr1kWdlr0go=";
};
cargoHash = "sha256-UAcIwBrHuU7AbLXoSCwpT7cetioVNboG2rpDMPbnvR8=";
nativeBuildInputs = [ pkg-config ];
buildInputs = [
openssl
zstd
];
env = {
ZSTD_SYS_USE_PKG_CONFIG = true;
};
passthru.updateScript = nix-update-script { };
meta = {
description = "Tool for introspecting and analyzing GraphQL field suggestion errors";
homepage = "https://github.com/bountyyfi/IntrospectMe";
changelog = "https://github.com/bountyyfi/IntrospectMe/releases/tag/${finalAttrs.src.tag}";
# SOURCE-AVAILABLE LICENSE, Version 0.0.1 - Effective February 15, 2026
# https://github.com/bountyyfi/IntrospectMe/blob/main/LICENSE
license = lib.licenses.unfree;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "introspectme";
};
})

View File

@@ -7,18 +7,18 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "kanban";
version = "0.8.0";
version = "0.8.1";
src = fetchFromGitHub {
owner = "fulsomenko";
repo = "kanban";
tag = "v${finalAttrs.version}";
hash = "sha256-qvjUeYNJ4ODO5dxAaWuWIIpqmFjE6t3ZeuSvZcp5xaI=";
hash = "sha256-HJb52Qskyqzjcjp6SlM81OSL2GtpMEYxuuYWy9yLxYQ=";
};
env.GIT_COMMIT_HASH = finalAttrs.src.rev;
cargoHash = "sha256-YO1brjDNQxt155VtxIpniAdhEvv22vQlk8CUMz2f9Qs=";
cargoHash = "sha256-o+C8TsE/5myoKGhSIWG+OIHliTOM5dQBY1E3a5KFcxs=";
passthru.updateScript = nix-update-script { };

View File

@@ -17,7 +17,7 @@
# That is handled by the kiro-cli package, which wraps this one in an FHS env.
stdenv.mkDerivation (finalAttrs: {
pname = "kiro-cli-unwrapped";
version = "2.18.1";
version = "2.19.1";
__structuredAttrs = true;
@@ -25,15 +25,15 @@ stdenv.mkDerivation (finalAttrs: {
{
x86_64-linux = fetchurl {
url = "https://desktop-release.q.us-east-1.amazonaws.com/${finalAttrs.version}/kirocli-x86_64-linux.tar.gz";
hash = "sha256-AX/jbX3rTdPwOClRqOeVl/dhU3Rf91Ckj0hrQxou3Wc=";
hash = "sha256-sSE96keJd5fCA43vnVmc2rfkfaq/nSLopho8JaWbXdA=";
};
aarch64-linux = fetchurl {
url = "https://desktop-release.q.us-east-1.amazonaws.com/${finalAttrs.version}/kirocli-aarch64-linux.tar.gz";
hash = "sha256-jzUKXpNi8aHLzRAA9CH23amGLZbhRnO4sfu8MZPnT6c=";
hash = "sha256-AuzdWswVpErj3tlYwjbXegA7bC6wwYtgZwZIeYo2htM=";
};
aarch64-darwin = fetchurl {
url = "https://desktop-release.q.us-east-1.amazonaws.com/${finalAttrs.version}/Kiro%20CLI.dmg";
hash = "sha256-B4k+lHfI0pbrxlMZJkh3L9MFcY2kvzqXWDcY4SLEcGE=";
hash = "sha256-YA4geK4IcQXnQkWD9f7e2Wx0aaihi5y8gCsogJ4D5DM=";
};
}
.${stdenv.hostPlatform.system} or (throw "Unsupported system: ${stdenv.hostPlatform.system}");

View File

@@ -12,14 +12,14 @@
buildPythonPackage rec {
pname = "matrix-synapse-s3-storage-provider";
version = "1.6.1";
version = "1.7.0";
format = "setuptools";
src = fetchFromGitHub {
owner = "matrix-org";
repo = "synapse-s3-storage-provider";
tag = "v${version}";
hash = "sha256-vRDjN9BDp7Rta/F91OVEH8FWyiwxR67PQSqBCs3bDkM=";
hash = "sha256-QeSzaxUQdwCiA4Mvc8ZQMFjyRFKcLRb8dQXykI5AFD4=";
};
postPatch = ''

View File

@@ -139,6 +139,9 @@ py.pkgs.buildPythonApplication rec {
description = "IP address management (IPAM) and data center infrastructure management (DCIM) tool";
mainProgram = "netbox";
license = lib.licenses.asl20;
knownVulnerabilities = [
"Netbox Version ${version} is EOL; please upgrade by following the current release notes instructions"
];
maintainers = with lib.maintainers; [
minijackson
transcaffeine

View File

@@ -0,0 +1,13 @@
diff --git a/netbox/netbox/settings.py b/netbox/netbox/settings.py
index f334a73a7..8e8d76f0e 100644
--- a/netbox/netbox/settings.py
+++ b/netbox/netbox/settings.py
@@ -604,7 +604,7 @@ X_FRAME_OPTIONS = 'SAMEORIGIN'
# Static files (CSS, JavaScript, Images)
# STATIC_ROOT is deliberately not a configuration parameter; static files are collected to <NETBOX_ROOT>/static.
-STATIC_ROOT = os.path.join(NETBOX_ROOT, 'static')
+STATIC_ROOT = getattr(configuration, 'STATIC_ROOT', os.path.join(NETBOX_ROOT, 'static')).rstrip('/')
STATIC_URL = f'/{BASE_PATH}static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'project-static', 'dist'),

View File

@@ -0,0 +1,149 @@
{
lib,
fetchFromGitHub,
python3,
fetchpatch2,
plugins ? _ps: [ ],
nixosTests,
nix-update-script,
}:
let
py = python3.override {
self = py;
packageOverrides = _final: prev: { django = prev.django_6; };
};
extraBuildInputs = plugins py.pkgs;
in
py.pkgs.buildPythonApplication (finalAttrs: {
__structuredAttrs = true;
pname = "netbox";
version = "4.6.8";
pyproject = false;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox";
tag = "v${finalAttrs.version}";
hash = "sha256-fhEcQBYL5R9Tv9CpAf3Ce1oIzsXCjtH5j+dP9sD6kdg=";
};
patches = [
./custom-static-root.patch
# TODO: remove before upgrading to NetBox v4.7
(fetchpatch2 {
name = "upgrade-django-tables2-v3.0.patch";
url = "https://github.com/netbox-community/netbox/commit/d57346d9f0eef8126eafcd5033ea43864faeaf0d.patch";
hash = "sha256-6/wdd8wDVT4eqDKMNx8tmoPTDvw8OE7atf9nzg3LZzk=";
})
];
dependencies =
(
with py.pkgs;
[
colorama
django
django-cors-headers
django-debug-toolbar
django-filter
django-graphiql-debug-toolbar
django-htmx
django-mptt
django-pglocks
django-prometheus
django-redis
django-rq
django-storages
django-tables2
django-taggit
django-timezone-field
djangorestframework
drf-spectacular
drf-spectacular-sidecar
feedparser
jinja2
markdown
netaddr
nh3
pillow
psycopg
pyyaml
requests
social-auth-core
social-auth-app-django
sorl-thumbnail
strawberry-graphql
strawberry-graphql-django
svgwrite
tablib
# Optional dependencies, kept here for backward compatibility
# for the S3 data source backend
boto3
# for Git data source backend
dulwich
# for error reporting
sentry-sdk
]
++ psycopg.optional-dependencies.c
++ psycopg.optional-dependencies.pool
++ social-auth-core.optional-dependencies.openidconnect
)
++ extraBuildInputs;
nativeBuildInputs = with py.pkgs; [
mkdocs-material
mkdocs-material-extensions
mkdocstrings
mkdocstrings-python
];
postBuild = ''
PYTHONPATH=$PYTHONPATH:netbox/
${py.pythonOnBuildForHost.interpreter} -m mkdocs build
'';
installPhase = ''
mkdir -p $out/opt/netbox
cp -r . $out/opt/netbox
chmod +x $out/opt/netbox/netbox/manage.py
makeWrapper $out/opt/netbox/netbox/manage.py $out/bin/netbox \
--prefix PYTHONPATH : "$PYTHONPATH"
'';
passthru = {
python = py;
# PYTHONPATH of all dependencies used by the package
pythonPath = py.pkgs.makePythonPath finalAttrs.passthru.dependencies;
inherit (py.pkgs) gunicorn;
tests = {
netbox = nixosTests.netbox_4_6;
inherit (nixosTests) netbox-upgrade;
};
updateScript = nix-update-script { };
plugins = lib.recurseIntoAttrs (
lib.makeExtensible (
self:
lib.packagesFromDirectoryRecursive {
inherit (py.pkgs) callPackage;
directory = ./plugins;
}
)
);
};
meta = {
homepage = "https://github.com/netbox-community/netbox";
changelog = "https://github.com/netbox-community/netbox/blob/${finalAttrs.src.tag}/docs/release-notes/version-${lib.versions.majorMinor finalAttrs.version}.md";
description = "IP address management (IPAM) and data center infrastructure management (DCIM) tool";
mainProgram = "netbox";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [
minijackson
transcaffeine
];
};
})

View File

@@ -0,0 +1,51 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
python,
netbox,
django,
netaddr,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-attachments";
version = "11.2.3";
pyproject = true;
disabled = python.pythonVersion != netbox.python.pythonVersion;
src = fetchFromGitHub {
owner = "Kani999";
repo = "netbox-attachments";
tag = "v${finalAttrs.version}";
hash = "sha256-zuRwUKYywiyIm7qvOUmbxYfct+ZR+GmaQ4oxf3gMVY4=";
};
build-system = [ setuptools ];
nativeCheckInputs = [
netbox
django
netaddr
];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
pythonImportsCheck = [ "netbox_attachments" ];
passthru.pluginName = "netbox_attachments";
meta = {
description = "Plugin to manage attachments for any model";
homepage = "https://github.com/Kani999/netbox-attachments";
changelog = "https://github.com/Kani999/netbox-attachments/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-bgp";
version = "0.19.0";
pyproject = true;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox-bgp";
tag = "v${finalAttrs.version}";
hash = "sha256-6LZLsUPC9L9L19KeXJilJvmZYcl6YwqysGO8nFAUmcI=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_bgp" ];
passthru.pluginName = "netbox_bgp";
meta = {
description = "NetBox plugin for BGP related objects documentation";
homepage = "https://github.com/netbox-community/netbox-bgp";
changelog = "https://github.com/netbox-community/netbox-bgp/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,52 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
netbox-napalm-plugin,
pydriller,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-config-backup";
version = "2.2.2";
pyproject = true;
src = fetchFromGitHub {
owner = "DanSheps";
repo = "netbox-config-backup";
tag = "v${finalAttrs.version}";
hash = "sha256-PT7/RCpB7SAinQ8McQV59b9ouqqUSoEqEj0ultL37cs=";
};
build-system = [ setuptools ];
pythonRemoveDeps = [ "uuid" ]; # python builtin
dependencies = [
netbox-napalm-plugin
pydriller
];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_config_backup" ];
passthru.pluginName = "netbox_config_backup";
meta = {
description = "NetBox plugin for configuration backups using napalm";
homepage = "https://github.com/DanSheps/netbox-config-backup";
changelog = "https://github.com/DanSheps/netbox-config-backup/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,34 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-contextmenus";
version = "1.4.14";
pyproject = true;
src = fetchFromGitHub {
owner = "PieterL75";
repo = "netbox_contextmenus";
tag = "v${finalAttrs.version}";
hash = "sha256-YqyxZaHKXhMLDdBTAAKQsCBBSXikxBgcOvXEfa6f+0Y=";
};
build-system = [ setuptools ];
# pythonImportsCheck fails due to improperly configured django app
passthru.pluginName = "netbox_contextmenus";
meta = {
description = "Netbox plugin to add context buttons to the links, making navigating less clicky";
homepage = "https://github.com/PieterL75/netbox_contextmenus/";
changelog = "https://github.com/PieterL75/netbox_contextmenus/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,57 @@
{
lib,
buildPythonPackage,
python,
fetchFromGitHub,
setuptools,
python-dateutil,
drf-yasg,
netbox,
netaddr,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-contract";
version = "2.4.6";
pyproject = true;
disabled = python.pythonVersion != netbox.python.pythonVersion;
src = fetchFromGitHub {
owner = "mlebreuil";
repo = "netbox-contract";
tag = "v${finalAttrs.version}";
hash = "sha256-e8DYjU2UtlWu044e4b5eJWOA/fXDRKLl5AVtaepG0sg=";
};
build-system = [ setuptools ];
dependencies = [
python-dateutil
drf-yasg
];
# running tests requires initialized django project
nativeCheckInputs = [
netbox
netaddr
];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
pythonImportsCheck = [ "netbox_contract" ];
passthru.pluginName = "netbox_contract";
meta = {
description = "Contract plugin for netbox";
homepage = "https://github.com/mlebreuil/netbox-contract";
changelog = "https://github.com/mlebreuil/netbox-contract/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-custom-objects";
version = "0.6.0";
pyproject = true;
src = fetchFromGitHub {
owner = "netboxlabs";
repo = "netbox-custom-objects";
tag = "v${finalAttrs.version}";
hash = "sha256-HnA2CJL0EOJctQpsu/G+9fULBIa8rrrYNiT0aaDw/rI=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
dontCheckPythonMetadata = true;
pythonImportsCheck = [ "netbox_custom_objects" ];
passthru.pluginName = "netbox_custom_objects";
meta = {
description = "NetBox plugin to create new object types";
homepage = "https://github.com/netboxlabs/netbox-custom-objects";
changelog = "https://github.com/netboxlabs/netbox-custom-objects/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.netboxLimitedUse;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-data-flows";
version = "1.5.3";
pyproject = true;
src = fetchFromGitHub {
owner = "Alef-Burzmali";
repo = "netbox-data-flows";
tag = "v${finalAttrs.version}";
hash = "sha256-LrClGEmei1IHK/mv0MkZQnEzbH4afg46W5miMLM9a0g=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_data_flows" ];
passthru.pluginName = "netbox_data_flows";
meta = {
description = "NetBox plugin to document data flows between systems and applications";
homepage = "https://github.com/Alef-Burzmali/netbox-data-flows";
changelog = "https://github.com/Alef-Burzmali/netbox-data-flows/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,40 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
dnspython,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-plugin-dns";
version = "1.5.10";
pyproject = true;
src = fetchFromGitHub {
owner = "peteeckel";
repo = "netbox-plugin-dns";
tag = finalAttrs.version;
hash = "sha256-wxTW/qiwp+1CXUeCDJnllEW2oCTjlFVUot7JfWPooaw=";
};
build-system = [ setuptools ];
dependencies = [
dnspython
];
# pythonImportsCheck fails due to improperly configured django app
passthru.pluginName = "netbox_dns";
meta = {
description = "Netbox plugin for managing DNS data";
homepage = "https://github.com/peteeckel/netbox-plugin-dns";
changelog = "https://github.com/peteeckel/netbox-plugin-dns/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
drf-extra-fields,
python,
netbox,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-documents";
version = "0.8.5";
pyproject = true;
src = fetchFromGitHub {
owner = "jasonyates";
repo = "netbox-documents";
tag = "v${finalAttrs.version}";
hash = "sha256-hupJ5gbRj/70oslEosob4gT2y2le5vOrq30t3NWl0nQ=";
};
build-system = [ setuptools ];
dependencies = [ drf-extra-fields ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_documents" ];
passthru.pluginName = "netbox_documents";
meta = {
description = "Plugin designed to faciliate the storage of site, circuit, device type and device specific documents within NetBox";
homepage = "https://github.com/jasonyates/netbox-documents";
changelog = "https://github.com/jasonyates/netbox-documents/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,51 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
django,
netaddr,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-floorplan-plugin";
version = "0.9.2";
pyproject = true;
disabled = python.pythonVersion != netbox.python.pythonVersion;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox-floorplan-plugin";
tag = finalAttrs.version;
hash = "sha256-I7cz0IONU+RESCA8C57Yxg5ieheryZ31ed9N9OxSeLA=";
};
build-system = [ setuptools ];
nativeCheckInputs = [
netbox
django
netaddr
];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_floorplan" ];
passthru.pluginName = "netbox_floorplan";
meta = {
description = "Netbox plugin providing floorplan mapping capability for locations and sites";
homepage = "https://github.com/netbox-community/netbox-floorplan-plugin";
changelog = "https://github.com/netbox-community/netbox-floorplan-plugin/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.lgpl3;
maintainers = with lib.maintainers; [ cobalt ];
};
})

View File

@@ -0,0 +1,65 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# dependencies
django,
netaddr,
numpy,
psycopg,
requests,
# tests
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-interface-synchronization";
version = "4.5.8";
pyproject = true;
src = fetchFromGitHub {
owner = "NetTech2001";
repo = "netbox-interface-synchronization";
tag = finalAttrs.version;
hash = "sha256-DZ1xOfHop/rASWbBzVILVqvll94tQM7tRiSXwOo/QQI=";
};
build-system = [ setuptools ];
dependencies = [
django
netaddr
requests
numpy
psycopg # not specified in pyproject.toml, but required at import time
];
# netbox is required for the pythonImportsCheck; plugin does not provide unit tests
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_interface_synchronization" ];
passthru.pluginName = "netbox_interface_synchronization";
meta = {
description = "Netbox plugin to compare and synchronize interfaces between devices and device types";
homepage = "https://github.com/NetTech2001/netbox-interface-synchronization";
changelog = "https://github.com/NetTech2001/netbox-interface-synchronization/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.gpl3Only;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-inventory";
version = "2.6.0";
pyproject = true;
src = fetchFromGitHub {
owner = "ArnesSI";
repo = "netbox-inventory";
tag = "v${finalAttrs.version}";
hash = "sha256-NTo9WYkjY4BdE3gSkzNKxjHiWVnLQGVZQ5s8e9u3VY0=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_inventory" ];
passthru.pluginName = "netbox_inventory";
meta = {
description = "NetBox plugin to manage hardware inventory";
homepage = "https://github.com/ArnesSI/netbox-inventory";
changelog = "https://github.com/ArnesSI/netbox-inventory/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
django-polymorphic,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-lifecycle";
version = "1.1.9";
pyproject = true;
src = fetchFromGitHub {
owner = "DanSheps";
repo = "netbox-lifecycle";
tag = "v${finalAttrs.version}";
hash = "sha256-iCBlwhaf6IFdni7FQyRPtRJVwt04w0Jc4R0CeQlIWCY=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_lifecycle" ];
dependencies = [ django-polymorphic ];
passthru.pluginName = "netbox_lifecycle";
meta = {
description = "NetBox plugin for managing Hardware EOL/EOS, and Support Contracts";
homepage = "https://github.com/DanSheps/netbox-lifecycle";
changelog = "https://github.com/DanSheps/netbox-lifecycle/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,44 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
hatchling,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-lists";
version = "4.0.4";
pyproject = true;
src = fetchFromGitHub {
owner = "devon-mar";
repo = "netbox-lists";
tag = "v${finalAttrs.version}";
hash = "sha256-RRUuvoeB3xfqlZr1v1zpRdmVZK9av52ZsADOh9s4toQ=";
};
build-system = [ hatchling ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_lists" ];
passthru.pluginName = "netbox_lists";
meta = {
description = "NetBox plugin to generate IP and prefix lists. Integrates with Ansible, Terraform, Prometheus, Oxidized and more";
homepage = "https://github.com/devon-mar/netbox-lists";
changelog = "https://github.com/devon-mar/netbox-lists/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,52 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
napalm,
django,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-napalm-plugin";
version = "0.3.5";
pyproject = true;
disabled = python.pythonVersion != netbox.python.pythonVersion;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox-napalm-plugin";
tag = "v${finalAttrs.version}";
hash = "sha256-dtoiA6gvWL6aGBHmHTwqK8L0qRyA83GcUCGAmg9Xo8w=";
};
build-system = [ setuptools ];
dependencies = [ napalm ];
nativeCheckInputs = [
netbox
django
];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
pythonImportsCheck = [ "netbox_napalm_plugin" ];
passthru.pluginName = "netbox_napalm_plugin";
meta = {
description = "Netbox plugin for Napalm integration";
homepage = "https://github.com/netbox-community/netbox-napalm-plugin";
changelog = "https://github.com/netbox-community/netbox-napalm-plugin/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,55 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
poetry-core,
# dependencies
django,
netaddr,
netbox,
psycopg,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-plugin-prometheus-sd";
version = "2.0.0";
pyproject = true;
src = fetchFromGitHub {
owner = "FlxPeters";
repo = "netbox-plugin-prometheus-sd";
tag = "v${finalAttrs.version}";
hash = "sha256-/TvpRRtyCNPmAuFk+wmcJldDniHEkV1t4Vvwa9Sl5eg=";
};
build-system = [ poetry-core ];
dependencies = [
django
netaddr
psycopg # not specified in pyproject.toml, but required at import time
];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
pythonImportsCheck = [ "netbox_prometheus_sd" ];
passthru.pluginName = "netbox_prometheus_sd";
meta = {
description = "Netbox plugin to provide Netbox entires to Prometheus HTTP service discovery";
homepage = "https://github.com/FlxPeters/netbox-plugin-prometheus-sd";
changelog = "https://github.com/FlxPeters/netbox-plugin-prometheus-sd/releases/tag/v${finalAttrs.version}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ xanderio ];
};
})

View File

@@ -0,0 +1,66 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
# build-system
setuptools,
# dependencies
pillow,
qrcode,
psycopg2,
# nativeCheckInputs
django,
netaddr,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-qrcode";
version = "0.0.21";
pyproject = true;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox-qrcode";
tag = "v${finalAttrs.version}";
hash = "sha256-A4qjpbfTULzS0UchUN9eX8jZmwoX/ej/18L/YAB8dKA=";
};
build-system = [ setuptools ];
dependencies = [
qrcode
pillow
];
nativeCheckInputs = [
django
netaddr
netbox
psycopg2 # not specified in pyproject.toml, but required at import time
];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_qrcode" ];
passthru.pluginName = "netbox_qrcode";
meta = {
description = "Netbox plugin for generate QR codes for objects: Rack, Device, Cable";
homepage = "https://github.com/netbox-community/netbox-qrcode";
changelog = "https://github.com/netbox-community/netbox-qrcode/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,44 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-reorder-rack";
version = "1.1.4";
pyproject = true;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox-reorder-rack";
tag = "v${finalAttrs.version}";
hash = "sha256-lWC+Br66POJe3M8L+Pt5D1pWBr9qSpRLn2TcVMXKje4=";
};
build-system = [
setuptools
];
checkInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_reorder_rack" ];
passthru.pluginName = "netbox_reorder_rack";
meta = {
description = "NetBox plugin to allow users to reorder devices within a rack using a drag and drop UI";
homepage = "https://github.com/netbox-community/netbox-reorder-rack";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ minijackson ];
};
})

View File

@@ -0,0 +1,46 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
django-polymorphic,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-routing";
version = "0.4.3";
pyproject = true;
src = fetchFromGitHub {
owner = "DanSheps";
repo = "netbox-routing";
tag = "v${finalAttrs.version}";
hash = "sha256-3biANhaAi3uRtaXnAw4i6nWnHkARkkBVqyBHLXIMOdA=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_routing" ];
dependencies = [ django-polymorphic ];
passthru.pluginName = "netbox_routing";
meta = {
description = "NetBox plugin for tracking all kinds of routing information";
homepage = "https://github.com/DanSheps/netbox-routing";
changelog = "https://github.com/DanSheps/netbox-routing/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ benley ];
};
})

View File

@@ -0,0 +1,47 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
pycryptodome,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-secrets";
version = "3.1.1";
pyproject = true;
src = fetchFromGitHub {
owner = "Onemind-Services-LLC";
repo = "netbox-secrets";
tag = "v${finalAttrs.version}";
hash = "sha256-XB4upeu2C2ok0jmLX47tOjrjV4b/WXCpgtlRz9+MgAs=";
};
build-system = [ setuptools ];
dependencies = [ pycryptodome ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_secrets" ];
passthru.pluginName = "netbox_secrets";
meta = {
description = "NetBox plugin to enhance secret management with encrypted storage and flexible, user-friendly features";
homepage = "https://github.com/Onemind-Services-LLC/netbox-secrets";
changelog = "https://github.com/Onemind-Services-LLC/netbox-secrets/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,43 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-security";
version = "1.5.10";
pyproject = true;
src = fetchFromGitHub {
owner = "andy-shady-org";
repo = "netbox-security";
tag = "v${finalAttrs.version}";
hash = "sha256-DOutzFIF/ey2o9M3sb15rmbGJyzsTXfiwC5Rqks8vxc=";
};
build-system = [ setuptools ];
nativeCheckInputs = [ netbox ];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_security" ];
passthru.pluginName = "netbox_security";
meta = {
description = "NetBox plugin covering various security and NAT related models";
homepage = "https://github.com/andy-shady-org/netbox-security";
changelog = "https://github.com/andy-shady-org/netbox-security/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -0,0 +1,52 @@
{
lib,
buildPythonPackage,
fetchFromGitHub,
setuptools,
netbox,
django,
netaddr,
python,
}:
buildPythonPackage (finalAttrs: {
__structuredAttrs = true;
pname = "netbox-topology-views";
version = "4.5.1";
pyproject = true;
disabled = python.pythonVersion != netbox.python.pythonVersion;
src = fetchFromGitHub {
owner = "netbox-community";
repo = "netbox-topology-views";
tag = "v${finalAttrs.version}";
hash = "sha256-uKxIu8IPeEwBdRbtQaLWGwLnxvFyJ5FrScsU/ufyTuM=";
};
build-system = [ setuptools ];
nativeCheckInputs = [
netbox
django
netaddr
];
preFixup = ''
export PYTHONPATH=${netbox}/opt/netbox/netbox:$PYTHONPATH
'';
dontUsePythonImportsCheck = python.pythonVersion != netbox.python.pythonVersion;
pythonImportsCheck = [ "netbox_topology_views" ];
passthru.pluginName = "netbox_topology_views";
meta = {
description = "Netbox plugin for generate topology views/maps from your devices";
homepage = "https://github.com/netbox-community/netbox-topology-views";
changelog = "https://github.com/netbox-community/netbox-topology-views/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.asl20;
platforms = lib.platforms.linux;
maintainers = with lib.maintainers; [ felbinger ];
};
})

View File

@@ -6,13 +6,13 @@
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "nuclei-templates";
version = "10.4.7";
version = "10.4.8";
src = fetchFromGitHub {
owner = "projectdiscovery";
repo = "nuclei-templates";
tag = "v${finalAttrs.version}";
hash = "sha256-Jaa5q6I8v3BpLaBzjLhNHCUd4wB3RRNfFoUe9BArh9o=";
hash = "sha256-9PkgU7k+Xy9Bj7pfKjgrIpHLoso0yV8vqPbScVIYUJ0=";
};
installPhase = ''

View File

@@ -7,16 +7,16 @@
buildGoModule rec {
pname = "oauth2-proxy";
version = "7.15.3";
version = "7.15.4";
src = fetchFromGitHub {
repo = "oauth2-proxy";
owner = "oauth2-proxy";
sha256 = "sha256-HpWmIOqyE3L0JYAQh+bd30Gr2dDpTGH8DwFJo5XwflY=";
sha256 = "sha256-G1luz0CjcAGMCFBzMQMA18mPh02lwQMV4CwSWDCq1gA=";
rev = "v${version}";
};
vendorHash = "sha256-o4JWhqLbfHmlIY1XhaupIhYLfXJNguFueH+SpAe9xaw=";
vendorHash = "sha256-N8S+l9Jwik3lrsAQGXNVbw6UkfmRoVovRQCWn7/X2mg=";
# Taken from https://github.com/oauth2-proxy/oauth2-proxy/blob/master/Makefile
ldflags = [ "-X github.com/oauth2-proxy/oauth2-proxy/v7/pkg/version.VERSION=v${version}" ];

View File

@@ -20,7 +20,7 @@
}:
stdenv.mkDerivation (finalAttrs: {
pname = "otpclient";
version = "5.1.7";
version = "5.1.8";
strictDeps = true;
__structuredAttrs = true;
@@ -29,7 +29,7 @@ stdenv.mkDerivation (finalAttrs: {
owner = "paolostivanin";
repo = "otpclient";
tag = "v${finalAttrs.version}";
hash = "sha256-UDEsCdkIRAAtGCuXXJdse6HrIl2wiaapKUvcI0GDGWM=";
hash = "sha256-8I74ip2ysPa5ll1R1O9kgZEwR2wMW6oAzcE3g1SMwvA=";
};
nativeBuildInputs = [

View File

@@ -0,0 +1,60 @@
{
lib,
cargo,
fetchFromGitHub,
nix-update-script,
openssl,
pkg-config,
python3Packages,
rustc,
rustPlatform,
versionCheckHook,
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "pyscan";
version = "0.1.4";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "ohaswin";
repo = "pyscan";
tag = "v${finalAttrs.version}";
hash = "sha256-n1mwOYntWyW7lPKPLgG7PteTRh3mly5vqbKy2R/9xnw=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-QzFUoHfvjd6ZMkKIsGXIVyks2LxdJblIiQccsOoYcJs=";
};
build-system = [
cargo
pkg-config
rustPlatform.cargoSetupHook
rustPlatform.maturinBuildHook
rustc
];
buildInputs = [ openssl ];
nativeInstallCheckInputs = [ versionCheckHook ];
# Project has no test
doCheck = false;
doInstallCheck = true;
passthru.updateScript = nix-update-script { };
meta = {
description = "Python dependency vulnerability scanner";
homepage = "https://github.com/ohaswin/pyscan";
changelog = "https://github.com/ohaswin/pyscan/blob/${finalAttrs.src.rev}/CHANGELOG.md";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "pyscan";
};
})

View File

@@ -1,82 +0,0 @@
{
lib,
stdenvNoCC,
fetchurl,
writeShellApplication,
cacert,
curl,
openssl,
undmg,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "raycast-beta";
version = "0.71.5.0";
__structuredAttrs = true;
strictDeps = true;
src =
{
aarch64-darwin = fetchurl {
name = "Raycast_Beta.dmg";
url = "https://x-r2.raycast-releases.com/Raycast_Beta_0.71.5.0_7520eff523_arm64.dmg";
hash = "sha256-KveiWuyeNuMGwDAeyPMqUxMzFTei23NnEOBVL5HKXMk=";
};
}
.${stdenvNoCC.system} or (throw "raycast-beta: ${stdenvNoCC.system} is unsupported.");
dontPatch = true;
dontConfigure = true;
dontBuild = true;
dontFixup = true;
nativeBuildInputs = [ undmg ];
sourceRoot = "Raycast Beta.app";
installPhase = ''
runHook preInstall
mkdir -p "$out/Applications/Raycast Beta.app"
cp -R . "$out/Applications/Raycast Beta.app"
mkdir -p "$out/bin"
ln -s "$out/Applications/Raycast Beta.app/Contents/MacOS/Raycast Beta" "$out/bin/raycast-beta"
runHook postInstall
'';
passthru.updateScript = lib.getExe (writeShellApplication {
name = "raycast-beta-update-script";
runtimeInputs = [
cacert
curl
openssl
];
text = ''
url=$(curl --silent "https://www.raycast.com/new" | grep -o 'https://x-r2\.raycast-releases\.com/Raycast_Beta_[^"]*_arm64\.dmg' | head -n1)
version=$(echo "$url" | sed -E 's|.*/Raycast_Beta_([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)_[^/]+_arm64\.dmg|\1|')
hash="sha256-$(curl -sL "$url" | openssl dgst -sha256 -binary | openssl base64)"
sed -i -E \
-e 's|(version = )"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+";|\1"'"$version"'";|' \
-e 's|url = "https://x-r2\.raycast-releases\.com/Raycast_Beta_[^"]*_arm64\.dmg";|url = "'"$url"'";|' \
-e 's|(hash = )"sha256-[A-Za-z0-9+/]+=";|\1"'"$hash"'";|' \
./pkgs/by-name/ra/raycast-beta/package.nix
'';
});
meta = {
description = "Control your tools with a few keystrokes - beta release";
homepage = "https://raycast.app/new";
changelog = "https://www.raycast.com/changelog/macos-beta";
license = lib.licenses.unfree;
mainProgram = "raycast-beta";
maintainers = with lib.maintainers; [
_4evy
Br1ght0ne
];
platforms = [ "aarch64-darwin" ];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})

View File

@@ -5,19 +5,21 @@
writeShellApplication,
cacert,
curl,
jq,
openssl,
undmg,
}:
stdenvNoCC.mkDerivation (finalAttrs: {
stdenvNoCC.mkDerivation {
pname = "raycast";
version = "1.104.24";
version = "2.0.5.0";
__structuredAttrs = true;
strictDeps = true;
src = fetchurl {
name = "Raycast.dmg";
url = "https://releases.raycast.com/releases/${finalAttrs.version}/download?build=arm";
hash = "sha256-kn9bZYSeASKj23NYiWX76OIRXCTonAbUCATyYhPdGgo=";
url = "https://x-r2.raycast-releases.com/Raycast_2.0.5.0_7ecbc62a97_arm64.dmg";
hash = "sha256-8/EJVGTfTVqN+4U9vT84TLpo137RWnD2YtFTtYK7tH0=";
};
dontPatch = true;
@@ -32,8 +34,10 @@ stdenvNoCC.mkDerivation (finalAttrs: {
installPhase = ''
runHook preInstall
mkdir -p $out/Applications/Raycast.app
cp -R . $out/Applications/Raycast.app
mkdir -p "$out/Applications/Raycast.app"
cp -R . "$out/Applications/Raycast.app"
mkdir -p "$out/bin"
ln -s "$out/Applications/Raycast.app/Contents/MacOS/Raycast" "$out/bin/raycast"
runHook postInstall
'';
@@ -43,19 +47,20 @@ stdenvNoCC.mkDerivation (finalAttrs: {
runtimeInputs = [
cacert
curl
jq
openssl
];
text = ''
url=$(curl --silent "https://releases.raycast.com/releases/latest?build=universal")
version=$(echo "$url" | jq -r '.version')
arm_url="https://releases.raycast.com/releases/$version/download?build=arm"
arm_hash="sha256-$(curl -sL "$arm_url" | openssl dgst -sha256 -binary | openssl base64)"
download_url="https://x.raycast-releases.com/download?platform=macos&architecture=arm64"
url=$(curl --fail --silent --show-error --head --output /dev/null --write-out '%{redirect_url}' "$download_url")
filename="''${url##*/}"
version="''${filename#Raycast_}"
version="''${version%%_*}"
hash="sha256-$(curl --fail --silent --show-error --location "$url" | openssl dgst -sha256 -binary | openssl base64)"
sed -i -E \
-e 's|(version = )"[0-9]+\.[0-9]+\.[0-9]+";|\1"'"$version"'";|' \
-e '/src = fetchurl/,/};/ s|(hash = )"sha256-[A-Za-z0-9+/]+=";|\1"'"$arm_hash"'";|' \
-e 's|(version = )"[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+";|\1"'"$version"'";|' \
-e 's|url = "https://x-r2\.raycast-releases\.com/Raycast_[^"]*_arm64\.dmg";|url = "'"$url"'";|' \
-e 's|(hash = )"sha256-[A-Za-z0-9+/]+=";|\1"'"$hash"'";|' \
./pkgs/by-name/ra/raycast/package.nix
'';
});
@@ -64,6 +69,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
description = "Control your tools with a few keystrokes";
homepage = "https://raycast.app/";
license = lib.licenses.unfree;
mainProgram = "raycast";
maintainers = with lib.maintainers; [
lovesegfault
stepbrobd
@@ -75,4 +81,4 @@ stdenvNoCC.mkDerivation (finalAttrs: {
];
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
};
})
}

View File

@@ -16,18 +16,18 @@
rustPlatform.buildRustPackage rec {
pname = "spade";
version = "0.19.0";
version = "0.20.0";
src = fetchFromGitLab {
owner = "spade-lang";
repo = "spade";
rev = "v${version}";
hash = "sha256-HSRttrf4Dsl9iatqVr9YH4MoKPwe9XJWJYqNRchFLY0=";
hash = "sha256-POMt+uTSaP+XADFbAwWLxzm6FZiyoMIrDFfTtBMPIgs=";
# only needed for vatch, which contains test data
fetchSubmodules = true;
};
cargoHash = "sha256-koMnkwgQtVMvxlslvC5dZAhr3K/66XWyp5UPW7yZtio=";
cargoHash = "sha256-j/h9UzcsojELd/bYX6/w54PwuqMViEAOKE9tsmQOhXY=";
# TODO: somehow respect https://nixos.org/manual/nixpkgs/stable/#var-passthru-updateScript-commit
passthru.updateScript = _experimental-update-script-combinators.sequence [

View File

@@ -10,16 +10,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "squawk";
version = "2.62.0";
version = "2.63.0";
src = fetchFromGitHub {
owner = "sbdchd";
repo = "squawk";
tag = "v${finalAttrs.version}";
hash = "sha256-XazgQu5Ot1Vknn+tN9qWLfNlRefoA6yXerjrF0H/Mso=";
hash = "sha256-9ZcidQphREqvIw+AiToSCybFNuWic7zFTmOvNI+zpgQ=";
};
cargoHash = "sha256-Z8VNk8ZN0e7UOOTNAz0p8bt5a3F9g4IGi7l7t7+rZ/Q=";
cargoHash = "sha256-wHf4TDVFkd0vt60BiF0qh56j/kSkryaLfvyAy3XlQt0=";
nativeBuildInputs = [
pkg-config

View File

@@ -39,13 +39,13 @@ stdenv.mkDerivation {
pname = binName;
# versions are specified in `squeezelite.h`
# see https://github.com/ralph-irving/squeezelite/issues/29
version = "2.0.0.1586";
version = "2.0.0.1595";
src = fetchFromGitHub {
owner = "ralph-irving";
repo = "squeezelite";
rev = "de709765072a1ef270f63956370c5b25a1ea1159";
hash = "sha256-sAjZ0o6sRh8+oFRDlG2YRDS3qzCL6bzybwZkkWPG2Kw=";
rev = "c7c4248ddd70e47dbfeba0bf4a8a7ec08d8a995c";
hash = "sha256-XCYlD0NliyM+CQCB7SA2LA+XqBvmhgKIW/hVAWVLFCo=";
};
buildInputs = [

View File

@@ -7,16 +7,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "stash-clipboard";
version = "0.4.0";
version = "0.5.0";
src = fetchFromGitHub {
owner = "NotAShelf";
repo = "stash";
tag = "v${finalAttrs.version}";
hash = "sha256-L5UfPKzdU8qQIyXSCMglLhv22J7xInxg3NNKCLkxszM=";
hash = "sha256-G31RXNllgbC5SqRMVj5L9/hCpsKuK/s4Byq+TT8a7X4=";
};
cargoHash = "sha256-iXL3G1H8tNS1oPAoEvvx7qwWUef95NBU3dwlEe+34zw=";
cargoHash = "sha256-biKZ2qIAiNuvEuI8cJV2zuRXusuUlkd8MKq/M9J+FJs=";
__structuredAttrs = true;

View File

@@ -10,16 +10,16 @@
rustPlatform.buildRustPackage rec {
pname = "swim";
version = "0.19.0";
version = "0.20.0";
src = fetchFromGitLab {
owner = "spade-lang";
repo = "swim";
rev = "v${version}";
hash = "sha256-5/yIucyErZpY5iN/6r8JNAfsrYPxh+lBHDBD6cnjbHQ=";
hash = "sha256-pd/ej6WCS36gHlzkHM+pSyV2e87jIAk/kR8OU+nmrDk=";
};
cargoHash = "sha256-+znzedDuB7hMzaRtAvLNUC9gG0Q2R8Fn61D64udAyAM=";
cargoHash = "sha256-7yQytwWDmb58aQzVb4EJZ1e7212qfaPXUhvO6fzbg/M=";
nativeBuildInputs = [ pkg-config ];

View File

@@ -6,16 +6,16 @@
buildNpmPackage rec {
pname = "terser";
version = "5.49.2";
version = "5.50.0";
src = fetchFromGitHub {
owner = "terser";
repo = "terser";
rev = "v${version}";
hash = "sha256-leC95D+bBI9CvPlenOr/2+3LkL9HgK3iCu3FNxBUaOk=";
hash = "sha256-7odcHOVjrj73suP0Uz8kcchvHqQxu0RVY0KwEQ73Tsw=";
};
npmDepsHash = "sha256-wkvMDyWiPtQXaLDkPUCcVTQJXZ30QqPHdQXzMXrtHkY=";
npmDepsHash = "sha256-d0J7DPZaxn4ILMJ7rwf2MAVVCL2GI6/GLxkX78smUsU=";
meta = {
description = "JavaScript parser, mangler and compressor toolkit for ES6+";

View File

@@ -9,17 +9,17 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "tetro-tui";
version = "3.6.1";
version = "3.6.2";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "Strophox";
repo = "tetro-tui";
tag = "v${finalAttrs.version}";
hash = "sha256-i/d+i6E0ClMAAjC6zB9Lt26LYEcjvR01MCzGne2EXNQ=";
hash = "sha256-tlZYvk9PrdkuN8m+tu/sPrG88k9L58T/QDk2fLZmM34=";
};
cargoHash = "sha256-LTHokF9T7nRvvzfQWSL9igTHmvV+w40Pm4z/i0y7goA=";
cargoHash = "sha256-AF5aerbBhBJ8Ommrq27GjSeGE/smTvVdEoXS1XLktRE=";
nativeBuildInputs = [
copyDesktopItems

View File

@@ -2300,9 +2300,13 @@
};
regex = {
version = "1.0.0";
# Note: if you see an attempt to update tree-sitter-regex to version 1.0.0,
# check if https://github.com/tree-sitter/tree-sitter-regex/tags is actually
# a recent version. After v1.0.0, tree-sitter-regex confusingly released
# v0.20.0, v0.21.0, etc.
version = "0.25.0";
url = "github:tree-sitter/tree-sitter-regex";
hash = "sha256-3D+LOWRUamAdbegVfWD5yFcCjBucthPogOL/zWR78PY=";
hash = "sha256-bR0K6SR19QuQwDUic+CJ69VQTSGqry5a5IOpPTVJFlo=";
meta = {
license = lib.licenses.mit;
};

View File

@@ -9,16 +9,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "versatiles";
version = "4.7.0";
version = "4.9.1";
src = fetchFromGitHub {
owner = "versatiles-org";
repo = "versatiles-rs";
tag = "v${finalAttrs.version}";
hash = "sha256-WgC5KO6Uz0FQt4Fh08FhZh1RMfDA32Bq70pfMGoDvxU=";
hash = "sha256-WPn96f9wN1p0uDtWzOQVx5fqBwKM1l93dVwNSReBkwc=";
};
cargoHash = "sha256-HzTpvnuODTl+fTgYFdbkerquWjjrFw440+pJDGzRnFk=";
cargoHash = "sha256-WFUIIjb+bXq/Sz7tTI2Z5Fyqrnjac0F3fVNTxCQeUT0=";
nativeBuildInputs = [
pkg-config

View File

@@ -29,14 +29,14 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "wezterm";
version = "0-unstable-2026-08-12";
version = "0-unstable-2026-08-23";
src = fetchFromGitHub {
owner = "wezterm";
repo = "wezterm";
rev = "fe3006aefcdc4c22924e7bce966b2c430dade4f1";
rev = "f93d90350075d3e42566e0557ca36e82ffdcbec1";
fetchSubmodules = true;
hash = "sha256-aPMO7QeefsZMbb+w+DJMAFWfJV+usGROKhqEXkwndPE=";
hash = "sha256-er8IRmDZ65Axr+9qKDrqba6Qbj9MVdiBEH52xmp2ZHo=";
};
postPatch = ''
@@ -59,7 +59,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
# https://github.com/wezterm/wezterm/blob/main/nix/flake.nix#L134
auditable = false;
cargoHash = "sha256-4jm0uMj0/6fcLHSvd7y12h1QjQ/VavkmNc5L/ebQez0=";
cargoHash = "sha256-R47aufhkCuHDSKSV8A7n3eGz0S3s0/HP2Sw0keaEX5s=";
nativeBuildInputs = [
installShellFiles

View File

@@ -13,16 +13,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "wl-screenrec";
version = "0.2.0";
version = "0.3.2";
src = fetchFromGitHub {
owner = "russelltg";
repo = "wl-screenrec";
tag = "v${finalAttrs.version}";
hash = "sha256-sLuhVeyzFp6sFKGK7Y7DPAPk7IdFAqAtjm56zhrX3fA=";
hash = "sha256-x311y/0wRBXvpmVNRh6/TbLgHYvl1y589PNRjW2NCJc=";
};
cargoHash = "sha256-atfWEAo6tMLEzFtiLlxp8fyVKa1cF/4SZFMYStDYZwU=";
cargoHash = "sha256-3/yVWVNLu03PhgJTwyeatSVY3cvGtWhwEwpvPdBGnKs=";
nativeBuildInputs = [
pkg-config

View File

@@ -0,0 +1,89 @@
{
lib,
stdenv,
python3Packages,
fetchFromGitHub,
nix-update-script,
geckodriver,
curl,
versionCheckHook,
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "xsser";
version = "1.9";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "epsylon";
repo = "xsser";
tag = "xsser-v${finalAttrs.version}";
hash = "sha256-wq8BGeBxDW/ux1X5seUTb6bGdKUTBgkRVeqkm3sVLPU=";
};
postPatch = ''
substituteInPlace core/curlcontrol.py \
--replace-fail 'open("core/fuzzing/user-agents.txt")' 'open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))' \
--replace-fail 'open("fuzzing/user-agents.txt")' 'open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))'
substituteInPlace core/dork.py \
--replace-fail 'import urllib.request, urllib.error, urllib.parse, traceback, re, random, time, ssl, base64, warnings' 'import os, urllib.request, urllib.error, urllib.parse, traceback, re, random, time, ssl, base64, warnings' \
--replace-fail 'open("core/fuzzing/user-agents.txt")' 'open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))' \
--replace-fail 'open("fuzzing/user-agents.txt")' 'open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))'
substituteInPlace core/main.py \
--replace-fail 'open("core/fuzzing/user-agents.txt")' 'open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))' \
--replace-fail 'open("fuzzing/user-agents.txt")' 'open(os.path.join(os.path.dirname(__file__), "fuzzing", "user-agents.txt"))' \
--replace-fail "open('core/fuzzing/dorks.txt')" "open(os.path.join(os.path.dirname(__file__), 'fuzzing', 'dorks.txt'))" \
--replace-fail "os.path.exists('core/fuzzing/dorks.txt')" "os.path.exists(os.path.join(os.path.dirname(__file__), 'fuzzing', 'dorks.txt'))"
'';
postInstall = ''
install -Dm644 core/fuzzing/user-agents.txt "$out/${python3Packages.python.sitePackages}/core/fuzzing/user-agents.txt"
install -Dm644 core/fuzzing/dorks.txt "$out/${python3Packages.python.sitePackages}/core/fuzzing/dorks.txt"
'';
build-system = with python3Packages; [ setuptools ];
dependencies =
with python3Packages;
[
beautifulsoup4
ddgs
fpdf2
geoip
pygobject3
pycurl
selenium
]
++ [ geckodriver ];
nativeCheckInputs = with python3Packages; [ pytestCheckHook ] ++ [ curl ];
nativeInstallCheckInputs = [ versionCheckHook ];
doInstallCheck = true;
preFixup = ''
makeWrapperArgs+=(--prefix PATH : ${
lib.makeBinPath [
geckodriver
curl
]
})
'';
passthru.updateScript = nix-update-script { };
meta = {
description = "Automatic framework to detect, exploit and report XSS vulnerabilities in web-based applications";
homepage = "https://github.com/epsylon/xsser";
changelog = "https://github.com/epsylon/xsser/releases/tag/${finalAttrs.src.tag}";
license = lib.licenses.gpl3Only;
maintainers = with lib.maintainers; [ fab ];
mainProgram = "xsser";
broken = stdenv.hostPlatform.isDarwin;
};
})

View File

@@ -13,13 +13,13 @@
buildTopkgPackage rec {
pname = "jsont";
version = "0.2.0";
version = "0.3.0";
minimalOCamlVersion = "4.14.0";
src = fetchzip {
url = "https://erratique.ch/software/jsont/releases/jsont-${version}.tbz";
hash = "sha256-dXHl+bLuIrlrQ5Np37+uVuETFBb3j8XeDVEK9izoQFk=";
hash = "sha256-Gojblihb+So/0KpQHbIWuE33Ir2a4w5DdY+F3S9+qBk=";
};
buildInputs = lib.optional withCmdliner cmdliner;

View File

@@ -0,0 +1,44 @@
From 7dcb837f5f953206eead3d28144c3d0e2af85c2c Mon Sep 17 00:00:00 2001
From: Ihar Hrachyshka <ihar.hrachyshka@gmail.com>
Date: Mon, 20 Jul 2026 22:48:38 -0400
Subject: [PATCH] Select PKCS#1 padding for XML signatures
The rsa-sha* XML Signature algorithms require RSASSA-PKCS1-v1_5.
Select that padding explicitly instead of relying on the RSA module's
signing default, which is PSS in recent releases.
Require Crypt::OpenSSL::RSA 0.38, the first release whose signing path
honors the explicit padding choice.
Assisted-by: Codex
---
cpanfile | 2 +-
lib/Mojo/XMLSig.pm | 1 +
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/cpanfile b/cpanfile
index 6c56caf..149f4a6 100644
--- a/cpanfile
+++ b/cpanfile
@@ -1,5 +1,5 @@
requires 'Mojolicious', '7.78'; # tag_to_html
-requires 'Crypt::OpenSSL::RSA';
+requires 'Crypt::OpenSSL::RSA', '0.38';
requires 'Crypt::OpenSSL::X509';
requires 'Data::GUID';
requires 'Digest::SHA';
diff --git a/lib/Mojo/XMLSig.pm b/lib/Mojo/XMLSig.pm
index 3ee9db3..2498bbe 100644
--- a/lib/Mojo/XMLSig.pm
+++ b/lib/Mojo/XMLSig.pm
@@ -91,6 +91,7 @@ my $set_algo = sub {
unless $key->$isa('Crypt::OpenSSL::RSA');
Carp::croak 'Unsupported RSA algorithm'
unless my $method = $key->can("use_${algo}_hash");
+ $key->use_pkcs1_padding;
$key->$method;
return $key;
};
--
2.54.0

View File

@@ -30,7 +30,11 @@ buildPythonPackage rec {
owner = "ansible";
repo = "ansible-compat";
tag = "v${version}";
hash = "sha256-QTn1W+XxiK5ZCkUfYJZrI/mk0gFduTWClIH3ztHcerg=";
postFetch = ''
# export-subst prevents reproducibility
rm $out/.git_archival.txt
'';
hash = "sha256-12t/iLtha5FACVpXFqrz6vIiVmtHPPqdfHogXuAe2F4=";
};
build-system = [

View File

@@ -26,7 +26,7 @@ buildPythonPackage rec {
owner = "TheKevJames";
repo = "coveralls-python";
tag = version;
hash = "sha256-c7YV1SAbxmqfVI/wGtfdr+S4T7G2q7tf0FhuyCJaPDg=";
hash = "sha256-sr3pR3t21nMZczwugFNAioSry/RxIWAzGdGG070YXGw=";
};
build-system = [ poetry-core ];

View File

@@ -8,13 +8,13 @@
buildPythonPackage rec {
pname = "django-leaflet";
version = "0.33.0";
version = "0.34.0";
pyproject = true;
src = fetchPypi {
pname = "django_leaflet";
inherit version;
hash = "sha256-tRxx5xee7ZlhSE39V7h70ezjsf977k37f01XAiBrLso=";
hash = "sha256-gzbnKnu/8LNjBUmC8CrB16O8srL6S8oyYBTd3q63xRU=";
};
build-system = [ setuptools ];

View File

@@ -27,14 +27,14 @@
buildPythonPackage rec {
pname = "django-silk";
version = "5.5.1";
version = "5.5.2";
format = "setuptools";
src = fetchFromGitHub {
owner = "jazzband";
repo = "django-silk";
tag = version;
hash = "sha256-Ee0U8PVdyXppqLAbQF3V01VIxn6q94eDp+6GvqbeD5g=";
hash = "sha256-1m6HvwN9n35q9p0LUD8ihbbQ5FRRr8KoDvRLed9RIMQ=";
};
# "test_time_taken" tests aren't suitable for reproducible execution, but Django's

View File

@@ -17,6 +17,7 @@ buildPythonPackage rec {
pname = "fabric";
version = "3.2.3";
pyproject = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "fabric";

View File

@@ -14,14 +14,14 @@
buildPythonPackage (finalAttrs: {
pname = "gradient";
version = "3.12.1";
version = "3.12.2";
pyproject = true;
src = fetchFromGitHub {
owner = "digitalocean";
repo = "gradient-python";
rev = "v${finalAttrs.version}";
hash = "sha256-4BJMUxNryePXIAG92JOX7pTbDN6FQzmYRu1+2bKEwX0=";
hash = "sha256-2blzsP8KJfCbqBmoaWgQRCmiR5Dj3ofbd65fJqQpfAI=";
};
postPatch = ''

View File

@@ -8,14 +8,14 @@
buildPythonPackage (finalAttrs: {
pname = "iamdata";
version = "0.1.202608231";
version = "0.1.202608241";
pyproject = true;
src = fetchFromGitHub {
owner = "cloud-copilot";
repo = "iam-data-python";
tag = "v${finalAttrs.version}";
hash = "sha256-R92NYZ1Wco/vMdI31Hw7pUpJ7GDAv13pd0pQIrVTIJ8=";
hash = "sha256-IBVOk3VLGpn4xKbmbDPj70qM3H/KuKT9X52e4HVsNtQ=";
};
__darwinAllowLocalNetworking = true;

View File

@@ -3,7 +3,6 @@
stdenv,
buildPythonPackage,
fetchFromGitHub,
fetchpatch,
pkg-config,
cython,
docutils,
@@ -23,33 +22,24 @@
filetype,
}:
buildPythonPackage rec {
buildPythonPackage (finalAttrs: {
pname = "kivy";
version = "2.3.1";
version = "2.3.1-unstable-2026-07-11";
pyproject = true;
src = fetchFromGitHub {
owner = "kivy";
repo = "kivy";
tag = version;
hash = "sha256-q8BoF/pUTW2GMKBhNsqWDBto5+nASanWifS9AcNRc8Q=";
rev = "d8e642fec15894ce338b0c9773c3f58b41b75f09";
hash = "sha256-i+4qsCIWOddfkw4fseHyTZRj29cdPX84uaPMORE6Gp4=";
};
patches = [
# Fix compat with newer Cython
(fetchpatch {
name = "0001-kivy-Remove-old-Python-2-long.patch";
url = "https://github.com/kivy/kivy/commit/5a1b27d7d3bdee6cedb55440bfae9c4e66fb3c68.patch";
hash = "sha256-GDNYL8dC1Rh4KJ8oPiIjegOJGzRQ1CsgWQeAvx9+Rc8=";
})
];
postPatch = ''
substituteInPlace pyproject.toml \
--replace-fail "setuptools~=69.2.0" "setuptools" \
--replace-fail "wheel~=0.44.0" "wheel" \
--replace-fail "cython>=0.29.1,<=3.0.11" "cython" \
--replace-fail "packaging~=24.0" packaging
--replace-fail "setuptools~=82.0.0" "setuptools" \
--replace-fail "wheel~=0.47.0" "wheel" \
--replace-fail "cython>=0.29.1,<=3.2.0" "cython" \
--replace-fail "packaging~=26.0" packaging
''
+ lib.optionalString stdenv.hostPlatform.isLinux ''
substituteInPlace kivy/lib/mtdev.py \
@@ -122,10 +112,9 @@ buildPythonPackage rec {
pythonImportsCheck = [ "kivy" ];
meta = {
changelog = "https://github.com/kivy/kivy/releases/tag/${src.tag}";
description = "Library for rapid development of hardware-accelerated multitouch applications";
homepage = "https://github.com/kivy/kivy";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ risson ];
};
}
})

View File

@@ -10,14 +10,14 @@
buildPythonPackage (finalAttrs: {
pname = "liger-kernel";
version = "0.8.1";
version = "0.8.2";
pyproject = true;
src = fetchFromGitHub {
owner = "linkedin";
repo = "liger-kernel";
tag = "v${finalAttrs.version}";
hash = "sha256-HSNhm/NwzjL3XQcKot/Bg1i3zuPEy6aNkWo2ukLL4VY=";
hash = "sha256-cUgVfUe2UxULHiU0OeSJX9KHShRJ5W6fhqmgB+PUD4c=";
};
build-system = [

View File

@@ -9,13 +9,13 @@
buildPythonPackage rec {
pname = "linuxpy";
version = "0.24.0";
version = "0.25.0";
pyproject = true;
src = fetchPypi {
inherit pname version;
sha256 = "sha256-K0RDTSjUklfoWaSDAmeiWqS1Gx0in5X3nQJa5/Gl0w4=";
sha256 = "sha256-eyNCkbq8YXah/iOWJPjhkH/IncX3OXgJNg5Q4FMcd1I=";
};
pythonImportsCheck = [ "linuxpy" ];

View File

@@ -25,13 +25,13 @@
buildPythonPackage (finalAttrs: {
pname = "llama-cloud";
version = "2.14.0";
version = "2.14.1";
pyproject = true;
src = fetchPypi {
pname = "llama_cloud";
inherit (finalAttrs) version;
hash = "sha256-oiLNJIZ8BYtp01z490S7WxmuNEQqQXTYKl8FCU4feIo=";
hash = "sha256-QtnBF5KtSQlyXM/85Y38jkf12cafUXhFSwn7N0gxh5Q=";
};
postPatch = ''

View File

@@ -17,14 +17,14 @@
buildPythonPackage rec {
pname = "nice-go";
version = "1.0.2";
version = "1.0.3";
pyproject = true;
src = fetchFromGitHub {
owner = "IceBotYT";
repo = "nice-go";
tag = version;
hash = "sha256-09Tc2fFXUevQNgJmXyeXy1sBg9Cr9OV/15Feh9tlRug=";
hash = "sha256-KrsAs5aMkrhxv6PtFTm+8e0h2hAD/bc4ADam2jT2oAc=";
};
build-system = [ poetry-core ];

View File

@@ -14,14 +14,14 @@
buildPythonPackage rec {
pname = "pixel-font-builder";
version = "0.0.47";
version = "0.0.55";
pyproject = true;
src = fetchFromGitHub {
owner = "TakWolf";
repo = "pixel-font-builder";
tag = version;
hash = "sha256-a25JKZy5XaBfpeFwH7YnSTY28hQF8dLa/AGEOXHN94I=";
hash = "sha256-WMwmhGspseqTkGUPrMNR16sZBB+n/lvthHX7JTtdlsQ=";
};
build-system = [ uv-build ];

View File

@@ -7,14 +7,14 @@
buildPythonPackage (finalAttrs: {
pname = "python-mpv-jsonipc";
version = "1.2.3";
version = "1.3.0";
pyproject = true;
src = fetchFromGitHub {
owner = "iwalton3";
repo = "python-mpv-jsonipc";
tag = "v${finalAttrs.version}";
hash = "sha256-drXPu355wXznB9oTF2mmjXoByLs1gzUuBxWT6wUFMTA=";
hash = "sha256-i21Pzaidoi2MLb6Le9pA37IRy804MeC0yVV4KONb3mk=";
};
build-system = [ setuptools ];

View File

@@ -9,14 +9,14 @@
buildPythonPackage (finalAttrs: {
pname = "tencentcloud-sdk-python";
version = "3.1.162";
version = "3.1.163";
pyproject = true;
src = fetchFromGitHub {
owner = "TencentCloud";
repo = "tencentcloud-sdk-python";
tag = finalAttrs.version;
hash = "sha256-ap6wIzL2G+Ogbsf53tKgkkYQNRVsUUymlm+A/B7F3Tc=";
hash = "sha256-Y6xQ3UWmpvwZfLerrc2urtA6c0AT1474DI0ZvxGcxzM=";
};
build-system = [ setuptools ];

View File

@@ -18,7 +18,7 @@ in
buildLinux (
args
// rec {
version = "7.1.9";
version = "7.1.10";
pname = "linux-zen";
modDirVersion = lib.versions.pad 3 "${version}-${suffix}";
isZen = true;
@@ -27,7 +27,7 @@ buildLinux (
owner = "zen-kernel";
repo = "zen-kernel";
rev = "v${version}-${suffix}";
sha256 = "0r1c6qpmcdhqdzx27v1wrk6mzwyvwb0ff98bjhf2f1qk9cjk701q";
sha256 = "0c01cnamvl3mdc1rm7pjpcy5s6s9yamfkg413zn7k2xwkjig8b08";
};
# This is based on the following source:

View File

@@ -17,12 +17,17 @@ let
field:
with builtins;
let
matches = match ''^[^#\r\n]*${field}="([a-zA-Z0-9_]+)".*$'' (readFile firmwareConfig);
lines = lib.splitString "\n" (readFile firmwareConfig);
matchLine = line: match ''${field}="?([a-zA-Z0-9_]+)"?.*'' (lib.trim line);
matched = lib.findFirst (line: matchLine line != null) null lines;
in
if matches != null then head matches else null;
if matched != null then head (matchLine matched) else null;
matchPlatform = getConfigField "CONFIG_BOARD_DIRECTORY";
matchBoard = getConfigField "CONFIG_MCU";
matchAvrdudeProtocol = getConfigField "CONFIG_AVRDUDE_PROTOCOL";
matchFlashApplicationAddress = getConfigField "CONFIG_FLASH_APPLICATION_ADDRESS";
# Only stm32's require -s/--start (flash_stm32f4 in scripts/flash_usb.py)
flashStartAddress = if matchPlatform == "stm32" then matchFlashApplicationAddress else null;
flashUsbSupportedBoards = [
"sam3"
"sam4"
@@ -69,7 +74,9 @@ writeShellApplication {
&& matchPlatform != null
then
''
${klipper}/lib/scripts/flash_usb.py -t ${matchBoard} -d ${flashDevice} ${klipper-firmware}/klipper.bin "$@"
${klipper}/lib/scripts/flash_usb.py -t ${matchBoard} -d ${flashDevice}${
lib.optionalString (flashStartAddress != null) " -s ${flashStartAddress}"
} ${klipper-firmware}/klipper.bin "$@"
''
else if matchPlatform == "avr" && matchAvrdudeProtocol != null && matchBoard != null then
''

View File

@@ -2,8 +2,8 @@
grafanaPlugin {
pname = "grafana-clock-panel";
version = "3.2.2";
zipHash = "sha256-VjOg6qJXxhDAl8xYWD9ZZSNqSELMoREuyv+LX5xFOgM=";
version = "3.2.3";
zipHash = "sha256-qNX6LTg+WKjoJIWX7Mc2IRnWVpoZZsiZQzQqR2u1Q10=";
meta = {
description = "Clock panel for Grafana";
license = lib.licenses.mit;

View File

@@ -793,6 +793,7 @@ mapAliases {
expidus = throw "'expidus' has been removed from nixpkgs due to it not being maintained"; # Added 2026-07-28
ext4fuse = throw "'ext4fuse' has been removed as it is unmaintained, and depends on the unmaintained fuse2 library"; # added 2026-08-12
f3d_egl = warnAlias "'f3d' now build with egl support by default, so `f3d_egl` is deprecated, consider using 'f3d' instead." f3d; # Added 2025-07-18
Fabric = fabric; # Added 2026-06-29
fabs = throw "'fabs' has been removed due to being broken for more than a year; see RFC 180"; # Added 2026-02-05
falcon = throw "'falcon' has been removed as it is unmaintained and depends on pcre, which is deprecated"; # Added 2026-06-16
fancontrol-gui = throw "'fancontrol-gui' has been removed due to outdated KF5 dependencies"; # Added 2026-05-01
@@ -2142,6 +2143,7 @@ mapAliases {
rambox-pro = throw "'rambox-pro' has been renamed to/replaced by 'rambox'"; # Converted to throw 2025-10-27
rapidjson-unstable = throw "'rapidjson-unstable' has been renamed to/replaced by 'rapidjson'"; # Converted to throw 2025-10-27
rar2fs = throw "'rar2fs' has been removed as it is unmaintained, and depends on the unmaintained fuse2 library"; # Added 2026-05-19
raycast-beta = throw "'raycast-beta' has been removed because Raycast 2.0 is out of beta. Use 'raycast' instead."; # Added 2026-08-24
react-static = throw "'react-static' has been removed due to lack of maintenance upstream"; # Added 2025-11-04
recurseIntoAttrs = warnAlias "'recurseIntoAttrs' has been removed from pkgs, use `lib.recurseIntoAttrs` instead" lib.recurseIntoAttrs; # Added 2025-10-30
redict = throw "'redict' has been removed due to lack of nixpkgs maintenance and a slow upstream development pace. Consider using 'valkey'."; # Added 2025-10-16

View File

@@ -1978,7 +1978,7 @@ with pkgs;
expect = tcl8Packages.expect_5;
Fabric = with python3Packages; toPythonApplication fabric;
fabric = with python3Packages; toPythonApplication fabric;
flatpak-builder = callPackage ../development/tools/flatpak-builder {
binutils = binutils-unwrapped;
@@ -2513,7 +2513,7 @@ with pkgs;
ioskeley-mono = recurseIntoAttrs (callPackage ../data/fonts/ioskeley-mono { });
# Not in aliases because it wouldn't get picked up by callPackage
netbox = netbox_4_5;
netbox = netbox_4_6;
netboxPlugins = recurseIntoAttrs netbox.plugins;

Some files were not shown because too many files have changed in this diff Show More