mirror of
https://github.com/NixOS/nixpkgs.git
synced 2026-08-26 02:05:02 +00:00
Merge master into staging-next
This commit is contained in:
@@ -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 = {
|
||||
|
||||
@@ -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));
|
||||
};
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 U‐Boot 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.
|
||||
|
||||
@@ -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; [
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
161
nixos/tests/easytier-modular.nix
Normal file
161
nixos/tests/easytier-modular.nix
Normal 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 ];
|
||||
}
|
||||
@@ -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";
|
||||
|
||||
@@ -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=",
|
||||
|
||||
@@ -61,8 +61,8 @@ let
|
||||
}
|
||||
else
|
||||
{
|
||||
version = "2026.2";
|
||||
hash = "sha256-0n5EVegkYXeVI2Z5hjGg2tny4fVnQApsuFShaNzAUN0=";
|
||||
version = "2026.3";
|
||||
hash = "sha256-EJS3u8ajlgIjgnEUYmZXEQtACWzflZinJ5NfyE6/iqA=";
|
||||
};
|
||||
|
||||
in
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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 = ".";
|
||||
|
||||
@@ -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 ];
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
@@ -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)
|
||||
];
|
||||
|
||||
@@ -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)
|
||||
];
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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
|
||||
|
||||
1384
pkgs/by-name/bt/btcpayserver/deps.json
generated
1384
pkgs/by-name/bt/btcpayserver/deps.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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";
|
||||
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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=";
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
9
pkgs/by-name/cu/curl-impersonateFull/package.nix
Normal file
9
pkgs/by-name/cu/curl-impersonateFull/package.nix
Normal 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" ];
|
||||
}
|
||||
@@ -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.");
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=";
|
||||
|
||||
@@ -95,7 +95,6 @@ rustPlatform.buildRustPackage (finalAttrs: {
|
||||
asl20
|
||||
];
|
||||
maintainers = with lib.maintainers; [
|
||||
cathalmullan
|
||||
anish
|
||||
];
|
||||
platforms = lib.platforms.all;
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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}";
|
||||
|
||||
201
pkgs/by-name/ea/easytier/service.nix
Normal file
201
pkgs/by-name/ea/easytier/service.nix
Normal 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";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 = {
|
||||
|
||||
@@ -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=";
|
||||
|
||||
35
pkgs/by-name/gr/grayjay-frontend/package.nix
Normal file
35
pkgs/by-name/gr/grayjay-frontend/package.nix
Normal 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
|
||||
;
|
||||
};
|
||||
}
|
||||
52
pkgs/by-name/gr/grayjay-libcurlshim/package.nix
Normal file
52
pkgs/by-name/gr/grayjay-libcurlshim/package.nix
Normal 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
|
||||
;
|
||||
};
|
||||
}
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
|
||||
@@ -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
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)";
|
||||
|
||||
|
||||
@@ -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 = ''
|
||||
|
||||
@@ -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 =
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 { };
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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=";
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
};
|
||||
})
|
||||
@@ -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
|
||||
|
||||
@@ -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)";
|
||||
@@ -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",
|
||||
@@ -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++)
|
||||
12
pkgs/by-name/mo/monotone/monotone-botan-key-format.patch
Normal file
12
pkgs/by-name/mo/monotone/monotone-botan-key-format.patch
Normal 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;
|
||||
482
pkgs/by-name/mo/monotone/monotone-pcre2.patch
Normal file
482
pkgs/by-name/mo/monotone/monotone-pcre2.patch
Normal 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());
|
||||
}
|
||||
}
|
||||
13
pkgs/by-name/mo/monotone/monotone-test-nop-migration.patch
Normal file
13
pkgs/by-name/mo/monotone/monotone-test-nop-migration.patch
Normal 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"})
|
||||
@@ -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"),
|
||||
14
pkgs/by-name/mo/monotone/monotone-test-pcre2-mtnignore.patch
Normal file
14
pkgs/by-name/mo/monotone/monotone-test-pcre2-mtnignore.patch
Normal 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$
|
||||
@@ -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;
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
|
||||
@@ -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 '
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
94
pkgs/by-name/nb/nbxplorer/deps.json
generated
94
pkgs/by-name/nb/nbxplorer/deps.json
generated
@@ -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="
|
||||
}
|
||||
]
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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 = [
|
||||
|
||||
@@ -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 ];
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user