Merge staging-next into staging

This commit is contained in:
nixpkgs-ci[bot]
2026-08-07 18:17:08 +00:00
committed by GitHub
153 changed files with 2339 additions and 2027 deletions

View File

@@ -1046,7 +1046,7 @@ lib.mapAttrs mkLicense (
llgplPreamble = {
spdxId = "LLGPL";
fullName = "LLGPL Preamble";
fullName = "LLGPL Preamble"; # Only used together with LGPL (clarifying C-centric terms of LGPL in context of Lisp), SPDX tracks it separately
};
llvm-exception = {

View File

@@ -12,7 +12,31 @@
}:
let
inherit (lib) mkEnableOption mkOption types;
# Paths are interpolated rather than `toString`ed on purpose: interpolation
# copies the path into the store, so the resulting argument still resolves on
# the machine that runs the service. `toString` would yield the path of the
# source tree the configuration was evaluated from, which is not there at
# runtime.
pathOrStr = types.coercedTo types.path (x: "${x}") types.str;
# `argv` and `flags` share a single `lib.mkOrder` space, so flags need a
# priority. This one sits between `lib.modules.defaultOrderPriority` (1000,
# what an unadorned `argv` definition gets) and `lib.mkAfter` (1500): plain
# flags follow plain `argv` entries, while `lib.mkAfter` on `argv` still lands
# after the flags. See the `flags` option description.
unadornedFlagPriority = 1250;
# `attrListWith` re-emits every flag wrapped in `lib.mkOrder`, using
# `lib.modules.defaultOrderPriority` for flags that carried no ordering
# property of their own. Rewrite exactly that priority; anything else is an
# explicit `lib.mkOrder` from the user and is passed through verbatim.
atFlagPriority =
def:
if def.value._type or null == "order" && def.value.priority == lib.modules.defaultOrderPriority then
def // { value = lib.mkOrder unadornedFlagPriority def.value.content; }
else
def;
in
{
# https://nixos.org/manual/nixos/unstable/#modular-services
@@ -49,6 +73,100 @@ in
This is a raw command-line that should not contain any shell escaping.
If expansion of environmental variables is required then use
a shell script or `importas` from `pkgs.execline`.
When `flags` are set, the arguments rendered from them are merged into
`argv`. See `flags` for how the two are ordered against each other.
'';
};
flagFormat = mkOption {
type = types.functionTo (types.attrsOf types.anything);
default = name: {
option = name;
sep = null;
explicitBool = false;
};
description = ''
Function mapping flag names to option format specs
for `lib.cli.toCommandLine`.
Receives the flag name and returns `{ option, sep, explicitBool, formatArg? }`.
'';
example = lib.literalExpression ''
name: {
option = name;
sep = "=";
explicitBool = false;
}
'';
};
flags = mkOption {
type = types.attrListWith {
elemType = types.nullOr (
types.oneOf [
types.bool
types.int
# `pathOrStr`, not `types.path`: `lib.cli.toCommandLine` renders
# values with `lib.generators.mkValueStringDefault`, which has no
# case for paths and would abort.
pathOrStr
]
);
asAttrs = true;
};
default = { };
description = ''
Flags to pass to the service process.
The key is the flag name (e.g. `"--port"`), the value is the flag value.
Each `name = value` pair is rendered via `lib.cli.toCommandLine`
using `flagFormat`.
- `null`: the flag is omitted (regardless of `flagFormat`)
- bool: rendered per `flagFormat.explicitBool`
- `explicitBool = false` (default): `true` emits the bare flag,
`false` is omitted
- `explicitBool = true`: both `true` and `false` are rendered as
explicit arguments via `flagFormat.formatArg`
- string / path / int: rendered as the option's argument, joined to the
option name per `flagFormat.sep` and stringified by
`flagFormat.formatArg`
To pass the same flag multiple times, use the list form with
repeated keys, e.g.
`[ { "--host" = "a"; } { "--host" = "b"; } ]`.
The rendered arguments are merged into `argv`, so `argv` and `flags`
share a single `lib.mkOrder` space:
- A flag with no ordering property of its own is placed at priority
1250, between `lib.modules.defaultOrderPriority` (1000, which is
what an unadorned `argv` definition gets) and `lib.mkAfter` (1500).
Plain flags therefore follow the command name and any other plain
`argv` arguments.
- `lib.mkAfter` on `argv` still lands after the flags, which is how
trailing positional arguments are expressed.
- `lib.mkOrder` on a flag is honoured verbatim against `argv`, so a
sub-command can be placed between two groups of flags.
Because 1250 is substituted for flags that carry no ordering property,
`lib.mkOrder 1000` on a flag is indistinguishable from leaving that
flag unadorned. To order a flag around plain `argv` entries, pick a
priority next to 1000, such as 999 or 1001.
'';
example = lib.literalExpression ''
{
"--port" = "8080";
"--verbose" = true;
# ordered ahead of the unadorned flags above
"--config" = lib.mkOrder 1100 "/etc/foo.conf";
}
# or, for repeated flags:
[
{ "--host" = "localhost"; }
{ "--host" = "0.0.0.0"; }
]
'';
};
@@ -103,5 +221,9 @@ in
process.reloadCommand = lib.mkIf (config.process.reloadSignal != null) (
lib.mkDefault "${pkgs.coreutils}/bin/kill -${config.process.reloadSignal} $MAINPID"
);
process.argv = lib.modules.mapDefinitionValue (
attr: lib.cli.toCommandLine config.process.flagFormat attr
) (lib.mkMerge (map atFlagPriority options.process.flags.valueMeta.definitions));
};
}

View File

@@ -77,6 +77,60 @@ let
];
};
};
# The default `flagFormat`, and one flag of every supported value kind.
flagsDefault = {
process = {
argv = [ "/bin/flagged" ];
flags = {
"--bool-off" = false;
"--bool-on" = true;
"--config" = ./test.nix;
"--count" = 3;
"--name" = "example";
"--unset" = null;
};
};
};
# A `flagFormat` that joins with `=` and spells out booleans.
flagsCustomFormat = {
process = {
argv = [ "/bin/flagged" ];
flagFormat = name: {
option = "--${name}";
sep = "=";
explicitBool = true;
};
flags = {
port = 8080;
quiet = false;
verbose = true;
};
};
};
# The list form, which allows a flag to be repeated.
flagsRepeated = {
process = {
argv = [ "/bin/flagged" ];
flags = [
{ "--host" = "a"; }
{ "--host" = "b"; }
];
};
};
# `argv` and `flags` share one `lib.mkOrder` space.
flagsOrdering = {
process = {
argv = lib.mkMerge [
(lib.mkBefore [ "/bin/gt" ])
(lib.mkOrder 800 [ "server" ])
(lib.mkAfter [ "TRAILING" ])
];
flags = lib.mkMerge [
{ "--listen" = "a"; }
{ "--disable-landlock" = lib.mkOrder 600 true; }
];
};
};
};
};
@@ -91,10 +145,16 @@ let
];
};
# Every service carries some assertions that hold; only the violated ones are of interest here.
failures = lib.filter (a: !a.assertion);
filterEval =
config:
lib.optionalAttrs (config ? process) {
inherit (config) assertions warnings process;
inherit (config) warnings;
assertions = failures config.assertions;
# Only `argv` is relevant here; `process` also carries the reload options.
process = { inherit (config.process) argv; };
}
// {
services = lib.mapAttrs (k: filterEval) config.services;
@@ -156,6 +216,65 @@ let
assertions = [ ];
warnings = [ ];
};
flagsDefault = {
process = {
argv = [
"/bin/flagged"
"--bool-on"
"--config"
"${./test.nix}"
"--count"
"3"
"--name"
"example"
];
};
services = { };
assertions = [ ];
warnings = [ ];
};
flagsCustomFormat = {
process = {
argv = [
"/bin/flagged"
"--port=8080"
"--quiet=false"
"--verbose=true"
];
};
services = { };
assertions = [ ];
warnings = [ ];
};
flagsRepeated = {
process = {
argv = [
"/bin/flagged"
"--host"
"a"
"--host"
"b"
];
};
services = { };
assertions = [ ];
warnings = [ ];
};
flagsOrdering = {
process = {
argv = [
"/bin/gt"
"--disable-landlock"
"server"
"--listen"
"a"
"TRAILING"
];
};
services = { };
assertions = [ ];
warnings = [ ];
};
};
};
@@ -165,7 +284,7 @@ let
];
assert
portable-lib.getAssertions [ "service1" ] exampleEval.config.services.service1 == [
failures (portable-lib.getAssertions [ "service1" ] exampleEval.config.services.service1) == [
{
message = "in service1: you can't enable this for that reason";
assertion = false;
@@ -177,7 +296,7 @@ let
"in service3.services.exclacow: The `bar' service is deprecated and will go away soon!"
];
assert
portable-lib.getAssertions [ "service3" ] exampleEval.config.services.service3 == [
failures (portable-lib.getAssertions [ "service3" ] exampleEval.config.services.service3) == [
{
message = "in service3.services.exclacow: you can't enable this for such reason";
assertion = false;

View File

@@ -101,6 +101,9 @@
- `services.alps` has been rewritten, see [upstream repository](https://github.com/migadu/alps) for configuration.
- Nginx no longer includes the unmaintained dav module per default.
If you happened to use it via a `dav_*` directive, you can include it with `services.nginx.additionalModules = [ pkgs.nginxModules.dav ]` again.
- Support for the legacy UBoot image format has been removed from the initrd generators, as it is deprecated upstream and no longer used by any platform in Nixpkgs.
- The `extraArgs` and `check` arguments to `nixos/lib/eval-config.nix` (and therefore to `lib.nixosSystem`) have been removed after being deprecated with a warning since 2021. Passing them is now an evaluation error. Instead of `extraArgs`, set `config._module.args`; instead of `check = false`, set `config._module.check = false`. The `extraArgs` attribute on the resulting configuration has been removed as well.

View File

@@ -197,6 +197,7 @@ in
pantheon.gnome-settings-daemon
pantheon.elementary-session-settings
pantheon.elementary-settings-daemon
pantheon.pantheon-agent-polkit
];
programs.dconf.enable = true;
networking.networkmanager.enable = mkDefault true;
@@ -215,6 +216,12 @@ in
environment.PATH = lib.mkForce null;
};
systemd.user.services."io.elementary.desktop.agent-polkit" = {
# Same as above.
wantedBy = [ "gnome-session-initialized.target" ];
environment.PATH = lib.mkForce null;
};
# Global environment
environment.systemPackages =
(with pkgs.pantheon; [

View File

@@ -524,6 +524,7 @@ in
early-mount-options = runTest ./early-mount-options.nix;
earlyoom = runTestOn [ "x86_64-linux" ] ./earlyoom.nix;
easytier = runTest ./easytier.nix;
easytier-modular = runTest ./easytier-modular.nix;
ec2-config = (handleTestOn [ "x86_64-linux" ] ./ec2.nix { }).boot-ec2-config or { };
ec2-image = runTest ./ec2-image.nix;
ec2-nixops = (handleTestOn [ "x86_64-linux" ] ./ec2.nix { }).boot-ec2-nixops or { };

View File

@@ -33,6 +33,7 @@
autoendpoint.settings = {
#do not use this key in production!!!
crypto_key = "[fZQX8jgdESUYFTYfWw3Dv5RRMuwYJPPaaPcbUgHM69Q=]";
auth_keys = "[fZQX8jgdESUYFTYfWw3Dv5RRMuwYJPPaaPcbUgHM69Q=]";
db_dsn = "redis://localhost:${toString config.services.redis.servers.autopush-rs.port}";
port = 8080;
};

View File

@@ -0,0 +1,161 @@
{ lib, ... }:
{
_class = "nixosTest";
name = "easytier-modular";
nodes =
let
genPeer =
hostConfig:
{ pkgs, ... }:
lib.mkMerge [
{
networking.useDHCP = false;
networking.firewall.allowedTCPPorts = [
11010
11011
];
networking.firewall.allowedUDPPorts = [
11010
11011
];
system.services."easytier-default" = {
imports = [ pkgs.easytier.services.default ];
easytier.settings = {
instance_name = "default";
dev_name = "et_def";
rpc_portal = "0.0.0.0:11000";
network_identity = {
network_name = "easytier_test";
network_secret = "easytier_test_secret";
};
};
};
}
hostConfig
];
in
{
relay =
{ pkgs, ... }@args:
lib.mkMerge [
(genPeer {
virtualisation.vlans = [
1
2
];
networking.interfaces.eth1.ipv4.addresses = [
{
address = "192.168.1.11";
prefixLength = 24;
}
];
networking.interfaces.eth2.ipv4.addresses = [
{
address = "192.168.2.11";
prefixLength = 24;
}
];
system.services."easytier-default".easytier.settings = {
ipv4 = "10.144.144.1";
listeners = [
"tcp://0.0.0.0:11010"
"wss://0.0.0.0:11011"
];
};
} args)
{
networking.firewall.allowedTCPPorts = [ 11020 ];
networking.firewall.allowedUDPPorts = [ 11020 ];
system.services."easytier-second" = {
imports = [ pkgs.easytier.services.default ];
easytier = {
peers = [
"tcp://192.168.1.11:11010"
"tcp://192.168.2.11:11010"
];
settings = {
instance_name = "second";
ipv4 = "10.144.144.4";
rpc_portal = "0.0.0.0:11001";
network_identity = {
network_name = "easytier_test";
network_secret = "easytier_test_secret";
};
listeners = [ "tcp://0.0.0.0:11020" ];
flags = {
bind_device = false;
no_tun = true;
};
};
};
};
}
];
peer1 = genPeer {
virtualisation.vlans = [ 1 ];
system.services."easytier-default".easytier = {
settings.ipv4 = "10.144.144.2";
peers = [ "tcp://192.168.1.11:11010" ];
};
};
peer2 = genPeer {
virtualisation.vlans = [ 2 ];
system.services."easytier-default".easytier = {
settings.ipv4 = "10.144.144.3";
peers = [ "wss://192.168.2.11:11011" ];
};
};
};
testScript = ''
start_all()
with subtest("Waiting for all services..."):
relay.wait_for_unit("easytier-default.service")
relay.wait_for_unit("easytier-second.service")
peer1.wait_for_unit("easytier-default.service")
peer2.wait_for_unit("easytier-default.service")
with subtest("relay is accessible by the other hosts"):
peer1.succeed("ping -c5 192.168.1.11")
peer2.succeed("ping -c5 192.168.2.11")
with subtest("The other hosts are in separate vlans"):
peer1.fail("ping -c5 192.168.2.11")
peer2.fail("ping -c5 192.168.1.11")
with subtest("Each host can ping themselves through EasyTier"):
relay.succeed("ping -c5 10.144.144.1")
peer1.succeed("ping -c5 10.144.144.2")
peer2.succeed("ping -c5 10.144.144.3")
with subtest("Relay is accessible by the other hosts through EasyTier"):
peer1.succeed("ping -c5 10.144.144.1")
peer2.succeed("ping -c5 10.144.144.1")
with subtest("Relay can access the other hosts through EasyTier"):
relay.succeed("ping -c5 10.144.144.2")
relay.succeed("ping -c5 10.144.144.3")
with subtest("The other hosts in separate vlans can access each other through EasyTier"):
peer1.succeed("ping -c5 10.144.144.3")
peer2.succeed("ping -c5 10.144.144.2")
with subtest("Relay Second is accessible through EasyTier"):
peer1.succeed("ping -c5 10.144.144.4")
peer2.succeed("ping -c5 10.144.144.4")
'';
meta.maintainers = with lib.maintainers; [ moraxyc ];
}

View File

@@ -5,13 +5,13 @@
}:
mkLibretroCore {
core = "stella";
version = "0-unstable-2026-07-16";
version = "0-unstable-2026-07-29";
src = fetchFromGitHub {
owner = "stella-emu";
repo = "stella";
rev = "61f4282f57934df94e08a2db79ec492aaab5b805";
hash = "sha256-2pEQzl3aUq5ya9297Aj4MYN2ePkg/dyCvJavRWkyE1U=";
rev = "154a467c3a1ba6fa1d85c6776ac4f3b27558e5ad";
hash = "sha256-oD0JCgb6csW+LC7TsF2ei7OEaDY5fzj5B8MyKCrr+SU=";
};
makefile = "Makefile";

View File

@@ -815,20 +815,20 @@
"vendorHash": "sha256-UuLHaOEG6jmOAgfdNOtLyUimlAr3g6K8n3Ehu64sKqk="
},
"keycloak_keycloak": {
"hash": "sha256-3KlfUM3qQwzRlUkuq+91z1VjRxIL3qcdCHfkVnfYJKQ=",
"hash": "sha256-XYY1xd8IHFSkVbEV6pxVHdnlSzbWgVAT+21mvri7qAs=",
"homepage": "https://registry.terraform.io/providers/keycloak/keycloak",
"owner": "keycloak",
"repo": "terraform-provider-keycloak",
"rev": "v5.8.0",
"rev": "v5.9.0",
"spdx": "Apache-2.0",
"vendorHash": "sha256-JTcIyUKoeCRxAzUWJy9FkMCYy3+D70uyzuiSTW3nHlA="
"vendorHash": "sha256-xzYkFRBLKGF8lf9vDG/dx4Qel6uGN1XpQLFrpVX2HWo="
},
"kislerdm_neon": {
"hash": "sha256-NvAQY8uoTtBoyx6XF8rruaRXVRARAr1yFKFkBes6Css=",
"hash": "sha256-FdC0WBN9jZsLud0QRiKJkQQI9aPxYhyyLNaxRXPp08Q=",
"homepage": "https://registry.terraform.io/providers/kislerdm/neon",
"owner": "kislerdm",
"repo": "terraform-provider-neon",
"rev": "v0.14.0",
"rev": "v0.15.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-7mJ+BX7laBKsr4DX1keMXnGi79CZp8M1jD0COQ1lcmU="
},
@@ -896,13 +896,13 @@
"vendorHash": "sha256-0Z2V8CyIZEHZFFqTNFnseBbvVenOnpNz9Tlbu7zaPOI="
},
"maxlaverse_bitwarden": {
"hash": "sha256-aYgMC2RuRakxztyhP/4MAzQPy/4riKXYZN/XXdT2jQQ=",
"hash": "sha256-2OQsPfhiM46GMKGS1FJIzMhI0fxZwGorw4eF4DEFQ74=",
"homepage": "https://registry.terraform.io/providers/maxlaverse/bitwarden",
"owner": "maxlaverse",
"repo": "terraform-provider-bitwarden",
"rev": "v0.17.6",
"rev": "v0.18.0",
"spdx": "MPL-2.0",
"vendorHash": "sha256-t4dbDJNjEQ6/u+/6zqk2Sdd3LVn/L2BCJujpiLdGc58="
"vendorHash": "sha256-8Zj4nrEJ38Tz0LOYtghlMnJZJnD2zJjsqawVMTEX0Wk="
},
"metio_migadu": {
"hash": "sha256-qeN2Zlx4qSrjb7qxjDf4v3uG1GR/faTiCNKD/HZkoyw=",

View File

@@ -61,8 +61,8 @@ let
}
else
{
version = "2026.2";
hash = "sha256-0n5EVegkYXeVI2Z5hjGg2tny4fVnQApsuFShaNzAUN0=";
version = "2026.3";
hash = "sha256-EJS3u8ajlgIjgnEUYmZXEQtACWzflZinJ5NfyE6/iqA=";
};
in

View File

@@ -41,29 +41,17 @@
stdenv.mkDerivation (finalAttrs: {
pname = "389-ds-base";
version = "3.1.3";
version = "3.3.0";
src = fetchFromGitHub {
owner = "389ds";
repo = "389-ds-base";
rev = "389-ds-base-${finalAttrs.version}";
hash = "sha256-hRTK9xBu8v8+SGa/3IB8Alh/aGUiRRn2LmYOvXy0Yd4=";
hash = "sha256-N/+fTTgkqs25ToR/OH9BaBHxheVDZWR4RANFtC71rBg=";
};
patches = [
(fetchpatch {
# https://github.com/389ds/389-ds-base/pull/6930
name = "389-ds-base-rustc-1_89.patch";
url = "https://github.com/389ds/389-ds-base/commit/1701419551c246e9dc21778b118220eeb2258125.patch";
hash = "sha256-trzY/fDH3rs66DWbWI+PY46tIC9ShuVqspMHqEEKZYA=";
})
./0001-remove-hard-coded-vendor-paths.patch
(fetchpatch {
# https://github.com/389ds/389-ds-base/security/advisories/GHSA-4qwg-c5j2-q4hp
name = "CVE-2025-14905.patch";
url = "https://github.com/389ds/389-ds-base/commit/2e424110def2e3998f6045e136fb0d43f47b7f5a.patch";
hash = "sha256-ItxG0bnuNPWLClL677rChTDvDWXxJ2L6ygx4VY2v80w=";
})
];
cargoRoot = "src";
@@ -71,7 +59,7 @@ stdenv.mkDerivation (finalAttrs: {
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) src cargoRoot;
name = "389-ds-base-${finalAttrs.version}";
hash = "sha256-pNzMQjeBpmzFg6oWCxhLDmKGUKIW6jGmZQWai5Yunjc=";
hash = "sha256-1qCH2Onb69Jcqqs3JfDJslavzMrHO6//OtYtDq2iCgY=";
};
nativeBuildInputs = [

View File

@@ -6,16 +6,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "adrs";
version = "0.10.1";
version = "0.11.0";
src = fetchFromGitHub {
owner = "joshrotenberg";
repo = "adrs";
tag = "v${finalAttrs.version}";
hash = "sha256-AlmhI7CaKnfLHUQXPRpi8drPBQjZG/Gb9SEqObRuiqA=";
hash = "sha256-enM3r3tJHbcvl6Xf4uyKJm1rCGt3J+0Ruxg4KgP0s0I=";
};
cargoHash = "sha256-CKC6Jr8zWObH9TcEz1o/fSGIXDagM9RgpOcaQchMNqA=";
cargoHash = "sha256-JCwJtqphGxaTY9doDcDy0nSVYwV40Ve032Mowfbcq20=";
meta = {
description = "Command-line tool for managing Architectural Decision Records";

View File

@@ -14,13 +14,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "amneziawg-tools";
version = "3.0.20260730";
version = "3.0.20260805";
src = fetchFromGitHub {
owner = "amnezia-vpn";
repo = "amneziawg-tools";
tag = "v${finalAttrs.version}";
hash = "sha256-jIE2yrTeikJaa9wX7P+QAL/WmeWz6eGwlju9unMny1g=";
hash = "sha256-eVi+pYUv0EgCEpIGcR5ISl3NI/VOgR2m9FPRYDIKw2o=";
};
sourceRoot = "${finalAttrs.src.name}/src";

View File

@@ -9,7 +9,7 @@
buildGoModule (finalAttrs: {
pname = "andcli";
version = "2.8.0";
version = "2.8.1";
__structuredAttrs = true;
@@ -19,7 +19,7 @@ buildGoModule (finalAttrs: {
owner = "tjblackheart";
repo = "andcli";
tag = "v${finalAttrs.version}";
hash = "sha256-yFYO223RbQ7qOw9dPXgMMTQpA+BzQ+xlT+CfWcQMeqk=";
hash = "sha256-BVF+r8N+/PvARxANlL7nPf23ABbp+O1DNPblMyXroq8=";
};
vendorHash = "sha256-aFOwfloqFPPMgCufwmDgfM9lDinkFvu4i+BiVUo+Iwk=";

View File

@@ -8,7 +8,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "apfel-llm";
version = "1.9.0";
version = "1.9.1";
__structuredAttrs = true;
strictDeps = true;
@@ -16,7 +16,7 @@ stdenv.mkDerivation (finalAttrs: {
# Building from source requires swift 6.3.0 while nixpkgs only has 5.10.1
src = fetchurl {
url = "https://github.com/Arthur-Ficial/apfel/releases/download/v${finalAttrs.version}/apfel-${finalAttrs.version}-arm64-macos.tar.gz";
hash = "sha256-1DnZbp4iXlrC7eUGWd8NEEiryxPvRqndJ1++gAskEYQ=";
hash = "sha256-CWM2S+/+IAF7juSEsLx8glYKUY8q5iKfPySQ9xdQ1AM=";
};
sourceRoot = ".";

View File

@@ -2,21 +2,21 @@
lib,
buildGoModule,
fetchFromGitHub,
terraform,
versionCheckHook,
}:
buildGoModule (finalAttrs: {
pname = "atmos";
version = "1.220.0";
version = "1.224.1";
src = fetchFromGitHub {
owner = "cloudposse";
repo = "atmos";
tag = "v${finalAttrs.version}";
hash = "sha256-kUCSa6Kw8wfGfMi3swqwt9mT0ZmniQVE/h5XWkjh+SM=";
hash = "sha256-ew07sucTTLLUU2bdN3HKyJJ6i5z6jqgfYR3fHLnzcHA=";
};
vendorHash = "sha256-X8R0hRTDKvKmBWgV4ujVQrHIE935wG6sogQAzv2fdTg=";
vendorHash = "sha256-MP30jhbhcf6+TWB0q/VLPY6DYd0TLUWZmg3D+d8IpXg=";
env.CGO_ENABLED = 0; # Compiles a pure statically linked Go binary.
@@ -25,32 +25,23 @@ buildGoModule (finalAttrs: {
ldflags = [
"-s"
"-w"
"-X github.com/cloudposse/atmos/cmd.Version=v${finalAttrs.version}"
"-X github.com/cloudposse/atmos/pkg/version.Version=v${finalAttrs.version}"
];
nativeCheckInputs = [ terraform ];
nativeCheckInputs = [ versionCheckHook ];
preCheck = ''
# Remove tests that depend on a network connection.
rm -f \
pkg/vender/component_vendor_test.go \
main_hooks_and_keychain_store_integration_test.go \
main_hooks_and_store_integration_test.go \
main_plan_diff_integration_test.go \
pkg/atlantis/atlantis_generate_repo_config_test.go \
pkg/describe/describe_affected_test.go
pkg/describe/describe_affected_test.go \
pkg/vender/component_vendor_test.go
'';
# depend on a network connection.
doCheck = false;
# depend on a network connection.
doInstallCheck = false;
installCheckPhase = ''
runHook preInstallCheck
$out/bin/atmos version | grep "v${finalAttrs.version}"
runHook postInstallCheck
'';
doInstallCheck = true;
meta = {
homepage = "https://atmos.tools";
@@ -58,5 +49,6 @@ buildGoModule (finalAttrs: {
description = "Universal Tool for DevOps and Cloud Automation (works with terraform, helm, helmfile, etc)";
mainProgram = "atmos";
license = lib.licenses.asl20;
maintainers = with lib.maintainers; [ nevivurn ];
};
})

View File

@@ -47,7 +47,7 @@ let
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "autopush";
version = "1.82.3";
version = "1.83.1";
__structuredAttrs = true;
strictDeps = true;
@@ -61,10 +61,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "mozilla-services";
repo = "autopush-rs";
tag = finalAttrs.version;
hash = "sha256-lUmwy5ncMDp4wVP8cwvYV6/QBOPL3NUtlWbxMW1p5bc=";
hash = "sha256-T1FLDDAIU+YEdDRY11XzUvxKQS3ETqufDC7B4U5vyFk=";
};
cargoHash = "sha256-b61aBbc1DdsT9UeUdbCz4xUHnvj9ans7O0fH3DizFl0=";
cargoHash = "sha256-a413jA5s6EcjwF6Jxf8Mnqxv4ULVwXRzpUTnLv2CkCg=";
nativeBuildInputs = [
pkg-config
@@ -106,13 +106,13 @@ rustPlatform.buildRustPackage (finalAttrs: {
imports = [
(lib.modules.importApply ./service-autoconnect.nix { inherit pkgs; })
];
package = finalAttrs.finalPackage.out;
autoconnect.package = finalAttrs.finalPackage;
};
services.autoendpoint = {
imports = [
(lib.modules.importApply ./service-autoendpoint.nix { inherit pkgs; })
];
package = finalAttrs.finalPackage.out;
autoendpoint.package = finalAttrs.finalPackage;
};
updateScript = nix-update-script { };

View File

@@ -15,21 +15,23 @@ in
{
_class = "service";
options = {
package = lib.mkPackageOption pkgs "autopush-rs.out" { };
autoconnect.settings = lib.mkOption {
type = lib.types.submodule {
freeformType = tomlFmt.type;
options = {
db_dsn = lib.mkOption {
description = "Endpoint of the database server.";
type = lib.types.str;
default = "";
example = lib.literalExpression "redis+socket://\${config.services.redis.servers.autopush-rs.port}";
autoconnect = {
package = lib.mkPackageOption pkgs "autopush-rs" { };
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = tomlFmt.type;
options = {
db_dsn = lib.mkOption {
description = "Endpoint of the database server.";
type = lib.types.str;
default = "";
example = lib.literalExpression "redis+socket://\${config.services.redis.servers.autopush-rs.port}";
};
};
};
default = { };
description = "";
};
default = { };
description = "";
};
};
config =
@@ -38,7 +40,7 @@ in
in
{
process.argv = [
"${config.package}/bin/autoconnect"
"${cfg.package}/bin/autoconnect"
"-c"
(toString configFile)
];

View File

@@ -15,8 +15,8 @@ in
{
_class = "service";
options = {
package = lib.mkPackageOption pkgs "autopush-rs.out" { };
autoendpoint = {
package = lib.mkPackageOption pkgs "autopush-rs" { };
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = tomlFmt.type;
@@ -40,7 +40,7 @@ in
in
{
process.argv = [
"${config.package}/bin/autoendpoint"
"${cfg.package}/bin/autoendpoint"
"-c"
(toString configFile)
];

View File

@@ -25,16 +25,16 @@
"@esbuild/win32-arm64@npm:0.28.1": "551ada5396e1f10e3d3592dd60a148a7257af1ab2317bba09e9ed18a6d7ee7e5961c68eb1fbaee4e8c1961b504807493e1b8f5c700dd1fb990f0cb36b240ad57",
"@esbuild/win32-ia32@npm:0.28.1": "2676ace6b4d63721da34873974152e869aed9fc8bd9fdff4b8df14a3a3e68b78a9b4566e643b90b948b4e85773cbf288a33a59d13979caaadd43b5adad68312c",
"@esbuild/win32-x64@npm:0.28.1": "8d658b74ed9b7494b3799093551d4c928a7916865ed42d00a135156cbd08612b53072e9e424f0687c10a93a444d30d6b0294b6a1d5fdba78078d706646ba558f",
"@nx/nx-darwin-arm64@npm:22.7.7": "93f7de46da3da64c42489e7b42676ee59914635183f28640454a40bd0eb9f78b2c6a7b707bbd69024ffd45675e8a51b3ebde1b4ce268232ab9283f47f05001d9",
"@nx/nx-darwin-x64@npm:22.7.7": "5f175cbe8e2281b8055394c8b79afb98c81d1d06158d1866667b392134105db1c7b9c7b8eeea5f2bdcda8be56ff702f728067e8f505a370dbf5e6f80f41dd99e",
"@nx/nx-freebsd-x64@npm:22.7.7": "65cdfbe8663219e971dd50479f59b07ac37e08ed14be234069c67af3bde005c69197bbd28d83f64f0b7cafd5af744d74e6822e2c97b6336b2f4cd599ae510880",
"@nx/nx-linux-arm-gnueabihf@npm:22.7.7": "62925001769e4e21e1b5ef2ad17463ac2b42d5263a117e74e7c72797e26adbb990cb3017749077ed057c27b964823690896ee1785e1a835dc27b6d04a19403e7",
"@nx/nx-linux-arm64-gnu@npm:22.7.7": "bc851f35ca9308a530bf81d0f73e262b0124f40b4edd41ae055b5a0f893f2a24e2368f344817beb8cc9f820957b2fb6ad064df20818d7c356a060d533d5b0dea",
"@nx/nx-linux-arm64-musl@npm:22.7.7": "940e1f0277c180e828b5296437b2a4fd22d39e2f51f342f9f97c6feb2a917c9bc09297d2ca276a053b381909a863e0bb1c3c10bc207afcde24cd3f12c0672304",
"@nx/nx-linux-x64-gnu@npm:22.7.7": "db94d5f9b16600e9892442243f2fc51b614b16311e542ed80cbee0cd71aa72a2d4f4cfe705f3ef0fbc5ce5956abe5d18a7004eb41e18a3467539aa5b52fea6f7",
"@nx/nx-linux-x64-musl@npm:22.7.7": "4f587b7c5014c47bc371943c6eb3882d7473b6f9427a8babd5837eb0c1c45e65b50d393a20e1c932b568365e5f0a0a03c8476d391ed96fe12fb56b967354064b",
"@nx/nx-win32-arm64-msvc@npm:22.7.7": "bb5fc5f779ec467c57e2314038a47c81344ff43c99801650a6074c828c907882bd3bab1153a15f4a4371028c3ec4ba0b961014b225c81e084073bc922f0ab3cc",
"@nx/nx-win32-x64-msvc@npm:22.7.7": "f08aab74096e9c772b45eb20e9aecf6836d9d20511cbeba31d9a303ca29f15eab2c2a7f42bffad8d02508c6c5662816b4d0c107d60366df0a6e2153c15b9dbf9",
"@nx/nx-darwin-arm64@npm:22.7.8": "bc5e8ec97a136e6fd83fe76d0ab88689d4e17b89b57bec271b37802453522cc43fcd87eb3c4cf5096b566e579004f088d08824d75215a45498fef045edc5562f",
"@nx/nx-darwin-x64@npm:22.7.8": "b7020ed4326892493d0cd0aa1239612e16c1f60272ae2ed7f3a5b2b3d2baa936554f96bcaceb2feeb1e7050cf2c043ab8749cb2d3350b92c08435347fbfcd66e",
"@nx/nx-freebsd-x64@npm:22.7.8": "6fa3b5386476a80a6f16bd386299d60f4ec333ac05eb6fae8d75d116a380cfc32b901feeaf88e153100db56f66aefdf8a5875abfc3d5e895e916de7a9b0a283e",
"@nx/nx-linux-arm-gnueabihf@npm:22.7.8": "6b474dcddc19dc859d86d0e8a9bed595016b94b795c1ecc1fbdea66eecc8d5896114bb646e5ca7252b616691a69e4b988ebf08b3bfc03923c1f39c80cc3deca2",
"@nx/nx-linux-arm64-gnu@npm:22.7.8": "46a6c08a47142a8ed1d2b3b784fdefb3813bba4921dc8246b973cfdf772386b4a950cb5e1b6ac10007c2df1b256c8de30bb289d7aa745cd57a147998a96de55e",
"@nx/nx-linux-arm64-musl@npm:22.7.8": "6dacc2727bc4e584f10e4b6936b0a89b3fdca7e7740211a42d05fa39229e69a8a7539b7514a7557e9a196116ce359a1469e67a5bf9f4934194e373fa84570ee6",
"@nx/nx-linux-x64-gnu@npm:22.7.8": "1f4e93f41bf9048b5dbec67a9dcd3e3d23b3c521daa80ae735b9aff32dced72331418eb92866e5716ddfbc6a9c34b9205fe1259205c38d1fa2e9396bd0e00fcc",
"@nx/nx-linux-x64-musl@npm:22.7.8": "5de518e71c4627d6c79aed7be304cebe6a9c8cb00b6c5971872f185a3785a078621ef12e54efdf9410d492b75ffb30751c8eba587a8109585c8f43341220cfc4",
"@nx/nx-win32-arm64-msvc@npm:22.7.8": "7818ecb3b9b4e3f0d9dd297f9346bdf519989cf330f882d5ec4d80367713c2f47565d7965fcd4e38e5b5cccfc09882215a1f98583e77f966966fed37b6aea1cb",
"@nx/nx-win32-x64-msvc@npm:22.7.8": "da4c071aa2e6379dd0b5d50d0b33c813ed15e03379d3531b817e26d99f58d6a185c313535100ed63ef8ae2b9a0cc6f1636c12fff9c66df76080dde6ad3144408",
"@unrs/resolver-binding-android-arm-eabi@npm:1.11.1": "04dd38b694c1680bfec192b499e188700398a414886a08a8a7c72815db56ac147df03d88c73ff6fff7ac3e0a01dc41978054b3622b49463e0d684c5168557fcc",
"@unrs/resolver-binding-android-arm64@npm:1.11.1": "763626adc34dd2b4af677b5ced6493e7b2b1935351a5c9137f1c9561d11faf97b94015e6876e57e85c33ff563564314c92c0882a4780a57f2225cbbd779a695d",
"@unrs/resolver-binding-darwin-arm64@npm:1.11.1": "03b477fdfec55dbabe488fe0962417bddaa38b028d2670053469f1d24163907b097aac15b565f6974449bee398a38d5e3e1525f2b515ce57e243149021b7aa2f",

View File

@@ -17,19 +17,19 @@ let
in
stdenv.mkDerivation (finalAttrs: {
pname = "aws-cdk-cli";
version = "2.1134.0";
version = "2.1135.0";
src = fetchFromGitHub {
owner = "aws";
repo = "aws-cdk-cli";
tag = "cdk@v${finalAttrs.version}";
hash = "sha256-VrP/L8uuTxC4TBEHhmuhNEf0nf5J8kYjOl3Kz1ejUPg=";
hash = "sha256-NF80AuuizRMjD0z127mWFUJGAg6hzjHcLCGdJEaOc/s=";
};
missingHashes = ./missing-hashes.json;
offlineCache = yarn-berry.fetchYarnBerryDeps {
inherit (finalAttrs) src missingHashes;
hash = "sha256-l6iKJvG8qbV6pp+XWS07lKqr63UABTLd4/dlJnosIRw=";
hash = "sha256-H/jpxsSTA5LFgDz2f2oaLgdB/ITs3hmSJGznqanuS34=";
};
nativeBuildInputs = [

View File

@@ -10,17 +10,17 @@
}:
buildGoModule (finalAttrs: {
pname = "aws-vault";
version = "7.13.1";
version = "7.13.3";
src = fetchFromGitHub {
owner = "ByteNess";
repo = "aws-vault";
rev = "v${finalAttrs.version}";
hash = "sha256-J9soEr5QhHZZLthWyNCr3ofCJD01gVLqT+8XVXgd/oA=";
hash = "sha256-woLNujYV5Za3vbJ5/eLGCVNF2OPIWiTg5Zb6S3phdY4=";
};
proxyVendor = true;
vendorHash = "sha256-5GYKo2bs0JBe7aiqv/HVerfJKYf1Ocen7xkQvHQfm44=";
vendorHash = "sha256-eGkbvFB1KDULvmvBoHHbBn80DhQZ274xM6eJ9EkDv20=";
nativeBuildInputs = [
installShellFiles

View File

@@ -12,9 +12,9 @@
}:
let
secp256k1_anonswap = secp256k1.overrideAttrs (old: {
secp256k1_basicswap = secp256k1.overrideAttrs (old: {
src = fetchFromGitHub {
owner = "tecnovert";
owner = "basicswap";
repo = "secp256k1";
rev = "fd8b63ccf8bcb48358a42c456f34e2488a55a688";
hash = "sha256-/bmKZRBBjirI4YqRKfzoxdAt6UVoWHmrNQQHX7l+eH8=";
@@ -27,24 +27,20 @@ let
"--enable-module-ecdsaotves"
];
});
coincurve-anonswap =
coincurve-basicswap =
(python3Packages.coincurve.override {
secp256k1 = secp256k1_anonswap;
secp256k1 = secp256k1_basicswap;
}).overrideAttrs
(old: {
{
version = "21.0.3";
src = fetchFromGitHub {
owner = "tecnovert";
owner = "basicswap";
repo = "coincurve";
rev = "932366c9d4d8e487162b5c1b2a2d9693e24e0483";
hash = "sha256-zOekPmP1zR/S+zxq/7OrEz24k8SInlsB+wJ8kPlmqe4=";
tag = "basicswap_v0.3";
hash = "sha256-lSEdwV7jhYa5ERHEVDuLA84JGGVsbvVoOqSRXU5AbCE=";
};
patches = [ ];
preCheck = ''
rm -rf src/coincurve
# don't run benchmark tests
rm tests/test_bench.py
'';
});
};
bindir = linkFarm "bindir" (
lib.mapAttrs (_: p: "${lib.getBin p}/bin") {
particl = particl-core;
@@ -58,14 +54,14 @@ let
in
python3Packages.buildPythonApplication (finalAttrs: {
pname = "basicswap";
version = "0.14.4";
version = "0.17.5";
pyproject = true;
src = fetchFromGitHub {
owner = "basicswap";
repo = "basicswap";
tag = "v${finalAttrs.version}";
hash = "sha256-UhuBTbGULImqRSsbg0QNb3yvnN7rnSzycweDLbqrW+8=";
hash = "sha256-ezBBe3ubLM1q99+sFfXg0iW9YUfbT4v3H6wG0J2fmTQ=";
};
postPatch = ''
@@ -80,16 +76,14 @@ python3Packages.buildPythonApplication (finalAttrs: {
];
dependencies = with python3Packages; [
coincurve-anonswap
coincurve-basicswap
wheel
pyzmq
protobuf
sqlalchemy_1_4
python-gnupg
jinja2
pycryptodome
pysocks
mnemonic
websocket-client
];
postInstall = ''

View File

@@ -15,16 +15,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "bilibili-tui";
version = "1.0.12";
version = "1.0.13";
src = fetchFromGitHub {
owner = "MareDevi";
repo = "bilibili-tui";
tag = "v${finalAttrs.version}";
hash = "sha256-G2aoPw8SMu3ytHbxcQrf1iH6i+b9viM+/EYorv6j5bg=";
hash = "sha256-u7jSOsXJDghyrHdfOkMiwCtN1Pugjc7RRJVvjtR4LOE=";
};
cargoHash = "sha256-ojAN98of7vZp/F1n0a/88e6k4nBPG9HPKyTO1xc8o4Q=";
cargoHash = "sha256-Xxsfa33dRqObwfPFVHezlXOy5bvjQTaQ9FSuU+F1V5U=";
nativeBuildInputs = [
makeBinaryWrapper

File diff suppressed because it is too large Load Diff

View File

@@ -8,20 +8,20 @@
buildDotnetModule rec {
pname = "btcpayserver";
version = "2.3.4";
version = "2.4.2";
src = fetchFromGitHub {
owner = "btcpayserver";
repo = "btcpayserver";
tag = "v${version}";
hash = "sha256-u4VNDKLOb6bEkdhRTmnGxyM+2a6mcdWwV1T4+HFK/14=";
hash = "sha256-UeWiJv6LvKZx4LYy8LBvPTXVNKAIZI1n3qb6sIU5Dd0=";
};
projectFile = "BTCPayServer/BTCPayServer.csproj";
nugetDeps = ./deps.json;
dotnet-sdk = dotnetCorePackages.sdk_8_0;
dotnet-runtime = dotnetCorePackages.aspnetcore_8_0;
dotnet-sdk = dotnetCorePackages.sdk_10_0;
dotnet-runtime = dotnetCorePackages.aspnetcore_10_0;
buildType = if altcoinSupport then "Altcoins-Release" else "Release";

View File

@@ -4,7 +4,7 @@
fetchFromGitHub,
copyPkgconfigItems,
makePkgconfigItem,
version ? "3.0.0",
version ? "3.0.1",
}:
stdenv.mkDerivation (finalAttrs: {
@@ -17,6 +17,7 @@ stdenv.mkDerivation (finalAttrs: {
rev = "rel-${finalAttrs.version}";
hash =
{
"3.0.1" = "sha256-oHebG9VBtEnxmBpfP6A/f/UNIx2AXbLPs0NHPoNlZfY=";
"3.0.0" = "sha256-pymbSC6bwQQ0YCtJd3xWZiC22UEkFiKSLObSOnoQj9I=";
"2.2.1" = "sha256-dYRaw9DI63Nqz0IJkfQYU4y00KSfq1Xv0xZuL1G15CY=";
"2.1.3" = "sha256-W3kO+6nVzkmJXyHJU+NZWP0oatK3gon4EWF1/03rgL4=";

View File

@@ -8,19 +8,19 @@
buildGoModule (finalAttrs: {
pname = "carapace-bridge";
version = "1.6.2";
version = "1.6.3";
src = fetchFromGitHub {
owner = "carapace-sh";
repo = "carapace-bridge";
tag = "v${finalAttrs.version}";
hash = "sha256-QlYRbGw7QRwMqJRJea0OoHCDQpYK7Uq6eFgc1JahEiI=";
hash = "sha256-0z9yd3hzvldtBO12nj9XcDuNjJAsmUIMXYB90PHK5VE=";
};
# buildGoModule tries to run `go mod vendor` instead of `go work vendor` on
# the workspace if proxyVendor is off
proxyVendor = true;
vendorHash = "sha256-YB8rBIrFgOBzdBLAXf5FjzB0d0dZmNEq8vXFZg1Rd10=";
vendorHash = "sha256-mOgeHluUbLIILplVMdZV8CxYhQC1r9HX6cDr4Fe1jXM=";
postPatch = ''
substituteInPlace cmd/carapace-bridge/main.go \

View File

@@ -7,13 +7,13 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "cargo-nextest";
version = "0.9.140";
version = "0.9.143";
src = fetchFromGitHub {
owner = "nextest-rs";
repo = "nextest";
tag = "cargo-nextest-${finalAttrs.version}";
hash = "sha256-BPepunROy+2a31mXRn19perolZLWCTg0kseu0xqRbmU=";
hash = "sha256-nbkNUWa3Meht5b4pXjteWP0XVwJZjSx6AuWxaJgdMm0=";
};
# FIXME: we don't support dtrace probe generation on macOS until we have a dtrace build: https://github.com/NixOS/nixpkgs/pull/392918
@@ -21,7 +21,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
./no-dtrace-macos.patch
];
cargoHash = "sha256-uqEIv6zkYuL4cOXuGfN7VxCakvJ3z49eqRUZiTgD9Tk=";
cargoHash = "sha256-j3OciGSKymfDuLqsnMSOInLvpSuAm92/SNMDACP23Gc=";
cargoBuildFlags = [
"-p"

View File

@@ -19,14 +19,14 @@
python3Packages.buildPythonApplication (finalAttrs: {
pname = "cine";
version = "1.8.0";
version = "1.8.2";
pyproject = false;
src = fetchFromGitHub {
owner = "diegopvlk";
repo = "Cine";
tag = "v${finalAttrs.version}";
hash = "sha256-PXZDEtdeb5R5RQUrxrjN+sr4Pi5/48jPkWKuJs+ZUTQ=";
hash = "sha256-kgWK27GThlQFZ0M8UjGR37vKdaPvbg0MfZPB5gq+xGY=";
fetchSubmodules = true;
};

View File

@@ -6,16 +6,16 @@
buildGoModule rec {
pname = "cni-plugin-flannel";
version = "1.9.1-flannel2";
version = "1.9.1-flannel3";
src = fetchFromGitHub {
owner = "flannel-io";
repo = "cni-plugin";
rev = "v${version}";
sha256 = "sha256-ApPv1sQQZSevvP9gem9bTRWRZzHtcDHWNFTwEdCPJ6s=";
sha256 = "sha256-MPR8Nu+EZ/P+xSeEig6EmQVG0qaGt6g6/Fe3jIz1fqU=";
};
vendorHash = "sha256-WoVjhj2r4hVLBFYUYwpwuB7rpvoZFBDLpaEbLrxuFj4=";
vendorHash = "sha256-JTy9MsTyWvnqtRH0hzezYwgB23mfG7KtI9OmynpcESM=";
ldflags = [
"-s"

View File

@@ -74,7 +74,7 @@ let
in
stdenvNoCC.mkDerivation (finalAttrs: {
pname = "comfyui";
version = "0.30.1";
version = "0.30.2";
strictDeps = true;
__structuredAttrs = true;
@@ -83,7 +83,7 @@ stdenvNoCC.mkDerivation (finalAttrs: {
owner = "Comfy-Org";
repo = "ComfyUI";
tag = "v${finalAttrs.version}";
hash = "sha256-z8bBKnW2iF8WXI3Ju6Ei+8YpOWqmbUgYiErKiVBBwEk=";
hash = "sha256-fLtgJpK8hEuYcfu1vKGDJtszPfED4mmyKHZYrrq/uiA=";
};
nativeBuildInputs = [ makeBinaryWrapper ];

View File

@@ -7,7 +7,7 @@
stdenv.mkDerivation (finalAttrs: {
pname = "confluent-cli";
version = "4.70.1";
version = "4.71.0";
# To get the latest version:
# curl -L https://cnfl.io/cli | sh -s -- -l | grep -v latest | sort -V | tail -n1
@@ -25,9 +25,9 @@ stdenv.mkDerivation (finalAttrs: {
fetchurl {
url = "https://s3-us-west-2.amazonaws.com/confluent.cloud/confluent-cli/archives/${finalAttrs.version}/confluent_${finalAttrs.version}_${system}.tar.gz";
hash = selectSystem {
x86_64-linux = "sha256-ap4jje8SPai7iA0REdxs/LNURUv44S3WlWFOVVtvp1Y=";
aarch64-linux = "sha256-Acjw9ZPERZL9NxenVyLuql9pxYo5rMzzcD44p7LbQ3Y=";
aarch64-darwin = "sha256-XaVoxYTTRStGKFlwoZOcTUHG+Mvalw+kMso7PwKve9U=";
x86_64-linux = "sha256-HLcIIouywKJwZjbjGNFr3VxGDUS3qyCtxpLigbM5KKQ=";
aarch64-linux = "sha256-mWicVfZbD9SHnsCfT8skggxJsdG479MC7qBhOR7yQ1s=";
aarch64-darwin = "sha256-ULn9BLQ/1Z4ZU8OZN2ZKrH7jHRaRokdI3S2KtCFW+d0=";
};
};

View File

@@ -21,18 +21,18 @@
rustPlatform.buildRustPackage {
pname = "crosvm";
version = "0-unstable-2026-07-15";
version = "0-unstable-2026-08-03";
src = fetchgit {
url = "https://chromium.googlesource.com/chromiumos/platform/crosvm";
rev = "ffbf0df34699f9670db015962bac83d0d417d7e7";
hash = "sha256-4z1TXMGOvOMUAED1gluugHPF4mBigjDioxnFneQOIS8=";
rev = "b4a952843aea56f36b1cdccea3cc3b92edc078b8";
hash = "sha256-yQZ+Sf/pRScIGERyA8J4V9ukCwD0bjbi2QIhIzUHQwA=";
fetchSubmodules = true;
};
separateDebugInfo = true;
cargoHash = "sha256-bXATbiA+cRi9aOxpaTLRadBjl4O89x+J84byJ4CrsqI=";
cargoHash = "sha256-wZm3bjXQJXHOgRVq5+AxMA0DJpEp96xvgwxzKBeI9HU=";
nativeBuildInputs = [
pkg-config

View File

@@ -7,16 +7,16 @@
}:
buildGoModule (finalAttrs: {
pname = "crowdsec-firewall-bouncer";
version = "0.0.34";
version = "0.0.36";
src = fetchFromGitHub {
owner = "crowdsecurity";
repo = "cs-firewall-bouncer";
tag = "v${finalAttrs.version}";
hash = "sha256-lDO9pwPkbI+FDTdXBv03c0p8wbkRUiIDNl1ip3AZo2g=";
hash = "sha256-MGFplf3keL5B7rr1BcS4PegPWGVAYnFVO6BmxQocBHs=";
};
vendorHash = "sha256-SbpclloBgd9vffC0lBduGRqPOqmzQ0J91/KeDHCh0jo=";
vendorHash = "sha256-n3Do2eCmYHRdYNYqj5L+Ohkyw0OYAAp4HcTU9RI0ncs=";
ldflags = [
"-X github.com/crowdsecurity/go-cs-lib/version.Version=v${finalAttrs.version}"

View File

@@ -7,6 +7,7 @@
buildGoModule,
installShellFiles,
buildPackages,
c-ares,
zlib,
zstd,
sqlite,
@@ -24,6 +25,7 @@
go,
p11-kit,
nixosTests,
c-aresSupport ? false,
}:
stdenv.mkDerivation rec {
pname = "curl-impersonate";
@@ -45,7 +47,9 @@ stdenv.mkDerivation rec {
# warnings on `boringssl`.
env.NIX_CFLAGS_COMPILE = "-Wno-error";
separateDebugInfo = true;
strictDeps = true;
__structuredAttrs = true;
depsBuildBuild = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
buildPackages.stdenv.cc
@@ -125,6 +129,13 @@ stdenv.mkDerivation rec {
postPatch = ''
substituteInPlace Makefile.in \
--replace-fail "-lc++" "-lstdc++"
${lib.optionalString c-aresSupport ''
substituteInPlace Makefile.in \
--replace-fail \
'config_flags="$$config_flags --enable-ipv6";' \
'config_flags="$$config_flags --enable-ipv6"; config_flags="$$config_flags --enable-ares=${lib.getDev c-ares}";'
''}
'';
preConfigure = ''

View File

@@ -0,0 +1,9 @@
{ lib, curl-impersonate }:
# nixpkgs-update: no auto update
curl-impersonate.override {
c-aresSupport = true;
}
// {
meta = lib.removeAttrs (curl-impersonate.meta or { }) [ "position" ];
}

View File

@@ -8,21 +8,21 @@
let
pname = "dbgate";
version = "7.2.3";
version = "7.2.4";
src =
fetchurl
{
aarch64-linux = {
url = "https://github.com/dbgate/dbgate/releases/download/v${version}/dbgate-${version}-linux_arm64.AppImage";
hash = "sha256-CgzhxCITg9MvB3c4bL3ffTszBdJM4xubYfEdJ51LgXU=";
hash = "sha256-9X8AyFcKy94blybAEU/H83Ku5oFQU4piVtCTNn4mobE=";
};
x86_64-linux = {
url = "https://github.com/dbgate/dbgate/releases/download/v${version}/dbgate-${version}-linux_x86_64.AppImage";
hash = "sha256-WCRI8THno6e+vHj+PxuiZqX/idI2aVJN8v4aykmNq5U=";
hash = "sha256-v3HPdY5so4IYY8tfk5mqjKOglCvcKk7uKYHV51DoiLM=";
};
aarch64-darwin = {
url = "https://github.com/dbgate/dbgate/releases/download/v${version}/dbgate-${version}-mac_universal.dmg";
hash = "sha256-Dj0C0M1AZd5VHqsnUd6GLDQcOvtw21qAL+DQaxEx8iI=";
hash = "sha256-GPdDglP2DVGCdchvj1Q5oLU3+DSzTccUbH5LmHGRj/M=";
};
}
.${stdenv.hostPlatform.system} or (throw "dbgate: ${stdenv.hostPlatform.system} is unsupported.");

View File

@@ -10,16 +10,16 @@
}:
buildGoModule (finalAttrs: {
pname = "dbtpl";
version = "1.1.0";
version = "1.2.0";
src = fetchFromGitHub {
owner = "xo";
repo = "dbtpl";
tag = "v${finalAttrs.version}";
hash = "sha256-r0QIgfDSt7HWnIDnJWGbwkqkXWYWGXoF5H/+zS6gEtE=";
hash = "sha256-mY3UyTDlofSgkOjlJTVCtJz26DVoxzOjzZ9paFBpB3M=";
};
vendorHash = "sha256-scJRJaaccQovxhzC+/OHuPR4NRaE8+u57S1JY40bif8=";
vendorHash = "sha256-Gr2gNIasf5/CGqUx1ONkqICcjJvOQyC322S/lH+a0U0=";
nativeBuildInputs = [
installShellFiles

View File

@@ -7,13 +7,13 @@
}:
buildGoModule (finalAttrs: {
pname = "deja";
version = "0.3.2";
version = "0.4.0";
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "Giammarco-Ferranti";
repo = "deja";
tag = "v${finalAttrs.version}";
hash = "sha256-ngjnrEq7x6OQ9uFGKmEvbAG7rPtjYX0xLK8110WSZUQ=";
hash = "sha256-SAn/9OM5ivUkJpiBXgV2o01ww85xRo3fQKZp0spwe/w=";
};
vendorHash = "sha256-KmLdMK94cGOXMPJwWS6NgLB5OiNmJbszHdnLzauqJm8=";

View File

@@ -95,7 +95,6 @@ rustPlatform.buildRustPackage (finalAttrs: {
asl20
];
maintainers = with lib.maintainers; [
cathalmullan
anish
];
platforms = lib.platforms.all;

View File

@@ -19,18 +19,18 @@
stdenv.mkDerivation (finalAttrs: {
pname = "distroshelf";
version = "1.4.8";
version = "1.5.2";
src = fetchFromGitHub {
owner = "ranfdev";
repo = "DistroShelf";
tag = "v${finalAttrs.version}";
hash = "sha256-3O+KsOZzwH8E2rDSEgiVZK64B2wK1U/uDJ2z37NtJCg=";
hash = "sha256-6UAsG8K/j6lX6mwZOg5JZYbYUe98i6+nPaPLjQMM3w8=";
};
cargoDeps = rustPlatform.fetchCargoVendor {
inherit (finalAttrs) pname version src;
hash = "sha256-lNKWcpdIr1tm2m50B9uOqFQvhndAEM5ADmmPBPb8sj4=";
hash = "sha256-0ZOgiLGvcjpBcYdEVrcerdIJBPMhS8sPtUOY4t+eUjg=";
};
nativeBuildInputs = [

View File

@@ -8,16 +8,16 @@
buildGoModule (finalAttrs: {
pname = "earthbuild";
version = "0.8.17";
version = "0.8.18";
src = fetchFromGitHub {
owner = "EarthBuild";
repo = "earthbuild";
rev = "v${finalAttrs.version}";
hash = "sha256-ATdNA9KjAXsxMiez3AF6TxK7OujNDABY8jB6hXeSNpc=";
hash = "sha256-ydi649sjAnObI4PrbdwVQifWVHyTmJsj2qqJ54rXllQ=";
};
vendorHash = "sha256-49FWzLHEbgwWOXT1uPshdY5risFHInA541Mfhu7v08A=";
vendorHash = "sha256-w5JnfSJ5yNtrc6IM2kCWXAJGbszpvA49rQQJ2+ynlg0=";
__structuredAttrs = true;
subPackages = [

View File

@@ -9,6 +9,10 @@
installShellFiles,
mold,
withQuic ? false, # with QUIC protocol support
formats,
bash,
iproute2,
}:
rustPlatform.buildRustPackage (finalAttrs: {
@@ -48,10 +52,17 @@ rustPlatform.buildRustPackage (finalAttrs: {
doCheck = false; # tests failed due to heavy rely on network
passthru = {
tests = { inherit (nixosTests) easytier; };
tests = { inherit (nixosTests) easytier easytier-modular; };
updateScript = nix-update-script { };
};
passthru.services.default = {
imports = [
(lib.modules.importApply ./service.nix { inherit formats bash iproute2; })
];
easytier.package = finalAttrs.finalPackage;
};
meta = {
homepage = "https://github.com/EasyTier/EasyTier";
changelog = "https://github.com/EasyTier/EasyTier/releases/tag/v${finalAttrs.version}";

View File

@@ -0,0 +1,201 @@
# Non-module dependencies (`importApply`)
{
formats,
iproute2,
bash,
}:
# Service module
{
lib,
config,
options,
...
}:
let
cfg = config.easytier;
instanceName = cfg.settings.instance_name;
toml = formats.toml { };
in
{
_class = "service";
meta.maintainers = with lib.maintainers; [ moraxyc ];
options = {
easytier = {
package = lib.mkOption {
description = "Package to use for easytier";
defaultText = "The package that provided this module.";
type = lib.types.package;
};
peers = lib.mkOption {
type = with lib.types; listOf str;
default = [ ];
description = ''
Peers to connect initially. Valid format is: `<proto>://<addr>:<port>`.
'';
example = [
"tcp://example.com:11010"
];
};
configServer = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
Configure the instance from config server. When this option
set, any other settings for configuring the service manually
except {option}`easytier.settings.hostname` will be ignored. Valid formats are:
- full uri for custom server: `udp://example.com:22020/<token>`
- username only for official server: `<token>`
'';
example = "udp://example.com:22020/myusername";
};
settings = lib.mkOption {
type = lib.types.submodule {
freeformType = toml.type;
options = {
hostname = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = "Hostname shown in peer list and web console.";
};
instance_name = lib.mkOption {
type = lib.types.str;
description = "Identify different instances on same host";
};
network_identity = {
network_name = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = "EasyTier network name.";
};
network_secret = lib.mkOption {
type = with lib.types; nullOr str;
default = null;
description = ''
EasyTier network credential used for verification and encryption.
It is highly recommended to use {option}`easytier.environmentFiles` to
avoid leaking the secret into the world-readable Nix store.
'';
};
};
};
};
description = "Settings to generate config file";
};
configFile = lib.mkOption {
type = lib.types.path;
description = ''
EasyTier config file.
When this option is set, it takes precedence over all other
{option}`easytier.settings.*` options.
'';
};
environmentFiles = lib.mkOption {
type = with lib.types; listOf path;
default = [ ];
description = ''
Files containing environment variables (like {env}`ET_NETWORK_SECRET`)
to be passed to the service. All command-line args
have corresponding environment variables
'';
example = lib.literalExpression ''
[
/path/to/.env
/path/to/.env.secret
]
'';
};
extraArgs = lib.mkOption {
description = "Extra arguments to pass to `easytier-core`";
type = with lib.types; listOf str;
default = [ ];
};
};
};
config = {
easytier = {
settings.peer = lib.mkIf (cfg.peers != [ ]) (map (p: { uri = p; }) cfg.peers);
configFile = lib.mkDefault (
toml.generate "easytier-${instanceName}.toml" (
lib.attrsets.filterAttrsRecursive (_: v: v != null) cfg.settings
)
);
};
process = {
argv = [
(lib.getExe' cfg.package "easytier-core")
]
++ lib.optional (cfg.settings.hostname != null) "--hostname=${cfg.settings.hostname}"
++ lib.optional (cfg.configServer == null) "--config-file=${config.configData."config.toml".path}"
++ lib.optional (cfg.configServer != null) "--config-server=${cfg.configServer}"
++ cfg.extraArgs;
};
configData."config.toml" = {
enable = lib.mkDefault (cfg.configServer == null);
source = cfg.configFile;
};
}
# Refine the service for systemd
// lib.optionalAttrs (options ? systemd) {
systemd.mainExecStart = config.systemd.lib.escapeSystemdExecArgs config.process.argv;
systemd.service = {
description = "EasyTier Daemon - ${instanceName}";
wants = [
"network-online.target"
"nss-lookup.target"
];
after = [
"network-online.target"
"nss-lookup.target"
];
wantedBy = [ "multi-user.target" ];
path = [
cfg.package
iproute2
bash
];
restartTriggers = [ cfg.configFile ];
serviceConfig = {
Type = "simple";
Restart = "on-failure";
StateDirectory = "easytier/easytier-${instanceName}";
StateDirectoryMode = "0700";
WorkingDirectory = "%S/easytier/easytier-${instanceName}";
EnvironmentFile = cfg.environmentFiles;
# Hardening
DynamicUser = true;
CapabilityBoundingSet = [
"CAP_NET_RAW"
"CAP_NET_ADMIN"
];
AmbientCapabilities = [
"CAP_NET_RAW"
"CAP_NET_ADMIN"
];
DeviceAllow = "/dev/net/tun";
MemoryDenyWriteExecute = true;
PrivateTmp = true;
ProtectHome = true;
ProtectKernelLogs = true;
ProtectKernelModules = true;
ProtectProc = "invisible";
ProtectSystem = "strict";
RestrictRealtime = true;
UMask = "0077";
};
};
};
}

View File

@@ -35,16 +35,16 @@ in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ergohaven-entropy";
version = "0.3.1";
version = "0.3.4";
src = fetchFromGitHub {
owner = "ergohaven";
repo = "entropy";
tag = "v${finalAttrs.version}";
hash = "sha256-ibU379pT0/u6xsIOfgK7KjIlmoyoN9+G3J1T2rYwc44=";
hash = "sha256-+8MuDAGYZuSB/oBiP9pUgDzaRG0tpU8pbtJ5qGZeK9w=";
};
cargoHash = "sha256-e2bLlqH+2Cv4LBV+JooupcXDUe83NmiFI4zPNMTEW3A=";
cargoHash = "sha256-N6VlBT0isBLo/9b1gVOuN/d0GewB5oeanKboYSQQPR0=";
__structuredAttrs = true;

View File

@@ -1,49 +1,60 @@
{
coreutils,
fetchFromGitHub,
gamemode,
gawk,
gnugrep,
gobject-introspection,
gst_all_1,
icoextract,
imagemagick,
lib,
libayatana-appindicator,
libcanberra-gtk3,
libadwaita,
libgudev,
libmanette,
lsfg-vk,
meson,
ninja,
nix-update-script,
python3Packages,
umu-launcher,
vulkan-tools,
wrapGAppsHook3,
wrapGAppsHook4,
xdg-utils,
}:
python3Packages.buildPythonApplication (finalAttrs: {
pname = "faugus-launcher";
version = "1.22.8";
version = "2.0.6";
pyproject = false;
src = fetchFromGitHub {
owner = "Faugus";
repo = "faugus-launcher";
tag = finalAttrs.version;
hash = "sha256-2FsuD40u5O7VwbziTqhsfVyceyfmSRvdmsizfBy/Xys=";
hash = "sha256-pq5qgerFXZJQNVaNYTOSQjkpr3zKHFFxAH3d/ybCqJI=";
};
nativeBuildInputs = [
gobject-introspection
meson
ninja
wrapGAppsHook3
wrapGAppsHook4
];
buildInputs = [
libayatana-appindicator
];
libadwaita
libmanette
libgudev
]
++ (with gst_all_1; [
gst-plugins-base
gst-plugins-good
gstreamer
]);
dependencies = with python3Packages; [
dbus-python
pillow
psutil
pygame
pygobject3
requests
vdf
@@ -59,26 +70,29 @@ python3Packages.buildPythonApplication (finalAttrs: {
--replace-fail "/usr/lib/liblsfg-vk.so" "${lsfg-vk}/lib/liblsfg-vk.so"
'';
dontWrapGApps = true;
preFixup = ''
makeWrapperArgs+=(
"''${gappsWrapperArgs[@]}"
--suffix PYTHONPATH : "$out/${python3Packages.python.sitePackages}:$PYTHONPATH"
gappsWrapperArgs+=(
--set PYTHONPATH "$out/${python3Packages.python.sitePackages}:$PYTHONPATH"
--set LD_PRELOAD "libgamemode.so:$LD_PRELOAD"
--set LD_LIBRARY_PATH "${lib.getLib gamemode}/lib:$LD_LIBRARY_PATH"
--suffix PATH : "${
lib.makeBinPath [
coreutils
gawk
gnugrep
icoextract
imagemagick
libcanberra-gtk3
umu-launcher
vulkan-tools
xdg-utils
]
}"
)
wrapProgram $out/bin/faugus-launcher ''${makeWrapperArgs[@]}
'';
# has no tests
doCheck = false;
pythonImportsCheck = [ "faugus" ];
passthru.updateScript = nix-update-script { };
meta = {

View File

@@ -9,16 +9,16 @@
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "flux9s";
version = "1.0.0";
version = "1.0.1";
src = fetchFromGitHub {
owner = "dgunzy";
repo = "flux9s";
tag = "v${finalAttrs.version}";
hash = "sha256-DpXTWnFjQ023cWEe46Qu+m200vVNnraSq7RNVcr9GxM=";
hash = "sha256-7ZxGzhbEuNZA2eBGOVil6PqbZa4GawBjl0qj4Jeh+18=";
};
cargoHash = "sha256-R3dEHn6XY+6q6kZcp43T/ASGiEIqvtlORRJ9VOgW9f0=";
cargoHash = "sha256-go1HfGDufV/XDhsgHbvTThaHQSlfdLQXx/i6ZqG3h/s=";
nativeBuildInputs = [ pkg-config ];

View File

@@ -9,16 +9,16 @@
}:
buildGoModule (finalAttrs: {
pname = "fluxcd-operator";
version = "0.56.0";
version = "0.57.0";
src = fetchFromGitHub {
owner = "controlplaneio-fluxcd";
repo = "flux-operator";
tag = "v${finalAttrs.version}";
hash = "sha256-wx6FI4X5kBtbz1ZWeF35RSNu/FP3y4pfLnnn7ltofRQ=";
hash = "sha256-qY+uxYGkeiffU5UTsh7oVL1Cp8uKMj4/F6+Y62BSUPY=";
};
vendorHash = "sha256-sPAmFrB8Lxedsp1rmmsp2p4at0to7syxK9IR6Geh+ak=";
vendorHash = "sha256-uTj6P6UZtfFf7jBrRZMWJ3HObiSR/tPlFICk6Cw12WQ=";
ldflags = [
"-s"

View File

@@ -10,26 +10,23 @@
# C.f. <https://fmi-standard.org/>
assert lib.asserts.assertMsg (
FMIVersion >= 1 && FMIVersion <= 3
) "FMIVersion must be a valid FMI specification standard: 1, 2, or 3; not ${toString FMIVersion}";
FMIVersion >= 2 && FMIVersion <= 3
) "FMIVersion must be a valid FMI specification standard of: 2 or 3; not ${toString FMIVersion}";
# NB: this derivation does not package the fmusim executables, only
# the FMUs.
stdenv.mkDerivation (finalAttrs: {
pname = "reference-fmus";
version = "0.0.39";
version = "0.0.40";
src = fetchFromGitHub {
owner = "modelica";
repo = "reference-fmus";
rev = "v${finalAttrs.version}";
hash = "sha256-3bjqfEyPhqVrJOHHhniacyUAo82InCd6LLx3tyC8DYg=";
hash = "sha256-GRyvfOncJ6PPQpqxFELlIEZCijcxnSAzbPilmMEwmJQ=";
};
nativeBuildInputs = [ cmake ];
cmakeFlags = [
"-DFMI_VERSION=${toString FMIVersion}"
(lib.cmakeBool "WITH_FMUSIM" false)
];
env = lib.optionalAttrs (FMIVersion == 3) {

View File

@@ -20,13 +20,13 @@
stdenv.mkDerivation rec {
pname = "fzf-git-sh";
version = "0-unstable-2026-07-06";
version = "0-unstable-2026-08-06";
src = fetchFromGitHub {
owner = "junegunn";
repo = "fzf-git.sh";
rev = "fdf632c53262dfcc44fc09d591e462e9f8fcae83";
hash = "sha256-3ho7Kn84q36bj9N+Nj+5XEdkXIN4xwYk7h7g/ou3TRM=";
rev = "d5b0a5dcd1e073b8bfca45338d5dfad3e5642471";
hash = "sha256-j7co9UjWdSMC7Ojyhuz2bIALrucF94o+irF4pJ6hgG4=";
};
dontBuild = true;

View File

@@ -6,13 +6,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "genann";
version = "1.0.0";
version = "1.1.1";
src = fetchFromGitHub {
owner = "codeplea";
repo = "genann";
rev = "v${finalAttrs.version}";
sha256 = "0z45ndpd4a64i6jayr4yxfcr5h87bsmhm7lfgnbp35pnfywiclmq";
sha256 = "sha256-WZuJbCJZXjJE4X6pAcWvlDqHMw3bEdFIBbTvFJNXM04=";
};
dontBuild = true;

View File

@@ -8,16 +8,16 @@
buildGoModule (finalAttrs: {
pname = "github-mcp-server";
version = "1.7.0";
version = "1.8.0";
src = fetchFromGitHub {
owner = "github";
repo = "github-mcp-server";
tag = "v${finalAttrs.version}";
hash = "sha256-yiJqQ+oHXvVC9S78Wj2/xeRMyuD3VA0Wt9gZvzHxNFE=";
hash = "sha256-oPsH9pC8sWSxaVQxL5p+Ok4ed3mOtiVsNvQUH/DfCFk=";
};
vendorHash = "sha256-np5xPpMrJWBRmVU1dJH3wjUZZ0gYRohlSYkk7yrxWWE=";
vendorHash = "sha256-QztH+35KQReYsft50WBZMB0EEBWmQZiSA/mFzsvLSQU=";
ldflags = [
"-s"

View File

@@ -6,21 +6,25 @@
openssl,
libgit2,
libssh2,
versionCheckHook,
nix-update-script,
}:
rustPlatform.buildRustPackage (finalAttrs: {
pname = "gitlogue";
version = "0.9.0";
version = "0.10.0";
strictDeps = true;
__structuredAttrs = true;
src = fetchFromGitHub {
owner = "unhappychoice";
repo = "gitlogue";
tag = "v${finalAttrs.version}";
hash = "sha256-w+5X3NhHCLDXRGQx2JxpIayekMk242uia1bJSRjDDAE=";
hash = "sha256-hmWp22UPcKRjLM6vNDkdWrgkvjO27Ys2xzkx/co8lrE=";
};
cargoHash = "sha256-Ne0dMpQJ2W/JgCXijosqXBr8B6C1XgK4KnOjByckcms=";
cargoHash = "sha256-PfITSo8iTQ1Y3wn/9PD4fsMGF0oRw1f1Xnhki4voqpM=";
nativeBuildInputs = [ pkg-config ];
@@ -30,12 +34,26 @@ rustPlatform.buildRustPackage (finalAttrs: {
libssh2
];
checkFlags = lib.forEach [
# integration tests
"default_playback_fails_only_after_ui_startup_without_tty"
"default_playback_quits_cleanly_in_pseudo_tty"
"default_playback_with_invalid_theme_fails_before_ui_startup"
"diff_subcommand_reports_no_changes_for_clean_repo"
"diff_subcommand_with_invalid_theme_fails_before_ui_startup"
"diff_subcommand_with_staged_changes_fails_only_after_ui_startup_without_tty"
"diff_subcommand_with_staged_changes_quits_cleanly_in_pseudo_tty"
] (test: "--skip=${test}");
env = {
OPENSSL_NO_VENDOR = 1;
LIBGIT2_NO_VENDOR = 1;
LIBSSH2_SYS_USE_PKG_CONFIG = 1;
};
doInstallCheck = true;
nativeInstallCheckInputs = [ versionCheckHook ];
passthru.updateScript = nix-update-script { };
meta = {

View File

@@ -6,13 +6,13 @@
}:
buildGoModule (finalAttrs: {
pname = "go-jsonschema";
version = "0.24.0";
version = "0.24.1";
src = fetchFromGitHub {
owner = "omissis";
repo = "go-jsonschema";
tag = "v${finalAttrs.version}";
hash = "sha256-4nQ5sJQnEoOwjfN+8FAnNpc9pnnTM8eKiK6kyl3BbS8=";
hash = "sha256-yxOsZAplHM9sElykebFBMdK+w65EVheBtS4l8Y2VZJw=";
};
vendorHash = "sha256-NkqAeSGWVKvIkik4j9wE2O5LV9sDP3RE/B0LilYml7A=";

View File

@@ -0,0 +1,35 @@
{
lib,
buildNpmPackage,
grayjay,
}:
buildNpmPackage {
pname = "${grayjay.pname}-frontend";
# nixpkgs-update: no auto update
inherit (grayjay) version src;
sourceRoot = "source/Grayjay.Desktop.Web";
__structuredAttrs = true;
strictDeps = true;
npmBuildScript = "build";
npmDepsHash = "sha256-3yJIPkuEvkFL9Wb4y/r0yEULQbXx/wHqicFBLzOPj68=";
installPhase = ''
runHook preInstall
cp -r dist/ $out
runHook postInstall
'';
meta = {
description = "Grayjay frontend subpackage";
inherit (grayjay.meta)
homepage
license
maintainers
platforms
;
};
}

View File

@@ -0,0 +1,52 @@
{
lib,
stdenv,
grayjay,
curl-impersonateFull,
}:
stdenv.mkDerivation {
pname = "${grayjay.pname}-libcurlshim";
# nixpkgs-update: no auto update
inherit (grayjay) version src;
sourceRoot = "source/curlbind/native";
dontConfigure = true;
__structuredAttrs = true;
strictDeps = true;
separateDebugInfo = true;
buildInputs = [ curl-impersonateFull ];
buildPhase = ''
runHook preBuild
$CC -shared -fPIC \
-I ${lib.getDev curl-impersonateFull}/include \
"curlshim.c" \
-o libcurlshim.so \
-L ${lib.getLib curl-impersonateFull}/lib -lcurl-impersonate
runHook postBuild
'';
installPhase = ''
runHook preInstall
mkdir -p $out/lib
cp libcurlshim.so $out/lib/
runHook postInstall
'';
meta = {
description = "curl-impersonate shim used by Grayjay";
inherit (grayjay.meta)
homepage
license
maintainers
platforms
;
};
}

View File

@@ -2,8 +2,11 @@
buildDotnetModule,
fetchFromGitLab,
dotnetCorePackages,
buildNpmPackage,
lib,
ffmpeg,
curl-impersonateFull,
libsodium,
sqlite,
libz,
icu,
openssl,
@@ -39,6 +42,8 @@
krb5,
wrapGAppsHook3,
_experimental-update-script-combinators,
grayjay-frontend,
grayjay-libcurlshim,
}:
let
version = "17";
@@ -51,27 +56,19 @@ let
fetchSubmodules = true;
fetchLFS = true;
};
frontend = buildNpmPackage {
pname = "grayjay-frontend";
inherit version src;
sourceRoot = "source/Grayjay.Desktop.Web";
npmBuildScript = "build";
npmDepsHash = "sha256-3yJIPkuEvkFL9Wb4y/r0yEULQbXx/wHqicFBLzOPj68=";
installPhase = ''
runHook preInstall
cp -r dist/ $out
runHook postInstall
'';
};
getLibrary =
pkg: libnm:
"${lib.getLib pkg}/lib/lib${libnm}${pkg.drvAttrs.stdenv.hostPlatform.extensions.sharedLibrary}";
in
buildDotnetModule (finalAttrs: {
pname = "grayjay";
inherit version src frontend;
inherit version src;
frontend = grayjay-frontend;
__structuredAttrs = true;
strictDeps = true;
buildInputs = [
openssl
libgbm
@@ -84,6 +81,7 @@ buildDotnetModule (finalAttrs: {
nss
icu
krb5
curl-impersonateFull
];
nativeBuildInputs = [
@@ -135,15 +133,24 @@ buildDotnetModule (finalAttrs: {
preBuild = ''
rm -r Grayjay.ClientServer/wwwroot/web
cp -r ${frontend} Grayjay.ClientServer/wwwroot/web
cp -r ${grayjay-frontend} Grayjay.ClientServer/wwwroot/web
'';
postInstall = ''
chmod +x $out/lib/grayjay/cef/dotcefnative
chmod +x $out/lib/grayjay/ffmpeg
rm $out/lib/grayjay/Portable
ln -s /tmp/grayjay-launch $out/lib/grayjay/launch
ln -s /tmp/grayjay-cef-launch $out/lib/grayjay/cef/launch
# Unvendor most stuff
rm -f $out/lib/grayjay/{Portable,ffmpeg,libcurl-impersonate.so,libcurlshim.so,libsodium.so,libe_sqlite3.so,FUTO.Updater.Client}
ln -s ${lib.getExe ffmpeg} $out/lib/grayjay/ffmpeg
ln -s ${getLibrary curl-impersonateFull "curl-impersonate"} $out/lib/grayjay/libcurl-impersonate.so
ln -s ${getLibrary grayjay-libcurlshim "curlshim"} $out/lib/grayjay/libcurlshim.so
ln -s ${getLibrary libsodium "sodium"} $out/lib/grayjay/libsodium.so
ln -s ${getLibrary sqlite "sqlite3"} $out/lib/grayjay/libe_sqlite3.so
# CEF is still vendored for now
chmod +x $out/lib/grayjay/cef/dotcefnative
mkdir -p $out/share/icons/hicolor/scalable/apps
ln -s $out/lib/grayjay/grayjay.png $out/share/icons/hicolor/scalable/apps/grayjay.png
'';
@@ -206,8 +213,12 @@ buildDotnetModule (finalAttrs: {
maintainers = with lib.maintainers; [
kruziikrel13
samfundev
pandapip1
];
platforms = [
"x86_64-linux"
"aarch64-linux"
];
platforms = [ "x86_64-linux" ];
mainProgram = "Grayjay";
};
})

View File

@@ -13,14 +13,17 @@
}:
let
self = stdenv.mkDerivation rec {
self = stdenv.mkDerivation (finalAttrs: {
pname = "highlight";
version = "4.20";
strictDeps = true;
__structuredAttrs = true;
src = fetchFromGitLab {
owner = "saalen";
repo = "highlight";
rev = "v${version}";
tag = "v${finalAttrs.version}";
hash = "sha256-fMIyMR9RA60hdy1eniJkvLHK+WJPuVehWMyS9Lt6iQ4=";
};
@@ -78,7 +81,7 @@ let
platforms = lib.platforms.unix;
maintainers = [ ];
};
};
});
in
if stdenv.hostPlatform.isDarwin then self else perl.pkgs.toPerlModule self

View File

@@ -7,13 +7,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "hiredis";
version = "1.4.0";
version = "1.4.1";
src = fetchFromGitHub {
owner = "redis";
repo = "hiredis";
rev = "v${finalAttrs.version}";
hash = "sha256-1qOwuszjiAQLKc7byKw45wVKUSvkTw7HfvRcejbr4OA=";
hash = "sha256-Z5aiwCJ6a5SB0pAtGRtKH31CUA8XBB4hytFFCmENrv4=";
};
buildInputs = [

View File

@@ -16,14 +16,14 @@
python3Packages.buildPythonApplication (finalAttrs: {
pname = "hydrus";
version = "679";
version = "681";
pyproject = false;
src = fetchFromGitHub {
owner = "hydrusnetwork";
repo = "hydrus";
tag = "v${finalAttrs.version}";
hash = "sha256-NIELa4E7l8T1oeF6V0kr1fhS4nj9TSSHAHo0Q3v0GTY=";
hash = "sha256-ZFlYHfWinYTf4aroxMUv5ArXzTwuqtHoqnafgfCJnUg=";
};
nativeBuildInputs = [

View File

@@ -42,13 +42,13 @@
gccStdenv.mkDerivation (finalAttrs: {
pname = "icewm";
version = "4.0.0";
version = "4.1.0";
src = fetchFromGitHub {
owner = "ice-wm";
repo = "icewm";
tag = finalAttrs.version;
hash = "sha256-4+nW8JJ3CDEPOZZ4p0EZM86h+rAifTuGDZxoFMUI7K0=";
hash = "sha256-RIT425SmLcNb9+va/DrMiU21Gq/gb/obCsd3mEEiXjU=";
};
strictDeps = true;

View File

@@ -6,18 +6,18 @@
buildGoModule (finalAttrs: {
pname = "imgcrypt";
version = "2.0.2";
version = "2.0.3";
src = fetchFromGitHub {
owner = "containerd";
repo = "imgcrypt";
rev = "v${finalAttrs.version}";
hash = "sha256-xHL+vxjGkjkDCEHMVOQsT6uokZq50iFAqGyDj6dDuG4=";
hash = "sha256-nr5M+xbu7TY9zZEBXmIAErIUZuOk0rxMIVrPdFMrg8s=";
};
modRoot = "cmd";
vendorHash = "sha256-tTRYEvqhQm1XpSvXDDXEx5piZYOxAtmcjf2dLL9fGck=";
vendorHash = "sha256-PuubaNqPHSVWqavV5oTNDn6ZiQDGoGnkAN9HS3JAcdA=";
ldflags = [
"-X github.com/containerd/containerd/version.Version=${finalAttrs.version}"

View File

@@ -21,16 +21,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "inlyne";
version = "0.5.2";
version = "0.5.3";
src = fetchFromGitHub {
owner = "Inlyne-Project";
repo = "inlyne";
rev = "v${finalAttrs.version}";
hash = "sha256-bUM9Mn/C9l6s6ucoLRo25m4PbbW3gp5d3AvO/9GTJcI=";
hash = "sha256-ciQcM7JkrCbb5volFovV8JJSpup1jWC2ah2GZ13YT+Q=";
};
cargoHash = "sha256-IaaojW5PYSUwyh1iv2HrDidIV8keEykKHY61rpcCAPc=";
cargoHash = "sha256-03giGUoBvb9y00fflt4cEgllljPXXt21ZHzxndPTOm0=";
nativeBuildInputs = [
installShellFiles

View File

@@ -10,16 +10,16 @@
buildGoModule (finalAttrs: {
pname = "ipatool";
version = "2.3.1";
version = "2.3.2";
src = fetchFromGitHub {
owner = "majd";
repo = "ipatool";
rev = "v${finalAttrs.version}";
hash = "sha256-ZGy7Oxpjb5ONe//ImAN3bQwl+G9udvaf9V7heLq625c=";
hash = "sha256-jIdjTDs/g41j805vkC1PqLvChtzB055JYmd4GbEHNZU=";
};
vendorHash = "sha256-PZDlJIIW+teFu6XuaTLB5eHHSeVJMUVAuq/StvyIVlc=";
vendorHash = "sha256-HNus5wZUmiuVVdDj4i9X9sO8iyccrq4h//s0zkQNYjY=";
# Fixes "import lookup disabled by -mod=vendor" for onepassword-sdk-go on macOS
proxyVendor = true;

View File

@@ -9,17 +9,17 @@
buildGoModule (finalAttrs: {
pname = "jfrog-cli";
version = "2.116.0";
version = "2.118.0";
src = fetchFromGitHub {
owner = "jfrog";
repo = "jfrog-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-/iB85WdSjVJCvsMileAO1YmuxOIIO3wOUaQl0IkmHzU=";
hash = "sha256-RkrD0VLEAWbaDbyROfQ7SiqC3VhUJEGjfLD/7enX/28=";
};
proxyVendor = true;
vendorHash = "sha256-lll0Cr4f2ZQaXY/YnxAe+piSPaCYf5VitCyVWUb4240=";
vendorHash = "sha256-jZtHZ/uIC8NNXr2scuMrdkFAYIhNMxcayVsr3Y7flr8=";
checkFlags = "-skip=^(TestReleaseBundle|TestVisibilitySendUsage_RtCurl_E2E)";

View File

@@ -7,14 +7,14 @@
python3Packages.buildPythonApplication (finalAttrs: {
pname = "jiratui";
version = "1.11.2";
version = "1.12.0";
pyproject = true;
src = fetchFromGitHub {
owner = "whyisdifficult";
repo = "jiratui";
tag = "v${finalAttrs.version}";
hash = "sha256-QxYMaTM6/LmecaBBBNz6wghr3IAF4CyvDDGopdNpzmA=";
hash = "sha256-c+ycttouo6LZr1jaJ9lrS2aAODfsTRNhxyL4o4nqc/c=";
};
postPatch = ''

View File

@@ -5,14 +5,14 @@
}:
buildGoModule (finalAttrs: {
pname = "kin-openapi";
version = "0.145.0";
version = "0.146.0";
vendorHash = "sha256-uprdzJnaxd1UyEdZFFPvmo2Xu/QXJdheC1eqkyKY9Zc=";
src = fetchFromGitHub {
owner = "getkin";
repo = "kin-openapi";
tag = "v${finalAttrs.version}";
hash = "sha256-lM+W1qgpvtEgOUQcKxUtsXawLnam6CkXOmX/BKkOyL4=";
hash = "sha256-RvZc0NYp7fj486Ayhk3frowPNAoWxuoMPMmUY3rXNlA=";
};
checkFlags =

View File

@@ -12,13 +12,13 @@
buildGoModule (finalAttrs: {
pname = "lakefs";
version = "1.84.1";
version = "1.85.0";
src = fetchFromGitHub {
owner = "treeverse";
repo = "lakeFS";
tag = "v${finalAttrs.version}";
hash = "sha256-l9UxuiGiVaI8lxJfpvLlsphX13eEb+OP0colVAPmB78=";
hash = "sha256-SaqLfWB1bm3Rg0nGESnQzyi3IfPUHlLk83ES6IewzHw=";
};
webui = buildNpmPackage {

View File

@@ -12,11 +12,11 @@
stdenv.mkDerivation rec {
pname = "libgig";
version = "4.5.2";
version = "4.6.0";
src = fetchurl {
url = "https://download.linuxsampler.org/packages/${pname}-${version}.tar.bz2";
sha256 = "sha256-yivozl4JafkMLfduA9SZ9eJ/tQIe28WH3hgv8n6O/d0=";
sha256 = "sha256-/DMSAiEJGeMXLE02qyQjHeo2Z9hyIUHwx5OcpUURnQE=";
};
nativeBuildInputs = [

View File

@@ -10,13 +10,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "libxmp";
version = "4.7.1";
version = "4.7.2";
src = fetchFromGitHub {
owner = "libxmp";
repo = "libxmp";
tag = "libxmp-${finalAttrs.version}";
hash = "sha256-X+oIXTwlrLEl3n8gu5+LlNfIOBkZ02hiivrjTgVrqRk=";
hash = "sha256-0no+WT5cLDDtoRO5GKlsx9BLrv4n2JvDr9Dky0yNOsk=";
};
outputs = [

View File

@@ -7,16 +7,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "llmfit";
version = "1.1.6";
version = "1.1.8";
src = fetchFromGitHub {
owner = "AlexsJones";
repo = "llmfit";
tag = "v${finalAttrs.version}";
hash = "sha256-960EP+2kuC1lV3VCjNVsIU5DC3FHT87cOc8SC+dQWE4=";
hash = "sha256-6mARQqRsPtsN0WAp4oKqG1jl062BqDJ1D9AZBLomel8=";
};
cargoHash = "sha256-WXPAnFBlP2kAPtVdzbBToNOBYqN62Lf4eKJVd3Wbx+Q=";
cargoHash = "sha256-iUh9VBtDfuil96av1I5XlO/mZ/Q9HccBJitBfJ+i69A=";
passthru.updateScript = nix-update-script { };

View File

@@ -18,16 +18,16 @@ let
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "lockbook-desktop";
version = "26.7.23";
version = "26.8.4";
src = fetchFromGitHub {
owner = "lockbook";
repo = "lockbook";
tag = finalAttrs.version;
hash = "sha256-LG6qeFzD1ThBFKfFjy/U012p5DH5FEojQ9W4K+ZA7/o=";
hash = "sha256-ge6uo54T6sWYn4z2fE3teelkTofSLjMPeBGJ84a6N5c=";
};
cargoHash = "sha256-syBXLJISsok1hL4vpBforanVi9F0NI90pRslrxRuuL4=";
cargoHash = "sha256-KPRlvkhHGiYPTOzNoZ3nDmyJ0VmMESTSLpGvQl+I6Oo=";
nativeBuildInputs = [
pkg-config

View File

@@ -1,6 +1,6 @@
{
version = "1.30.5";
hash = "sha256-Iw5lTBREiFJ8M4igxv729gV8o9Sp2dqdpd48369cv3c=";
npmDepsHash = "sha256-aJmcVMZmVM3QJ6Jh5Kf5efDQVqm+W3qvKwxb3FRDbQ8=";
vendorHash = "sha256-o0svdQvYvTAsplFlP2aOChC2JC1mnzJM1QTyu8HcZjI=";
version = "1.30.6";
hash = "sha256-XB88EPRfZAcseYvPWsJSuI5FEtbH9VYTg6TuSh503uQ=";
npmDepsHash = "sha256-BgNbQ+hH04GOQllXm0/K0v7YM2DoKE/KXLR6z9p2Bso=";
vendorHash = "sha256-2HPXdCuFAg5AR0hLPlKdzxlkJL6XOdBjZPU+x66wtDE=";
}

View File

@@ -21,16 +21,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "matrix-authentication-service";
version = "1.21.0";
version = "1.22.0";
src = fetchFromGitHub {
owner = "element-hq";
repo = "matrix-authentication-service";
tag = "v${finalAttrs.version}";
hash = "sha256-4z+u1IM2pclccv9+IH8IWjCodDxWZmffbqWPC726sIg=";
hash = "sha256-vy9eZYtlAMPXh+xvgAOEeJd7jZirX5Y4sXmNbYLBYGI=";
};
cargoHash = "sha256-HQU0zaK7rLJnTX5WVZrqNEaT5HfFLDzs+pHRxx5XTaA=";
cargoHash = "sha256-3MDbg+vfLIqSDiRqBVZs2zbrg9UUpe4Vx+Ze656yOdE=";
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs) pname version src;

View File

@@ -6,13 +6,13 @@
buildGoModule (finalAttrs: {
pname = "matterircd";
version = "0.30.0";
version = "0.31.0";
src = fetchFromGitHub {
owner = "42wim";
repo = "matterircd";
rev = "v${finalAttrs.version}";
sha256 = "sha256-W00q5bRzCXl9R56xGol1bWYeW5w5MUpcoraKVaKimyk=";
sha256 = "sha256-ZlWXPyAK/Z8u3RHp/BwjhkAHT2VFzU1+G9SKGgRf6n8=";
};
vendorHash = null;

View File

@@ -1,108 +0,0 @@
{
lib,
stdenv,
fetchurl,
pkgsStatic,
python3,
docutils,
bzip2,
zlib,
darwin,
static ? stdenv.hostPlatform.isStatic, # generates static libraries *only*
enableForMonotone ? false, # Is it being imported for Monotone use?
}:
stdenv.mkDerivation (finalAttrs: {
pname = "botan";
version = "2.19.5";
__structuredAttrs = true;
enableParallelBuilding = true;
strictDeps = true;
outputs = [
"bin"
"out"
"dev"
"doc"
"man"
];
src = fetchurl {
url = "http://botan.randombit.net/releases/Botan-${finalAttrs.version}.tar.xz";
hash = "sha256-3+6g4KbybWckxK8B2pp7iEh62y2Bunxy/K9S21IsmtQ=";
};
postPatch = ''
sed -e '1i#include <cstdint>' -i src/cli/cli.h
'';
nativeBuildInputs = [
python3
docutils
];
buildInputs = [
bzip2
zlib
];
buildTargets = [
"cli"
]
++ lib.optionals finalAttrs.finalPackage.doCheck [ "tests" ]
++ lib.optionals static [ "static" ]
++ lib.optionals (!static) [ "shared" ];
botanConfigureFlags = [
"--prefix=${placeholder "out"}"
"--bindir=${placeholder "bin"}/bin"
"--docdir=${placeholder "doc"}/share/doc"
"--mandir=${placeholder "man"}/share/man"
"--no-install-python-module"
"--build-targets=${lib.concatStringsSep "," finalAttrs.buildTargets}"
"--with-bzip2"
"--with-zlib"
"--with-rst2man"
"--cpu=${stdenv.hostPlatform.parsed.cpu.name}"
]
++ lib.optionals stdenv.cc.isClang [
"--cc=clang"
]
++ lib.optionals (stdenv.hostPlatform.isMinGW) [
"--os=mingw"
];
configurePhase = ''
runHook preConfigure
python configure.py ''${botanConfigureFlags[@]}
runHook postConfigure
'';
preInstall = ''
if [ -d src/scripts ]; then
patchShebangs src/scripts
fi
'';
postInstall = ''
cd "$out"/lib/pkgconfig
ln -s botan-*.pc botan.pc || true
'';
doCheck = true;
meta = {
description = "Cryptographic algorithms library";
homepage = "https://botan.randombit.net";
mainProgram = "botan";
maintainers = with lib.maintainers; [
raskin
];
platforms = lib.platforms.unix;
license = lib.licenses.bsd2;
knownVulnerabilities = lib.optional (
!enableForMonotone
) "Botan2 is EOL and its full interface surface contains unpatched vulnerabilities";
};
})

View File

@@ -1,66 +0,0 @@
From 70f209ad582121750d54e3692b1e62c7f36af6f9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20P=C3=ADsa=C5=99?= <ppisar@redhat.com>
Date: Mon, 7 May 2018 14:09:06 +0200
Subject: [PATCH] Adapt to changes in pcre-8.42
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
pcre-8.42 replaced internal real_pcre with real_pcre8_or_16. This
broke monotone that decided not to use the public "pcre" type.
This patch adapts monotone to the pcre >= 8.42.
Signed-off-by: Petr Písař <ppisar@redhat.com>
---
src/pcrewrap.cc | 4 ++--
src/pcrewrap.hh | 4 ++--
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/pcrewrap.cc b/src/pcrewrap.cc
index 8c0c9d1..30bafff 100644
--- a/src/pcrewrap.cc
+++ b/src/pcrewrap.cc
@@ -74,7 +74,7 @@ get_capturecount(void const * bd)
namespace pcre
{
typedef map<char const *,
- pair<struct real_pcre const *, struct pcre_extra const *> >
+ pair<struct real_pcre8_or_16 const *, struct pcre_extra const *> >
regex_cache;
class regex_cache_manager
@@ -86,7 +86,7 @@ public:
}
void store(char const * pattern,
- pair<struct real_pcre const *, struct pcre_extra const *>
+ pair<struct real_pcre8_or_16 const *, struct pcre_extra const *>
data)
{
cache[pattern] = data;
diff --git a/src/pcrewrap.hh b/src/pcrewrap.hh
index 3359cdd..5008e88 100644
--- a/src/pcrewrap.hh
+++ b/src/pcrewrap.hh
@@ -18,7 +18,7 @@
// definitions and so we don't actually expose it here. Unfortunately, this
// means we have to hope this pair of forward declarations will not change...
-struct real_pcre;
+struct real_pcre8_or_16;
struct pcre_extra;
namespace pcre
@@ -61,7 +61,7 @@ namespace pcre
regex & operator=(regex const &);
// data
- struct real_pcre const * basedat;
+ struct real_pcre8_or_16 const * basedat;
struct pcre_extra const * extradat;
// used by constructors
--
2.14.3

View File

@@ -1,15 +0,0 @@
Botan2 has switched the parameter order in encryption descriptions
--- monotone-upstream/src/botan_glue.hh 2021-08-17 19:06:32.736753732 +0200
+++ monotone-patched/src/botan_glue.hh 2021-08-17 19:07:44.437750535 +0200
@@ -45,7 +45,9 @@
// In Botan revision d8021f3e (back when it still used monotone) the name
// of SHA-1 changed to SHA-160.
const static char * PBE_PKCS5_KEY_FORMAT =
-#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,11,0)
+#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(2,0,0)
+ "PBE-PKCS5v20(TripleDES/CBC,SHA-160)";
+#elif BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,11,0)
"PBE-PKCS5v20(SHA-160,TripleDES/CBC)";
#else
"PBE-PKCS5v20(SHA-1,TripleDES/CBC)";

View File

@@ -0,0 +1,13 @@
Error reporting of broken Base64 has changed
--- mtn-src/test/func/schema_migration_error_recovery/__driver__.lua 2026-08-05 21:39:46.432609427 +0200
+++ mtn-src/test/func/schema_migration_error_recovery/__driver__.lua 2026-08-05 21:40:07.650450675 +0200
@@ -15,7 +15,7 @@
-- migrate_files_BLOB
test_one("bad_base64", "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e",
- "invalid base64 character")
+ "base64 decode: invalid character")
test_one("tmp_in_the_way", "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e",
"already another table")
test_one("column_missing", "1db80c7cee8fa966913db1a463ed50bf1b0e5b0e",

View File

@@ -0,0 +1,17 @@
Botan3 no longer adds the prefixes that Monotone tries to clear
--- mtn-src/src/transforms.cc 2026-08-05 21:59:22.344598683 +0200
+++ mtn-src/src/transforms.cc 2026-08-05 21:59:52.318528753 +0200
@@ -67,12 +67,7 @@
|| typeid(e) == typeid(Botan::Invalid_Argument)
|| typeid(e) == typeid(Botan::Integrity_Failure))
{
- // clean up the what() string a little: throw away the
- // "botan: TYPE: " part...
string w(e.what());
- string::size_type pos = w.find(':');
- pos = w.find(':', pos+1);
- w = string(w.begin() + pos + 2, w.end());
// ... downcase the rest of it and replace underscores with spaces.
for (string::iterator p = w.begin(); p != w.end(); p++)

View File

@@ -0,0 +1,12 @@
Botan2 has switched the parameter order in encryption descriptions
--- monotone-upstream/src/botan_glue.hh 2026-08-05 16:03:52.756485699 +0200
+++ monotone-upstream/src/botan_glue.hh 2026-08-05 16:05:29.735127399 +0200
@@ -38,7 +38,7 @@
// In Botan revision d8021f3e (back when it still used monotone) the name
// of SHA-1 changed to SHA-160.
const static char * PBE_PKCS5_KEY_FORMAT =
- "PBE-PKCS5v20(SHA-160,TripleDES/CBC)";
+ "PBE-PKCS5v20(TripleDES/CBC,SHA-1)";
typedef Botan::secure_vector<Botan::byte> secure_byte_vector;

View File

@@ -0,0 +1,482 @@
Switch to PCRE2
--- mtn-src/m4/library.m4 2026-08-05 23:04:45.393285992 +0200
+++ mtn-src/m4/library.m4 2026-08-05 23:04:53.120785844 +0200
@@ -216,42 +216,20 @@
])
])
-AC_DEFUN([MTN_FIND_PCRE],
-[MTN_CHECK_MODULE([pcre], [7.4],
+AC_DEFUN([MTN_FIND_PCRE2],
+[MTN_CHECK_MODULE([pcre2-8], [7.4],
[AC_LANG_PROGRAM(
- [#include <pcre.h>
- #if PCRE_MAJOR < 7 || (PCRE_MAJOR == 7 && PCRE_MINOR < 4)
- #error out of date
- #endif],
+ [#define PCRE2_CODE_UNIT_WIDTH 8
+ #include <pcre2.h>
+ ],
[const char *e;
int dummy;
int o;
/* Make sure some definitions are present. */
- dummy = PCRE_NEWLINE_CR;
- dummy = PCRE_DUPNAMES;
- pcre *re = pcre_compile("foo", 0, &e, &o, 0);])
+ dummy = PCRE2_NEWLINE_CR;
+ dummy = PCRE2_DUPNAMES;
+ pcre2_code *re = pcre2_compile("foo", 0, &e, &o, 0);])
])
- save_CPPFLAGS="$CPPFLAGS"
- CPPFLAGS="$CPPFLAGS $pcre_CFLAGS"
- AC_CACHE_CHECK([if pcre.h uses real_pcre8_or_16], mtn_ac_cv_pcre_uses_8_or_16,
- [
- AC_LANG_PUSH([C++])
- AC_COMPILE_IFELSE(
- [AC_LANG_PROGRAM(
- [#include <pcre.h>],
- [const char *e;
- int o;
- struct real_pcre8_or_16 *re = pcre_compile("foo", 0, &e, &o, 0);])
- ],
- [mtn_ac_cv_pcre_uses_8_or_16=yes],
- [mtn_ac_cv_pcre_uses_8_or_16=no])]
- )
- AC_LANG_POP([C++])
- if test $mtn_ac_cv_pcre_uses_8_or_16 = yes; then
- AC_DEFINE_UNQUOTED(PCRE_USES_8_OR_16, 1,
- [Define if <pcre.h> uses real_pcre8_or_16. ])
- fi
- CPPFLAGS="$save_CPPFLAGS"
])
AC_DEFUN([MTN_FIND_SQLITE],
--- mtn-src/src/mt_version.cc 2026-08-05 23:49:07.580588987 +0200
+++ mtn-src/src/mt_version.cc 2026-08-05 23:52:24.163973748 +0200
@@ -21,8 +21,9 @@
/* Include third party headers needed for version info */
#include <botan/version.h>
#include <sqlite3.h>
-// Lua assumed included by lua.hh
-#include <pcre.h>
+
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include <pcre2.h>
#include "app_state.hh"
#include "lua.hh"
@@ -55,6 +56,8 @@
get_version(base_version);
string flavour;
get_system_flavour(flavour);
+ char pcre_version [128];
+ pcre2_config(PCRE2_CONFIG_VERSION, pcre_version);
out = (F("%s\n"
"Running on : %s\n"
"C++ compiler : %s\n"
@@ -72,7 +75,7 @@
% BOOST_LIB_VERSION
% sqlite3_libversion() % SQLITE_VERSION
% LUA_VERSION
- % pcre_version() % PCRE_MAJOR % PCRE_MINOR
+ % pcre_version % PCRE2_MAJOR % PCRE2_MINOR
% Botan::version_major() % Botan::version_minor() % Botan::version_patch()
% BOTAN_VERSION_MAJOR % BOTAN_VERSION_MINOR % BOTAN_VERSION_PATCH
% string(package_full_revision_constant))
--- mtn-src/src/pcrewrap.hh 2026-08-05 23:49:09.600171041 +0200
+++ mtn-src/src/pcrewrap.hh 2026-08-06 00:39:53.759161556 +0200
@@ -18,12 +18,8 @@
// definitions and so we don't actually expose it here. Unfortunately, this
// means we have to hope this pair of forward declarations will not change...
-#if PCRE_USES_8_OR_16
-#define real_pcre real_pcre8_or_16
-#endif
-
-struct real_pcre;
-struct pcre_extra;
+struct pcre2_real_code_8;
+struct pcre2_real_match_context_8;
namespace pcre
{
@@ -65,8 +61,8 @@
regex & operator=(regex const &);
// data
- struct real_pcre const * basedat;
- struct pcre_extra const * extradat;
+ const struct pcre2_real_code_8 * basedat;
+ struct pcre2_real_match_context_8 * extradat;
// used by constructors
void init(char const *, pcre::flags);
--- mtn-src/src/pcrewrap.cc 2026-08-05 23:51:00.236884698 +0200
+++ mtn-src/src/pcrewrap.cc 2026-08-06 01:23:14.728332978 +0200
@@ -15,11 +15,8 @@
#include <map>
#include <vector>
-// This dirty trick is necessary to prevent the 'pcre' typedef defined by
-// pcre.h from colliding with namespace pcre.
-#define pcre pcre_t
-#include "pcre.h"
-#undef pcre
+#define PCRE2_CODE_UNIT_WIDTH 8
+#include "pcre2.h"
using std::make_pair;
using std::map;
@@ -27,10 +24,9 @@
using std::string;
using std::vector;
-static NORETURN(void pcre_compile_error(int errcode, char const * err,
- int erroff, char const * pattern,
+static NORETURN(void pcre_compile_error(int errcode, PCRE2_UCHAR8 const * err,
+ size_t erroff, char const * pattern,
origin::type caused_by));
-static NORETURN(void pcre_study_error(char const * err, char const * pattern));
static NORETURN(void pcre_exec_error(int errcode,
origin::type subject_from));
@@ -38,11 +34,10 @@
flags_to_internal(pcre::flags f)
{
using namespace pcre;
-#define C(f_, x) (((f_) & (x)) ? PCRE_##x : 0)
+#define C(f_, x) (((f_) & (x)) ? PCRE2_##x : 0)
unsigned int i = 0;
- i |= C(f, NEWLINE_CR);
- i |= C(f, NEWLINE_LF);
- // NEWLINE_CRLF == NEWLINE_CR|NEWLINE_LF and so is handled above
+ // NEWLINE configuration is more complicated in PCRE2
+ // Nothing in Monotone seems to use it
i |= C(f, ANCHORED);
i |= C(f, NOTBOL);
i |= C(f, NOTEOL);
@@ -63,8 +58,8 @@
get_capturecount(void const * bd)
{
unsigned int cc;
- int err = pcre_fullinfo(static_cast<pcre_t const *>(bd), 0,
- PCRE_INFO_CAPTURECOUNT,
+ int err = pcre2_pattern_info(static_cast<pcre2_code const *>(bd),
+ PCRE2_INFO_CAPTURECOUNT,
static_cast<void *>(&cc));
I(err == 0);
return cc;
@@ -73,7 +68,7 @@
namespace pcre
{
typedef map<char const *,
- pair<struct real_pcre const *, struct pcre_extra const *> >
+ pair<pcre2_code const *, pcre2_match_context *> >
regex_cache;
class regex_cache_manager
@@ -85,7 +80,7 @@
}
void store(char const * pattern,
- pair<struct real_pcre const *, struct pcre_extra const *>
+ pair<pcre2_code const *, pcre2_match_context *>
data)
{
cache[pattern] = data;
@@ -103,10 +98,10 @@
++iter)
{
if (iter->second.first)
- pcre_free(const_cast<pcre_t *>(iter->second.first));
+ pcre2_code_free(const_cast<pcre2_code *>(iter->second.first));
if (iter->second.second)
- pcre_free(const_cast<pcre_extra *>(iter->second.second));
+ pcre2_match_context_free(const_cast<pcre2_match_context *>(iter->second.second));
}
}
private:
@@ -118,8 +113,9 @@
void regex::init(char const * pattern, flags options)
{
int errcode;
- int erroff;
- char const * err;
+ size_t erroff;
+ const int err_msg_max = 2048;
+ PCRE2_UCHAR8 err[err_msg_max+1];
// use the cached data if we have it
regex_cache::const_iterator iter = compiled.find(pattern);
if (iter != compiled.end())
@@ -129,29 +125,23 @@
return;
}
// not in cache - compile them then store in cache
- basedat = pcre_compile2(pattern, flags_to_internal(options),
- &errcode, &err, &erroff, 0);
- if (!basedat)
+ basedat = pcre2_compile((PCRE2_UCHAR8*)pattern, PCRE2_ZERO_TERMINATED,
+ flags_to_internal(options),
+ &errcode, &erroff, 0);
+ if (!basedat) {
+ pcre2_get_error_message(errcode, err, err_msg_max);
pcre_compile_error(errcode, err, erroff, pattern, made_from);
-
- pcre_extra *ed = pcre_study(basedat, 0, &err);
- if (err)
- pcre_study_error(err, pattern);
- if (!ed)
- {
- // I resent that C++ requires this cast.
- ed = (pcre_extra *)pcre_malloc(sizeof(pcre_extra));
- std::memset(ed, 0, sizeof(pcre_extra));
- }
+ }
// We set a fairly low recursion depth to avoid stack overflow.
- // Per pcrestack(3), one should assume 500 bytes per recursion;
+ // Per pcre2api(3), it should be a few hundreds bytes per call.
// it should be safe to let pcre have a megabyte of stack, so
// that's a depth of 2000, give or take. (For reference, the
// default stack limit on Linux is 8MB.)
- ed->flags |= PCRE_EXTRA_MATCH_LIMIT_RECURSION;
- ed->match_limit_recursion = 2000;
+ pcre2_match_context * ed = pcre2_match_context_create(NULL);
+ pcre2_set_depth_limit(ed, 2000);
extradat = ed;
+
// store in cache
compiled.store(pattern, make_pair(basedat, extradat));
}
@@ -176,12 +166,15 @@
regex::match(string const & subject, origin::type subject_origin,
flags options) const
{
- int rc = pcre_exec(basedat, extradat,
- subject.data(), subject.size(),
- 0, flags_to_internal(options), 0, 0);
- if (rc == 0)
+ pcre2_match_data * matchdata = pcre2_match_data_create_from_pattern(basedat, NULL);
+ int rc = pcre2_match(basedat,
+ (PCRE2_UCHAR8*)subject.data(), subject.size(),
+ 0, flags_to_internal(options),
+ matchdata, extradat);
+ pcre2_match_data_free(matchdata);
+ if (rc > 0)
return true;
- else if (rc == PCRE_ERROR_NOMATCH)
+ else if (rc == PCRE2_ERROR_NOMATCH || rc == 0)
return false;
else
pcre_exec_error(rc, subject_origin);
@@ -193,51 +186,49 @@
{
matches.clear();
- // retrieve the capture count of the pattern from pcre_fullinfo,
- // because pcre_exec might not signal trailing unmatched subpatterns
+ // retrieve the capture count of the pattern from pcre2_pattern_info,
+ // because pcre2_match might not signal trailing unmatched subpatterns
// i.e. if "abc" matches "(abc)(de)?", the match count is two, not
// the expected three
- int cap_count = 0;
- int rc = pcre_fullinfo(basedat, extradat, PCRE_INFO_CAPTURECOUNT, &cap_count);
- I(rc == 0);
+ size_t cap_count = get_capturecount(basedat);
// the complete regex is captured as well
cap_count += 1;
int worksize = cap_count * 3;
- // "int ovector[worksize]" is C99 only (not valid C++, but allowed by gcc/clang)
- // boost::shared_array is I think not plannned to be part of C++0x
- class xyzzy {
- int *data;
- public:
- xyzzy(int len) : data(new int[len]) {}
- ~xyzzy() { delete[] data; }
- operator int*() { return data; }
- } ovector(worksize);
-
- rc = pcre_exec(basedat, extradat,
- subject.data(), subject.size(),
- 0, flags_to_internal(options), ovector, worksize);
+ pcre2_match_data * matchdata = pcre2_match_data_create_from_pattern(basedat, NULL);
+ int rc = pcre2_match(basedat,
+ (PCRE2_UCHAR8*)subject.data(), subject.size(),
+ 0, flags_to_internal(options),
+ matchdata, extradat);
// since we dynamically set the work size, we should
// always get either a negative (error) or >= 1 match count
I(rc != 0);
- if (rc == PCRE_ERROR_NOMATCH)
+ if (rc == PCRE2_ERROR_NOMATCH)
return false;
else if (rc < 0)
pcre_exec_error(rc, subject_origin); // throws
- for (int i=0; i < cap_count; ++i)
+ PCRE2_SIZE * ovector = pcre2_get_ovector_pointer(matchdata);
+ size_t ovector_size = pcre2_get_ovector_count(matchdata);
+
+ for (size_t i=0; i < cap_count; ++i)
{
string match;
+
+ //enough captures
+ if(i<ovector_size)
// not an empty match
- if (ovector[2*i] != -1 && ovector[2*i+1] != -1)
+ if (ovector[2*i] != PCRE2_UNSET && ovector[2*i+1] != PCRE2_UNSET && ovector[2*i+1] > ovector[2*i])
match.assign(subject, ovector[2*i], ovector[2*i+1] - ovector[2*i]);
matches.push_back(match);
}
+ pcre2_match_data_free(matchdata);
+
return true;
}
} // namespace pcre
@@ -245,39 +236,30 @@
// When the library returns an error, these functions discriminate between
// bugs in monotone and user errors in regexp writing.
static void
-pcre_compile_error(int errcode, char const * err,
- int erroff, char const * pattern,
+pcre_compile_error(int errcode, PCRE2_UCHAR8 const * err,
+ size_t erroff, char const * pattern,
origin::type caused_by)
{
- // One of the more entertaining things about the PCRE API is that
- // while the numeric error codes are documented, they do not get
- // symbolic names.
-
switch (errcode)
{
- case 21: // failed to get memory
+ case PCRE2_ERROR_NOMEMORY: // failed to get memory
throw std::bad_alloc();
- case 10: // [code allegedly not in use]
- case 11: // internal error: unexpected repeat
- case 16: // erroffset passed as NULL
- case 17: // unknown option bit(s) set
- case 19: // [code allegedly not in use]
- case 23: // internal error: code overflow
- case 33: // [code allegedly not in use]
- case 50: // [code allegedly not in use]
- case 52: // internal error: overran compiling workspace
- case 53: // internal error: previously-checked referenced subpattern
- // not found
+ case PCRE2_ERROR_INTERNAL_UNEXPECTED_REPEAT:
+ case PCRE2_ERROR_NULL_ERROROFFSET:
+ case PCRE2_ERROR_BAD_OPTIONS:
+ case PCRE2_ERROR_INTERNAL_CODE_OVERFLOW:
+ case PCRE2_ERROR_INTERNAL_OVERRAN_WORKSPACE:
+ case PCRE2_ERROR_INTERNAL_MISSING_SUBPATTERN:
throw oops((F("while compiling regex '%s': %s") % pattern % err)
.str().c_str());
default:
// PCRE fails to distinguish between errors at no position and errors at
// character offset 0 in the pattern, so in practice we give the
- // position-ful variant for all errors, but I'm leaving the == -1 check
- // here in case PCRE gets fixed.
- E(false, caused_by, (erroff == -1
+ // position-ful variant for all errors,
+ // and now PCRE2 uses unsigned so the API mistake is unfixable
+ E(false, caused_by, (erroff == ((size_t) -1)
? (F("error in regex '%s': %s")
% pattern % err)
: (F("error near char %d of regex '%s': %s")
@@ -287,18 +269,6 @@
}
static void
-pcre_study_error(char const * err, char const * pattern)
-{
- // This interface doesn't even *have* error codes.
- // If the error is not out-of-memory, it's a bug.
- if (!std::strcmp(err, "failed to get memory"))
- throw std::bad_alloc();
- else
- throw oops((F("while studying regex '%s': %s") % pattern % err)
- .str().c_str());
-}
-
-static void
pcre_exec_error(int errcode,
origin::type subject_from)
{
@@ -306,26 +276,55 @@
// But it doesn't provide string versions of them. As most of them
// indicate bugs in monotone, it's not worth defining our own strings.
+ const int err_msg_max = 2048;
+ PCRE2_UCHAR8 err[err_msg_max+1];
+
+ pcre2_get_error_message(errcode, err, err_msg_max);
+
switch(errcode)
{
- case PCRE_ERROR_NOMEMORY:
+ case PCRE2_ERROR_NOMEMORY:
throw std::bad_alloc();
- case PCRE_ERROR_MATCHLIMIT:
+ case PCRE2_ERROR_MATCHLIMIT:
E(false, subject_from,
F("backtrack limit exceeded in regular expression matching"));
- case PCRE_ERROR_RECURSIONLIMIT:
+ case PCRE2_ERROR_DEPTHLIMIT:
+ E(false, subject_from,
+ F("depth limit exceeded in regular expression matching"));
+
+ case PCRE2_ERROR_JIT_STACKLIMIT:
E(false, subject_from,
- F("recursion limit exceeded in regular expression matching"));
+ F("JIT stack limit exceeded in regular expression matching"));
- case PCRE_ERROR_BADUTF8:
- case PCRE_ERROR_BADUTF8_OFFSET:
+ case PCRE2_ERROR_UTF8_ERR1:
+ case PCRE2_ERROR_UTF8_ERR2:
+ case PCRE2_ERROR_UTF8_ERR3:
+ case PCRE2_ERROR_UTF8_ERR4:
+ case PCRE2_ERROR_UTF8_ERR5:
+ case PCRE2_ERROR_UTF8_ERR6:
+ case PCRE2_ERROR_UTF8_ERR7:
+ case PCRE2_ERROR_UTF8_ERR8:
+ case PCRE2_ERROR_UTF8_ERR9:
+ case PCRE2_ERROR_UTF8_ERR10:
+ case PCRE2_ERROR_UTF8_ERR11:
+ case PCRE2_ERROR_UTF8_ERR12:
+ case PCRE2_ERROR_UTF8_ERR13:
+ case PCRE2_ERROR_UTF8_ERR14:
+ case PCRE2_ERROR_UTF8_ERR15:
+ case PCRE2_ERROR_UTF8_ERR16:
+ case PCRE2_ERROR_UTF8_ERR17:
+ case PCRE2_ERROR_UTF8_ERR18:
+ case PCRE2_ERROR_UTF8_ERR19:
+ case PCRE2_ERROR_UTF8_ERR20:
+ case PCRE2_ERROR_UTF8_ERR21:
+ case PCRE2_ERROR_BADUTFOFFSET:
E(false, subject_from,
F("invalid UTF-8 sequence found during regular expression matching"));
default:
- throw oops((F("pcre_exec returned %d") % errcode)
+ throw oops((F("pcre2_match returned %d [%s]") % errcode % err)
.str().c_str());
}
}

View File

@@ -0,0 +1,13 @@
Do not expect a nothing-to-do migration to fail on a read-only DB file
--- mtn-src/test/func/fail_cleanly_on_unreadable_db/__driver__.lua 2026-08-05 21:29:54.727038442 +0200
+++ mtn-src/test/func/fail_cleanly_on_unreadable_db/__driver__.lua 2026-08-05 21:30:33.397412828 +0200
@@ -23,7 +23,7 @@
check(mtn("ls", "branches"), 0, false, false)
check(mtn("db", "info"), 0, false, false)
check(mtn("db", "version"), 0, false, false)
-check(mtn("db", "migrate"), 1, false, false)
+check(mtn("db", "migrate"), 0, false, false) -- A migration is a NOP, RO is OK
check(mtn("commit", "-mfoo"), 1, false, false)
check(mtn("db", "load"), 1, false, false)
check({"chmod", "a+w", "test.db"})

View File

@@ -0,0 +1,29 @@
Passphrase errors now trigger a Botan error changing the exit code
--- mtn-src/test/func/changing_passphrase_of_a_private_key/__driver__.lua 2026-08-05 21:18:01.996782227 +0200
+++ mtn-src/test/func/changing_passphrase_of_a_private_key/__driver__.lua 2026-08-05 21:18:06.973363633 +0200
@@ -7,10 +7,10 @@
check(mtn("genkey", tkey), 0, false, false, string.rep(tkey.."\n", 2))
-- fail to enter any passphrase
-check(mtn("passphrase", tkey), 1, false, false)
+check(mtn("passphrase", tkey), 3, false, false)
-- fail to give correct old passphrase
-check(mtn("passphrase", tkey), 1, false, false, string.rep("bad\n", 3))
+check(mtn("passphrase", tkey), 3, false, false, string.rep("bad\n", 3))
-- fail to repeat new password
check(mtn("passphrase", tkey), 1, false, false,
--- mtn-src/test/func/disallowing_persistence_of_passphrase/__driver__.lua 2026-08-05 21:20:28.892980316 +0200
+++ mtn-src/test/func/disallowing_persistence_of_passphrase/__driver__.lua 2026-08-05 21:20:35.546373425 +0200
@@ -9,7 +9,7 @@
check(mtn("--ssh-sign=no", "--branch=testbranch", "--rcfile=persist.lua",
"commit", "--message=blah-blah"),
- 1, false, false, "tester@test.net\n")
+ 3, false, false, "tester@test.net\n")
check(mtn("--ssh-sign=no", "--branch=testbranch", "--rcfile=persist.lua",
"commit", "--message=blah-blah"),

View File

@@ -0,0 +1,14 @@
PCRE2 allows longer group names than PCRE1 did.
A failure case in .mtn-ignore became a valid lone ignoring everything.
Make it invalid again
--- mtn-src/test/func/syntax_errors_in_.mtn-ignore/mtn-ignore 2026-08-06 03:22:51.680338185 +0200
+++ mtn-src/test/func/syntax_errors_in_.mtn-ignore/mtn-ignore 2026-08-06 03:22:55.096806215 +0200
@@ -27,6 +27,6 @@
(?R)
(?P*)
(?P<*>x)
-(?P<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>)
+(?P<aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa>)
\777
^ignoremetoo$

View File

@@ -1,12 +1,13 @@
{
lib,
stdenv,
fetchFromGitHub,
fetchFromForgejo,
botan3,
boost,
zlib,
libidn,
lua,
pcre,
pcre2,
sqlite,
perl,
pkg-config,
@@ -19,48 +20,44 @@
texinfo,
fetchpatch,
callPackage,
runCommand,
}:
let
perlVersion = lib.getVersion perl;
botan = callPackage ./botan2.nix { enableForMonotone = true; };
in
assert perlVersion != "";
stdenv.mkDerivation (finalAttrs: {
pname = "monotone";
version = "1.1-unstable-2021-05-01";
version = "1.1-unstable-2025-12-11";
strictDeps = true;
__structuredAttrs = true;
enableParallelBuilding = true;
# src = fetchurl {
# url = "http://monotone.ca/downloads/${version}/monotone-${version}.tar.bz2";
# hash = "sha256-+Vz2CiLU5GG+ydDnL102CcmkV2+xzEX1U9AgLOLjjIg=";
# };
# My mirror of upstream Monotone repository
# Could fetchmtn, but circular dependency; snapshot requested
# https://lists.nongnu.org/archive/html/monotone-devel/2021-05/msg00000.html
src = fetchFromGitHub {
owner = "7c6f434c";
repo = "monotone-mirror";
rev = "b30b0e1c16def043d2dad57d1467d5bfdecdb070";
hash = "sha256-rb5dWCGqwuzStwIbNlsUKbGjGvgQD3gaIyiMq9RG3sE=";
# Upstream developer's mirror for easier access
# Could fetchmtn, but circular dependency
src = fetchFromForgejo {
domain = "git.lapo.it";
owner = "lapo";
repo = "monotone";
rev = "f93a19184e0c6c6ca5842ab050fcd62f2376c4ca";
hash = "sha256-PT0DfVFDTHIWH1hZlaxpceoG94pytqFbjJvHVpIBNHs=";
};
patches = [
./monotone-1.1-Adapt-to-changes-in-pcre-8.42.patch
./monotone-1.1-adapt-to-botan2.patch
(fetchpatch {
name = "rm-clang-float128-hack.patch";
url = "https://github.com/7c6f434c/monotone-mirror/commit/5f01a3a9326a8dbdae7fc911b208b7c319e5f456.patch";
revert = true;
hash = "sha256-7MjkzICYUDOBIgq6BSDq/CnGJgVl7gnx/rT0lshu8js=";
})
./monotone-botan-key-format.patch
./monotone-1.1-gcc-14.patch
./monotone-botan-error-reporting.patch
./monotone-pcre2.patch
];
postPatch = ''
@@ -73,8 +70,6 @@ stdenv.mkDerivation (finalAttrs: {
{} +
'';
env.CXXFLAGS = " --std=c++11 ";
nativeBuildInputs = [
pkg-config
autoreconfHook
@@ -83,10 +78,10 @@ stdenv.mkDerivation (finalAttrs: {
buildInputs = [
boost
zlib
botan
botan3
libidn
lua
pcre
pcre2
sqlite
expect
openssl
@@ -95,6 +90,8 @@ stdenv.mkDerivation (finalAttrs: {
perl
];
env.NIX_LDFLAGS = " -lpcre2-8 ";
postInstall = ''
mkdir -p $out/share/monotone-${finalAttrs.version}
cp -rv contrib/ $out/share/monotone-${finalAttrs.version}/contrib
@@ -109,9 +106,112 @@ stdenv.mkDerivation (finalAttrs: {
#doCheck = true; # some tests fail (and they take VERY long)
passthru.tests = {
basicEndToEnd =
runCommand "monotone-test-end-to-end" { nativeBuildInputs = [ finalAttrs.finalPackage ]; }
''
mkdir -p "$out/share/monotone-test/log/"
target="$out/share/monotone-test/log/monotone-test-end-to-end.log"
(
export HOME="$PWD"
set -x
mtn genkey test@localhost
mkdir a b c
mtn -d :test1 db init
mtn -d :test2 db init
(
cd a
mtn -d :test1 -b test setup
echo 123 > aaa
mtn add aaa
mtn ci -m 'add aaa'
mtn log
)
(
cd b
mtn -d :test2 sync file:///$HOME/.monotone/databases/test1.mtn'?*'
mtn -d :test2 co -r h:test -b test .
mtn up
echo 456 > bbb
mtn add bbb
mtn ci -m 'add bbb'
mtn log
)
(
cd a
echo 789 > ccc
mtn add ccc
mtn ci -m 'add ccc'
mtn log
)
(
cd c
mtn -d :test1 sync file:///$HOME/.monotone/databases/test2.mtn'?*'
mtn -d :test1 merge -b test
mtn -d :test1 co -r h:test -b test .
mtn up
mtn log
cat aaa bbb ccc | xargs | grep '123 456 789'
)
) 2>&1 | tee "$target"
'';
packageTests-unit = finalAttrs.finalPackage.overrideAttrs {
pname = "monotone-test";
doCheck = true;
buildPhase = " cp -iv ${finalAttrs.finalPackage}/bin/* . ";
installPhase = " true; ";
postCheck = " touch $out; ";
checkPhase = ''
runHook preCheck
make test/unit.status -j $NIX_CORES
runHook postCheck
grep '^0$' test/unit.status
'';
};
packageTests-func = finalAttrs.finalPackage.overrideAttrs {
pname = "monotone-test";
doCheck = true;
nativeBuildInputs = finalAttrs.nativeBuildInputs ++ [ finalAttrs.finalPackage ];
buildPhase = " cp -iv ${finalAttrs.finalPackage}/bin/* . ";
installPhase = " true; ";
postCheck = " touch $out; ";
checkPhase = ''
runHook preCheck
make test/func.status -j $NIX_CORES
runHook postCheck
grep '^0$' test/func.status || {
cat test/work/*.log
exit 1
}
'';
preCheck = ''
sed -e 's@test/func.status *: *mtn$(EXEEXT)@test/func.status : @' -i Makefile*
'';
patches = (finalAttrs.patches or [ ]) ++ [
./monotone-test-passphrase-botan3.patch
./monotone-test-nop-migration.patch
./monotone-base64-error-reporting.patch
./monotone-test-pcre2-mtnignore.patch
];
};
};
meta = {
description = "Free distributed version control system";
homepage = "https://github.com/7c6f434c/monotone-mirror";
homepage = "https://git.lapo.it/lapo/monotone";
maintainers = [ lib.maintainers.raskin ];
platforms = lib.platforms.unix;
license = lib.licenses.gpl2Plus;

View File

@@ -10,16 +10,16 @@
buildGoModule (finalAttrs: {
pname = "moor";
version = "2.15.2";
version = "2.16.2";
src = fetchFromGitHub {
owner = "walles";
repo = "moor";
tag = "v${finalAttrs.version}";
hash = "sha256-3HG3qiUGbrv/2HGvZ1gsLMs59fQZboXxcT/YCUfzT4Y=";
hash = "sha256-KSS9639wke24T4k4Xlcf0sbMswScWY1Uipq0dWt5MV8=";
};
vendorHash = "sha256-PGJ6aSRYgLztkQxHQvXn5ISBK5DIa76lJSOsMTGJNpw=";
vendorHash = "sha256-19g9mzt2YHpwuCeroR6vUEhfsHoo4B0Zkm/goPccZqI=";
nativeBuildInputs = [ installShellFiles ];

View File

@@ -25,16 +25,16 @@ let
in
rustPlatform.buildRustPackage (finalAttrs: {
pname = "motrix-next";
version = "3.9.6";
version = "3.9.7";
src = fetchFromGitHub {
owner = "AnInsomniacy";
repo = "motrix-next";
tag = "v${finalAttrs.version}";
hash = "sha256-ynLi+biCdjU7EOq556YuFonghWaxDV7UtHWiKImq7WE=";
hash = "sha256-REB89vOrNKyqH39OVd/jQonDvuIIYpm5rrBYg6w6Vq8=";
};
cargoHash = "sha256-c17GTD9Wcy9LYLfBcwECNS1Tek5hTWPmie2lXtrbtFc=";
cargoHash = "sha256-mffAas2SsiEL/IXYIsToe/hnMywsaRadEUEwIHOKZBo=";
pnpmDeps = fetchPnpmDeps {
inherit (finalAttrs)
@@ -43,7 +43,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
src
;
inherit pnpm;
hash = "sha256-WAuHoLAnFLP6i+rJSegt/hI6sb1SDhm7LWgsup70o9E=";
hash = "sha256-hdoXnfM+dn+I5T7EMklUB1L1FvywaI6hGpRGSQYkQvY=";
fetcherVersion = 3;
};
@@ -76,6 +76,8 @@ rustPlatform.buildRustPackage (finalAttrs: {
# Some tests on macOS attempt to retrieve system settings, such as the default browser and system proxy.
doCheck = !stdenv.hostPlatform.isDarwin;
tauriBuildFlags = lib.optionals stdenv.hostPlatform.isDarwin [ "--no-sign" ];
# Deactivate the upstream update mechanism
postPatch = ''
jq '

View File

@@ -28,13 +28,13 @@ stdenv.mkDerivation (finalAttrs: {
__structuredAttrs = true;
pname = "musescore-evolution";
version = "3.7.0-unstable-2026-07-25";
version = "3.7.0-unstable-2026-07-30";
src = fetchFromGitHub {
owner = "Jojo-Schmitz";
repo = "MuseScore";
rev = "bbd207db6b79f905274d561819bf0773b092191c";
hash = "sha256-XWGTWMhUnUEYR5VEE69jCZ3p/NN+r2bu6BKLs+w1KDc=";
rev = "e37e22e43119153192a573fe2d558b703311bb74";
hash = "sha256-NGy3MpttueujklFnV7bOlyqMPXHNAF5CqnJ+Hsbjt7k=";
};
patches = [

View File

@@ -1,99 +1,39 @@
[
{
"pname": "Dapper",
"version": "2.1.66",
"hash": "sha256-e5n/wnAFGPDSe30oQQ0fanXrvFZYYa+qCDSTHtfQmPw="
"version": "2.1.79",
"hash": "sha256-QIGZ+vlnwhSl+nnVZ//s3uwFh/vKJ5kDpgGkmpMjhmw="
},
{
"pname": "Microsoft.AspNetCore.JsonPatch",
"version": "10.0.1",
"hash": "sha256-bbX3CGoxG5E8RPUBeEvG9Us8l8WxBHRcjxPR3mJLnbg="
"version": "10.0.10",
"hash": "sha256-NIFI6z2X1blS3ab3G/CgY42WuJULni5wTa4X8AMx1c0="
},
{
"pname": "Microsoft.AspNetCore.Mvc.NewtonsoftJson",
"version": "10.0.1",
"hash": "sha256-E1ciFt7uy39aKRDfmXrHJ6e4SsaWm+C3inQqTzQEC2U="
},
{
"pname": "Microsoft.Azure.Amqp",
"version": "2.4.11",
"hash": "sha256-Nd2crPn0GUSgCzicuNhm0fYKiXtpQ3aduBjcjTMMF/4="
},
{
"pname": "Microsoft.Azure.ServiceBus",
"version": "5.2.0",
"hash": "sha256-YgxtiQzmlKj6KHyZppnDoWgoeO3wUlyVZimF2dNt1tA="
},
{
"pname": "Microsoft.Azure.Services.AppAuthentication",
"version": "1.0.3",
"hash": "sha256-KaGL7asV10S+fGp9dt1i6frelho8ns73epxGzZ4iRis="
"version": "10.0.10",
"hash": "sha256-QlXe8Il3kcDQZTSZg3tCvW7c8ERix7lIWvYGSrrleNE="
},
{
"pname": "Microsoft.Extensions.Logging.Abstractions",
"version": "1.0.0",
"hash": "sha256-asIXVFsAK7ELd/f+vLwhxYDdazqRTmf+fGJ4WFtcCeo="
},
{
"pname": "Microsoft.IdentityModel.Clients.ActiveDirectory",
"version": "3.14.2",
"hash": "sha256-mFlsKSQ6DsKttWuFkv6eMs0uSFHgwocxDad1icMXKj0="
},
{
"pname": "Microsoft.IdentityModel.JsonWebTokens",
"version": "5.4.0",
"hash": "sha256-yKITMgW2JEXhPlQgdmofAyt0eEcCr72P4rM2EC6wrig="
},
{
"pname": "Microsoft.IdentityModel.Logging",
"version": "5.4.0",
"hash": "sha256-YKdSKQDO5+ssC5mqLGtBhuJ4lLbLUadMVV4PPJ6/tMU="
},
{
"pname": "Microsoft.IdentityModel.Tokens",
"version": "5.4.0",
"hash": "sha256-gCJ+4QwhuBPSkDN+HcMCpTE2LFIQ3htI/SddoHOB7T4="
},
{
"pname": "Microsoft.NETCore.Platforms",
"version": "1.1.0",
"hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM="
},
{
"pname": "NBitcoin",
"version": "9.0.4",
"hash": "sha256-UuzpFfVggaz2dV60kGqjnCYtkLyhOrd9dlzzgmTA+4Q="
"version": "10.0.8",
"hash": "sha256-SnJ60lhDv94oD0370ZyrvFG2LDJ0wkixNP1pIvcq8AA="
},
{
"pname": "NBitcoin.Altcoins",
"version": "5.0.2",
"hash": "sha256-uXjJoS965jLXeeZav0fIndM0TdZ92ODOgCV1duVQAzk="
},
{
"pname": "NETStandard.Library",
"version": "1.6.0",
"hash": "sha256-ExWI1EKDCRishcfAeHVS/RoJphqSqohmJIC/wz3ZtVo="
},
{
"pname": "NETStandard.Library",
"version": "1.6.1",
"hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw="
"version": "6.0.4",
"hash": "sha256-BpXLxjmFf1JUud0Mwz/Zph0jPVqrEfa6KiMMnsOeIU8="
},
{
"pname": "NETStandard.Library.Ref",
"version": "2.1.0",
"hash": "sha256-Ruovy9EKgXaFuFr3zgw5fRKUS9yBIJ4nLeHgXv0zx4o="
},
{
"pname": "Newtonsoft.Json",
"version": "10.0.1",
"hash": "sha256-Gw7dQIsmYfmcR5ASTuMsB8cqaI4g3osw0j+LO1jEzJY="
},
{
"pname": "Newtonsoft.Json",
"version": "10.0.3",
"hash": "sha256-WEHCjp+OMr5axXQjFsh7TMDE/ttE35nMv5RBPdcxfhs="
},
{
"pname": "Newtonsoft.Json",
"version": "12.0.1",
@@ -131,17 +71,7 @@
},
{
"pname": "Npgsql",
"version": "10.0.1",
"hash": "sha256-cb4z+WH9qynS6n4I43FzSiifWLzgH26HAP/DnZvsjak="
},
{
"pname": "RabbitMQ.Client",
"version": "7.2.0",
"hash": "sha256-NkEb2ey0jo/OAeaVOUwIeSbeplqkOsgv1+ys8ZQgemQ="
},
{
"pname": "System.IdentityModel.Tokens.Jwt",
"version": "5.4.0",
"hash": "sha256-zLtoejPBG8yeFEPIcXZAkdAb0WDnrVXh5YsUYKULyRU="
"version": "10.0.3",
"hash": "sha256-ddCXCSOoyfy7035OvnL+4LEDYqHjZyPoZ3ffG2coMW0="
}
]

View File

@@ -7,13 +7,13 @@
buildDotnetModule rec {
pname = "nbxplorer";
version = "2.6.0";
version = "2.6.10";
src = fetchFromGitHub {
owner = "btcpayserver";
repo = "NBXplorer";
tag = "v${version}";
hash = "sha256-X1+UdsKVOC3QpES22p0MG1Rz1oresilBM+b/4I1nCyI=";
hash = "sha256-bAAEB1wIaWgDygk79bCuvkNDiPvgsUhVDqIrR3LMp7Q=";
};
projectFile = "NBXplorer/NBXplorer.csproj";

View File

@@ -50,10 +50,15 @@ repo=$tmpdir/repo
trap "rm -rf $tmpdir" EXIT
git clone --depth 1 --branch v${newVersion} -c advice.detachedHead=false https://github.com/$(getRepo) $repo
export GNUPGHOME=$tmpdir
importKey() {
curl --fail --location --silent --show-error --retry 3 --retry-all-errors \
"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x$1" \
| gpg --batch --import
}
# Fetch Nicolas Dorier's key (64-bit key ID: 6618763EF09186FE)
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys AB4CFA9895ACA0DBE27F6B346618763EF09186FE 2> /dev/null
importKey AB4CFA9895ACA0DBE27F6B346618763EF09186FE
# Fetch Andrew Camilleri's key (64-bit key ID: 8E5530D9D1C93097)
gpg --keyserver hkps://keyserver.ubuntu.com --recv-keys 836C08CF3F523BB7A8CB8ECF8E5530D9D1C93097 2> /dev/null
importKey 836C08CF3F523BB7A8CB8ECF8E5530D9D1C93097
echo
echo "Verifying commit"
git -C $repo verify-commit HEAD
@@ -64,12 +69,7 @@ echo
# Update pkg version and hash
echo "Updating $pkgName: $oldVersion -> $newVersion"
if [[ $newVersion == $oldVersion ]]; then
# Temporarily set a source version that doesn't equal $newVersion so that $newHash
# is always updated in the next call to update-source-version.
(cd "$nixpkgs" && update-source-version "$pkgName" "0" "0000000000000000000000000000000000000000000000000000")
fi
(cd "$nixpkgs" && update-source-version "$pkgName" "$newVersion" "$newHash")
(cd "$nixpkgs" && update-source-version "$pkgName" "$newVersion" "$newHash" --ignore-same-version)
echo
# Create deps file

View File

@@ -12,11 +12,11 @@
stdenv.mkDerivation (finalAttrs: {
pname = "neo4j";
version = "2026.06.0";
version = "2026.07.0";
src = fetchurl {
url = "https://neo4j.com/artifact.php?name=neo4j-community-${finalAttrs.version}-unix.tar.gz";
hash = "sha256-Hc9i5+gDXnFzK4ZTK5+OMhnOiVa9BpQNWgAkaWcnGSo=";
hash = "sha256-ANpBduUqBM+60704P34N/dfsBOtL0liPcRBVPxx5rgU=";
};
nativeBuildInputs = [ makeWrapper ];

View File

@@ -21,7 +21,7 @@
ocamlPackages.buildDunePackage (finalAttrs: {
pname = "nixtamal";
version = "1.9.2";
version = "1.9.3";
release_year = 2026;
minimalOCamlVersion = "5.3";
@@ -30,7 +30,7 @@ ocamlPackages.buildDunePackage (finalAttrs: {
url = "https://darcs.toastal.in.th/nixtamal/stable/";
mirrors = [ "https://smeder.ee/~toastal/nixtamal.darcs" ];
rev = finalAttrs.version;
hash = "sha256-Df5I5zibVGNLJtJi2j4pWD+x5yu2rO9KSWyVhcus/HU=";
hash = "sha256-NlCm9XQBK5ooX67ruOJr8TWlOAHGoCgNwIU0BKWol84=";
};
nativeBuildInputs = [

View File

@@ -31,14 +31,14 @@ in
py.pkgs.buildPythonApplication (finalAttrs: {
pname = "oci-cli";
version = "3.90.0";
version = "3.90.1";
pyproject = true;
src = fetchFromGitHub {
owner = "oracle";
repo = "oci-cli";
tag = "v${finalAttrs.version}";
hash = "sha256-oXg195wf9Wg81YDrS25zSZ/It/6WN1RtX2drRwdD64w=";
hash = "sha256-PrtmgkrV1uNNM3TEYqbpIHxXyo7iv9vYY7JTmyKA1wc=";
};
nativeBuildInputs = [ installShellFiles ];

View File

@@ -8,16 +8,16 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "ord";
version = "0.27.1";
version = "0.29.0";
src = fetchFromGitHub {
owner = "ordinals";
repo = "ord";
rev = finalAttrs.version;
hash = "sha256-KtJfiQs+2XkFT2l/rpyjeGf/i15BsLFHjSQjzOZkRfg=";
hash = "sha256-0jcp8zOWeLjIOpop15DE5ue8axSHJiy7Jnv8oQiPbmo=";
};
cargoHash = "sha256-4OFkqErFQ/VPvcHdBJTt877wpd1tALTH89U9u1V2KyY=";
cargoHash = "sha256-HPMRibZTYxKeaXRNmlriXaU3NyCMgm6Yitl2tBbOX8c=";
nativeBuildInputs = [
pkg-config

View File

@@ -1,11 +1,12 @@
{
lib,
stdenv,
qt6,
fetchFromGitLab,
libGLU,
nix-update-script,
qt6,
}:
stdenv.mkDerivation (finalAttrs: {
pname = "oscar";
version = "2.0.1";
@@ -13,19 +14,21 @@ stdenv.mkDerivation (finalAttrs: {
src = fetchFromGitLab {
owner = "CrimsonNape";
repo = "oscar-sql";
rev = "v${finalAttrs.version}";
tag = "v${finalAttrs.version}";
hash = "sha256-ivOEAP7/pc5yS6mhc/6ButbSjfFmOP4PM7c/S23oyYw=";
};
buildInputs = [
qt6.qtbase
qt6.qttools
libGLU
];
nativeBuildInputs = [
qt6.wrapQtAppsHook
qt6.qmake
qt6.qtserialport
qt6.qttools
qt6.wrapQtAppsHook
];
buildInputs = [
libGLU
qt6.qtbase
qt6.qtserialport
];
strictDeps = true;
@@ -34,21 +37,25 @@ stdenv.mkDerivation (finalAttrs: {
postPatch = ''
substituteInPlace oscar/oscar.pro \
--replace-fail "/bin/bash" "${stdenv.shell}" \
--replace-fail "\$\$[QT_INSTALL_BINS]/lrelease" "${qt6.qttools}/bin/lrelease"
--replace-fail "\$\$[QT_INSTALL_BINS]/lrelease" "lrelease"
substituteInPlace oscar/SleepLib/common.cpp \
--replace-fail 'QString( "/usr/share/" )' 'QString( "${placeholder "out"}/share/" )'
substituteInPlace Building/Linux/OSCAR20.desktop \
--replace-fail "Icon=/usr/share/icons/hicolor/48x48/apps/OSCAR20.png" "Icon=OSCAR20"
'';
qmakeFlags = [ "OSCAR_QT.pro" ];
installPhase = ''
runHook preInstall
install -D oscar/OSCAR20 -t $out/bin
install -Dm755 oscar/OSCAR20 -t "$out/bin"
# help browser was removed 'temporarily' in https://gitlab.com/pholy/OSCAR-code/-/commit/57c3e4c33ccdd2d0eddedbc24c0e4f2969da3841
# install -D oscar/Help/* -t $out/share/OSCAR/Help
install -D oscar/Html/* -t $out/share/OSCAR/Html
install -D oscar/Translations/* -t $out/share/OSCAR/Translations
install -D Building/Linux/OSCAR.png -t $out/share/icons/hicolor/48x48/apps
install -D Building/Linux/OSCAR.svg -t $out/share/icons/hicolor/scalable/apps
install -D Building/Linux/OSCAR.desktop -t $out/share/applications
# install -Dm644 oscar/Help/* -t "$out/share/OSCAR20/Help"
install -Dm644 oscar/Html/* -t "$out/share/OSCAR20/Html"
install -Dm644 oscar/Translations/* -t "$out/share/OSCAR20/Translations"
install -Dm644 Building/Linux/OSCAR20.png -t "$out/share/icons/hicolor/48x48/apps"
install -Dm644 Building/Linux/OSCAR20.svg -t "$out/share/icons/hicolor/scalable/apps"
install -Dm644 Building/Linux/OSCAR20.desktop -t "$out/share/applications"
runHook postInstall
'';
@@ -61,6 +68,7 @@ stdenv.mkDerivation (finalAttrs: {
meta = {
homepage = "https://www.sleepfiles.com/OSCAR/";
changelog = "https://gitlab.com/CrimsonNape/oscar-sql/-/raw/${finalAttrs.src.tag}/Htmldocs/release_notes.html";
description = "Software for reviewing and exploring data produced by CPAP and related machines used in the treatment of sleep apnea";
mainProgram = "OSCAR20";
license = lib.licenses.gpl3Only;

View File

@@ -10,7 +10,7 @@
rustPlatform.buildRustPackage (finalAttrs: {
pname = "passless";
version = "0.13.0";
version = "0.15.1";
__structuredAttrs = true;
@@ -18,10 +18,10 @@ rustPlatform.buildRustPackage (finalAttrs: {
owner = "pando85";
repo = "passless";
tag = "v${finalAttrs.version}";
hash = "sha256-ZfIScs+ougawn/tXK8PBme13CEdvxeL8/D38b3F/bcg=";
hash = "sha256-Af8Ab4CD6raaAPs7K7zQlxJ2BW5LNLsP3efqG9dUcKM=";
};
cargoHash = "sha256-RpfegA8nH8chbHXHbuWMRH9drSrnBRQwYJtnw2Sqymw=";
cargoHash = "sha256-M5H/jodA5hoBKCvJaUoZd/YwSxPkq7sIFqrLCY4EyaU=";
nativeBuildInputs = [
pkg-config
@@ -33,6 +33,7 @@ rustPlatform.buildRustPackage (finalAttrs: {
];
postInstall = ''
mkdir -p $out/etc/udev/rules.d
install -Dm644 contrib/udev/* $out/etc/udev/rules.d
export COMPLETIONS="target/${stdenv.targetPlatform.config}/$cargoBuildType/build/passless-rs-*/out/completions"

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