Merge branch 'master' into current
This commit is contained in:
@@ -5471,12 +5471,6 @@
|
||||
name = "Dima";
|
||||
keys = [ { fingerprint = "1C4E F4FE 7F8E D8B7 1E88 CCDF BAB1 D15F B7B4 D4CE"; } ];
|
||||
};
|
||||
d-xo = {
|
||||
email = "hi@d-xo.org";
|
||||
github = "d-xo";
|
||||
githubId = 6689924;
|
||||
name = "David Terry";
|
||||
};
|
||||
d3vil0p3r = {
|
||||
name = "Antonio Voza";
|
||||
email = "vozaanthony@gmail.com";
|
||||
|
||||
@@ -120,6 +120,10 @@
|
||||
|
||||
- `services.ntpd-rs` now performs configuration validation.
|
||||
|
||||
- `services.postsrsd` now automatically integrates with the local Postfix instance, when enabled. This behavior can disabled using the [services.postsrsd.configurePostfix](#opt-services.postsrsd.configurePostfix) option.
|
||||
|
||||
- `services.pfix-srsd` now automatically integrates with the local Postfix instance, when enabled. This behavior can disabled using the [services.pfix-srsd.configurePostfix](#opt-services.pfix-srsd.configurePostfix) option.
|
||||
|
||||
- `services.monero` now includes the `environmentFile` option for adding secrets to the Monero daemon config.
|
||||
|
||||
- `amdgpu` kernel driver overdrive mode can now be enabled by setting [hardware.amdgpu.overdrive.enable](#opt-hardware.amdgpu.overdrive.enable) and customized through [hardware.amdgpu.overdrive.ppfeaturemask](#opt-hardware.amdgpu.overdrive.ppfeaturemask).
|
||||
|
||||
@@ -4,6 +4,10 @@
|
||||
pkgs,
|
||||
...
|
||||
}:
|
||||
|
||||
let
|
||||
cfg = config.services.pfix-srsd;
|
||||
in
|
||||
{
|
||||
|
||||
###### interface
|
||||
@@ -32,27 +36,46 @@
|
||||
type = lib.types.path;
|
||||
default = "/var/lib/pfix-srsd/secrets";
|
||||
};
|
||||
|
||||
configurePostfix = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to configure the required settings to use pfix-srsd in the local Postfix instance.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
###### implementation
|
||||
|
||||
config = lib.mkIf config.services.pfix-srsd.enable {
|
||||
environment = {
|
||||
systemPackages = [ pkgs.pfixtools ];
|
||||
};
|
||||
|
||||
systemd.services.pfix-srsd = {
|
||||
description = "Postfix sender rewriting scheme daemon";
|
||||
before = [ "postfix.service" ];
|
||||
#note that we use requires rather than wants because postfix
|
||||
#is unable to process (almost) all mail without srsd
|
||||
requiredBy = [ "postfix.service" ];
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
PIDFile = "/run/pfix-srsd.pid";
|
||||
ExecStart = "${pkgs.pfixtools}/bin/pfix-srsd -p /run/pfix-srsd.pid -I ${config.services.pfix-srsd.domain} ${config.services.pfix-srsd.secretsFile}";
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf (cfg.enable && cfg.configurePostfix && config.services.postfix.enable) {
|
||||
services.postfix.config = {
|
||||
sender_canonical_maps = [ "tcp:127.0.0.1:10001" ];
|
||||
sender_canonical_classes = [ "envelope_sender" ];
|
||||
recipient_canonical_maps = [ "tcp:127.0.0.1:10002" ];
|
||||
recipient_canonical_classes = [ "envelope_recipient" ];
|
||||
};
|
||||
};
|
||||
};
|
||||
})
|
||||
|
||||
(lib.mkIf cfg.enable {
|
||||
environment = {
|
||||
systemPackages = [ pkgs.pfixtools ];
|
||||
};
|
||||
|
||||
systemd.services.pfix-srsd = {
|
||||
description = "Postfix sender rewriting scheme daemon";
|
||||
before = [ "postfix.service" ];
|
||||
#note that we use requires rather than wants because postfix
|
||||
#is unable to process (almost) all mail without srsd
|
||||
requiredBy = [ "postfix.service" ];
|
||||
serviceConfig = {
|
||||
Type = "forking";
|
||||
PIDFile = "/run/pfix-srsd.pid";
|
||||
ExecStart = "${pkgs.pfixtools}/bin/pfix-srsd -p /run/pfix-srsd.pid -I ${config.services.pfix-srsd.domain} ${config.services.pfix-srsd.secretsFile}";
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
}
|
||||
|
||||
@@ -785,12 +785,6 @@ in
|
||||
description = "Maps to be compiled and placed into /var/lib/postfix/conf.";
|
||||
};
|
||||
|
||||
useSrs = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable sender rewriting scheme";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
@@ -808,8 +802,6 @@ in
|
||||
systemPackages = [ pkgs.postfix ];
|
||||
};
|
||||
|
||||
services.pfix-srsd.enable = config.services.postfix.useSrs;
|
||||
|
||||
services.mail.sendmailSetuidWrapper = lib.mkIf config.services.postfix.setSendmail {
|
||||
program = "sendmail";
|
||||
source = "${pkgs.postfix}/bin/sendmail";
|
||||
@@ -1002,12 +994,6 @@ in
|
||||
] ++ lib.optional haveAliases "$alias_maps";
|
||||
}
|
||||
// lib.optionalAttrs (cfg.dnsBlacklists != [ ]) { smtpd_client_restrictions = clientRestrictions; }
|
||||
// lib.optionalAttrs cfg.useSrs {
|
||||
sender_canonical_maps = [ "tcp:127.0.0.1:10001" ];
|
||||
sender_canonical_classes = [ "envelope_sender" ];
|
||||
recipient_canonical_maps = [ "tcp:127.0.0.1:10002" ];
|
||||
recipient_canonical_classes = [ "envelope_recipient" ];
|
||||
}
|
||||
// lib.optionalAttrs cfg.enableHeaderChecks {
|
||||
header_checks = [ "regexp:/etc/postfix/header_checks" ];
|
||||
}
|
||||
@@ -1190,5 +1176,6 @@ in
|
||||
[ "services" "postfix" "config" "smtp_tls_security_level" ]
|
||||
(config: lib.mkIf config.services.postfix.useDane "dane")
|
||||
)
|
||||
(lib.mkRenamedOptionModule [ "services" "postfix" "useSrs" ] [ "services" "pfix-srsd" "enable" ])
|
||||
];
|
||||
}
|
||||
|
||||
@@ -2,37 +2,67 @@
|
||||
config,
|
||||
lib,
|
||||
pkgs,
|
||||
utils,
|
||||
...
|
||||
}:
|
||||
let
|
||||
|
||||
cfg = config.services.postsrsd;
|
||||
runtimeDirectoryName = "postsrsd";
|
||||
runtimeDirectory = "/run/${runtimeDirectoryName}";
|
||||
# TODO: follow RFC 42, but we need a libconfuse format first:
|
||||
# https://github.com/NixOS/nixpkgs/issues/401565
|
||||
# Arrays in `libconfuse` look like this: {"Life", "Universe", "Everything"}
|
||||
# See https://www.nongnu.org/confuse/tutorial-html/ar01s03.html.
|
||||
#
|
||||
# Note: We're using `builtins.toJSON` to escape strings, but JSON strings
|
||||
# don't have exactly the same semantics as libconfuse strings. For example,
|
||||
# "${F}" gets treated as an env var reference, see above issue for details.
|
||||
libconfuseDomains = "{ " + lib.concatMapStringsSep ", " builtins.toJSON cfg.domains + " }";
|
||||
configFile = pkgs.writeText "postsrsd.conf" ''
|
||||
secrets-file = "''${CREDENTIALS_DIRECTORY}/secrets-file"
|
||||
domains = ${libconfuseDomains}
|
||||
separator = "${cfg.separator}"
|
||||
socketmap = "unix:${cfg.socketPath}"
|
||||
|
||||
# Disable postsrsd's jailing in favor of confinement with systemd.
|
||||
unprivileged-user = ""
|
||||
chroot-dir = ""
|
||||
'';
|
||||
inherit (lib)
|
||||
concatMapStringsSep
|
||||
concatMapAttrsStringSep
|
||||
isBool
|
||||
isFloat
|
||||
isInt
|
||||
isPath
|
||||
isString
|
||||
isList
|
||||
mkEnableOption
|
||||
mkPackageOption
|
||||
mkRemovedOptionModule
|
||||
mkRenamedOptionModule
|
||||
;
|
||||
|
||||
# This is a implementation of a simple libconfuse config renderer sufficient
|
||||
# for the postsrsd configuration file complexity.
|
||||
# TODO: Replace with pkgs.formats.libconfuse, once implemented (https://github.com/NixOS/nixpkgs/issues/401565)
|
||||
renderValue =
|
||||
value:
|
||||
if isBool value then
|
||||
if value then "true" else "false"
|
||||
else if isString value || isPath value then
|
||||
builtins.toJSON value # for escaping
|
||||
else if isInt value || isFloat value then
|
||||
toString value
|
||||
else if isList value then
|
||||
"{${concatMapStringsSep "," renderValue value}}"
|
||||
else
|
||||
throw "postsrsd: unsupported value type in settings option";
|
||||
|
||||
renderAttr =
|
||||
attrs: concatMapAttrsStringSep "\n" (name: value: "${name} = ${renderValue value}") attrs;
|
||||
|
||||
configFile = pkgs.writeText "postsrsd.conf" (
|
||||
renderAttr (lib.filterAttrsRecursive (_: v: v != null) cfg.settings)
|
||||
);
|
||||
in
|
||||
{
|
||||
imports =
|
||||
map
|
||||
[
|
||||
(mkRemovedOptionModule [ "services" "postsrsd" "socketPath" ] ''
|
||||
Configure/reference `services.postsrsd.settings.socketmap` instead. Note that its now required to start with the `inet:` or `unix:` prefix.
|
||||
'')
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "postsrsd" "domains" ]
|
||||
[ "services" "postsrsd" "settings" "domains" ]
|
||||
)
|
||||
(mkRenamedOptionModule
|
||||
[ "services" "postsrsd" "separator" ]
|
||||
[ "services" "postsrsd" "settings" "separator" ]
|
||||
)
|
||||
]
|
||||
++ map
|
||||
(
|
||||
name:
|
||||
lib.mkRemovedOptionModule [ "services" "postsrsd" name ] ''
|
||||
@@ -53,33 +83,140 @@ in
|
||||
|
||||
options = {
|
||||
services.postsrsd = {
|
||||
enable = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = false;
|
||||
description = "Whether to enable the postsrsd SRS server for Postfix.";
|
||||
};
|
||||
enable = mkEnableOption "the postsrsd SRS server for Postfix.";
|
||||
|
||||
package = mkPackageOption pkgs "postsrsd" { };
|
||||
|
||||
secretsFile = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "/var/lib/postsrsd/postsrsd.secret";
|
||||
description = "Secret keys used for signing and verification";
|
||||
description = ''
|
||||
Secret keys used for signing and verification.
|
||||
|
||||
::: {.note}
|
||||
The secret will be generated, if it does not exist at the given path.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
domains = lib.mkOption {
|
||||
type = lib.types.listOf lib.types.str;
|
||||
description = "Domain names for rewrite";
|
||||
default = [ config.networking.hostName ];
|
||||
defaultText = lib.literalExpression "[ config.networking.hostName ]";
|
||||
settings = lib.mkOption {
|
||||
type = lib.types.submodule {
|
||||
freeformType =
|
||||
with lib.types;
|
||||
attrsOf (oneOf [
|
||||
bool
|
||||
float
|
||||
int
|
||||
path
|
||||
str
|
||||
(listOf str)
|
||||
]);
|
||||
|
||||
options = {
|
||||
domains = lib.mkOption {
|
||||
type = with lib.types; listOf str;
|
||||
default = [ ];
|
||||
example = [ "example.com" ];
|
||||
description = ''
|
||||
List of local domains, that do not require rewriting.
|
||||
'';
|
||||
};
|
||||
|
||||
secrets-file = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "\${CREDENTIALS_DIRECTORY}/secrets-file";
|
||||
readOnly = true;
|
||||
description = ''
|
||||
Path to the file containing the secret keys.
|
||||
|
||||
::: {.note}
|
||||
Secrets are passed using `LoadCredential=` on the systemd unit,
|
||||
so this options is read-only.
|
||||
|
||||
Configure {option}`services.postsrsd.secretsFile` instead.
|
||||
'';
|
||||
};
|
||||
|
||||
separator = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"-"
|
||||
"="
|
||||
"+"
|
||||
];
|
||||
default = "=";
|
||||
description = ''
|
||||
SRS tag separator used in generated sender addresses.
|
||||
|
||||
Unless you have a very good reason, you should leave this
|
||||
setting at its default.
|
||||
'';
|
||||
};
|
||||
|
||||
srs-domain = lib.mkOption {
|
||||
type = with lib.types; nullOr str;
|
||||
default = null;
|
||||
example = "srs.example.com";
|
||||
description = ''
|
||||
Dedicated mail domain used for ephemeral SRS envelope addresses.
|
||||
|
||||
Recommended to configure, when hosting multiple unrelated mail
|
||||
domains (e.g. for different customers), to prevent privacy
|
||||
issues.
|
||||
|
||||
Set to `null` to not configure any `srs-domain`.
|
||||
'';
|
||||
};
|
||||
|
||||
socketmap = lib.mkOption {
|
||||
type = lib.types.strMatching "^(unix|inet):.+";
|
||||
default = "unix:/run/postsrsd/socket";
|
||||
example = "inet:localhost:10003";
|
||||
description = ''
|
||||
Listener configuration in socket map format native to Postfix configuration.
|
||||
'';
|
||||
};
|
||||
|
||||
chroot-dir = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
readOnly = true;
|
||||
description = ''
|
||||
Path to chroot into at runtime as an additional layer of protection.
|
||||
|
||||
::: {.note}
|
||||
We confine the runtime environment through systemd hardening instead, so this option is read-only.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
|
||||
unprivileged-user = lib.mkOption {
|
||||
type = lib.types.str;
|
||||
default = "";
|
||||
readOnly = true;
|
||||
description = ''
|
||||
Unprivileged user to drop privileges to.
|
||||
|
||||
::: {.note}
|
||||
Our systemd unit never runs postsrsd as a privileged process, so this option is read-only.
|
||||
:::
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
default = { };
|
||||
description = ''
|
||||
Configuration options for the postsrsd.conf file.
|
||||
|
||||
See the [example configuration](https://github.com/roehling/postsrsd/blob/${cfg.package.version}/doc/postsrsd.conf) for possible values.
|
||||
'';
|
||||
};
|
||||
|
||||
separator = lib.mkOption {
|
||||
type = lib.types.enum [
|
||||
"-"
|
||||
"="
|
||||
"+"
|
||||
];
|
||||
default = "=";
|
||||
description = "First separator character in generated addresses";
|
||||
configurePostfix = lib.mkOption {
|
||||
type = lib.types.bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to configure the required settings to use postsrsd in the local Postfix instance.
|
||||
'';
|
||||
};
|
||||
|
||||
user = lib.mkOption {
|
||||
@@ -93,66 +230,120 @@ in
|
||||
default = "postsrsd";
|
||||
description = "Group for the daemon";
|
||||
};
|
||||
|
||||
socketPath = lib.mkOption {
|
||||
type = lib.types.path;
|
||||
default = "${runtimeDirectory}/socket";
|
||||
readOnly = true;
|
||||
description = ''
|
||||
Path to the Unix socket for connecting to postsrsd.
|
||||
Read-only, intended for usage when integrating postsrsd into other NixOS config.'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
config = lib.mkIf cfg.enable {
|
||||
users.users = lib.optionalAttrs (cfg.user == "postsrsd") {
|
||||
postsrsd = {
|
||||
group = cfg.group;
|
||||
uid = config.ids.uids.postsrsd;
|
||||
config = lib.mkMerge [
|
||||
(lib.mkIf (cfg.enable && cfg.configurePostfix && config.services.postfix.enable) {
|
||||
services.postfix.config = {
|
||||
# https://github.com/roehling/postsrsd#configuration
|
||||
sender_canonical_maps = "socketmap:${cfg.settings.socketmap}:forward";
|
||||
sender_canonical_classes = "envelope_sender";
|
||||
recipient_canonical_maps = "socketmap:${cfg.settings.socketmap}:reverse";
|
||||
recipient_canonical_classes = [
|
||||
"envelope_recipient"
|
||||
"header_recipient"
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
users.groups = lib.optionalAttrs (cfg.group == "postsrsd") {
|
||||
postsrsd.gid = config.ids.gids.postsrsd;
|
||||
};
|
||||
users.users.postfix.extraGroups = [ cfg.group ];
|
||||
})
|
||||
|
||||
systemd.services.postsrsd-generate-secrets = {
|
||||
path = [ pkgs.coreutils ];
|
||||
script = ''
|
||||
if [ -e "${cfg.secretsFile}" ]; then
|
||||
echo "Secrets file exists. Nothing to do!"
|
||||
else
|
||||
echo "WARNING: secrets file not found, autogenerating!"
|
||||
DIR="$(dirname "${cfg.secretsFile}")"
|
||||
install -m 750 -o ${cfg.user} -g ${cfg.group} -d "$DIR"
|
||||
install -m 600 -o ${cfg.user} -g ${cfg.group} <(dd if=/dev/random bs=18 count=1 | base64) "${cfg.secretsFile}"
|
||||
fi
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
(lib.mkIf cfg.enable {
|
||||
users.users = lib.optionalAttrs (cfg.user == "postsrsd") {
|
||||
postsrsd = {
|
||||
group = cfg.group;
|
||||
uid = config.ids.uids.postsrsd;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.postsrsd = {
|
||||
description = "PostSRSd SRS rewriting server";
|
||||
after = [
|
||||
"network.target"
|
||||
"postsrsd-generate-secrets.service"
|
||||
];
|
||||
before = [ "postfix.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "postsrsd-generate-secrets.service" ];
|
||||
confinement.enable = true;
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = "${lib.getExe pkgs.postsrsd} -C ${configFile}";
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
PermissionsStartOnly = true;
|
||||
RuntimeDirectory = runtimeDirectoryName;
|
||||
LoadCredential = "secrets-file:${cfg.secretsFile}";
|
||||
users.groups = lib.optionalAttrs (cfg.group == "postsrsd") {
|
||||
postsrsd.gid = config.ids.gids.postsrsd;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
systemd.services.postsrsd-generate-secrets = {
|
||||
path = [ pkgs.coreutils ];
|
||||
script = ''
|
||||
if [ -e "${cfg.secretsFile}" ]; then
|
||||
echo "Secrets file exists. Nothing to do!"
|
||||
else
|
||||
echo "WARNING: secrets file not found, autogenerating!"
|
||||
DIR="$(dirname "${cfg.secretsFile}")"
|
||||
install -m 750 -o ${cfg.user} -g ${cfg.group} -d "$DIR"
|
||||
install -m 600 -o ${cfg.user} -g ${cfg.group} <(dd if=/dev/random bs=18 count=1 | base64) "${cfg.secretsFile}"
|
||||
fi
|
||||
'';
|
||||
serviceConfig = {
|
||||
Type = "oneshot";
|
||||
};
|
||||
};
|
||||
|
||||
environment.etc."postsrsd.conf".source = configFile;
|
||||
|
||||
systemd.services.postsrsd = {
|
||||
description = "PostSRSd SRS rewriting server";
|
||||
after = [
|
||||
"network.target"
|
||||
"postsrsd-generate-secrets.service"
|
||||
];
|
||||
before = [ "postfix.service" ];
|
||||
wantedBy = [ "multi-user.target" ];
|
||||
requires = [ "postsrsd-generate-secrets.service" ];
|
||||
restartTriggers = [ configFile ];
|
||||
|
||||
serviceConfig = {
|
||||
ExecStart = utils.escapeSystemdExecArgs [
|
||||
(lib.getExe cfg.package)
|
||||
"-C"
|
||||
"/etc/postsrsd.conf"
|
||||
];
|
||||
User = cfg.user;
|
||||
Group = cfg.group;
|
||||
RuntimeDirectory = "postsrsd";
|
||||
RuntimeDirectoryMode = "0750";
|
||||
LoadCredential = "secrets-file:${cfg.secretsFile}";
|
||||
|
||||
CapabilityBoundingSet = [ "" ];
|
||||
LockPersonality = true;
|
||||
MemoryDenyWriteExecute = true;
|
||||
NoNewPrivileges = true;
|
||||
PrivateDevices = true;
|
||||
PrivateMounts = true;
|
||||
PrivateNetwork = lib.hasPrefix "unix:" cfg.settings.socketmap;
|
||||
PrivateTmp = true;
|
||||
PrivateUsers = true;
|
||||
ProtectControlGroups = true;
|
||||
ProtectHome = true;
|
||||
ProtectHostname = true;
|
||||
ProtectKernelLogs = true;
|
||||
ProtectKernelModules = true;
|
||||
ProtectKernelTunables = true;
|
||||
ProtectSystem = "strict";
|
||||
ProtectProc = "invisible";
|
||||
ProcSubset = "pid";
|
||||
RemoveIPC = true;
|
||||
RestrictAddressFamilies =
|
||||
if lib.hasPrefix "unix:" cfg.settings.socketmap then
|
||||
[ "AF_UNIX" ]
|
||||
else
|
||||
[
|
||||
"AF_INET"
|
||||
"AF_INET6"
|
||||
];
|
||||
RestrictNamespaces = true;
|
||||
RestrictRealtime = true;
|
||||
RestrictSUIDSGID = true;
|
||||
SystemCallArchitectures = "native";
|
||||
SystemCallFilter = [
|
||||
"@system-service"
|
||||
"~@privileged @resources"
|
||||
];
|
||||
UMask = "0027";
|
||||
};
|
||||
};
|
||||
})
|
||||
];
|
||||
|
||||
# package version referenced in option documentation
|
||||
meta.buildDocsInSandbox = false;
|
||||
}
|
||||
|
||||
@@ -171,14 +171,6 @@ let
|
||||
quic_bpf on;
|
||||
''}
|
||||
|
||||
${optionalString cfg.experimentalZstdSettings ''
|
||||
zstd on;
|
||||
zstd_comp_level 9;
|
||||
zstd_min_length 256;
|
||||
zstd_static on;
|
||||
zstd_types ${lib.concatStringsSep " " compressMimeTypes};
|
||||
''}
|
||||
|
||||
${cfg.config}
|
||||
|
||||
${optionalString (cfg.eventsConfig != "" || cfg.config == "") ''
|
||||
@@ -250,7 +242,7 @@ let
|
||||
''
|
||||
}
|
||||
|
||||
${optionalString cfg.recommendedZstdSettings ''
|
||||
${optionalString cfg.experimentalZstdSettings ''
|
||||
zstd on;
|
||||
zstd_comp_level 9;
|
||||
zstd_min_length 256;
|
||||
|
||||
@@ -5,7 +5,6 @@ let
|
||||
in
|
||||
{
|
||||
name = "bazarr";
|
||||
meta.maintainers = with lib.maintainers; [ d-xo ];
|
||||
|
||||
nodes.machine =
|
||||
{ pkgs, ... }:
|
||||
|
||||
@@ -18,9 +18,6 @@ import ../make-test-python.nix (
|
||||
in
|
||||
{
|
||||
name = "wg-quick";
|
||||
meta = with pkgs.lib.maintainers; {
|
||||
maintainers = [ d-xo ];
|
||||
};
|
||||
|
||||
nodes = {
|
||||
peer0 = peer {
|
||||
|
||||
@@ -89,6 +89,11 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
./force-enable-libheif.patch
|
||||
];
|
||||
|
||||
# error: possibly undefined macro: AM_NLS
|
||||
preAutoreconf = ''
|
||||
cp ${gettext}/share/gettext/m4/nls.m4 m4macros
|
||||
'';
|
||||
|
||||
nativeBuildInputs =
|
||||
[
|
||||
autoreconfHook # hardcode-plugin-interpreters.patch changes Makefile.am
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation {
|
||||
pname = "airwindows";
|
||||
version = "0-unstable-2025-06-28";
|
||||
version = "0-unstable-2025-07-06";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "airwindows";
|
||||
repo = "airwindows";
|
||||
rev = "8aedc304ed6fd44dd170cbfc6a43a3f138835af9";
|
||||
hash = "sha256-pQOuhXypo55GqsoCmhpjQkSIsEOVL7y6xqmMqP8yzqI=";
|
||||
rev = "4a19d80d3d2a64a8773ca319a5002ac5eefbf69c";
|
||||
hash = "sha256-aMPe1D1/hIVY4DGKzmX/HUO04pZVBtivhVzoeG02emY=";
|
||||
};
|
||||
|
||||
# we patch helpers because honestly im spooked out by where those variables
|
||||
|
||||
@@ -66,7 +66,6 @@ stdenv.mkDerivation rec {
|
||||
homepage = "https://www.bazarr.media/";
|
||||
sourceProvenance = with sourceTypes; [ binaryNativeCode ];
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [ d-xo ];
|
||||
mainProgram = "bazarr";
|
||||
platforms = platforms.all;
|
||||
};
|
||||
|
||||
@@ -43,7 +43,6 @@ buildNpmPackage rec {
|
||||
homepage = "https://github.com/janoside/btc-rpc-explorer";
|
||||
license = lib.licenses.mit;
|
||||
mainProgram = "btc-rpc-explorer";
|
||||
maintainers = with lib.maintainers; [ d-xo ];
|
||||
broken = true;
|
||||
# At 2024-06-29
|
||||
# https://hydra.nixos.org/build/264232177/nixlog/1
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-llvm-lines";
|
||||
version = "0.4.42";
|
||||
version = "0.4.43";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "dtolnay";
|
||||
repo = "cargo-llvm-lines";
|
||||
rev = version;
|
||||
hash = "sha256-qKdxnISussiyp1ylahS7qOdMfOGwJnlbWrgEHf/L2y0=";
|
||||
hash = "sha256-fYoVPm3RxR1LZ8wJQpXQG3g69Fh7LLFwXZXmj+kr8zc=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-Ppuc6Dx3Y4JJ8doEJPCbwnD1+dQSLRuPdWfab+3q2Ug=";
|
||||
cargoHash = "sha256-yhZ2MKswFvzkMamI9np7CRsQO4D/sldumaLPzSNsHgA=";
|
||||
|
||||
meta = with lib; {
|
||||
description = "Count the number of lines of LLVM IR across all instantiations of a generic function";
|
||||
|
||||
@@ -7,17 +7,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-nextest";
|
||||
version = "0.9.99";
|
||||
version = "0.9.100";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nextest-rs";
|
||||
repo = "nextest";
|
||||
rev = "cargo-nextest-${version}";
|
||||
hash = "sha256-I1m4dURisTa4qwUilb8s8bvTsfMSodbZQxRlNDViFeM=";
|
||||
hash = "sha256-MbgX/n6TC5hz66gvRAc7A0xFWbF2Ec68gMxCgPFpeoQ=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-f75yHVvxC+QhNmn1PUafviONLjrXhcNmMitFU06yAaQ=";
|
||||
cargoHash = "sha256-jRBFjJB38JI9whFpImYlMx0znQj1+cdeu4Nc+nYc7OI=";
|
||||
|
||||
cargoBuildFlags = [
|
||||
"-p"
|
||||
|
||||
@@ -6,15 +6,15 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "cargo-tally";
|
||||
version = "1.0.65";
|
||||
version = "1.0.66";
|
||||
|
||||
src = fetchCrate {
|
||||
inherit pname version;
|
||||
hash = "sha256-cvMB/hMq0LCfuXHX1Gg0c3i69T1uQWKIddUru5dcg7g=";
|
||||
hash = "sha256-PC/gscMO7oYcsd/cVcP5WZYweWRsh23Z7Do/qeGjAOc=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-ReVLeyQY08i1sH6IujeLK8y1+PfPm8BoYInzbTHHnlw=";
|
||||
cargoHash = "sha256-00J8ip2fr/nphY0OXVOLKv7gaHitMziwsdJ4YBaYxog=";
|
||||
|
||||
meta = {
|
||||
description = "Graph the number of crates that depend on your crate over time";
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
lib,
|
||||
rustPlatform,
|
||||
fetchFromGitHub,
|
||||
stdenv,
|
||||
versionCheckHook,
|
||||
nix-update-script,
|
||||
}:
|
||||
@@ -20,6 +21,8 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-1u3oUbqhwHXD90ld70pjK2XPJe5hpUbJtU78QpIjAE8=";
|
||||
|
||||
env = lib.optionalAttrs stdenv.hostPlatform.isStatic { RUSTFLAGS = "-C relocation-model=static"; };
|
||||
|
||||
# skip flaky tests
|
||||
checkFlags = [ "--skip=options::tests::test_detect_display_width" ];
|
||||
|
||||
|
||||
@@ -67,7 +67,6 @@ buildGoModule {
|
||||
gpl3Plus
|
||||
];
|
||||
maintainers = with maintainers; [
|
||||
d-xo
|
||||
happysalada
|
||||
];
|
||||
};
|
||||
|
||||
@@ -6,17 +6,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "esp-generate";
|
||||
version = "0.4.0";
|
||||
version = "0.5.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "esp-rs";
|
||||
repo = "esp-generate";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-4RF0XcDpUcMQ0u2FTRBnZdQDM7DlaI7pl5HukMbbbBE=";
|
||||
hash = "sha256-rvgmmG0LhRb+eRdqmlCf514lzV0QGWPaJ8pnlTnxfvo=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-c/BYf6SXOdI/K4t3fT4ycuILkIYCiSbHafLprSMvK8E=";
|
||||
cargoHash = "sha256-ai8FUKHK/iHeUEgklZEDAMKoorXVDxGSZVrB7LahVV8=";
|
||||
|
||||
meta = {
|
||||
description = "Template generation tool to create no_std applications targeting Espressif's chips";
|
||||
|
||||
@@ -34,14 +34,14 @@ let
|
||||
in
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
pname = "esphome";
|
||||
version = "2025.6.3";
|
||||
version = "2025.7.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "esphome";
|
||||
repo = "esphome";
|
||||
tag = version;
|
||||
hash = "sha256-3Xcxn12QKQg0jxdOPP7y01YaikvxmPPX9JL2JBvdsUM=";
|
||||
hash = "sha256-EUnptlO9Ya6GWLP7FU3gWOAs2O5xzrHhyHr8LpomapY=";
|
||||
};
|
||||
|
||||
build-system = with python.pkgs; [
|
||||
@@ -82,6 +82,7 @@ python.pkgs.buildPythonApplication rec {
|
||||
esphome-glyphsets
|
||||
freetype-py
|
||||
icmplib
|
||||
jinja2
|
||||
kconfiglib
|
||||
packaging
|
||||
paho-mqtt
|
||||
@@ -135,25 +136,9 @@ python.pkgs.buildPythonApplication rec {
|
||||
]
|
||||
++ [ versionCheckHook ];
|
||||
|
||||
disabledTests = [
|
||||
# race condition, also visible in upstream tests
|
||||
# tests/dashboard/test_web_server.py:78: IndexError
|
||||
"test_devices_page"
|
||||
|
||||
disabledTestPaths = [
|
||||
# platformio builds; requires networking for dependency resolution
|
||||
"test_api_message_size_batching"
|
||||
"test_host_mode_basic"
|
||||
"test_host_mode_batch_delay"
|
||||
"test_host_mode_empty_string_options"
|
||||
"test_host_mode_entity_fields"
|
||||
"test_host_mode_fan_preset"
|
||||
"test_host_mode_many_entities"
|
||||
"test_host_mode_many_entities_multiple_connections"
|
||||
"test_host_mode_noise_encryption"
|
||||
"test_host_mode_noise_encryption_wrong_key"
|
||||
"test_host_mode_reconnect"
|
||||
"test_host_mode_with_sensor"
|
||||
"test_large_message_batching"
|
||||
"tests/integration"
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "gatekeeper";
|
||||
version = "3.19.2";
|
||||
version = "3.19.3";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "open-policy-agent";
|
||||
repo = "gatekeeper";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-ksspmNq42Wn/4Uzi8omvzCCprP+ELHVGBImgi8GrMSk=";
|
||||
hash = "sha256-FQ5Q9S/YvJQaa2mUWXv8huTK89SZ31UaFbBCEduGsyg=";
|
||||
};
|
||||
|
||||
vendorHash = null;
|
||||
|
||||
@@ -40,6 +40,5 @@ buildNpmPackage rec {
|
||||
description = "Implementation of the Handshake protocol";
|
||||
homepage = "https://github.com/handshake-org/hsd";
|
||||
license = lib.licenses.mit;
|
||||
maintainers = with lib.maintainers; [ d-xo ];
|
||||
};
|
||||
}
|
||||
|
||||
@@ -7,13 +7,13 @@
|
||||
|
||||
buildNpmPackage rec {
|
||||
pname = "lasuite-meet-frontend";
|
||||
version = "0.1.27";
|
||||
version = "0.1.28";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "suitenumerique";
|
||||
repo = "meet";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-EMhsQPrONaQmNJ/FFoYlP5KKXT8vm7LwUHmEZd0oZeE=";
|
||||
hash = "sha256-zB27doGkWch3e1Lc0Q3TurQeplV7vOdzJ+G+MFZI3Og=";
|
||||
};
|
||||
|
||||
sourceRoot = "source/src/frontend";
|
||||
@@ -21,7 +21,7 @@ buildNpmPackage rec {
|
||||
npmDeps = fetchNpmDeps {
|
||||
inherit version src;
|
||||
sourceRoot = "source/src/frontend";
|
||||
hash = "sha256-7wXzcn6aGAkRUOCI6MU0AlPGngBWJtdbAfnZZDaMWec=";
|
||||
hash = "sha256-ajN3mDIUn8uX+xc3zZmzsFWY8Y5ss9gVeV0s5kJV3fs=";
|
||||
};
|
||||
|
||||
buildPhase = ''
|
||||
|
||||
@@ -13,14 +13,14 @@ in
|
||||
|
||||
python.pkgs.buildPythonApplication rec {
|
||||
pname = "lasuite-meet";
|
||||
version = "0.1.27";
|
||||
version = "0.1.28";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "suitenumerique";
|
||||
repo = "meet";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-EMhsQPrONaQmNJ/FFoYlP5KKXT8vm7LwUHmEZd0oZeE=";
|
||||
hash = "sha256-zB27doGkWch3e1Lc0Q3TurQeplV7vOdzJ+G+MFZI3Og=";
|
||||
};
|
||||
|
||||
sourceRoot = "source/src/backend";
|
||||
@@ -28,6 +28,8 @@ python.pkgs.buildPythonApplication rec {
|
||||
patches = [
|
||||
# Support configuration throught environment variables for SECURE_*
|
||||
./secure_settings.patch
|
||||
# Add PKCE option
|
||||
./pkce.patch
|
||||
];
|
||||
|
||||
build-system = with python.pkgs; [ setuptools ];
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
--- a/meet/settings.py
|
||||
+++ b/meet/settings.py
|
||||
@@ -430,6 +430,17 @@ class Base(Configuration):
|
||||
OIDC_RP_SCOPES = values.Value(
|
||||
"openid email", environ_name="OIDC_RP_SCOPES", environ_prefix=None
|
||||
)
|
||||
+ OIDC_USE_PKCE = values.BooleanValue(
|
||||
+ default=False, environ_name="OIDC_USE_PKCE", environ_prefix=None
|
||||
+ )
|
||||
+ OIDC_PKCE_CODE_CHALLENGE_METHOD = values.Value(
|
||||
+ default="S256",
|
||||
+ environ_name="OIDC_PKCE_CODE_CHALLENGE_METHOD",
|
||||
+ environ_prefix=None,
|
||||
+ )
|
||||
+ OIDC_PKCE_CODE_VERIFIER_SIZE = values.IntegerValue(
|
||||
+ default=64, environ_name="OIDC_PKCE_CODE_VERIFIER_SIZE", environ_prefix=None
|
||||
+ )
|
||||
LOGIN_REDIRECT_URL = values.Value(
|
||||
None, environ_name="LOGIN_REDIRECT_URL", environ_prefix=None
|
||||
)
|
||||
Generated
+10
-2
@@ -813,8 +813,8 @@
|
||||
"org/bouncycastle/bcutil-jdk18on/maven-metadata": {
|
||||
"xml": {
|
||||
"groupId": "org.bouncycastle",
|
||||
"lastUpdated": "20250114201150",
|
||||
"release": "1.80"
|
||||
"lastUpdated": "20250604080934",
|
||||
"release": "1.81"
|
||||
}
|
||||
},
|
||||
"org/checkerframework#checker-qual/3.48.3": {
|
||||
@@ -1076,6 +1076,10 @@
|
||||
"org/jetbrains/kotlin#kotlin-stdlib-common/1.8.20": {
|
||||
"pom": "sha256-YFWRuJs3ISfmspxpMl+i9qjEb0aMRdCUEOeOtZ/IChc="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib-common/1.9.0": {
|
||||
"jar": "sha256-KDJ0IEvXwCB4nsRvj45yr0JE1/VQszkqV+XKAGrXqiw=",
|
||||
"pom": "sha256-NmDTanD+s6vknxG5BjPkHTYnNXbwcbDhCdqbOg3wgqU="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib-common/2.0.20": {
|
||||
"module": "sha256-tZe3Be/U4tgnFCCQw2BUJlVI7VG09SN38r+JxFlNU28=",
|
||||
"pom": "sha256-o11/wINw+TE6S5U7zu7d2F4OHnLTEGLTe/jHeBs/b18="
|
||||
@@ -1092,6 +1096,10 @@
|
||||
"jar": "sha256-45i2eXdiJxi/GP+ZtznH2doGDzP7RYouJSAyIcFq8BA=",
|
||||
"pom": "sha256-OkYiFKM26ZVod2lTGx43sMgdjhDJlJzV6nrh14A6AjI="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib/1.9.0": {
|
||||
"jar": "sha256-Na7/vi21qkRgcs7lD87ki3+p4vxRyjfAzH19C8OdlS4=",
|
||||
"pom": "sha256-N3UiY/Ysw+MlCFbiiO5Kc9QQLXJqd2JwNPlIBsjBCso="
|
||||
},
|
||||
"org/jetbrains/kotlin#kotlin-stdlib/2.0.20": {
|
||||
"jar": "sha256-+xaVlmWaUYNXxLLBb0PcdascSYBWXtS0oxegUOXjkAY=",
|
||||
"module": "sha256-3AUdwExqGW8tBtDTya8zufErybT+E5rhKQFAUII2tns=",
|
||||
|
||||
@@ -25,7 +25,6 @@ buildGoModule rec {
|
||||
description = "Generate QRCode to connect apps to lnd Resources";
|
||||
license = licenses.mit;
|
||||
homepage = "https://github.com/LN-Zap/lndconnect";
|
||||
maintainers = [ maintainers.d-xo ];
|
||||
platforms = platforms.linux;
|
||||
mainProgram = "lndconnect";
|
||||
};
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
installShellFiles,
|
||||
}:
|
||||
let
|
||||
version = "0.4.51";
|
||||
version = "0.4.52";
|
||||
in
|
||||
rustPlatform.buildRustPackage rec {
|
||||
inherit version;
|
||||
@@ -17,11 +17,11 @@ rustPlatform.buildRustPackage rec {
|
||||
owner = "rust-lang";
|
||||
repo = "mdBook";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-d211IEXtHiRhD+rXGUaDAbcDwKJZqr0fmkxTgN4RkC0=";
|
||||
hash = "sha256-a3GSMz1+8Ve5cp4x1NjBlsCU/wMC4Jl3/H9qx7+1XlI=";
|
||||
};
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-3VI9WZiFiyfQRQk7gZBLXA/RRfCuEBze/MWI7OUGBmc=";
|
||||
cargoHash = "sha256-wvTixSVHXglJM+nBMulZNZKF8pZfNd2G8Z+1PlAWmpk=";
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
}:
|
||||
|
||||
stdenv.mkDerivation rec {
|
||||
version = "1.0.15";
|
||||
version = "1.0.17";
|
||||
pname = "mdp";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "visit1985";
|
||||
repo = "mdp";
|
||||
rev = version;
|
||||
sha256 = "1m9a0vvyw2m55cn7zcq011vrjkiaj5a3g5g6f2dpq953gyi7gff9";
|
||||
sha256 = "sha256-g9+bqMoUpcRL1pcNqaeMR3l5uHuiEpDZj/6YmyOSn7k=";
|
||||
};
|
||||
|
||||
makeFlags = [ "PREFIX=$(out)" ];
|
||||
|
||||
@@ -21,6 +21,9 @@
|
||||
# runtime deps
|
||||
gpgme,
|
||||
gnum4,
|
||||
|
||||
withNotmuch ? true,
|
||||
notmuch,
|
||||
}:
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
@@ -66,7 +69,9 @@ rustPlatform.buildRustPackage rec {
|
||||
installManPage meli/docs/*.{1,5,7}
|
||||
|
||||
wrapProgram $out/bin/meli \
|
||||
--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ gpgme ]} \
|
||||
--prefix LD_LIBRARY_PATH : ${
|
||||
lib.makeLibraryPath ([ gpgme ] ++ lib.optional withNotmuch notmuch)
|
||||
} \
|
||||
--prefix PATH : ${lib.makeBinPath [ gnum4 ]}
|
||||
'';
|
||||
|
||||
|
||||
@@ -10,15 +10,15 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "mongodb-atlas-cli";
|
||||
version = "1.45.1";
|
||||
version = "1.46.2";
|
||||
|
||||
vendorHash = "sha256-4qkB2PdMiMtyxdHodwR+w9Lbt1JaT1/wUS+h23ajDD4=";
|
||||
vendorHash = "sha256-z42tJJD/iK9GDnYxdeMYogaMviGABizxX9fdWL8vVik=";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "mongodb";
|
||||
repo = "mongodb-atlas-cli";
|
||||
rev = "refs/tags/atlascli/v${version}";
|
||||
sha256 = "sha256-Pk7C8CzhRB1XRkqHPECIeaFSwWEWZqJ4sTONTEiqZvg=";
|
||||
sha256 = "sha256-yg6GSG4TXPj4n8s4TK/i7NveJXMAQczONSrLn39PKVI=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [ installShellFiles ];
|
||||
|
||||
@@ -8,13 +8,13 @@
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "moonlight";
|
||||
version = "1.3.22";
|
||||
version = "1.3.23";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "moonlight-mod";
|
||||
repo = "moonlight";
|
||||
tag = "v${finalAttrs.version}";
|
||||
hash = "sha256-mn6f4ci5C2jkyxgmBHQ4dI9V0/20DlyS6EbQz4w7znc=";
|
||||
hash = "sha256-LVXO+V182R2KmNfTJjpYx/yYk97+Kvzul7gzSM72JJM=";
|
||||
};
|
||||
|
||||
nativeBuildInputs = [
|
||||
@@ -28,7 +28,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
buildInputs = [ nodejs_22 ];
|
||||
|
||||
fetcherVersion = 1;
|
||||
hash = "sha256-vrSfrAnLc30kba+8VOPawdp8KaQVUhsD6mUq+YdAJTY=";
|
||||
hash = "sha256-gmv0W4PluHoiZRSAJuBTDo3CjmJOM1ZHFbxrt7CsJaE=";
|
||||
};
|
||||
|
||||
env = {
|
||||
|
||||
@@ -8,20 +8,17 @@
|
||||
|
||||
rustPlatform.buildRustPackage rec {
|
||||
pname = "nix-ld";
|
||||
version = "2.0.4";
|
||||
version = "2.0.5";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "nix-community";
|
||||
repo = "nix-ld";
|
||||
rev = version;
|
||||
hash = "sha256-ULoitJD5bMu0pFvh35cY5EEYywxj4e2fYOpqZwKB1lk=";
|
||||
hash = "sha256-7ev9V128h7ZWi9JsFje6X1OzE5maJfmBMkxohxQysOA=";
|
||||
};
|
||||
|
||||
# Submitted upstream: https://github.com/nix-community/nix-ld/pull/169
|
||||
patches = [ ./rust-1.88.patch ];
|
||||
|
||||
useFetchCargoVendor = true;
|
||||
cargoHash = "sha256-cDbszVjZcomag0HZvXM+17SjDiGS07iPj78zgsXstHc=";
|
||||
cargoHash = "sha256-YR7j2dvZHMBUe0lW7GYFxJV11ZM+gX13NHj2uf3UEbQ=";
|
||||
|
||||
hardeningDisable = [ "stackprotector" ];
|
||||
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
diff --git a/src/arch.rs b/src/arch.rs
|
||||
index a998697..45ec2cb 100644
|
||||
--- a/src/arch.rs
|
||||
+++ b/src/arch.rs
|
||||
@@ -140,7 +140,7 @@ cfg_match! {
|
||||
target_arch = "x86_64" => {
|
||||
pub const ENTRY_TRAMPOLINE: Option<unsafe extern "C" fn() -> !> = Some(entry_trampoline);
|
||||
|
||||
- #[naked]
|
||||
+ #[unsafe(naked)]
|
||||
unsafe extern "C" fn entry_trampoline() -> ! {
|
||||
core::arch::naked_asm!(
|
||||
"lea r10, [rip + {context}]",
|
||||
@@ -159,7 +159,7 @@ cfg_match! {
|
||||
target_arch = "aarch64" => {
|
||||
pub const ENTRY_TRAMPOLINE: Option<unsafe extern "C" fn() -> !> = Some(entry_trampoline);
|
||||
|
||||
- #[naked]
|
||||
+ #[unsafe(naked)]
|
||||
unsafe extern "C" fn entry_trampoline() -> ! {
|
||||
core::arch::naked_asm!(
|
||||
"adrp x8, {context}",
|
||||
diff --git a/src/sys.rs b/src/sys.rs
|
||||
index 109d809..bf085d9 100644
|
||||
--- a/src/sys.rs
|
||||
+++ b/src/sys.rs
|
||||
@@ -181,6 +181,5 @@ pub fn new_slice_leak(size: usize) -> Option<&'static mut [u8]> {
|
||||
|
||||
#[cfg(not(test))]
|
||||
#[lang = "eh_personality"]
|
||||
-#[no_mangle]
|
||||
pub extern fn rust_eh_personality() {
|
||||
}
|
||||
@@ -2,26 +2,34 @@
|
||||
lib,
|
||||
buildGoModule,
|
||||
fetchFromGitHub,
|
||||
nix-update-script,
|
||||
}:
|
||||
buildGoModule rec {
|
||||
pname = "nom";
|
||||
version = "2.10.0";
|
||||
version = "2.13.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "guyfedwards";
|
||||
repo = "nom";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-F1lKBfDufotQjVNJ1yMosRl1UlGMBlYCTHXdCzeVflg=";
|
||||
hash = "sha256-dGQDxjvB5OX4ot22zt2zFu3T3h/clSRlfxhCpkPRePU=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-d5KTDZKfuzv84oMgmsjJoXGO5XYLVKxOB5XehqgRvYw=";
|
||||
|
||||
meta = with lib; {
|
||||
ldflags = [
|
||||
"-X 'main.version=${version}'"
|
||||
];
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
meta = {
|
||||
homepage = "https://github.com/guyfedwards/nom";
|
||||
changelog = "https://github.com/guyfedwards/nom/releases/tag/v${version}";
|
||||
description = "RSS reader for the terminal";
|
||||
platforms = platforms.linux ++ platforms.darwin;
|
||||
license = licenses.gpl3Only;
|
||||
maintainers = with maintainers; [
|
||||
platforms = lib.platforms.linux ++ lib.platforms.darwin;
|
||||
license = lib.licenses.gpl3Only;
|
||||
maintainers = with lib.maintainers; [
|
||||
nadir-ishiguro
|
||||
matthiasbeyer
|
||||
];
|
||||
|
||||
@@ -6,16 +6,16 @@
|
||||
|
||||
buildGoModule rec {
|
||||
pname = "pluto";
|
||||
version = "5.21.8";
|
||||
version = "5.22.0";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FairwindsOps";
|
||||
repo = "pluto";
|
||||
rev = "v${version}";
|
||||
hash = "sha256-41ud7SRaivhmtBY6ekKIpRijTuLqJ/tLi0dTHDsGAps=";
|
||||
hash = "sha256-fqN6uj/YL/sch16mmB/smJtbzCFlUa9yvCLa8sXJ/u4=";
|
||||
};
|
||||
|
||||
vendorHash = "sha256-4kiLgwr8wr/L4anxgZVAE6IFdbBvTgcUlf5KIcT+lRk=";
|
||||
vendorHash = "sha256-59mRVfQ2rduTvIJE1l/j3K+PY3OEMfNpjjYg3hqNUhs=";
|
||||
|
||||
ldflags = [
|
||||
"-w"
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
lib,
|
||||
callPackage,
|
||||
coreutils,
|
||||
gnugrep,
|
||||
stdenv,
|
||||
fetchurl,
|
||||
pkg-config,
|
||||
@@ -16,17 +19,6 @@
|
||||
nixosTests,
|
||||
writeShellScript,
|
||||
versionCheckHook,
|
||||
|
||||
# for update.nix
|
||||
writeScript,
|
||||
common-updater-scripts,
|
||||
bash,
|
||||
coreutils,
|
||||
curl,
|
||||
gnugrep,
|
||||
gnupg,
|
||||
gnused,
|
||||
nix,
|
||||
}:
|
||||
|
||||
let
|
||||
@@ -90,13 +82,8 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
# https://gitlab.torproject.org/tpo/onion-services/onion-support/-/wikis/Documentation/PoW-FAQ#compiling-c-tor-with-the-pow-defense
|
||||
[ "--enable-gpl" ]
|
||||
++
|
||||
# cross compiles correctly but needs the following
|
||||
lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "--disable-tool-name-check" ]
|
||||
++
|
||||
# sandbox is broken on aarch64-linux https://gitlab.torproject.org/tpo/core/tor/-/issues/40599
|
||||
lib.optionals (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64) [
|
||||
"--disable-seccomp"
|
||||
];
|
||||
# cross compiles correctly but needs the following
|
||||
lib.optionals (stdenv.hostPlatform != stdenv.buildPlatform) [ "--disable-tool-name-check" ];
|
||||
|
||||
NIX_CFLAGS_LINK = lib.optionalString stdenv.cc.isGNU "-lgcc_s";
|
||||
|
||||
@@ -126,20 +113,7 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
|
||||
passthru = {
|
||||
tests.tor = nixosTests.tor;
|
||||
updateScript = import ./update.nix {
|
||||
inherit lib;
|
||||
inherit
|
||||
writeScript
|
||||
common-updater-scripts
|
||||
bash
|
||||
coreutils
|
||||
curl
|
||||
gnupg
|
||||
gnugrep
|
||||
gnused
|
||||
nix
|
||||
;
|
||||
};
|
||||
updateScript = callPackage ./update.nix { };
|
||||
};
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -92,7 +92,6 @@ stdenv.mkDerivation rec {
|
||||
zx2c4
|
||||
globin
|
||||
ma27
|
||||
d-xo
|
||||
];
|
||||
mainProgram = "wg";
|
||||
platforms = platforms.unix;
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
{
|
||||
lib,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
django,
|
||||
dj-database-url,
|
||||
inflection,
|
||||
pydantic,
|
||||
pytestCheckHook,
|
||||
pytest-django,
|
||||
djangorestframework,
|
||||
pyyaml,
|
||||
setuptools,
|
||||
syrupy,
|
||||
uritemplate,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "django-pydantic-field";
|
||||
version = "0.3.13";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "surenkov";
|
||||
repo = "django-pydantic-field";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-RxZxDQZdFiT67YcAQtf4t42XU3XfzT3KS7ZCyfHZUOs=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
dependencies = [
|
||||
django
|
||||
pydantic
|
||||
];
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
pytest-django
|
||||
djangorestframework
|
||||
dj-database-url
|
||||
inflection
|
||||
pyyaml
|
||||
syrupy
|
||||
uritemplate
|
||||
];
|
||||
|
||||
preCheck = ''
|
||||
export DJANGO_SETTINGS_MODULE=tests.settings.django_test_settings
|
||||
'';
|
||||
|
||||
meta = with lib; {
|
||||
changelog = "https://github.com/surenkov/django-pydantic-field/releases/tag/${src.tag}";
|
||||
description = "Django JSONField with Pydantic models as a Schema";
|
||||
homepage = "https://github.com/surenkov/django-pydantic-field";
|
||||
maintainers = with lib.maintainers; [ kiara ];
|
||||
license = licenses.mit;
|
||||
};
|
||||
}
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
# build-system
|
||||
poetry-core,
|
||||
setuptools,
|
||||
|
||||
# dependencies
|
||||
jsonref,
|
||||
@@ -28,18 +29,19 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "docling-core";
|
||||
version = "2.31.2";
|
||||
version = "2.43.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-core";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-O0GfEoWImDjehCPb8erBdY2gYalj2im8rxdJKEsbUs4=";
|
||||
hash = "sha256-c9TaX4INfTfR3ZpmXbOteHr2R2jAbVzvMk8tO1XV4Nc=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
poetry-core
|
||||
setuptools
|
||||
];
|
||||
|
||||
dependencies = [
|
||||
@@ -59,7 +61,6 @@ buildPythonPackage rec {
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"pillow"
|
||||
"typer"
|
||||
];
|
||||
|
||||
pythonImportsCheck = [
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
lib,
|
||||
stdenv,
|
||||
buildPythonPackage,
|
||||
fetchFromGitHub,
|
||||
|
||||
@@ -15,6 +14,7 @@
|
||||
opencv-python-headless,
|
||||
pillow,
|
||||
pydantic,
|
||||
rtree,
|
||||
safetensors,
|
||||
torch,
|
||||
torchvision,
|
||||
@@ -29,14 +29,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "docling-ibm-models";
|
||||
version = "3.4.4";
|
||||
version = "3.8.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-ibm-models";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-a2y4vXgALPRtLhdH0Tqqht1gpdcfa1Gv4puthKDMk7U=";
|
||||
hash = "sha256-Yogg71CXQTdF5OUbdbma1rQxtLudTLjyOIFe2LS9CpI=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
@@ -51,6 +51,7 @@ buildPythonPackage rec {
|
||||
opencv-python-headless
|
||||
pillow
|
||||
pydantic
|
||||
rtree
|
||||
safetensors
|
||||
torch
|
||||
torchvision
|
||||
|
||||
@@ -13,6 +13,7 @@
|
||||
uvicorn,
|
||||
websockets,
|
||||
tesserocr,
|
||||
typer,
|
||||
rapidocr-onnxruntime,
|
||||
onnxruntime,
|
||||
torch,
|
||||
@@ -28,14 +29,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "docling-serve";
|
||||
version = "0.11.0";
|
||||
version = "0.14.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling-serve";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-dPCD7Ovc6Xiga+gYOwg0mJIIhHywVOyxKIAFF5XUsYw=";
|
||||
hash = "sha256-R8W/FXKj2wLJOcjwIsna/2wFOLGM80Qr3WlYPJTTSNU=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
@@ -53,7 +54,7 @@ buildPythonPackage rec {
|
||||
];
|
||||
|
||||
pythonRemoveDeps = [
|
||||
"mlx-vlm" # not yet avainable on nixpkgs
|
||||
"mlx-vlm" # not yet available on nixpkgs
|
||||
];
|
||||
|
||||
dependencies =
|
||||
@@ -63,6 +64,7 @@ buildPythonPackage rec {
|
||||
httpx
|
||||
pydantic-settings
|
||||
python-multipart
|
||||
typer
|
||||
uvicorn
|
||||
websockets
|
||||
]
|
||||
|
||||
@@ -52,14 +52,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "docling";
|
||||
version = "2.31.2";
|
||||
version = "2.41.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "docling-project";
|
||||
repo = "docling";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-a2PZORT4Umf6AI3yEDDcUD0tm22Ahzm7Dwij/5ZUjNs=";
|
||||
hash = "sha256-GD052HCqBLs+KUkOUOVdlXxS6+PD2pthGtz+zdQ6QnM=";
|
||||
};
|
||||
|
||||
build-system = [
|
||||
@@ -102,7 +102,6 @@ buildPythonPackage rec {
|
||||
|
||||
pythonRelaxDeps = [
|
||||
"pillow"
|
||||
"typer"
|
||||
];
|
||||
|
||||
optional-dependencies = {
|
||||
@@ -160,10 +159,14 @@ buildPythonPackage rec {
|
||||
"test_convert_stream"
|
||||
"test_compare_legacy_output"
|
||||
"test_ocr_coverage_threshold"
|
||||
"test_formula_conversion_with_page_range"
|
||||
|
||||
# requires network access
|
||||
"test_page_range"
|
||||
"test_parser_backends"
|
||||
"test_confidence"
|
||||
"test_e2e_webp_conversions"
|
||||
"test_asr_pipeline_conversion"
|
||||
|
||||
# AssertionError: pred_itxt==true_itxt
|
||||
"test_e2e_valid_csv_conversions"
|
||||
|
||||
@@ -3,14 +3,13 @@
|
||||
buildPythonPackage,
|
||||
decorator,
|
||||
deprecated,
|
||||
fetchPypi,
|
||||
fetchFromGitHub,
|
||||
icecream,
|
||||
invoke,
|
||||
mock,
|
||||
paramiko,
|
||||
pytest-relaxed,
|
||||
pytestCheckHook,
|
||||
pythonOlder,
|
||||
setuptools,
|
||||
}:
|
||||
|
||||
@@ -19,11 +18,11 @@ buildPythonPackage rec {
|
||||
version = "3.2.2";
|
||||
pyproject = true;
|
||||
|
||||
disabled = pythonOlder "3.10";
|
||||
|
||||
src = fetchPypi {
|
||||
inherit pname version;
|
||||
hash = "sha256-h4PKQuOwB28IsmkBqsa52bHxnEEAdOesz6uQLBhP9KM=";
|
||||
src = fetchFromGitHub {
|
||||
owner = "fabric";
|
||||
repo = "fabric";
|
||||
tag = version;
|
||||
hash = "sha256-7qC2UuI0RP5xlKIYSz1sLyK/nQYegXOou1mlJYFk7M0=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
@@ -58,6 +57,10 @@ buildPythonPackage rec {
|
||||
"preserves_remote_mode_by_default"
|
||||
"proxy_jump"
|
||||
"raises_TypeError_for_disallowed_kwargs"
|
||||
# Assertion failures on mocks
|
||||
# https://github.com/fabric/fabric/issues/2341
|
||||
"client_defaults_to_a_new_SSHClient"
|
||||
"defaults_to_auto_add"
|
||||
];
|
||||
|
||||
meta = {
|
||||
|
||||
@@ -66,7 +66,6 @@ buildPythonPackage rec {
|
||||
mainProgram = "ledgerctl";
|
||||
license = licenses.mit;
|
||||
maintainers = with maintainers; [
|
||||
d-xo
|
||||
erdnaxe
|
||||
];
|
||||
};
|
||||
|
||||
@@ -20,14 +20,14 @@
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "posthog";
|
||||
version = "6.0.2";
|
||||
version = "6.1.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "PostHog";
|
||||
repo = "posthog-python";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-6ZSQFcwuHDgCv301D/7/3QjF9+ZaxXPItvoA+6x0O4U=";
|
||||
hash = "sha256-u4qCQYCpMfM/JCyyKOfTTN7vwh3EvlGnxuslUy/d9Bs=";
|
||||
};
|
||||
|
||||
build-system = [ setuptools ];
|
||||
|
||||
@@ -9,17 +9,18 @@
|
||||
typing-extensions,
|
||||
pytestCheckHook,
|
||||
pytest-asyncio,
|
||||
pytest-cov-stub,
|
||||
}:
|
||||
buildPythonPackage rec {
|
||||
pname = "x3dh";
|
||||
version = "1.1.0";
|
||||
version = "1.2.0";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Syndace";
|
||||
repo = "python-x3dh";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-/hC1Kze4yBOlgbWJcGddcYty9fqwZ08Lyi0IiqSDibI=";
|
||||
hash = "sha256-NLuFfkutFtNrpBcLA/83QArCDrlrT+i85s2d6FHtuT0=";
|
||||
};
|
||||
|
||||
strictDeps = true;
|
||||
@@ -38,6 +39,7 @@ buildPythonPackage rec {
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
pytest-asyncio
|
||||
pytest-cov-stub
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "x3dh" ];
|
||||
|
||||
@@ -7,26 +7,22 @@
|
||||
libsodium,
|
||||
libxeddsa,
|
||||
pytestCheckHook,
|
||||
pytest-cov-stub,
|
||||
nix-update-script,
|
||||
}:
|
||||
|
||||
buildPythonPackage rec {
|
||||
pname = "xeddsa";
|
||||
version = "1.1.0";
|
||||
version = "1.1.1";
|
||||
pyproject = true;
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "Syndace";
|
||||
repo = "python-xeddsa";
|
||||
tag = "v${version}";
|
||||
hash = "sha256-636zsJXD8EtLDXMIkJTON0g3sg0EPrMzcfR7SUrURac=";
|
||||
hash = "sha256-5s6ERazWnwYEc0d5e+eSdvOCTklBQVrjzvlNifC2zKU=";
|
||||
};
|
||||
|
||||
postPatch = ''
|
||||
substituteInPlace pyproject.toml \
|
||||
--replace-fail "setuptools<74" "setuptools"
|
||||
'';
|
||||
|
||||
passthru.updateScript = nix-update-script { };
|
||||
|
||||
build-system = [ setuptools ];
|
||||
@@ -40,6 +36,7 @@ buildPythonPackage rec {
|
||||
|
||||
nativeCheckInputs = [
|
||||
pytestCheckHook
|
||||
pytest-cov-stub
|
||||
];
|
||||
|
||||
pythonImportsCheck = [ "xeddsa" ];
|
||||
|
||||
@@ -12402,7 +12402,6 @@ with pkgs;
|
||||
);
|
||||
|
||||
gimp = callPackage ../applications/graphics/gimp/2.0 {
|
||||
autoreconfHook = buildPackages.autoreconfHook269;
|
||||
lcms = lcms2;
|
||||
};
|
||||
|
||||
|
||||
@@ -3971,6 +3971,8 @@ self: super: with self; {
|
||||
|
||||
django-pwa = callPackage ../development/python-modules/django-pwa { };
|
||||
|
||||
django-pydantic-field = callPackage ../development/python-modules/django-pydantic-field { };
|
||||
|
||||
django-q2 = callPackage ../development/python-modules/django-q2 { };
|
||||
|
||||
django-ranged-response = callPackage ../development/python-modules/django-ranged-response { };
|
||||
|
||||
Reference in New Issue
Block a user