Merge bb525e0730 into haskell-updates

This commit is contained in:
nixpkgs-ci[bot]
2026-08-26 00:15:42 +00:00
committed by GitHub
478 changed files with 8682 additions and 3302 deletions

View File

@@ -31,6 +31,7 @@ runCommand "nixpkgs-vet"
env.NIXPKGS_VET_NIX_PACKAGE = nix;
}
''
export NIX_STORE_DIR=$(mktemp -d)
export NIX_STATE_DIR=$(mktemp -d)
$NIXPKGS_VET_NIX_PACKAGE/bin/nix-store --init

View File

@@ -16,11 +16,6 @@
+nixpkgs.url = "https://channels.nixos.org/nixos-26.05/nixexprs.tar.zst";
```
- Emacs has been updated to 31.1.
This introduces some backwardsincompatible changes; see the NEWS for details.
NEWS can be viewed from Emacs by typing `C-h n`, or by clicking `Help->Emacs News` from the menu bar.
It can also be browsed [online](https://cgit.git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-31).
- `sing-box` now supports NaïveProxy outbounds.
## Backward Incompatibilities {#sec-nixpkgs-release-26.11-incompatibilities}
@@ -147,6 +142,8 @@
[pnpm `fetcherVersion` section](#javascript-pnpm-fetcherVersion) of the manual
for details.
- `makeSetupHook` now uses structured attributes and only makes substitutions based on the values of the `substitutions` argument - other derivation attributes are no longer considered.
- `rebuilderd` has been updated to 0.27.0 introducing breaking changes. See upstream changelog for details: [0.26.0](https://github.com/kpcyrd/rebuilderd/releases/tag/v0.26.0), [0.27.0](https://github.com/kpcyrd/rebuilderd/releases/tag/v0.27.0)
- Starting with v14, `flameshot` will primarily utilise xdg-desktop-portal calls for screenshotting. This will directly affect users on X11 window managers due to the lack of a compatible portal with Screenshot feature. See [upstream changelog](https://github.com/flameshot-org/flameshot/releases/tag/v14.0.0) or [NixOS Flameshot](https://wiki.nixos.org/wiki/Flameshot) wiki page for workarounds.

View File

@@ -21702,6 +21702,12 @@
name = "Oops418";
githubId = 93655215;
};
opdavies = {
email = "oliver+github@oliverdavies.uk";
github = "opdavies";
githubId = 339813;
name = "Oliver Davies";
};
opeik = {
email = "sandro@stikic.com";
github = "opeik";
@@ -23084,6 +23090,12 @@
name = "Pradyuman Vig";
keys = [ { fingerprint = "240B 57DE 4271 2480 7CE3 EAC8 4F74 D536 1C4C A31E"; } ];
};
prauscher = {
email = "prauscher@prauscher.de";
github = "prauscher";
githubId = 175521;
name = "Patrick Rauscher";
};
preisschild = {
email = "florian@florianstroeger.com";
github = "Preisschild";
@@ -23432,12 +23444,6 @@
github = "pyle";
githubId = 7279609;
};
pyrotelekinetic = {
name = "Clover Ison";
email = "clover@isons.org";
github = "pyrotelekinetic";
githubId = 29682759;
};
pyrox0 = {
name = "Pyrox";
email = "pyrox@pyrox.dev";
@@ -29386,6 +29392,12 @@
github = "tpwrules";
githubId = 208010;
};
tr3foil = {
name = "Clover Ison";
email = "clover@isons.org";
github = "tr3foil";
githubId = 29682759;
};
transcaffeine = {
name = "transcaffeine";
email = "transcaffeine@finally.coffee";

View File

@@ -54,6 +54,8 @@
- [mail-tlsa-check-exporter](https://github.com/ietf-tools/mail-tlsa-check-exporter), validates SMTP / IMAP server certificates against a TLSA record as a Prometheus exporter. Available as [services.prometheus.exporters.mail-tlsa-check](#opt-services.prometheus.exporters.mail-tlsa-check.enable).
- [snowflake-prometheus-exporter](https://github.com/grafana/snowflake-prometheus-exporter), a Prometheus exporter for Snowflake metrics. Available as [services.prometheus.exporters.snowflake](#opt-services.prometheus.exporters.snowflake.enable).
- [feishin](https://github.com/jeffvli/feishin), a modern self-hosted music player. Available as [services.feishin](#opt-services.feishin.enable).
- [CastSponsorSkip](https://github.com/gabe565/CastSponsorSkip/), skips YouTube sponsorships (and sometimes ads) on all local Google Cast devices.
@@ -110,6 +112,8 @@
- [Rundeck](https://www.rundeck.com), Self-Service Operations [services.rundeck](#opt-services.rundeck.enable).
- [yet-another-cloudwatch-exporter](https://github.com/prometheus-community/yet-another-cloudwatch-exporter), a Prometheus exporter for AWS CloudWatch metrics. Available as [services.prometheus.exporters.yace](#opt-services.prometheus.exporters.yace.enable).
## Backward Incompatibilities {#sec-release-26.11-incompatibilities}
<!-- To avoid merge conflicts, consider adding your item at an arbitrary place in the list instead. -->
@@ -199,6 +203,8 @@
- `services.pfix-srsd` and the supporting `pfixtools` package have been removed, as the project is dormant and does not support pcre2. `services.postsrsd` is the recommended replacement for Sender Rewriting Scheme support with Postfix.
- `services.quake3-server.port` has been removed in favor of the structured [](#opt-services.quake3-server.settings.net_port) option. Use `services.quake3-server.settings.net_port` to set any custom UDP port directly.
- Package `overseerr` has been removed as the `overseerr` and `jellyseerr` projects were merged under `seerr`.
- The papra NixOS module is now hardening the systemd unit by default. If this breaks any of the configured directories, please reconfigure them through `services.papra.environment` to enable sandbox passthrough.

View File

@@ -7,20 +7,15 @@ testModuleArgs@{
...
}:
let
inherit (lib) mkOption types;
inherit (types) either lines functionTo;
inherit (lib) mkOption types const;
inherit (types) coercedTo lines functionTo;
in
{
options = {
testScript = mkOption {
type = either lines (functionTo lines);
apply =
v:
if lib.isFunction v then
# Only pass args the testScript function expects.
args: v (builtins.intersectAttrs (lib.functionArgs v) args)
else
v;
type = coercedTo lines const (functionTo lines);
# Only pass args the testScript function expects.
apply = v: args: v (builtins.intersectAttrs (lib.functionArgs v) args);
description = ''
A series of python declarations and statements that you write to perform
the test.
@@ -50,23 +45,19 @@ in
withoutTestScriptReferences.includeTestScriptReferences = false;
withoutTestScriptReferences.testScript = lib.mkForce "testscript omitted";
testScriptString =
if lib.isFunction config.testScript then
config.testScript {
nodes = lib.mapAttrs (
k: v:
if v.virtualisation.useNixStoreImage then
# prevent infinite recursion when testScript would
# reference v's toplevel
config.withoutTestScriptReferences.nodesCompat.${k}
else
# reuse memoized config
v
) config.nodesCompat;
containers = config.containers;
}
else
config.testScript;
testScriptString = config.testScript {
nodes = lib.mapAttrs (
k: v:
if v.virtualisation.useNixStoreImage then
# prevent infinite recursion when testScript would
# reference v's toplevel
config.withoutTestScriptReferences.nodesCompat.${k}
else
# reuse memoized config
v
) config.nodesCompat;
containers = config.containers;
};
nodeDefaults =
{ config, name, ... }:

View File

@@ -58,7 +58,7 @@ let
example = lib.literalExpression ''
{
"/EFI/BOOT/BOOTX64.EFI".source =
"''${pkgs.systemd}/lib/systemd/boot/efi/systemd-bootx64.efi";
"''${config.systemd.package}/lib/systemd/boot/efi/systemd-bootx64.efi";
"/loader/entries/nixos.conf".source = systemdBootEntry;
}
@@ -227,7 +227,7 @@ in
"10-esp" = {
contents = {
"/EFI/BOOT/BOOTX64.EFI".source =
"''${pkgs.systemd}/lib/systemd/boot/efi/systemd-bootx64.efi";
"''${config.systemd.package}/lib/systemd/boot/efi/systemd-bootx64.efi";
};
repartConfig = {
Type = "esp";

View File

@@ -1084,6 +1084,7 @@
./services/monitoring/nezha.nix
./services/monitoring/ocsinventory-agent.nix
./services/monitoring/opentelemetry-collector.nix
./services/monitoring/orbit.nix
./services/monitoring/osquery.nix
./services/monitoring/parsedmarc.nix
./services/monitoring/perses.nix

View File

@@ -108,7 +108,7 @@ in
DynamicUser = true;
ExecStart = lib.getExe cfg.package;
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
PrivateDevices = true;
ProtectClock = true;
ProtectControlGroups = true;

View File

@@ -154,7 +154,7 @@ let
script =
"exec "
+ lib.optionalString cfg.inhibitsSleep ''
${pkgs.systemd}/bin/systemd-inhibit \
${config.systemd.package}/bin/systemd-inhibit \
--who="borgbackup" \
--what="sleep" \
--why="Scheduled backup" \

View File

@@ -392,7 +392,7 @@ in
let
extraOptions = lib.concatMapStrings (arg: " -o ${arg}") backup.extraOptions;
inhibitCmd = lib.concatStringsSep " " [
"${pkgs.systemd}/bin/systemd-inhibit"
"${config.systemd.package}/bin/systemd-inhibit"
"--mode='block'"
"--who='restic'"
"--what='sleep'"

View File

@@ -752,7 +752,7 @@ in
"AF_INET6"
];
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
RestrictRealtime = true;
RestrictSUIDSGID = true;
PrivateMounts = true;

View File

@@ -291,7 +291,7 @@ in
};
initial_session = mkIf (cfgAutoLogin.enable && (cfgAutoLogin.user != null)) {
inherit (cfgAutoLogin) user;
command = ''${getExe pkgs.bash} -lc "${pkgs.systemd}/bin/systemd-cat $(<${autoLoginCommand})"'';
command = ''${getExe pkgs.bash} -lc "${config.systemd.package}/bin/systemd-cat $(<${autoLoginCommand})"'';
};
};
};

View File

@@ -15,9 +15,16 @@ let
;
cfg = config.services.quake3-server;
configFile = pkgs.writeText "q3ds-extra.cfg" ''
set net_port ${toString cfg.port}
toQuake3Value = value: if lib.isBool value then (if value then "1" else "0") else toString value;
toQuake3Config =
settings:
lib.concatStrings (
lib.mapAttrsToList (name: value: ''seta ${name} "${toQuake3Value value}"'' + "\n") settings
);
configFile = pkgs.writeText "q3ds-extra.cfg" ''
${toQuake3Config cfg.settings}
${cfg.extraConfig}
'';
@@ -50,19 +57,19 @@ let
'';
in
{
imports = [
(lib.mkRenamedOptionModule
[ "services" "quake3-server" "port" ]
[ "services" "quake3-server" "settings" "net_port" ]
)
];
options = {
services.quake3-server = {
enable = mkEnableOption "Quake 3 dedicated server";
package = lib.mkPackageOption pkgs "ioquake3" { };
port = mkOption {
type = types.port;
default = 27960;
description = ''
UDP Port the server should listen on.
'';
};
openFirewall = mkOption {
type = types.bool;
default = false;
@@ -71,16 +78,59 @@ in
'';
};
settings = mkOption {
type = types.submodule {
freeformType = types.attrsOf (
types.nullOr (
types.oneOf [
types.str
types.bool
types.int
types.float
types.port
]
)
);
options = {
net_port = lib.mkOption {
type = lib.types.port;
default = 27960;
description = "UDP port for the dedicated server to bind to.";
};
};
};
default = { };
example = {
sv_hostname = "My Quake 3 server";
g_gametype = 0;
sv_pure = true;
};
description = ''
Quake 3 cvars set via `seta` on server start (i.e. persisted,
archive-flagged cvars the vast majority of server settings).
Note that options changed via RCON will not be persisted. To list
all possible options, use "cvarlist 1" via RCON.
'';
};
extraConfig = mkOption {
type = types.lines;
default = "";
example = ''
seta rconPassword "superSecret" // sets RCON password for remote console
seta sv_hostname "My Quake 3 server" // name that appears in server list
// map rotation and other things that don't map onto plain cvars
set d1 "map q3dm1 ; set nextmap vstr d2"
set d2 "map q3dm7 ; set nextmap vstr d1"
vstr d1
// rarely needed: cvars with a non-seta flag
sets sv_privatePassword "hidden"
'';
description = ''
Extra configuration options. Note that options changed via RCON will not be persisted. To list all possible
options, use "cvarlist 1" via RCON.
Extra configuration lines appended after `settings`, for anything
that isn't a plain persisted cvar: map-rotation scripts, `exec`,
`vstr`, aliases, or cvars that need `set`/`sets`/`sett`/`setu`
instead of `seta`. Note that options changed via RCON will not be
persisted. To list all possible options, use "cvarlist 1" via RCON.
'';
};
@@ -103,7 +153,7 @@ in
baseq3InStore = builtins.typeOf cfg.baseq3 == "set";
in
mkIf cfg.enable {
networking.firewall.allowedUDPPorts = mkIf cfg.openFirewall [ cfg.port ];
networking.firewall.allowedUDPPorts = mkIf cfg.openFirewall [ cfg.settings.net_port ];
systemd.services.q3ds = {
description = "Quake 3 dedicated server";
@@ -115,7 +165,7 @@ in
serviceConfig = with lib; {
Restart = "always";
DynamicUser = true;
WorkingDirectory = home;
WorkingDirectory = if baseq3InStore then home else cfg.baseq3;
# It is possible to alter configuration files via RCON. To ensure reproducibility we have to prevent this
ReadOnlyPaths = if baseq3InStore then home else cfg.baseq3;

View File

@@ -332,7 +332,7 @@
# devices needed here become available. This is terribly broken and
# essentially no better than a random sleep(). See PR #452645 for
# an attempt to fix this issue.
ExecStartPre = "-${lib.getExe' pkgs.systemd "udevadm"} settle --timeout=180";
ExecStartPre = "-${lib.getExe' config.systemd.package "udevadm"} settle --timeout=180";
ExecStart =
let
script = pkgs.callPackage ./cdi-generate.nix {

View File

@@ -405,17 +405,17 @@ in
commands = [
{
# Ability to restart homebridge service
command = "${pkgs.systemd}/bin/systemctl restart homebridge";
command = "${config.systemd.package}/bin/systemctl restart homebridge";
options = [ "NOPASSWD" ];
}
{
# Ability to shutdown server
command = "${pkgs.systemd}/bin/shutdown -h now";
command = "${config.systemd.package}/bin/shutdown -h now";
options = [ "NOPASSWD" ];
}
{
# Ability to restart server
command = "${pkgs.systemd}/bin/shutdown -r now";
command = "${config.systemd.package}/bin/shutdown -r now";
options = [ "NOPASSWD" ];
}
];

View File

@@ -355,7 +355,7 @@ in
PrivateDevices = true;
ProtectSystem = "full";
CapabilityBoundingSet = [ "~CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_MODULE" ];
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectControlGroups = true;

View File

@@ -1061,7 +1061,7 @@ in
"CAP_SYS_RESOURCE"
];
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
NoNewPrivileges = false; # e.g for sendmail
OOMPolicy = "continue";
PrivateTmp = true;

View File

@@ -1011,7 +1011,7 @@ in
PrivateDevices = true;
ProtectSystem = "full";
CapabilityBoundingSet = [ "~CAP_NET_ADMIN CAP_SYS_ADMIN CAP_SYS_BOOT CAP_SYS_MODULE" ];
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
ProtectKernelModules = true;
ProtectKernelTunables = true;
ProtectControlGroups = true;

View File

@@ -96,7 +96,7 @@ in
ln -s ${lib.getExe cfg.blenderPackage} BlenderData/nix-blender-linux64/blender
''
+ lib.optionalString (cfg.basicSecurityPasswordFile != null) ''
BLENDFARM_PASSWORD=$(${pkgs.systemd}/bin/systemd-creds cat BLENDFARM_PASS_FILE)
BLENDFARM_PASSWORD=$(${config.systemd.package}/bin/systemd-creds cat BLENDFARM_PASS_FILE)
sed -i "s/null/\"$BLENDFARM_PASSWORD\"/g" ServerSettings
'';
serviceConfig = {

View File

@@ -78,7 +78,7 @@ in
export CLOUDFLARE_EMAIL="${cfg.email}"
''}
${lib.optionalString (cfg.apiTokenFile != null) ''
export CLOUDFLARE_APITOKEN=$(${pkgs.systemd}/bin/systemd-creds cat CLOUDFLARE_APITOKEN_FILE)
export CLOUDFLARE_APITOKEN=$(${config.systemd.package}/bin/systemd-creds cat CLOUDFLARE_APITOKEN_FILE)
''}
${pkgs.cfdyndns}/bin/cfdyndns
'';

View File

@@ -96,7 +96,7 @@ in
startAt = "*:0/5";
path = [
pkgs.gnused
pkgs.systemd
config.systemd.package
pkgs.curl
pkgs.gawk
duckdns

View File

@@ -777,7 +777,7 @@ in
];
RestrictNamespaces = true;
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
RestrictRealtime = true;
RestrictSUIDSGID = true;
RemoveIPC = true;

View File

@@ -953,7 +953,7 @@ in
++ lib.optional (useSendmail && config.services.postfix.enable) "AF_NETLINK";
RestrictNamespaces = true;
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
RestrictRealtime = true;
RestrictSUIDSGID = true;
RemoveIPC = true;

View File

@@ -0,0 +1,182 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.orbit;
in
{
options.services.orbit = {
enable = lib.mkEnableOption "Fleet Orbit agent" // {
description = "Enable the Fleet Orbit agent.";
example = lib.literalExpression ''
# Use an enrollment secret from a plaintext file managed outside the Nix store.
{
services.orbit = {
enable = true;
fleetUrl = "https://fleet.example.com";
enrollSecretPath = "/etc/fleet/enroll-secret";
desktop.enable = true;
};
}
# Use an enrollment secret from sops-nix.
{ config, ... }:
{
sops.secrets.fleet-orbit-enroll-secret = { };
services.orbit = {
enable = true;
fleetUrl = "https://fleet.example.com";
enrollSecretPath = config.sops.secrets.fleet-orbit-enroll-secret.path;
desktop.enable = true;
};
}
'';
};
orbitPackage = lib.mkPackageOption pkgs "fleet-orbit" { };
osqueryPackage = lib.mkPackageOption pkgs "osquery" { };
desktop = {
enable = lib.mkEnableOption "Fleet Desktop tray application";
package = lib.mkPackageOption pkgs "fleet-desktop" { };
alternativeBrowserHost = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
example = "fleet-browser.example.com";
description = ''
Alternative host to use for Fleet Desktop browser URLs. This can be
required when Fleet uses TLS client authentication.
'';
};
};
fleetUrl = lib.mkOption {
type = lib.types.str;
example = "https://fleet.example.com";
description = "The base URL of the Fleet server.";
};
enrollSecretPath = lib.mkOption {
type = lib.types.path;
example = "/run/secrets/fleet-enroll-secret";
description = ''
Path to a file containing the enroll secret for authenticating to the Fleet server.
This should point to a secret outside the Nix store, for example a sops-nix or agenix
secret path.
'';
};
fleetCertificate = lib.mkOption {
type = lib.types.path;
default = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
defaultText = lib.literalExpression "\"\${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt\"";
description = "Path to the Fleet server certificate chain.";
};
debug = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable debug logging.";
};
devMode = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Run Orbit in development mode.";
};
enableScripts = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Enable Fleet script execution.";
};
endUserEmail = lib.mkOption {
type = lib.types.nullOr lib.types.str;
default = null;
example = "user@example.com";
description = "End-user email to pass to Orbit.";
};
fleetManagedHostIdentityCertificate = lib.mkOption {
type = lib.types.bool;
default = false;
description = ''
Configure Orbit to use Fleet-managed host identity certificates.
This requires a Fleet Enterprise Edition subscription.
'';
};
hostIdentifier = lib.mkOption {
type = lib.types.nullOr (
lib.types.enum [
"uuid"
"instance"
]
);
default = null;
example = "uuid";
description = "Host identifier mode to use when Orbit and osquery enroll to Fleet.";
};
insecure = lib.mkOption {
type = lib.types.bool;
default = false;
description = "Disable TLS certificate verification.";
};
};
config = lib.mkIf cfg.enable {
systemd.services.orbit = {
description = "Fleet Orbit agent";
wantedBy = [ "multi-user.target" ];
after = [ "network-online.target" ];
wants = [ "network-online.target" ];
environment = lib.filterAttrs (_: value: value != null) {
ORBIT_FLEET_URL = cfg.fleetUrl;
ORBIT_ENROLL_SECRET_PATH = "%d/enroll-secret";
ORBIT_FLEET_CERTIFICATE = cfg.fleetCertificate;
ORBIT_DEBUG = lib.boolToString cfg.debug;
ORBIT_DEV_MODE = lib.boolToString cfg.devMode;
ORBIT_ENABLE_SCRIPTS = lib.boolToString cfg.enableScripts;
ORBIT_END_USER_EMAIL = cfg.endUserEmail;
ORBIT_FLEET_MANAGED_HOST_IDENTITY_CERTIFICATE = lib.boolToString cfg.fleetManagedHostIdentityCertificate;
ORBIT_HOST_IDENTIFIER = cfg.hostIdentifier;
ORBIT_INSECURE = lib.boolToString cfg.insecure;
ORBIT_FLEET_DESKTOP_ALTERNATIVE_BROWSER_HOST = cfg.desktop.alternativeBrowserHost;
ORBIT_DISABLE_KEYSTORE = "true";
ORBIT_DISABLE_UPDATES = "true";
ORBIT_FLEET_DESKTOP = lib.boolToString cfg.desktop.enable;
ORBIT_LOG_FILE = "/var/log/orbit/orbit.log";
ORBIT_OSQUERY_DB = "/var/lib/orbit/osquery.db";
ORBIT_ROOT_DIR = "/var/lib/orbit";
NIX_ORBIT_OSQUERYD_PATH = lib.getExe' cfg.osqueryPackage "osqueryd";
NIX_ORBIT_OSQUERY_LOG_PATH = "/var/log/orbit/osquery";
NIX_ORBIT_DESKTOP_PATH = if cfg.desktop.enable then lib.getExe cfg.desktop.package else null;
};
serviceConfig = {
ExecStart = lib.getExe cfg.orbitPackage;
LoadCredential = [ "enroll-secret:${cfg.enrollSecretPath}" ];
StateDirectory = "orbit";
LogsDirectory = "orbit";
TimeoutStartSec = 0;
Restart = "always";
RestartSec = 60;
KillMode = "control-group";
KillSignal = "SIGTERM";
};
};
};
}

View File

@@ -121,6 +121,7 @@ let
"smartctl"
"smokeping"
"snmp"
"snowflake"
"speedtest"
"sql"
"statsd"
@@ -135,6 +136,7 @@ let
"varnish"
"wireguard"
"xray"
"yace"
"zfs-siebenmann"
"zfs"
]

View File

@@ -0,0 +1,91 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.prometheus.exporters.snowflake;
inherit (lib)
mkIf
mkOption
types
optional
escapeShellArg
concatStringsSep
getExe
;
# The private key is passed to systemd via LoadCredential, which exposes it in
# the per-service credentials directory (`%d`) readable by the service even
# under DynamicUser.
args = [
"--web.listen-address ${cfg.listenAddress}:${toString cfg.port}"
"--account ${escapeShellArg cfg.account}"
"--username ${escapeShellArg cfg.username}"
"--warehouse ${escapeShellArg cfg.warehouse}"
"--role ${escapeShellArg cfg.role}"
]
++ optional (cfg.privateKeyFile != null) "--private-key-path=%d/snowflake-private-key"
++ cfg.extraFlags;
in
{
port = 9975;
extraOpts = {
account = mkOption {
type = types.str;
example = "xy12345.us-east-1";
description = "Snowflake account to collect metrics for (`--account`).";
};
username = mkOption {
type = types.str;
description = "Username used when querying metrics (`--username`).";
};
warehouse = mkOption {
type = types.str;
description = "Warehouse used when querying metrics (`--warehouse`).";
};
role = mkOption {
type = types.str;
default = "ACCOUNTADMIN";
description = "Role used when querying metrics (`--role`).";
};
privateKeyFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/secrets/snowflake-exporter.p8";
description = ''
Path to the user's RSA private key for key-pair authentication. The file
is passed to the service via {manpage}`systemd.exec(5)` credentials, so
it is read only by the exporter and never copied into the world-readable
Nix store. If the key is encrypted, supply its password via
{option}`environmentFile` (`SNOWFLAKE_EXPORTER_PRIVATE_KEY_PASSWORD`).
Mutually exclusive with password authentication; when set, do not also
provide `SNOWFLAKE_EXPORTER_PASSWORD`.
'';
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/secrets/snowflake-exporter.env";
description = ''
Path to an environment file, as defined in {manpage}`systemd.exec(5)`,
used to pass secrets without exposing them in the world-readable Nix
store or the process's command line. For password authentication set
`SNOWFLAKE_EXPORTER_PASSWORD`; for an encrypted key (see
{option}`privateKeyFile`) set `SNOWFLAKE_EXPORTER_PRIVATE_KEY_PASSWORD`.
'';
};
};
serviceOpts = {
serviceConfig = {
EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
LoadCredential = mkIf (cfg.privateKeyFile != null) [
"snowflake-private-key:${cfg.privateKeyFile}"
];
ExecStart = "${getExe pkgs.prometheus-snowflake-exporter} ${concatStringsSep " " args}";
};
};
}

View File

@@ -0,0 +1,59 @@
{
config,
lib,
pkgs,
...
}:
let
cfg = config.services.prometheus.exporters.yace;
inherit (lib)
mkIf
mkOption
types
escapeShellArg
concatStringsSep
getExe
;
in
{
port = 5000;
extraOpts = {
configFile = mkOption {
type = types.path;
description = ''
Path to the YACE configuration file, defining which CloudWatch
metrics to scrape. See
<https://github.com/prometheus-community/yet-another-cloudwatch-exporter#configuration>
for the format. AWS credentials are supplied separately via the
environment (see {option}`environmentFile`, an IMDS instance role,
or the usual `AWS_*` variables).
'';
};
environmentFile = mkOption {
type = types.nullOr types.path;
default = null;
example = "/run/secrets/yace.env";
description = ''
Path to an environment file, as defined in {manpage}`systemd.exec(5)`,
used to pass AWS credentials (e.g. `AWS_ACCESS_KEY_ID`,
`AWS_SECRET_ACCESS_KEY`, `AWS_REGION`) to the exporter without exposing
them in the world-readable Nix store. Not needed on EC2 with an IMDS
instance role.
'';
};
};
serviceOpts = {
serviceConfig = {
EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
ExecStart = concatStringsSep " " (
[
(getExe pkgs.yet-another-cloudwatch-exporter)
"--config.file ${escapeShellArg cfg.configFile}"
"--listen-address ${cfg.listenAddress}:${toString cfg.port}"
]
++ cfg.extraFlags
);
};
};
}

View File

@@ -361,7 +361,7 @@ let
MONITOR = <generated from config.power.ups.upsmon.monitor>
NOTIFYCMD = "''${cfg.package}/bin/upssched";
POWERDOWNFLAG = "/run/killpower";
SHUTDOWNCMD = "''${pkgs.systemd}/bin/shutdown now";
SHUTDOWNCMD = "''${config.systemd.package}/bin/shutdown now";
}
'';
description = "Additional settings to add to `upsmon.conf`.";
@@ -398,7 +398,7 @@ let
);
NOTIFYCMD = lib.mkDefault "${cfg.package}/bin/upssched";
POWERDOWNFLAG = lib.mkDefault "/run/killpower";
SHUTDOWNCMD = lib.mkDefault "${pkgs.systemd}/bin/shutdown now";
SHUTDOWNCMD = lib.mkDefault "${config.systemd.package}/bin/shutdown now";
};
};
};

View File

@@ -120,7 +120,7 @@ in
else
"-o \"UserKnownHostsFile=/dev/null\" -o \"StrictHostKeyChecking=no\"";
ready = pkgs.writers.writeBash "systemd-signal-ready" ''
${pkgs.systemd}/bin/systemd-notify --ready
${config.systemd.package}/bin/systemd-notify --ready
'';
in
''

View File

@@ -97,7 +97,7 @@ in
source = pkgs.writeShellScript "restart-clatd" ''
[ "$DEVICE_IFACE" = "${cfg.settings.clat-dev or "clat"}" ] && exit 0
[ "$2" != "up" ] && [ "$2" != "down" ] && exit 0
${pkgs.systemd}/bin/systemctl restart clatd.service
${config.systemd.package}/bin/systemctl restart clatd.service
'';
}
];

View File

@@ -73,6 +73,8 @@ in
"${cfg.rootDir}"
"/etc/resolv.conf"
];
# warp-svc uses this absolute FHS path instead of looking up nft in PATH.
BindReadOnlyPaths = [ "${lib.getExe pkgs.nftables}:/usr/sbin/nft" ];
CapabilityBoundingSet = caps;
AmbientCapabilities = caps;
Restart = "always";

View File

@@ -302,7 +302,7 @@ in
]
++ lib.optional cfg.setHostname (
pkgs.writeShellScriptBin "hostname" ''
${lib.getExe' pkgs.systemd "hostnamectl"} set-hostname --transient $1
${lib.getExe' config.systemd.package "hostnamectl"} set-hostname --transient $1
''
);

View File

@@ -273,7 +273,7 @@ in
ProtectSystem = "strict";
DevicePolicy = "closed";
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
ProtectHostname = true;
ProtectProc = true;
ProtectKernelLogs = true;

View File

@@ -31,7 +31,8 @@ let
format = pkgs.formats.keyValue { };
settingsFile = format.generate "pocket-id-env-vars" cfg.settings;
exportCredentials = n: _: ''export ${n}="$(${pkgs.systemd}/bin/systemd-creds cat ${n}_FILE)"'';
exportCredentials =
n: _: ''export ${n}="$(${config.systemd.package}/bin/systemd-creds cat ${n}_FILE)"'';
exportAllCredentials = vars: lib.concatStringsSep "\n" (lib.mapAttrsToList exportCredentials vars);
getLoadCredentialList = lib.mapAttrsToList (n: v: "${n}_FILE:${v}") cfg.credentials;
in

View File

@@ -9,7 +9,8 @@ let
meiliCfg = config.services.meilisearch;
format = pkgs.formats.yaml { };
configFile = format.generate "librechat.yaml" cfg.settings;
exportCredentials = n: _: ''export ${n}="$(${pkgs.systemd}/bin/systemd-creds cat ${n}_FILE)"'';
exportCredentials =
n: _: ''export ${n}="$(${config.systemd.package}/bin/systemd-creds cat ${n}_FILE)"'';
exportAllCredentials = vars: lib.concatStringsSep "\n" (lib.mapAttrsToList exportCredentials vars);
getLoadCredentialList = lib.mapAttrsToList (n: v: "${n}_FILE:${v}") cfg.credentials;
in

View File

@@ -1626,11 +1626,7 @@ in
];
RestrictNamespaces = true;
LockPersonality = true;
MemoryDenyWriteExecute =
!(
(builtins.any (mod: (mod.allowMemoryWriteExecute or false)) cfg.package.modules)
|| (lib.getName cfg.package == "openresty")
);
MemoryDenyWriteExecute = false; # for pcre2 & several plugins
RestrictRealtime = true;
RestrictSUIDSGID = true;
RemoveIPC = true;

View File

@@ -139,7 +139,7 @@ in
"AF_INET6"
];
LockPersonality = true;
MemoryDenyWriteExecute = true;
MemoryDenyWriteExecute = false; # pcre2 jit
RestrictRealtime = true;
RestrictSUIDSGID = true;
PrivateMounts = true;

View File

@@ -55,7 +55,7 @@ in
storePaths = [
cfg.package
"${pkgs.systemd}/lib/systemd/systemd-reply-password"
"${config.systemd.package}/lib/systemd/systemd-reply-password"
"${pkgs.jose}/bin/jose"
"${pkgs.curl}/bin/curl"
"${pkgs.cryptsetup}/bin/cryptsetup"

View File

@@ -92,7 +92,7 @@ in
systemd.services.systemd-journal-gatewayd.serviceConfig.ExecStart = [
# Clear the default command line
""
"${pkgs.systemd}/lib/systemd/systemd-journal-gatewayd ${cliArgs}"
"${config.systemd.package}/lib/systemd/systemd-journal-gatewayd ${cliArgs}"
];
systemd.sockets.systemd-journal-gatewayd = {

View File

@@ -123,7 +123,7 @@ in
systemd.services.systemd-journal-remote.serviceConfig.ExecStart = [
# Clear the default command line
""
"${pkgs.systemd}/lib/systemd/systemd-journal-remote ${cliArgs}"
"${config.systemd.package}/lib/systemd/systemd-journal-remote ${cliArgs}"
];
systemd.sockets.systemd-journal-remote = {

View File

@@ -1330,6 +1330,7 @@ in
openvswitch = runTest ./openvswitch.nix;
optee = runTestOn [ "aarch64-linux" ] ./optee.nix;
orangefs = runTest ./orangefs.nix;
orbit = runTestOn [ "x86_64-linux" ] ./orbit.nix;
orthanc = runTest ./orthanc.nix;
os-prober = handleTestOn [ "x86_64-linux" ] ./os-prober.nix { };
osquery = handleTestOn [ "x86_64-linux" ] ./osquery.nix { };

View File

@@ -57,7 +57,7 @@ in
in
{
"/EFI/BOOT/BOOT${lib.toUpper efiArch}.EFI".source =
"${pkgs.systemd}/lib/systemd/boot/efi/systemd-boot${efiArch}.efi";
"${config.systemd.package}/lib/systemd/boot/efi/systemd-boot${efiArch}.efi";
"/EFI/Linux/${config.system.boot.loader.ukiFile}".source =
"${config.system.build.uki}/${config.system.boot.loader.ukiFile}";

47
nixos/tests/orbit.nix Normal file
View File

@@ -0,0 +1,47 @@
{ ... }:
{
name = "orbit";
nodes.machine =
{ pkgs, ... }:
{
environment.etc."fleet/enroll-secret".text = "test-secret";
services.orbit = {
enable = true;
orbitPackage = pkgs.writeShellApplication {
name = "orbit";
text = ''
test "$ORBIT_FLEET_URL" = "https://fleet.example.test"
test -r "$ORBIT_ENROLL_SECRET_PATH"
test "$(cat "$ORBIT_ENROLL_SECRET_PATH")" = "test-secret"
test -x "$NIX_ORBIT_OSQUERYD_PATH"
sleep infinity
'';
};
osqueryPackage = pkgs.writeShellApplication {
name = "osqueryd";
text = "echo osquery";
};
desktop = {
enable = true;
package = pkgs.writeShellApplication {
name = "fleet-desktop";
text = "echo fleet-desktop";
};
alternativeBrowserHost = "fleet-browser.example.test";
};
fleetUrl = "https://fleet.example.test";
enrollSecretPath = "/etc/fleet/enroll-secret";
debug = true;
enableScripts = true;
hostIdentifier = "uuid";
};
};
testScript = ''
machine.start()
machine.wait_for_unit("orbit.service")
'';
}

View File

@@ -1803,6 +1803,34 @@ let
'';
};
snowflake =
{ pkgs, ... }:
{
exporterConfig = {
enable = true;
account = "dummy";
username = "dummy";
warehouse = "dummy";
# key-pair auth: exercises the LoadCredential + `%d` wiring. The key is
# never parsed until a scrape, so a dummy file is enough to boot.
privateKeyFile = pkgs.writeText "snowflake-key.p8" "dummy";
environmentFile = pkgs.writeText "snowflake-exporter.env" ''
SNOWFLAKE_EXPORTER_PRIVATE_KEY_PASSWORD=dummy
'';
};
# Only the landing page is checked. Scraping `/metrics` would run the
# collector, which synchronously queries Snowflake and blocks until the
# driver's login timeout (~45s) with no reachable server. Booting with
# key-pair auth already exercises config validation and the
# LoadCredential/environmentFile wiring; the landing page confirms the
# exporter booted and is serving.
exporterTest = ''
wait_for_unit("prometheus-snowflake-exporter.service")
wait_for_open_port(9975)
succeed("curl -sSf http://localhost:9975/ | grep -i 'Snowflake exporter'")
'';
};
sql =
{ ... }:
{
@@ -2141,6 +2169,30 @@ let
'';
};
yace =
{ pkgs, ... }:
{
exporterConfig = {
enable = true;
configFile = pkgs.writeText "yace-config.yml" ''
apiVersion: v1alpha1
sts-region: us-east-1
discovery:
jobs:
- type: AWS/EC2
regions: [us-east-1]
metrics:
- name: CPUUtilization
statistics: [Average]
'';
};
exporterTest = ''
wait_for_unit("prometheus-yace-exporter.service")
wait_for_open_port(5000)
succeed("curl -sSf http://localhost:5000/metrics")
'';
};
zfs =
{ ... }:
{

View File

@@ -20,7 +20,6 @@
flow.configuration.services.scx.scheduler = "scx_flow";
forge.configuration.services.scx.scheduler = "scx_forge";
lavd.configuration.services.scx.scheduler = "scx_lavd";
mlfq.configuration.services.scx.scheduler = "scx_mlfq";
p2dq.configuration.services.scx.scheduler = "scx_p2dq";
pandemonium.configuration.services.scx.scheduler = "scx_pandemonium";
rlfifo.configuration.services.scx.scheduler = "scx_rlfifo";
@@ -41,7 +40,6 @@
"flow",
"forge",
"lavd",
"mlfq",
"p2dq",
"pandemonium",
"rlfifo",

View File

@@ -15316,6 +15316,20 @@ final: prev: {
meta.hydraPlatforms = [ ];
};
profile-nvim = buildVimPlugin {
pname = "profile.nvim";
version = "0-unstable-2025-03-05";
src = fetchFromGitHub {
owner = "stevearc";
repo = "profile.nvim";
rev = "30433d7513f0d14665c1cfcea501c90f8a63e003";
hash = "sha256-2Mk6VbC+K/WhTWF+yHyDhQKJhTi2rpo8VJsnO7ofHXs=";
};
meta.homepage = "https://github.com/stevearc/profile.nvim/";
meta.license = getLicenseFromSpdxId "MIT";
meta.hydraPlatforms = [ ];
};
project-nvim = buildVimPlugin {
pname = "project.nvim";
version = "6.0.2-1";

View File

@@ -1092,6 +1092,7 @@ https://github.com/sotte/presenting.vim/,,
https://github.com/ewilazarus/preto/,,
https://github.com/anuvyklack/pretty-fold.nvim/,,
https://github.com/vim-scripts/prev_indent/,,
https://github.com/stevearc/profile.nvim/,,
https://github.com/DrKJeff16/project.nvim/,,
https://github.com/GnikDroy/projections.nvim/,,
https://github.com/kevinhwang91/promise-async/,,

View File

@@ -21,22 +21,22 @@ vscode-utils.buildVscodeMarketplaceExtension (finalAttrs: {
sources = {
"x86_64-linux" = {
arch = "linux-x64";
hash = "sha256-oOytttotGI7f4RlnNBRM6TvXaXUht6v99Kzxc9GP404=";
hash = "sha256-Yabd8DFEh1wq0K4IQPFUBNFDkyHhXl695wSfKa5RX7k=";
};
"aarch64-linux" = {
arch = "linux-arm64";
hash = "sha256-9Ne1PGz0k1E1wY/HhoR5mqB3SFQiFkHt236+L5jXE60=";
hash = "sha256-gzMUtolNlNxFUofsL9JgOnaxfUGeSxFQY7C4smJ8fr8=";
};
"aarch64-darwin" = {
arch = "darwin-arm64";
hash = "sha256-2nwDsS4tVRikMZWZW4TKshQE7HVeQ/yY7CxpGg0os7w=";
hash = "sha256-U8S7U5sYj9LukYfmC2yyUjeenAYYHsMrx8snhXqATck=";
};
};
in
{
name = "claude-code";
publisher = "anthropic";
version = "2.1.238";
version = "2.1.245";
}
// sources.${stdenvNoCC.hostPlatform.system}
or (throw "Unsupported system ${stdenvNoCC.hostPlatform.system}");

View File

@@ -8,13 +8,13 @@
}:
mkLibretroCore {
core = "mednafen-psx" + lib.optionalString withHw "-hw";
version = "0-unstable-2026-08-07";
version = "0-unstable-2026-08-23";
src = fetchFromGitHub {
owner = "libretro";
repo = "beetle-psx-libretro";
rev = "ed640fac8986d7813e4db6604544a6aafddd3018";
hash = "sha256-dwat09yGQ0OnF8GaglqCVlgcoyAfqhleqD/mMlgHh1w=";
rev = "ef51860dbd71ad6b7ce67115d4780c2ee321d968";
hash = "sha256-Yzzh/1+ZcySuFwXCEravLjLRJHbIMpf3rr7Mj0p9JM0=";
};
extraBuildInputs = lib.optionals withHw [

View File

@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "bluemsx";
version = "0-unstable-2026-07-29";
version = "0-unstable-2026-08-23";
src = fetchFromGitHub {
owner = "libretro";
repo = "bluemsx-libretro";
rev = "0f32f52c48d3e772bfdf0379756f81f00b4e08bc";
hash = "sha256-4XjaPkv5Tm58nhU6JUdiZXbto/uePljwXpcePRCqVus=";
rev = "e3086eb5d36d77fa11704cf53dc176686e70127d";
hash = "sha256-cwyXtawCUyM/ISswY+O3bzGFX0wNayb/VAIv99E9esI=";
};
meta = {

View File

@@ -8,13 +8,13 @@
}:
mkLibretroCore {
core = "flycast";
version = "0-unstable-2026-08-07";
version = "0-unstable-2026-08-23";
src = fetchFromGitHub {
owner = "flyinghead";
repo = "flycast";
rev = "a172e0001351dfbc49b86860a13d5390b1c493fe";
hash = "sha256-0vBKit2Ce5ihTtQjOrbwrFBEg1Qig/8+H86eJb7EjZs=";
rev = "c3763d8fc4208dd6f8f0bc456383543b8406a8a0";
hash = "sha256-/QfEDbodvtrfxe2qEqselWFyv6Lx77Z3fJOZhgwMAIk=";
fetchSubmodules = true;
};

View File

@@ -10,11 +10,11 @@
buildMozillaMach rec {
pname = "firefox-beta";
binaryName = "firefox-beta";
version = "154.0b10";
version = "155.0b4";
applicationName = "Firefox Beta";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "ddbe3ff45217a16df9eecfac52fcb12425accae76457e7054b20bd085f5b22908940a20448f213c3dc62d1276bb1c81f38194432336ba97459b2c17393ebd3cd";
sha512 = "6c1536924b955f856bc629cdf563ab9d4a87058fac7acf8db008bfe5a1f19defd004116bb3673fd23b62e1e00ca21acbcc7153d85dfa522eb3def6c85065b01b";
};
meta = {

View File

@@ -10,13 +10,13 @@
buildMozillaMach rec {
pname = "firefox-devedition";
binaryName = "firefox-devedition";
version = "154.0b10";
version = "155.0b4";
applicationName = "Firefox Developer Edition";
requireSigning = false;
branding = "browser/branding/aurora";
src = fetchurl {
url = "mirror://mozilla/devedition/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "e2275579e4769a0690010d8fbba528a0e347d86f0dc981d1702b3e627d9c73f3fd7399d3e618c514bf6a3c0059fa3aa5a29f9cdec802e52955a03b1122ca8d39";
sha512 = "d2b58b520393848c110714537aec2c71d1244d7439c8c62e85bf123a3f3ade3db8a31617c242d9803306f1655237666948aaa55b780f8743ab57fc406a6ea906";
};
# buildMozillaMach sets MOZ_APP_REMOTINGNAME during configuration, but

View File

@@ -9,10 +9,10 @@
buildMozillaMach rec {
pname = "firefox";
version = "154.0";
version = "154.0.1";
src = fetchurl {
url = "mirror://mozilla/firefox/releases/${version}/source/firefox-${version}.source.tar.xz";
sha512 = "a77cd664982add628681167ef5939bd6bf0c894aa380cca66f9b5fb265947874d1e819d42264f1dd07c843f8a6dc020da268cca9ff1e064fca019de91af9b996";
sha512 = "9141e34978c2ecbe1b267b3cc63136142625734618e67cbbbf6536e1427af66d01f19851200eba0db7c715991f39e7d5d0200abb9e2cd7c15d58a8a411b1b412";
};
meta = {

View File

@@ -382,13 +382,13 @@
"vendorHash": "sha256-y9GRTuoh1X6GfGkGZbPpO500y8DoJS1dnwZL3BCTUcY="
},
"equinix_equinix": {
"hash": "sha256-HwPjxVWIqWxpdIElMgDmOUx7KXr5VEwLVNbTLeEgRRo=",
"hash": "sha256-gPuRvWQiJZdyUGTNMCQSEFmbqC5ralxroBSbBprFe/8=",
"homepage": "https://registry.terraform.io/providers/equinix/equinix",
"owner": "equinix",
"repo": "terraform-provider-equinix",
"rev": "v5.1.0",
"rev": "v5.2.0",
"spdx": "MIT",
"vendorHash": "sha256-8v7+xVF/X9q7VmjQD4azGIggWpgPGuoNSWetsbKN7LA="
"vendorHash": "sha256-JnbQPQi/dy3pEwurlzIcfBdbAfvYJVsoLYnvJPX3sjc="
},
"exoscale_exoscale": {
"hash": "sha256-QIYIqJI/xznbkqR8E8R2LwF15M6ZdEntQ8JtdIwZypM=",
@@ -580,13 +580,13 @@
"vendorHash": "sha256-gv54RqpkWri5yL40ajcLnqzF0XvMEzFoFEEV2/g1paE="
},
"hashicorp_google": {
"hash": "sha256-GWC0PIYMAhI9KO2j5yI7W7v0el8u9d1qqUyaWq/sodo=",
"hash": "sha256-Ed/D/c8Ut4gR+VAonZbqvgK/MKVLRryloO+7hvzn5G8=",
"homepage": "https://registry.terraform.io/providers/hashicorp/google",
"owner": "hashicorp",
"repo": "terraform-provider-google",
"rev": "v7.44.0",
"rev": "v7.45.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-gy+Tn9L2NYRYnmYGcb2jqTTXJDzMqHtm2EgSQZunbjg="
"vendorHash": "sha256-d4nO4QTeHyVNdU1JFzQdU4UTisoY1tjv7GVCRNRtNC8="
},
"hashicorp_google-beta": {
"hash": "sha256-WjgVh6LHcNmTT6Fg2FWmtMacCokaNuZTI9ZEcMoD7uo=",
@@ -1058,11 +1058,11 @@
"vendorHash": null
},
"oracle_oci": {
"hash": "sha256-YcKLw5PotrwRdGEmPzy1Ka/doJ9fDbKuP6Q9Dw24mG0=",
"hash": "sha256-3/apEon1W1iaB7UIkYgI4POV+f1uVDVXX4V6dyeqsLk=",
"homepage": "https://registry.terraform.io/providers/oracle/oci",
"owner": "oracle",
"repo": "terraform-provider-oci",
"rev": "v8.27.0",
"rev": "v8.28.0",
"spdx": "MPL-2.0",
"vendorHash": null
},

View File

@@ -112,8 +112,8 @@ rec {
thunderbird-140 = common {
applicationName = "Thunderbird ESR";
version = "140.13.0esr";
sha512 = "778d2fc2837ba367e90c4336f3873da5a0823c182e2f50aa9373cd1ee9ee2b5310372ad9d33e1e11978791b67de4a6952d3036ff7d57b257a06f49c8cd4a830e";
version = "140.14.0esr";
sha512 = "4c95b1ca3fc7f6429b2360a7e732635bdfb60927622a7da4d8af9ca2abd550611b91763c587cddad5d51c0dd4e905ba8e106da3cd21591a1bec3dba1b9a2502d";
updateScript = callPackage ./update.nix {
attrPath = "thunderbirdPackages.thunderbird-140";

View File

@@ -478,6 +478,8 @@ stdenvNoCC.mkDerivation {
apple-sdk.__spliced.buildTarget or apple-sdk;
};
__structuredAttrs = true;
meta =
let
bintools_ = optionalAttrs (bintools != null) bintools;

View File

@@ -9,7 +9,7 @@
makeSetupHook {
name = "dotnet-hook";
substitutions = {
dotnetRuntime = dotnet-runtime;
dotnetRuntime = lib.defaultTo "" dotnet-runtime;
wrapperPath = lib.makeBinPath [
which
coreutils

View File

@@ -124,16 +124,12 @@ rec {
name,
constituents,
meta ? { },
# Interpret string constituents as fnmatch patterns matched
# against all job names of the jobset.
globConstituents ? false,
}:
pkgs.runCommand name
{
inherit constituents meta;
preferLocalBuild = true;
_hydraAggregate = true;
_hydraGlobConstituents = globConstituents;
}
''
mkdir -p $out/nix-support

View File

@@ -735,7 +735,6 @@ rec {
meta ? { },
passthru ? { },
substitutions ? { },
__structuredAttrs ? false,
}@args:
script:
runCommand name
@@ -745,10 +744,6 @@ rec {
# Make the position of the derivation accurate.
# Since not having `name` is deprecated, this should be fairly accurate.
pos = lib.unsafeGetAttrPos "name" args;
# TODO(@Artturin:) substitutions should be inside the env attrset
# but users are likely passing non-substitution arguments through substitutions
# turn off __structuredAttrs to unbreak substituteAll
inherit __structuredAttrs;
pname = name;
version = "26.05pre-git";
inherit meta;
@@ -756,6 +751,7 @@ rec {
inherit propagatedBuildInputs;
inherit propagatedNativeBuildInputs;
strictDeps = true;
__structuredAttrs = true;
# TODO 2023-01, no backport: simplify to inherit passthru;
passthru =
passthru
@@ -771,7 +767,9 @@ rec {
recordPropagatedDependencies
''
+ lib.optionalString (substitutions != { }) ''
substituteAll ${script} $out/nix-support/setup-hook
substitute ${script} $out/nix-support/setup-hook ${
lib.concatMapAttrsStringSep " " (name: _: "--subst-var ${name}") substitutions
}
''
);

View File

@@ -19,6 +19,7 @@
libpulseaudio,
libzip,
nlohmann_json,
stb,
SDL2,
spdlog,
tinyxml-2,
@@ -89,12 +90,6 @@ let
'';
};
stb' = fetchurl {
name = "stb_image.h";
url = "https://raw.githubusercontent.com/nothings/stb/0bc88af4de5fb022db643c2d8e549a0927749354/stb_image.h";
hash = "sha256-xUsVponmofMsdeLsI6+kQuPg436JS3PBl00IZ5sg3Vw=";
};
stormlib' = applyPatches {
src = fetchFromGitHub {
owner = "ladislav-zezula";
@@ -220,7 +215,7 @@ stdenv.mkDerivation (finalAttrs: {
preConfigure = ''
# mirror 2ship's stb
mkdir stb
cp ${stb'} ./stb/${stb'.name}
cp ${stb}/include/stb/stb_image.h ./stb/stb_image.h
cp ${stb_impl} ./stb/${stb_impl.name}
substituteInPlace libultraship/cmake/dependencies/common.cmake \
--replace-fail "\''${STB_DIR}" "$(readlink -f ./stb)"

View File

@@ -45,6 +45,8 @@ stdenv.mkDerivation (finalAttrs: {
};
};
__structuredAttrs = true;
meta = {
description = "Open-source collection of C++ code designed to augment the C++ standard library";
homepage = "https://abseil.io/";

View File

@@ -50,6 +50,8 @@ stdenv.mkDerivation (finalAttrs: {
};
};
__structuredAttrs = true;
meta = {
description = "Open-source collection of C++ code designed to augment the C++ standard library";
homepage = "https://abseil.io/";

View File

@@ -39,6 +39,8 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [ gtest ];
__structuredAttrs = true;
meta = {
description = "Open-source collection of C++ code designed to augment the C++ standard library";
homepage = "https://abseil.io/";

View File

@@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "ada";
version = "3.4.4";
version = "4.0.0";
src = fetchFromGitHub {
owner = "ada-url";
repo = "ada";
tag = "v${finalAttrs.version}";
hash = "sha256-kfUbsqQ+CsqnySKgeL1GFJLcDe1Irivp4CoZG93BZYg=";
hash = "sha256-TvjoLUKO2+YgS1mlyglLb+rBLTO/SWSBVA2S34Z6kMI=";
};
nativeBuildInputs = [

View File

@@ -10,7 +10,7 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "adhammer";
version = "1.3.10";
version = "1.4.2";
__structuredAttrs = true;
@@ -18,10 +18,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "icedracon";
repo = "adhammer";
tag = "v${finalAttrs.version}";
hash = "sha256-QQjiyvj3e5unEsh17UyKck2rs8oKeLO5eodBG7cn1LQ=";
hash = "sha256-Jn3hmCSpc/9zxfIzebrCkDOgZ4HzfXdKOcJSXNvxZGM=";
};
cargoHash = "sha256-Ebkvxl/JyiZ84ucv7FmOluHTqYd14I3B6z53QNmVQZw=";
cargoHash = "sha256-037x5bhTizcCqW/pszIadAVA9ElQzJOQ9W1dh5Kpg9Y=";
nativeBuildInputs = [
pkg-config

View File

@@ -5,6 +5,7 @@
fetchurl,
alsa-lib,
alsa-plugins,
bashNonInteractive,
gettext,
makeWrapper,
pkg-config,
@@ -45,6 +46,7 @@ stdenv.mkDerivation (finalAttrs: {
pkg-config
];
buildInputs = [
bashNonInteractive
alsa-lib
ncurses
libsamplerate

View File

@@ -24,11 +24,7 @@ let
llvmPackages = llvmPackages_21;
llvmMajorVersion = lib.versions.major llvmPackages.llvm.version;
arch = stdenv.hostPlatform.parsed.cpu.name;
triplet = lib.getAttr arch {
"x86_64" = "x86_64-unknown-linux-gnu";
"aarch64" = "aarch64-unknown-linux-gnu";
"riscv64" = "riscv64-unknown-linux-gnu";
};
triplet = stdenv.hostPlatform.config;
clang = symlinkJoin {
name = "angle-clang-llvm-join";
@@ -115,30 +111,32 @@ stdenv.mkDerivation (finalAttrs: {
./fix-uninitialized-const-pointer-error-001.patch
];
postPatch = ''
substituteInPlace build/config/clang/BUILD.gn \
--replace-fail \
"_dir = \"${triplet}\"" \
"_dir = \"${triplet}\"
_suffix = \"-${arch}\""
postPatch =
lib.optionalString stdenv.hostPlatform.isLinux ''
substituteInPlace build/config/clang/BUILD.gn \
--replace-fail \
"_dir = \"${triplet}\"" \
"_dir = \"${triplet}\"
_suffix = \"-${arch}\""
''
+ ''
# Don't precompile Metal shaders, because the compiler is non-free.
substituteInPlace src/libANGLE/renderer/metal/metal_backend.gni \
--replace-fail \
"metal_internal_shader_compilation_supported =" \
"metal_internal_shader_compilation_supported = false &&"
# Don't precompile Metal shaders, because the compiler is non-free.
substituteInPlace src/libANGLE/renderer/metal/metal_backend.gni \
--replace-fail \
"metal_internal_shader_compilation_supported =" \
"metal_internal_shader_compilation_supported = false &&"
cat > build/config/gclient_args.gni <<EOF
# Generated from 'DEPS'
checkout_angle_internal = false
checkout_angle_mesa = false
checkout_angle_restricted_traces = false
generate_location_tags = false
EOF
cat > build/config/gclient_args.gni <<EOF
# Generated from 'DEPS'
checkout_angle_internal = false
checkout_angle_mesa = false
checkout_angle_restricted_traces = false
generate_location_tags = false
EOF
# For sandboxed build on darwin.
patchShebangs build/toolchain/apple
'';
# For sandboxed build on darwin.
patchShebangs build/toolchain/apple
'';
installPhase = ''
runHook preInstall

View File

@@ -22,8 +22,12 @@ stdenv.mkDerivation (finalAttrs: {
ninja
];
strictDeps = true;
doCheck = true;
__structuredAttrs = true;
meta = {
homepage = "https://github.com/argp-standalone/argp-standalone";
description = "Standalone version of arguments parsing functions from Glibc";

View File

@@ -151,7 +151,7 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
src = fetchFromGitHub {
owner = "asciidoc-py";
repo = "asciidoc-py";
rev = finalAttrs.version;
tag = finalAttrs.version;
hash = "sha256-td3C7xTWfSzdo9Bbz0dHW2oPaCQYmUE9H2sUFfg5HH0=";
};
@@ -320,6 +320,8 @@ python3.pkgs.buildPythonApplication (finalAttrs: {
runHook postCheck
'';
__structuredAttrs = true;
meta = {
description = "Text-based document generation system";
longDescription = ''

View File

@@ -15,6 +15,8 @@ stdenv.mkDerivation {
buildInputs = [ pythonEnv ];
strictDeps = true;
src = ./source;
buildPhase = ''
@@ -33,6 +35,8 @@ stdenv.mkDerivation {
runHook postInstall
'';
__structuredAttrs = true;
meta = {
description = "Automatically patch ELF binaries using patchelf";
mainProgram = "auto-patchelf";

View File

@@ -240,6 +240,35 @@ def find_first_matching_rpath_with_origin(binary: Path, lib_dir: Path, rpaths: l
return Path(rpath)
return None
def relativize_rpath_to_origin(*, binary_path: Path, rpath_entries: list[Path], containing_path: Path) -> list[Path]:
"""
Rewrite absolute RPATH entries to use $ORIGIN when the entry sits
under containing_path (the --paths entry the binary was found
under).
The resulting RPATH is relocatable: as long as the directory layout
within containing_path is preserved, the whole tree can be moved
and the binary will still find its dependencies.
Entries that already contain $ORIGIN are left untouched.
Entries outside containing_path are also left absolute.
"""
containing_norm: Path = Path(os.path.normpath(containing_path))
new_rpath_entries: list[Path] = []
for entry in rpath_entries:
if "$ORIGIN" in entry.as_posix():
new_rpath_entries.append(entry)
continue
entry_norm: Path = Path(os.path.normpath(entry))
if not entry_norm.is_relative_to(containing_norm):
new_rpath_entries.append(entry)
continue
rel = os.path.relpath(entry_norm, binary_path.parent)
new_rpath_entries.append(Path("$ORIGIN") / rel)
return new_rpath_entries
class Event(Protocol):
"""Protocol for loggable events that occur during the auto-patchelf process."""
def to_human_readable_str(self) -> str: ...
@@ -317,7 +346,18 @@ class Logger:
def auto_patchelf_file(logger: Logger, path: Path, runtime_deps: list[Path], append_rpaths: list[Path] = [], keep_libc: bool = False, preserve_origin: bool = False, extra_args: list[str] = []) -> list[Dependency]:
def auto_patchelf_file(
*,
logger: Logger,
runtime_deps: list[Path],
append_rpaths: list[Path] = [],
keep_libc: bool = False,
preserve_origin: bool = False,
relativize_rpath: bool = False,
extra_args: list[str] = [],
path: Path,
containing_path: Path
) -> list[Dependency]:
try:
with open_elf(path) as elf:
@@ -436,6 +476,9 @@ def auto_patchelf_file(logger: Logger, path: Path, runtime_deps: list[Path], app
if "$ORIGIN" in existing_rpath:
rpath.append(Path(existing_rpath))
if relativize_rpath:
rpath = relativize_rpath_to_origin(binary_path=path, rpath_entries=rpath, containing_path=containing_path)
# Dedup the rpath
rpath_str = ":".join(dict.fromkeys(map(Path.as_posix, rpath)))
@@ -458,6 +501,7 @@ def auto_patchelf(
append_rpaths: list[Path] = [],
keep_libc: bool = False,
preserve_origin: bool = False,
relativize_rpath: bool = False,
add_existing: bool = True,
extra_args: list[str] = []) -> None:
@@ -472,9 +516,20 @@ def auto_patchelf(
populate_cache(lib_dirs)
dependencies = []
for path in chain.from_iterable(glob(p, '*', recursive) for p in paths_to_patch):
if not path.is_symlink() and path.is_file():
dependencies += auto_patchelf_file(logger, path, runtime_deps, append_rpaths, keep_libc, preserve_origin, extra_args)
for containing_path in paths_to_patch:
for path in glob(containing_path, '*', recursive):
if not path.is_symlink() and path.is_file():
dependencies += auto_patchelf_file(
logger=logger,
runtime_deps=runtime_deps,
append_rpaths=append_rpaths,
keep_libc=keep_libc,
preserve_origin=preserve_origin,
relativize_rpath=relativize_rpath,
extra_args=extra_args,
path=path,
containing_path=containing_path
)
missing = [dep for dep in dependencies if not dep.found]
@@ -560,6 +615,12 @@ def main() -> None:
action="store_true",
help="When possible, replace absolute RPATH entries with original $ORIGIN entries that resolve to the same directory.",
)
parser.add_argument(
"--relativize-rpath",
dest="relativize_rpath",
action="store_true",
help="Rewrite absolute RPATH entries to use $ORIGIN when the binary and the entry live under the same --paths root, so the patched tree is relocatable.",
)
parser.add_argument(
"--ignore-existing",
dest="add_existing",
@@ -597,6 +658,7 @@ def main() -> None:
append_rpaths=args.append_rpaths,
keep_libc=args.keep_libc,
preserve_origin=args.preserve_origin,
relativize_rpath=args.relativize_rpath,
add_existing=args.add_existing,
extra_args=args.extra_args)

View File

@@ -28,6 +28,8 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [ xz ];
__structuredAttrs = true;
meta = {
description = "Archive of autoconf m4 macros";
homepage = "https://www.gnu.org/software/autoconf-archive/";

View File

@@ -28,10 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
"host"
];
# there's a /bin/sh shebang in bin/yacc which when no strictDeps is patched with the build stdenv shell
# however when cross-compiling it would still be patched with the build stdenv shell which would be wrong
# cannot add bash to buildInputs due to infinite recursion
strictDeps = stdenv.hostPlatform != stdenv.buildPlatform;
strictDeps = true;
nativeBuildInputs = [
m4
@@ -40,6 +37,13 @@ stdenv.mkDerivation (finalAttrs: {
++ lib.optional stdenv.hostPlatform.isSunOS help2man;
propagatedBuildInputs = [ m4 ];
# there's a /bin/sh shebang in bin/yacc which when no strictDeps is patched with the build stdenv shell
# however when cross-compiling it would still be patched with the build stdenv shell which would be wrong
# cannot add bash to buildInputs due to infinite recursion
postFixup = lib.optionalString (lib.systems.equals stdenv.buildPlatform stdenv.hostPlatform) ''
patchShebangs --build $out/bin/yacc
'';
enableParallelBuilding = true;
# tests are flaky / timing sensitive on FreeBSD
enableParallelChecking = !stdenv.hostPlatform.isFreeBSD;
@@ -50,6 +54,8 @@ stdenv.mkDerivation (finalAttrs: {
# TODO: enable doInstallCheck unconditionally when fixed upstream.
doInstallCheck = !stdenv.cc.isClang;
__structuredAttrs = true;
meta = {
homepage = "https://www.gnu.org/software/bison/";
description = "Yacc-compatible parser generator";

View File

@@ -23,7 +23,7 @@ stdenv.mkDerivation {
useBoost.src or (fetchFromGitHub {
owner = "boostorg";
repo = "build";
rev = defaultVersion;
tag = defaultVersion;
sha256 = "1r4rwlq87ydmsdqrik4ly5iai796qalvw7603mridg2nwcbbnf54";
});
@@ -58,6 +58,8 @@ stdenv.mkDerivation {
bison
];
strictDeps = true;
buildPhase = ''
runHook preBuild
./bootstrap.sh
@@ -76,6 +78,8 @@ stdenv.mkDerivation {
runHook postInstall
'';
__structuredAttrs = true;
meta = {
homepage = "https://www.boost.org/build/";
license = lib.licenses.boost;

View File

@@ -32,6 +32,8 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [ cmake ];
strictDeps = true;
cmakeFlags = lib.optional staticOnly "-DBUILD_SHARED_LIBS=OFF";
outputs = [
@@ -60,6 +62,8 @@ stdenv.mkDerivation (finalAttrs: {
updateScript = nix-update-script { };
};
__structuredAttrs = true;
meta = {
homepage = "https://github.com/google/brotli";
changelog = "https://github.com/google/brotli/blob/${finalAttrs.src.tag}/CHANGELOG.md";

View File

@@ -8,16 +8,16 @@
}:
buildGoModule (finalAttrs: {
pname = "bsky-cli";
version = "0.0.81";
version = "0.0.82";
src = fetchFromGitHub {
owner = "mattn";
repo = "bsky";
tag = "v${finalAttrs.version}";
hash = "sha256-Su2AhHaIozuqTzK1vyAjZR/a01j0dnlayV14Q7hTcCU=";
hash = "sha256-2Qtr9Q01ZbjfrZFw8315hDGiX2CmyQ0ru1MhqTvdjVw=";
};
vendorHash = "sha256-jGeKaAR0rAqrhoUx/FqdDwdOxA/WioppFjGyi/PsIQs=";
vendorHash = "sha256-pICYDE5rpGdyII53Ucxx2u51MG604/yjz9W9xsO3ZLs=";
buildInputs = [
libpcap

View File

@@ -44,7 +44,7 @@ buildGoModule (finalAttrs: {
preCheck = ''
# Some tests take longer depending on builder load.
substituteInPlace private/bufpkg/bufcheck/lint_test.go \
substituteInPlace private/bufpkg/bufcheck/lint_test.go private/bufpkg/bufcheck/breaking_test.go \
--replace-fail 'context.WithTimeout(t.Context(), 60*time.Second)' \
'context.WithTimeout(t.Context(), 600*time.Second)'
# For WebAssembly runtime tests

View File

@@ -70,6 +70,8 @@ stdenv.mkDerivation {
nativeBuildInputs = [ buildcatrust ];
strictDeps = true;
buildPhase = ''
mkdir unbundled hashed
buildcatrust \
@@ -247,5 +249,7 @@ stdenv.mkDerivation {
};
};
__structuredAttrs = true;
inherit meta;
}

View File

@@ -6,13 +6,13 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-sort";
version = "2.1.3";
version = "2.1.4";
src = fetchFromGitHub {
owner = "devinr528";
repo = "cargo-sort";
rev = "v${finalAttrs.version}";
sha256 = "sha256-PtBjs+mqrz9z6tkpajx/OYQATJP81vi4ColjFXr9Rv0=";
sha256 = "sha256-xT+fWwd92Ll9zcz7FKpQbHKjUGXNOSuCGpFuJ3DQTJY=";
};
cargoHash = "sha256-ygMtfhwoUEIZx+q6KB5yOr8/Fj5FRMIs7dXlYDUKb2U=";

View File

@@ -12,14 +12,18 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchFromGitHub {
owner = "catchorg";
repo = "Catch2";
rev = "v${finalAttrs.version}";
sha256 = "sha256-XnT2ziES94Y4uzWmaxSw7nWegJFQjAqFUG8PkwK5nLU=";
tag = "v${finalAttrs.version}";
hash = "sha256-XnT2ziES94Y4uzWmaxSw7nWegJFQjAqFUG8PkwK5nLU=";
};
nativeBuildInputs = [ cmake ];
strictDeps = true;
cmakeFlags = [ "-H.." ];
__structuredAttrs = true;
meta = {
description = "Multi-paradigm automated test framework for C++ and Objective-C (and, maybe, C)";
homepage = "http://catch-lib.net";

View File

@@ -6,8 +6,6 @@
makeSetupHook {
name = "check-phase-thread-limit-hook";
__structuredAttrs = true;
meta = {
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ grimmauld ];

View File

@@ -8,14 +8,14 @@
}:
maven.buildMavenPackage (finalAttrs: {
version = "13.10.0";
version = "14.0.0";
pname = "checkstyle";
src = fetchFromGitHub {
owner = "checkstyle";
repo = "checkstyle";
tag = "checkstyle-${finalAttrs.version}";
hash = "sha256-RJ0ALYE+X2wUdFB4WpGIKYYeRau7AHr5m2Qk3amiXX4=";
hash = "sha256-8XrYOILxxPMFkSjJyFULzFiqF1T63F/PIzPiRevUYws=";
};
patches = [
@@ -23,7 +23,7 @@ maven.buildMavenPackage (finalAttrs: {
./drop-nexus-codehaus-snapshot-plugin-repository.patch
];
mvnHash = "sha256-NWTabR7E3aXkLaERZmolOoWPzERnOT/1q7+DW815p9U=";
mvnHash = "sha256-8HMUvqhvI8dl2E4uPj3qmgwnyY5fAMtbTbXm67P1Wpo=";
nativeBuildInputs = [
maven

View File

@@ -2,7 +2,6 @@
lib,
stdenv,
fetchFromGitHub,
fetchpatch,
fetchurl,
cmake,
ninja,
@@ -17,23 +16,15 @@
stdenv.mkDerivation (finalAttrs: {
pname = "chromaprint";
version = "1.6.0";
version = "1.6.1";
src = fetchFromGitHub {
owner = "acoustid";
repo = "chromaprint";
tag = "v${finalAttrs.version}";
hash = "sha256-G3HIMgbjaAXsC+8nt7mkj58xA62qwA8FC+PfTGblhNg=";
hash = "sha256-Es903zeZ++9/Xb/npUU3rB0V87DVqwT9uTMbQdSzfJI=";
};
patches = [
# fix generated pkg-config files
(fetchpatch {
url = "https://github.com/acoustid/chromaprint/commit/782ef6bb5f6498e35f8e275f76998fbd5ffa36d6.patch";
hash = "sha256-drUfAMzTrqqB5UbzOnfPq6XD3HI+3sxyJJSTCa0BmD8=";
})
];
nativeBuildInputs = [
cmake
ninja

View File

@@ -1,57 +1,51 @@
{
"version": "2.1.238",
"commit": "46283063a4c23f7afadb8440f549264ad93b7c06",
"buildDate": "2026-08-20T15:26:31Z",
"version": "2.1.245",
"commit": "28b7e8c41235a9e2fcb24248e60c4cc2d29c853a",
"buildDate": "2026-08-25T04:08:50Z",
"platforms": {
"darwin-arm64": {
"binary": "claude",
"checksum": "1c196c456373b57818ae87df84aecee96cb659448c0d6a6bbb401ac5758431b2",
"size": 321263536
"checksum": "9f7c2260251765a18d0b35198669dacc1912f6e8129a3b01f6b58d93365ff1f1",
"size": 376109392
},
"darwin-x64": {
"binary": "claude",
"checksum": "d10bc7bb1720435f8830aa3ee74085f09348d2b1a2a152bdee251b770d76cc73",
"size": 329970544
"checksum": "de044bb543e826352f31587a74356e1b2dae94dc1b9c960a362d9f07df96c2a7",
"size": 385137136
},
"linux-arm64": {
"binary": "claude",
"checksum": "28d736120a6b14c5eae1ad1470e73371818c9c2fa41e0b3c7040207aa2d4edee",
"size": 335993064
"checksum": "d0da299303d710a7cc5cdece9629958f5128ce1a727e15463c651ed5cf385c7f",
"size": 389077224
},
"linux-x64": {
"binary": "claude",
"checksum": "0933b286cf94e1b2504b35ac165ab76b8f822735d53371c56393988c23040d58",
"size": 338860336
"checksum": "16ad2b94deaf7b29abed966d981c9991a47af0420f5be8ed4a3f83bea9f678bc",
"size": 391948592
},
"linux-arm64-musl": {
"binary": "claude",
"checksum": "a47d45149ea7c74e4474bce3c7628c4643b0541801b42053d6e26fd5e3203fdd",
"size": 329137944
"checksum": "8707fbe629fdd9876d9c356baa833a697dac76cd9a7157088f667199b8492851",
"size": 382222104
},
"linux-x64-musl": {
"binary": "claude",
"checksum": "33546c2f7947bbfdb46a969123c5329e607c414045cd3645a29aa3cfe023c6ab",
"size": 332988384
"checksum": "d25564bc5d84ec988a762cfe25fe51cb706b96eaec614f704ddbf653ab08ba00",
"size": 386060256
},
"win32-x64": {
"binary": "claude.exe",
"checksum": "223bc058b5aef48138876e28de5d00387e4fd7362a18e733143bf00819c01aab",
"size": 334150816
"checksum": "d1649bf5261792fee7e1a1b63fdd2197082adec36ce9701aa0c1723bdcd2348a",
"size": 384213664
},
"win32-arm64": {
"binary": "claude.exe",
"checksum": "645800d24201c93e5fd6f4308e0292bba9a75900693667401cdffb4361f8e616",
"size": 322051744
"checksum": "9cff8169be24a8b3e59e89e58d9e3d37f3c17ca1b3a149e60666fe53c789d80a",
"size": 372111520
}
},
"sdkCompat": {
"testedWrapperVersions": [
"0.3.201",
"0.3.202",
"0.3.204",
"0.3.205",
"0.3.206",
"0.3.207",
"0.3.208",
"0.3.209",
"0.3.210",
@@ -67,6 +61,8 @@
"0.3.221",
"0.3.222",
"0.3.223",
"0.3.224",
"0.3.225",
"0.3.226",
"0.3.227"
],

View File

@@ -13,12 +13,12 @@
stdenv.mkDerivation (finalAttrs: {
pname = "clboss";
version = "0.16.2";
version = "0.16.3";
# The release tarball includes the pre-generated file `commit_hash.h` that is required for building
src = fetchzip {
url = "https://github.com/ZmnSCPxj/clboss/releases/download/v${finalAttrs.version}/clboss-v${finalAttrs.version}.tar.gz";
hash = "sha256-I83OH+31oqx2FSjzEIsz7uOko3/MbUqjrZ+xZTXxtto=";
hash = "sha256-lniKkyynkyzFBJBRTaPiGTVG9semZDhjpCxjyRDzt/g=";
};
nativeBuildInputs = [

View File

@@ -3,18 +3,19 @@
lib,
autoPatchelfHook,
versionCheckHook,
copyDesktopItems,
desktop-file-utils,
dbus,
dpkg,
fetchurl,
gtk3,
libayatana-appindicator,
libpcap,
makeDesktopItem,
makeWrapper,
nftables,
nss,
openssl,
tpm2-tss,
webkitgtk_4_1,
writeShellApplication,
curl,
jq,
@@ -26,19 +27,21 @@
}:
let
version = "2026.3.846.0";
version = "2026.7.1343.0";
sources = {
x86_64-linux = fetchurl {
url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}_amd64.deb";
hash = "sha256-1SKTK0QW+3CcqBLqHbIsPny/6ekyjZe9qRcjYOMnR58=";
name = "cloudflare-warp_${version}_amd64.deb";
url = "https://downloads.cloudflareclient.com/v1/download/noble-intel/version/${version}";
hash = "sha256-C0u01lhECaHPBDHPIc+yOlDYyHepwCBzJxEaHAV7EF4=";
};
aarch64-linux = fetchurl {
url = "https://pkg.cloudflareclient.com/pool/noble/main/c/cloudflare-warp/cloudflare-warp_${version}_arm64.deb";
hash = "sha256-0zYsyZbX8qq/P+GHW4UHSTy2OsDa4fJAVjHcRbpHtSc=";
name = "cloudflare-warp_${version}_arm64.deb";
url = "https://downloads.cloudflareclient.com/v1/download/noble-arm/version/${version}";
hash = "sha256-NT9VUPzTn7dTKyCn+0v81ekN9EKhzeojR2P096amQTQ=";
};
aarch64-darwin = fetchurl {
url = "https://downloads.cloudflareclient.com/v1/download/macos/version/${version}";
hash = "sha256-cDmoM0nIYYQyurJeeiVSX0IWJdIY0pVLmjIae5mEXI4=";
hash = "sha256-tmUwWC8ejsE2bNhFkMBr5SzCnXLOux+wh3nZ9BBDKd4=";
};
};
in
@@ -64,7 +67,6 @@ stdenv.mkDerivation (finalAttrs: {
versionCheckHook
]
++ lib.optionals (!headless && stdenv.hostPlatform.isLinux) [
copyDesktopItems
desktop-file-utils
];
@@ -74,31 +76,18 @@ stdenv.mkDerivation (finalAttrs: {
libpcap
openssl
nss
tpm2-tss
(lib.getLib stdenv.cc.cc)
]
++ lib.optionals (!headless) [
gtk3
libayatana-appindicator
webkitgtk_4_1
]
);
desktopItems = lib.optionals (!headless) [
(makeDesktopItem {
name = "com.cloudflare.WarpCli";
desktopName = "Cloudflare Zero Trust Team Enrollment";
categories = [
"Utility"
"Security"
"ConsoleOnly"
];
noDisplay = true;
mimeTypes = [ "x-scheme-handler/com.cloudflare.warp" ];
exec = "warp-cli --accept-tos registration token %u";
startupNotify = false;
terminal = true;
})
];
autoPatchelfIgnoreMissingDeps = [
"libjvm.so"
"libpcap.so.0.8"
];
@@ -137,6 +126,9 @@ stdenv.mkDerivation (finalAttrs: {
mv lib/systemd/system $out/lib/systemd/
substituteInPlace $out/lib/systemd/system/warp-svc.service \
--replace-fail "ExecStart=" "ExecStart=$out"
substituteInPlace $out/share/applications/com.cloudflare.WarpTaskbar.desktop \
$out/share/applications/com.cloudflare.warp.desktop \
--replace-fail "Exec=" "Exec=$out"
${lib.optionalString (!headless) ''
substituteInPlace $out/lib/systemd/user/warp-taskbar.service \
--replace-fail "ExecStart=" "ExecStart=$out" \
@@ -155,7 +147,7 @@ stdenv.mkDerivation (finalAttrs: {
rm -r $out/etc
rm -r $out/share/applications
rm -r $out/share/icons
rm -r $out/share/warp
rm -r $out/lib/warp
''}
runHook postInstall
@@ -165,6 +157,7 @@ stdenv.mkDerivation (finalAttrs: {
wrapProgram $out/bin/warp-svc --prefix PATH : ${lib.makeBinPath [ nftables ]}
${lib.optionalString (!headless) ''
wrapProgram $out/bin/warp-cli --prefix PATH : ${lib.makeBinPath [ desktop-file-utils ]}
wrapProgram $out/bin/warp-taskbar --prefix LD_LIBRARY_PATH : $out/lib/warp/lib
''}
'';

View File

@@ -9,18 +9,18 @@
buildGoModule (finalAttrs: {
pname = "cnspec";
version = "13.35.2";
version = "13.36.0";
src = fetchFromGitHub {
owner = "mondoohq";
repo = "cnspec";
tag = "v${finalAttrs.version}";
hash = "sha256-V3fVmIrrbTQhbOMFKmsUHkRADlcPadCi5zwr2WXwzAM=";
hash = "sha256-KDubdJ+OgXRxe2DX/8lDGITdl57ViZ8FPgrNNefKI3I=";
};
proxyVendor = true;
vendorHash = "sha256-WA4O3WITS4QW/yVQ8qcpgvSir77iWG7wRmS5JKML2zw=";
vendorHash = "sha256-2YccHGxnVz/4sHAjmOSSJ+W3tAKVQOPTl0NchKycHjI=";
subPackages = [ "apps/cnspec" ];

View File

@@ -83,7 +83,7 @@ stdenv.mkDerivation (finalAttrs: {
# sandbox does not allow setgid
sed '2i echo Skipping chmod setgid test && exit 77' -i ./tests/chmod/setgid.sh
substituteInPlace ./tests/install/install-C.sh \
--replace 'mode3=2755' 'mode3=1755'
--replace-fail 'mode3=2755' 'mode3=1755'
# Fails on systems with a rootfs. Looks like a bug in the test, see
# https://lists.gnu.org/archive/html/bug-coreutils/2019-12/msg00000.html
@@ -162,6 +162,8 @@ stdenv.mkDerivation (finalAttrs: {
# TODO(@Ericson2314): Investigate whether Darwin could benefit too
++ optional (isCross && stdenv.hostPlatform.libc != "glibc") libiconv;
strictDeps = true;
hardeningDisable = [ "trivialautovarinit" ];
configureFlags = [
@@ -271,6 +273,8 @@ stdenv.mkDerivation (finalAttrs: {
'';
};
__structuredAttrs = true;
meta = {
homepage = "https://www.gnu.org/software/coreutils/";
description = "GNU Core Utilities";

View File

@@ -4,18 +4,29 @@
buildGoModule,
callPackage,
fetchFromGitHub,
fetchpatch,
applyPatches,
lib,
nixosTests,
stdenvNoCC,
}:
let
version = "2024.9.2";
src = fetchFromGitHub {
owner = "cortezaproject";
repo = "corteza";
tag = version;
hash = "sha256-1mekSiRfFSNa/6MSzwRrI3rb9GHABkn3i1b6tX+73fI=";
version = "2024.9.9";
src = applyPatches {
src = fetchFromGitHub {
owner = "cortezaproject";
repo = "corteza";
tag = version;
hash = "sha256-r6/z5yplkT2d1iEhA4S29C1LcbdEJQiOWr0JRP5Pvb0=";
};
patches = [
# CVE-2026-6093
(fetchpatch {
url = "https://github.com/cortezaproject/corteza/commit/64b58b9d7324e77248bacd183fb994ff338091ec.patch";
hash = "sha256-0Ume1zkksS3kwf6QS6T5lDXklAboZVlTt5ZJReqwu3w=";
})
];
};
meta = {
description = "Low-code platform";
@@ -47,13 +58,13 @@ let
};
webApps = lib.mapAttrs mkWebApp {
admin = "sha256-34lfnK2mecvu1Lgg9IM61+fbnqRgZC/Agi7iyugn0fM=";
compose = "sha256-1/Fyl6Z27TtZzNBeerKYNs4VhLWEW3wJyr0SCapzc9E=";
discovery = "sha256-mL+ibAgVFCRV5AvN0VZc4LCCY8hyaIC8gOlgEdXayuU=";
one = "sha256-SuGf72y4PXatZJQgbW5X4mPjtJmQlpwbjfFYCEZElBU=";
privacy = "sha256-yHi6pq0OKCh+2reygNL7TvwULCHwxeD8BXVVMjlnpLc=";
reporter = "sha256-AWKSzULOTdUZ5wdlTo8dJwVGc7RlYbimR4YF4ZAN1pQ=";
workflow = "sha256-cxD2mG4uuO8KT1r2Y4opPlY84Hvqu7cbWh2BSo8CcEc=";
admin = "sha256-fen4KxPbYpH0ikWco1w3Zr+4WeghFITdmsOqHMGa3gA=";
compose = "sha256-UHhyzCeSWTROgzULYkDKN/2hgZ25aDZ7roHTLkt466o=";
discovery = "sha256-GHmALrqLTBie0VTDmZz4zJ9Ls2JYsfV0A3VkRwCKSuQ=";
one = "sha256-GHCtouGYrFgghWlBVbF5rD9cXrAfleVVxVqZtuLOSr0=";
privacy = "sha256-PlmeAJZY/S+osdM650tpJI3XSOanc80WYuMQ6jsiJwQ=";
reporter = "sha256-4O6FEF7Ol4V0FxznKGISaIA0w68XL0E3HvQ8bbt2klE=";
workflow = "sha256-2vyx3lCxICtVlRFLPkpy0fzXZ9W4li9ESm9sJzInc8g=";
};
server-webconsole = callPackage ./buildYarnDistOnly.nix {
@@ -67,8 +78,8 @@ let
corteza-locale = fetchFromGitHub {
owner = "cortezaproject";
repo = "corteza-locale";
rev = "64b6d5d562dce642652db55949231abf8b9af4ef";
sha256 = "sha256-OKr/M91sEDlTwYBiDXwWkShlfazJBm21G0uU429fjW0=";
rev = "57b1f2403207c44055ebce19d95cedd5573f39df";
sha256 = "sha256-j+mfWG6tED8AACkUcRWpol2G05qknTxp8b+kwu7c2NA=";
};
corteza-webapp = stdenvNoCC.mkDerivation (finalAttrs: {
@@ -116,6 +127,7 @@ let
cp -r ${server-webconsole}/* webconsole/dist/
''
+ lib.optionalString withLocales ''
chmod -R u+w pkg/locale/src
cp -r ${corteza-locale}/src/* pkg/locale/src/
'';

View File

@@ -2,7 +2,9 @@
lib,
stdenv,
fetchurl,
fetchpatch,
autoreconfHook,
texinfo,
# for passthru.tests
git,
@@ -20,7 +22,29 @@ stdenv.mkDerivation (finalAttrs: {
hash = "sha256-k3YQuXwymh7JJoVT+3gAN7z/8Nz/6XJevE/ZwaqQdds=";
};
nativeBuildInputs = [ autoreconfHook ];
patches = [
(fetchpatch {
name = "CVE-2026-66484.patch";
url = "https://git.savannah.gnu.org/cgit/cpio.git/patch/?id=e2b9cbdd3354d2b1569b7390d1bc15c1930559ad";
hash = "sha256-WjphVpMaI/ePg8MTZx+vvilKzpRAAzhAFwCwrbsPLRE=";
})
(fetchpatch {
name = "CVE-2026-66485.patch";
url = "https://git.savannah.gnu.org/cgit/cpio.git/patch/?id=3cd514031371d8aeeaf2048aa10103e02831aaa9";
hash = "sha256-YDlROEYYlZERNzzlx1cQD29gV5IrU01aVcZ/sKpWrRo=";
})
(fetchpatch {
name = "CVE-2026-66486.patch";
url = "https://git.savannah.gnu.org/cgit/cpio.git/patch/?id=2ff9600c9ef32e88759843cdbde74c8db5ae9b30";
excludes = [ "NEWS" ];
hash = "sha256-qi9/9xhKnIyPpji63RgzbnnHZsJgwRnQVMaMiLxQipk=";
})
];
nativeBuildInputs = [
autoreconfHook
texinfo # for makeinfo
];
separateDebugInfo = true;

View File

@@ -1,33 +0,0 @@
From 8be99f5972826c25378bccb9fbd7291623c7b2a7 Mon Sep 17 00:00:00 2001
From: Moraxyc <i@qaq.li>
Date: Fri, 9 May 2025 13:39:17 +0800
Subject: [PATCH] Compatibility with boost 1.83
---
boost/network/protocol/http/server/impl/parsers.ipp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/boost/network/protocol/http/server/impl/parsers.ipp b/boost/network/protocol/http/server/impl/parsers.ipp
index c31e60e..3272c2f 100755
--- a/boost/network/protocol/http/server/impl/parsers.ipp
+++ b/boost/network/protocol/http/server/impl/parsers.ipp
@@ -13,6 +13,7 @@
#include <tuple>
#include <boost/fusion/include/std_tuple.hpp>
#include <boost/network/protocol/http/message/header.hpp>
+#include <boost/regex/pending/unicode_iterator.hpp>
#ifdef BOOST_NETWORK_NO_LIB
#ifndef BOOST_NETWORK_INLINE
@@ -32,7 +33,7 @@ typedef std::basic_string<uint32_t> u32_string;
template <> // <typename Attrib, typename T, typename Enable>
struct assign_to_container_from_value<std::string, u32_string, void> {
static void call(u32_string const& val, std::string& attr) {
- u32_to_u8_iterator<u32_string::const_iterator> begin = val.begin(),
+ boost::u32_to_u8_iterator<u32_string::const_iterator> begin = val.begin(),
end = val.end();
for (; begin != end; ++begin) attr += *begin;
}
--
2.48.1

View File

@@ -1,62 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
boost186,
openssl,
llvmPackages_18,
}:
let
# std::char_traits has been removed
stdenvForCppNetlib = if stdenv.hostPlatform.isDarwin then llvmPackages_18.stdenv else stdenv;
in
stdenvForCppNetlib.mkDerivation rec {
pname = "cpp-netlib";
version = "0.13.0-final";
src = fetchFromGitHub {
owner = "cpp-netlib";
repo = "cpp-netlib";
tag = "cpp-netlib-${version}";
sha256 = "18782sz7aggsl66b4mmi1i0ijwa76iww337fi9sygnplz2hs03a3";
fetchSubmodules = true;
};
patches = [
# 'u32_to_u8_iterator' was not declared
./0001-Compatibility-with-boost-1.83.patch
];
# CMake 2.8 is deprecated and is no longer supported by CMake > 4
# https://github.com/NixOS/nixpkgs/issues/445447
postPatch = ''
substituteInPlace CMakeLists.txt --replace-fail \
"cmake_minimum_required(VERSION 2.8)" \
"cmake_minimum_required(VERSION 3.10)"
'';
nativeBuildInputs = [ cmake ];
buildInputs = [
# io_service.hpp has been removed in boost 1.87+
boost186
openssl
];
cmakeFlags = [
"-DCPP-NETLIB_BUILD_SHARED_LIBS=ON"
# fatal error: 'boost/asio/stream_socket_service.hpp' file not found
"-DCPP-NETLIB_BUILD_EXAMPLES=OFF"
"-DCPP-NETLIB_BUILD_TESTS=OFF"
];
# Most tests make network GET requests to various websites
doCheck = false;
meta = {
description = "Collection of open-source libraries for high level network programming";
homepage = "https://cpp-netlib.org";
license = lib.licenses.boost;
platforms = lib.platforms.all;
};
}

View File

@@ -17,13 +17,13 @@
buildGoModule (finalAttrs: {
pname = "cri-o";
version = "1.36.3";
version = "1.36.4";
src = fetchFromGitHub {
owner = "cri-o";
repo = "cri-o";
tag = "v${finalAttrs.version}";
hash = "sha256-AhsSi79HUbNvPoa7duOl9290ZjKss2a6RLvRPHDh6Sg=";
hash = "sha256-GgjOY+TE9RcLjy9aSu8Um0Zdzd0juxbTaoT8ljThqws=";
};
vendorHash = null;

View File

@@ -14,13 +14,13 @@
buildDotnetModule rec {
pname = "crossmacro-daemon";
version = "1.2.1";
version = "1.3.1";
src = fetchFromGitHub {
owner = "alper-han";
repo = "CrossMacro";
tag = "v${version}";
hash = "sha256-lMXp7ItwpZ14ATRKuR7Q8/FhfMNQ+YCgHL13oj6iBNs=";
hash = "sha256-2L25A2OO2Ju6n1QlblNBtKva1PfbidFz/QESjLBVuSU=";
};
projectFile = "src/CrossMacro.Daemon/CrossMacro.Daemon.csproj";
@@ -44,7 +44,16 @@ buildDotnetModule rec {
zlib
];
dotnetFlags = [ "-p:Version=${version}" ];
dotnetFlags = [
"-p:PublishAot=true"
"-p:PublishReadyToRun=false"
"-p:OptimizationPreference=Speed"
"-p:StripSymbols=true"
"-p:IlcTrimMetadata=true"
"-p:DebugType=None"
"-p:DebugSymbols=false"
"-p:Version=${version}"
];
postInstall = ''
install -Dm644 scripts/assets/io.github.alper_han.crossmacro.policy \

View File

@@ -25,7 +25,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "cryptsetup";
version = "2.8.6";
version = "2.8.7";
outputs = [
"bin"
@@ -39,7 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
url =
"mirror://kernel/linux/utils/cryptsetup/v${lib.versions.majorMinor finalAttrs.version}/"
+ "cryptsetup-${finalAttrs.version}.tar.xz";
hash = "sha256-gAQmX9mTiF0I97Yz2+BWhR3hohAwdhOk693HQ/zO/lo=";
hash = "sha256-53bw04HobKYQQsRXBpSR/o4KwoZ4DHw7Hk+ZIavJYdo=";
};
patches = [

View File

@@ -33,11 +33,5 @@ buildDotnetGlobalTool (finalAttrs: {
license = lib.licenses.mit;
platforms = lib.platforms.unix;
maintainers = with lib.maintainers; [ GaetanLepage ];
badPlatforms = [
# Crashes immediately at runtime
# terminated by signal SIGKILL (Forced quit)
# https://github.com/razzmatazz/csharp-language-server/issues/211
"aarch64-darwin"
];
};
})

View File

@@ -19,11 +19,15 @@ stdenv.mkDerivation (finalAttrs: {
];
buildInputs = [ libtool ];
strictDeps = true;
src = fetchurl {
url = "mirror://sourceforge/cunit/CUnit/${finalAttrs.version}/CUnit-${finalAttrs.version}.tar.bz2";
sha256 = "057j82da9vv4li4z5ri3227ybd18nzyq81f6gsvhifs5z0vr3cpm";
};
__structuredAttrs = true;
meta = {
description = "Unit Testing Framework for C";

View File

@@ -14,7 +14,6 @@
systemdLibs,
acl,
gmp,
darwin,
libusb1 ? null,
gnutls ? null,
avahi ? null,
@@ -40,6 +39,7 @@ stdenv.mkDerivation (finalAttrs: {
"lib"
"dev"
"man"
"doc"
];
postPatch = ''

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