From c720fdc0e7a0a8bc9cb160285197abc3126987ba Mon Sep 17 00:00:00 2001 From: Christoph Jabs Date: Tue, 20 May 2025 10:00:42 +0300 Subject: [PATCH 01/24] maintainers: add chrjabs --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 9c267eb3c844..7873860a4aac 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -4547,6 +4547,13 @@ githubId = 2245737; name = "Christopher Mark Poole"; }; + chrjabs = { + email = "contact@christophjabs.info"; + github = "chrjabs"; + githubId = 98587286; + name = "Christoph Jabs"; + keys = [ { fingerprint = "47D6 1FEB CD86 F3EC D2E3 D68A 83D0 74F3 48B2 FD9D"; } ]; + }; chrpinedo = { github = "chrpinedo"; githubId = 2324630; From 641b6caece3fd48a0bb2ff69e3a402f3527a327d Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 15 Jun 2025 12:34:15 +0000 Subject: [PATCH 02/24] peazip: 10.4.0 -> 10.5.0 --- pkgs/by-name/pe/peazip/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/pe/peazip/package.nix b/pkgs/by-name/pe/peazip/package.nix index 78cc0b2ae3bd..977d921b2d03 100644 --- a/pkgs/by-name/pe/peazip/package.nix +++ b/pkgs/by-name/pe/peazip/package.nix @@ -16,13 +16,13 @@ stdenv.mkDerivation rec { pname = "peazip"; - version = "10.4.0"; + version = "10.5.0"; src = fetchFromGitHub { owner = "peazip"; repo = "peazip"; rev = version; - hash = "sha256-tA2JLO4KIqFOVZyt7CPMRJTojQFQVQqGGOeh3sU/FuQ="; + hash = "sha256-tEx0ZSvv+byn8OPSFprFJwMFxuEQzyrkvk4FbvGtH2A="; }; sourceRoot = "${src.name}/peazip-sources"; From 9525316eea8eaf04d5b3b8693c8a01495160494b Mon Sep 17 00:00:00 2001 From: ppom <> Date: Tue, 10 Jun 2025 12:00:00 +0200 Subject: [PATCH 03/24] reaction: 1.4.1 -> 2.0.1 reaction has been rewritten in Rust. --- doc/release-notes/rl-2511.section.md | 3 +- pkgs/by-name/re/reaction/package.nix | 42 ++++++++++++++-------------- 2 files changed, 23 insertions(+), 22 deletions(-) diff --git a/doc/release-notes/rl-2511.section.md b/doc/release-notes/rl-2511.section.md index c50ae7739abd..1bdd6989e488 100644 --- a/doc/release-notes/rl-2511.section.md +++ b/doc/release-notes/rl-2511.section.md @@ -33,7 +33,8 @@ ### Breaking changes {#sec-nixpkgs-release-25.11-lib-breaking} -- Create the first release note entry in this section! +- `reaction` has been updated to version 2, which includes some breaking changes. + For more information, [check the release article](https://blog.ppom.me/en-reaction-v2). ### Deprecations {#sec-nixpkgs-release-25.11-lib-deprecations} diff --git a/pkgs/by-name/re/reaction/package.nix b/pkgs/by-name/re/reaction/package.nix index 6b32e4b319aa..ab1a9051f01f 100644 --- a/pkgs/by-name/re/reaction/package.nix +++ b/pkgs/by-name/re/reaction/package.nix @@ -1,46 +1,46 @@ { lib, - buildGoModule, fetchFromGitLab, + rustPlatform, + nix-update-script, + installShellFiles, }: -let - version = "1.4.1"; -in -buildGoModule { - inherit version; +rustPlatform.buildRustPackage (finalAttrs: { pname = "reaction"; + version = "2.0.1"; src = fetchFromGitLab { domain = "framagit.org"; owner = "ppom"; repo = "reaction"; - rev = "v${version}"; - hash = "sha256-UL3ck+gejZAu/mZS3ZiZ78a2/I+OesaSRZUhHirgu9o="; + tag = "v${finalAttrs.version}"; + hash = "sha256-HpnLh0JfGZsHcvDQSiKfW62QcCe/QDsVP/nGBo9x494="; }; - vendorHash = "sha256-THUIoWFzkqaTofwH4clBgsmtUlLS9WIB2xjqW7vkhpg="; + cargoHash = "sha256-i8KZygESxgty8RR3C+JMuE1aAsBxoLuGsL4jqjdGr0E="; - ldflags = [ - "-X main.version=${version}" - "-X main.commit=unknown" + nativeBuildInputs = [ + installShellFiles ]; - postBuild = '' - $CC helpers_c/ip46tables.c -o ip46tables - $CC helpers_c/nft46.c -o nft46 + postInstall = '' + installBin $releaseDir/ip46tables $releaseDir/nft46 + installManPage $releaseDir/reaction*.1 + installShellCompletion --cmd reaction \ + --bash $releaseDir/reaction.bash \ + --fish $releaseDir/reaction.fish \ + --zsh $releaseDir/_reaction ''; - postInstall = '' - cp ip46tables nft46 $out/bin - ''; + passthru.updateScript = nix-update-script { }; meta = { description = "Scan logs and take action: an alternative to fail2ban"; homepage = "https://framagit.org/ppom/reaction"; - changelog = "https://framagit.org/ppom/reaction/-/releases/v${version}"; + changelog = "https://framagit.org/ppom/reaction/-/releases/v${finalAttrs.version}"; license = lib.licenses.agpl3Plus; mainProgram = "reaction"; maintainers = with lib.maintainers; [ ppom ]; - platforms = lib.platforms.unix; + platforms = lib.platforms.linux; }; -} +}) From ae1e6c4621099c72d5325e6c8c03435bf826d133 Mon Sep 17 00:00:00 2001 From: Christoph Jabs Date: Tue, 20 May 2025 10:20:37 +0300 Subject: [PATCH 04/24] python3Packages.python-sat: 0.1.7.dev1 -> 0.1.8.dev17 --- .../python-modules/python-sat/default.nix | 28 ++++++++----------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/pkgs/development/python-modules/python-sat/default.nix b/pkgs/development/python-modules/python-sat/default.nix index bf1c6c45982c..940dbfe3273d 100644 --- a/pkgs/development/python-modules/python-sat/default.nix +++ b/pkgs/development/python-modules/python-sat/default.nix @@ -6,17 +6,16 @@ pypblib, pytestCheckHook, }: - buildPythonPackage rec { pname = "python-sat"; - version = "0.1.7.dev1"; + version = "0.1.8.dev17"; format = "setuptools"; src = fetchFromGitHub { owner = "pysathq"; repo = "pysat"; - rev = version; - hash = "sha256-zGdgD+SgoMB7/zDQI/trmV70l91TB7OkDxaJ30W3dkI="; + rev = "a04763de6dafb8d3a0d7f1b231fc0d30be1de4c0"; # upstream does not tag releases + hash = "sha256-FG6oAAI8XKXumj6Ys2QjjYcRp1TpwkUZzyfpkdq5V6E="; }; propagatedBuildInputs = [ @@ -26,23 +25,18 @@ buildPythonPackage rec { nativeCheckInputs = [ pytestCheckHook ]; - # https://github.com/pysathq/pysat/pull/102 - postPatch = '' - # Fix for case-insensitive filesystem - cat >>solvers/patches/cadical.patch < Date: Tue, 17 Jun 2025 11:44:24 -0400 Subject: [PATCH 05/24] nixos/tests/garage: move to runTest --- nixos/tests/all-tests.nix | 5 +- nixos/tests/garage/basic.nix | 32 ++++------ nixos/tests/garage/default.nix | 48 +++++++-------- nixos/tests/garage/with-3node-replication.nix | 58 ++++++++----------- pkgs/tools/filesystems/garage/default.nix | 2 +- 5 files changed, 62 insertions(+), 83 deletions(-) diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 552fb324db76..587ace3b47a2 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -535,7 +535,10 @@ in mimir = runTest ./mimir.nix; galene = discoverTests (import ./galene.nix); gancio = runTest ./gancio.nix; - garage = handleTest ./garage { }; + garage_1 = import ./garage { + inherit runTest; + package = pkgs.garage_1_x; + }; gatus = runTest ./gatus.nix; getaddrinfo = runTest ./getaddrinfo.nix; gemstash = handleTest ./gemstash.nix { }; diff --git a/nixos/tests/garage/basic.nix b/nixos/tests/garage/basic.nix index c6264d2cbc9f..f035410b86ae 100644 --- a/nixos/tests/garage/basic.nix +++ b/nixos/tests/garage/basic.nix @@ -1,17 +1,13 @@ -args@{ mkNode, ver, ... }: -(import ../make-test-python.nix ( - { pkgs, ... }: - { - name = "garage-basic"; - meta = { - maintainers = with pkgs.lib.maintainers; [ raitobezarius ]; - }; +{ mkNode, ... }: +{ + name = "garage-basic"; - nodes = { - single_node = mkNode { replicationMode = "none"; }; - }; + nodes = { + single_node = mkNode { replicationMode = "none"; }; + }; - testScript = '' + testScript = # python + '' from typing import List from dataclasses import dataclass import re @@ -54,9 +50,7 @@ args@{ mkNode, ver, ... }: machine.succeed(f"garage layout apply --version {version}") def create_api_key(machine: Machine, key_name: str) -> S3Key: - output = machine.succeed(f"garage key ${ - if ver == "0_8" then "new --name" else "create" - } {key_name}") + output = machine.succeed(f"garage key create {key_name}") m = key_creation_regex.match(output) if not m or not m.group('key_id') or not m.group('secret_key'): raise ValueError('Cannot parse API key data') @@ -94,13 +88,9 @@ args@{ mkNode, ver, ... }: single_node.wait_for_open_port(3900) # Now Garage is initialized. single_node_id = get_node_id(single_node) - apply_garage_layout(single_node, [f'-z qemutest -c ${ - if ver == "0_8" then "1" else "1G" - } "{single_node_id}"']) + apply_garage_layout(single_node, [f'-z qemutest -c 1G "{single_node_id}"']) # Now Garage is operational. test_bucket_writes(single_node) test_bucket_over_http(single_node) ''; - } -)) - args +} diff --git a/nixos/tests/garage/default.nix b/nixos/tests/garage/default.nix index cd2824d26ecd..aa4a14569c52 100644 --- a/nixos/tests/garage/default.nix +++ b/nixos/tests/garage/default.nix @@ -1,13 +1,9 @@ { - system ? builtins.currentSystem, - config ? { }, - pkgs ? import ../../.. { inherit system config; }, + runTest, + package, }: -with pkgs.lib; - let mkNode = - package: { replicationMode, publicV6Address ? "::1", @@ -55,24 +51,22 @@ let virtualisation.diskSize = 2 * 1024; }; in -foldl - ( - matrix: ver: - matrix - // { - "basic${toString ver}" = import ./basic.nix { - inherit system pkgs ver; - mkNode = mkNode pkgs."garage_${ver}"; - }; - "with-3node-replication${toString ver}" = import ./with-3node-replication.nix { - inherit system pkgs ver; - mkNode = mkNode pkgs."garage_${ver}"; - }; - } - ) - { } - [ - "0_8" - "0_9" - "1_x" - ] +{ + basic = runTest { + imports = [ + ./basic.nix + ]; + _module.args = { + inherit mkNode; + }; + }; + + with-3node-replication = runTest { + imports = [ + ./with-3node-replication.nix + ]; + _module.args = { + inherit mkNode; + }; + }; +} diff --git a/nixos/tests/garage/with-3node-replication.nix b/nixos/tests/garage/with-3node-replication.nix index a2f4189603b0..5d04e817cf49 100644 --- a/nixos/tests/garage/with-3node-replication.nix +++ b/nixos/tests/garage/with-3node-replication.nix @@ -1,32 +1,28 @@ -args@{ mkNode, ver, ... }: -(import ../make-test-python.nix ( - { pkgs, ... }: - { - name = "garage-3node-replication"; - meta = { - maintainers = with pkgs.lib.maintainers; [ raitobezarius ]; - }; +{ mkNode, ... }: +{ + name = "garage-3node-replication"; - nodes = { - node1 = mkNode { - replicationMode = "3"; - publicV6Address = "fc00:1::1"; - }; - node2 = mkNode { - replicationMode = "3"; - publicV6Address = "fc00:1::2"; - }; - node3 = mkNode { - replicationMode = "3"; - publicV6Address = "fc00:1::3"; - }; - node4 = mkNode { - replicationMode = "3"; - publicV6Address = "fc00:1::4"; - }; + nodes = { + node1 = mkNode { + replicationMode = "3"; + publicV6Address = "fc00:1::1"; }; + node2 = mkNode { + replicationMode = "3"; + publicV6Address = "fc00:1::2"; + }; + node3 = mkNode { + replicationMode = "3"; + publicV6Address = "fc00:1::3"; + }; + node4 = mkNode { + replicationMode = "3"; + publicV6Address = "fc00:1::4"; + }; + }; - testScript = '' + testScript = # python + '' from typing import List from dataclasses import dataclass import re @@ -68,9 +64,7 @@ args@{ mkNode, ver, ... }: machine.succeed(f"garage layout apply --version {version}") def create_api_key(machine: Machine, key_name: str) -> S3Key: - output = machine.succeed(f"garage key ${ - if ver == "0_8" then "new --name" else "create" - } {key_name}") + output = machine.succeed(f"garage key create {key_name}") m = key_creation_regex.match(output) if not m or not m.group('key_id') or not m.group('secret_key'): raise ValueError('Cannot parse API key data') @@ -125,7 +119,7 @@ args@{ mkNode, ver, ... }: zones = ["nixcon", "nixcon", "paris_meetup", "fosdem"] apply_garage_layout(node1, [ - f'{ndata.node_id} -z {zones[index]} -c ${if ver == "0_8" then "1" else "1G"}' + f'{ndata.node_id} -z {zones[index]} -c 1G' for index, ndata in enumerate(node_ids.values()) ]) # Now Garage is operational. @@ -133,6 +127,4 @@ args@{ mkNode, ver, ... }: for node in nodes: test_bucket_over_http(get_machine(node)) ''; - } -)) - args +} diff --git a/pkgs/tools/filesystems/garage/default.nix b/pkgs/tools/filesystems/garage/default.nix index a33b3587185e..db5632e9d058 100644 --- a/pkgs/tools/filesystems/garage/default.nix +++ b/pkgs/tools/filesystems/garage/default.nix @@ -92,7 +92,7 @@ let "k2v::poll::test_poll_item" ]; - passthru.tests = nixosTests.garage; + passthru.tests = nixosTests."garage_${lib.versions.major version}"; meta = { description = "S3-compatible object store for small self-hosted geo-distributed deployments"; From b9700f766a10803c28e12009f768df565898aa67 Mon Sep 17 00:00:00 2001 From: "Adam C. Stephens" Date: Tue, 17 Jun 2025 10:00:51 -0400 Subject: [PATCH 06/24] garage_2: init at 2.0.0 https://garagehq.deuxfleurs.fr/blog/2025-06-garage-v2/ https://git.deuxfleurs.fr/Deuxfleurs/garage/releases/tag/v2.0.0 Thanks to @herbetom for providing the test updates --- nixos/tests/all-tests.nix | 6 +- nixos/tests/garage/basic.nix | 96 ++++------------- nixos/tests/garage/common.nix | 85 +++++++++++++++ nixos/tests/garage/default.nix | 12 +-- nixos/tests/garage/with-3node-replication.nix | 102 +++++------------- pkgs/tools/filesystems/garage/default.nix | 9 ++ pkgs/top-level/all-packages.nix | 5 + 7 files changed, 154 insertions(+), 161 deletions(-) create mode 100644 nixos/tests/garage/common.nix diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index 587ace3b47a2..5be2a58277f1 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -537,7 +537,11 @@ in gancio = runTest ./gancio.nix; garage_1 = import ./garage { inherit runTest; - package = pkgs.garage_1_x; + package = pkgs.garage_1; + }; + garage_2 = import ./garage { + inherit runTest; + package = pkgs.garage_2; }; gatus = runTest ./gatus.nix; getaddrinfo = runTest ./getaddrinfo.nix; diff --git a/nixos/tests/garage/basic.nix b/nixos/tests/garage/basic.nix index f035410b86ae..5c0d1794a12f 100644 --- a/nixos/tests/garage/basic.nix +++ b/nixos/tests/garage/basic.nix @@ -1,87 +1,31 @@ -{ mkNode, ... }: +{ + lib, + mkNode, + package, + testScriptSetup, + ... +}: { name = "garage-basic"; nodes = { - single_node = mkNode { replicationMode = "none"; }; + single_node = mkNode { + extraSettings = + if (lib.versionAtLeast package.version "2") then + { + replication_factor = 1; + consistency_mode = "consistent"; + } + else + { + replication_mode = "none"; + }; + }; }; testScript = # python '' - from typing import List - from dataclasses import dataclass - import re - - start_all() - - cur_version_regex = re.compile('Current cluster layout version: (?P\d*)') - key_creation_regex = re.compile('Key name: (?P.*)\nKey ID: (?P.*)\nSecret key: (?P.*)') - - @dataclass - class S3Key: - key_name: str - key_id: str - secret_key: str - - @dataclass - class GarageNode: - node_id: str - host: str - - def get_node_fqn(machine: Machine) -> GarageNode: - node_id, host = machine.succeed("garage node id").split('@') - return GarageNode(node_id=node_id, host=host) - - def get_node_id(machine: Machine) -> str: - return get_node_fqn(machine).node_id - - def get_layout_version(machine: Machine) -> int: - version_data = machine.succeed("garage layout show") - m = cur_version_regex.search(version_data) - if m and m.group('ver') is not None: - return int(m.group('ver')) + 1 - else: - raise ValueError('Cannot find current layout version') - - def apply_garage_layout(machine: Machine, layouts: List[str]): - for layout in layouts: - machine.succeed(f"garage layout assign {layout}") - version = get_layout_version(machine) - machine.succeed(f"garage layout apply --version {version}") - - def create_api_key(machine: Machine, key_name: str) -> S3Key: - output = machine.succeed(f"garage key create {key_name}") - m = key_creation_regex.match(output) - if not m or not m.group('key_id') or not m.group('secret_key'): - raise ValueError('Cannot parse API key data') - return S3Key(key_name=key_name, key_id=m.group('key_id'), secret_key=m.group('secret_key')) - - def get_api_key(machine: Machine, key_pattern: str) -> S3Key: - output = machine.succeed(f"garage key info {key_pattern}") - m = key_creation_regex.match(output) - if not m or not m.group('key_name') or not m.group('key_id') or not m.group('secret_key'): - raise ValueError('Cannot parse API key data') - return S3Key(key_name=m.group('key_name'), key_id=m.group('key_id'), secret_key=m.group('secret_key')) - - def test_bucket_writes(node): - node.succeed("garage bucket create test-bucket") - s3_key = create_api_key(node, "test-api-key") - node.succeed("garage bucket allow --read --write test-bucket --key test-api-key") - other_s3_key = get_api_key(node, 'test-api-key') - assert other_s3_key.secret_key == other_s3_key.secret_key - node.succeed( - f"mc alias set test-garage http://[::1]:3900 {s3_key.key_id} {s3_key.secret_key} --api S3v4" - ) - node.succeed("echo test | mc pipe test-garage/test-bucket/test.txt") - assert node.succeed("mc cat test-garage/test-bucket/test.txt").strip() == "test" - - def test_bucket_over_http(node, bucket='test-bucket', url=None): - if url is None: - url = f"{bucket}.web.garage" - - node.succeed(f'garage bucket website --allow {bucket}') - node.succeed(f'echo hello world | mc pipe test-garage/{bucket}/index.html') - assert (node.succeed(f"curl -H 'Host: {url}' http://localhost:3902")).strip() == 'hello world' + ${testScriptSetup} with subtest("Garage works as a single-node S3 storage"): single_node.wait_for_unit("garage.service") diff --git a/nixos/tests/garage/common.nix b/nixos/tests/garage/common.nix new file mode 100644 index 000000000000..c8392eee6dba --- /dev/null +++ b/nixos/tests/garage/common.nix @@ -0,0 +1,85 @@ +{ ... }: +{ + _module.args.testScriptSetup = # python + '' + from typing import List + from dataclasses import dataclass + import re + + start_all() + + cur_version_regex = re.compile(r'Current cluster layout version: (?P\d*)') + + @dataclass + class S3Key: + key_name: str + key_id: str + secret_key: str + + @dataclass + class GarageNode: + node_id: str + host: str + + def get_node_fqn(machine: Machine) -> GarageNode: + node_id, host = machine.succeed("garage node id").split('@') + return GarageNode(node_id=node_id, host=host) + + def get_node_id(machine: Machine) -> str: + return get_node_fqn(machine).node_id + + def get_layout_version(machine: Machine) -> int: + version_data = machine.succeed("garage layout show") + m = cur_version_regex.search(version_data) + if m and m.group('ver') is not None: + return int(m.group('ver')) + 1 + else: + raise ValueError('Cannot find current layout version') + + def apply_garage_layout(machine: Machine, layouts: List[str]): + for layout in layouts: + machine.succeed(f"garage layout assign {layout}") + version = get_layout_version(machine) + machine.succeed(f"garage layout apply --version {version}") + + def create_api_key(machine: Machine, key_name: str) -> S3Key: + output = machine.succeed(f"garage key create {key_name}") + return parse_api_key_data(output) + + def get_api_key(machine: Machine, key_pattern: str) -> S3Key: + output = machine.succeed(f"garage key info {key_pattern}") + return parse_api_key_data(output) + + def parse_api_key_data(text) -> S3Key: + key_creation_regex = re.compile(r'Key name: \s*(?P.*)|' r'Key ID: \s*(?P.*)|' r'Secret key: \s*(?P.*)', re.IGNORECASE) + fields = {} + for match in key_creation_regex.finditer(text): + for key, value in match.groupdict().items(): + if value: + fields[key] = value.strip() + try: + return S3Key(**fields) + except TypeError as e: + raise ValueError(f"Cannot parse API key data. Missing required field(s): {e}") + + def test_bucket_writes(node): + node.succeed("garage bucket create test-bucket") + s3_key = create_api_key(node, "test-api-key") + node.succeed("garage bucket allow --read --write test-bucket --key test-api-key") + other_s3_key = get_api_key(node, 'test-api-key') + assert other_s3_key.secret_key == other_s3_key.secret_key + node.succeed( + f"mc alias set test-garage http://[::1]:3900 {s3_key.key_id} {s3_key.secret_key} --api S3v4" + ) + node.succeed("echo test | mc pipe test-garage/test-bucket/test.txt") + assert node.succeed("mc cat test-garage/test-bucket/test.txt").strip() == "test" + + def test_bucket_over_http(node, bucket='test-bucket', url=None): + if url is None: + url = f"{bucket}.web.garage" + + node.succeed(f'garage bucket website --allow {bucket}') + node.succeed(f'echo hello world | mc pipe test-garage/{bucket}/index.html') + assert (node.succeed(f"curl -H 'Host: {url}' http://localhost:3902")).strip() == 'hello world' + ''; +} diff --git a/nixos/tests/garage/default.nix b/nixos/tests/garage/default.nix index aa4a14569c52..93f721abe241 100644 --- a/nixos/tests/garage/default.nix +++ b/nixos/tests/garage/default.nix @@ -5,8 +5,8 @@ let mkNode = { - replicationMode, publicV6Address ? "::1", + extraSettings ? { }, }: { pkgs, ... }: { @@ -26,8 +26,6 @@ let enable = true; inherit package; settings = { - replication_mode = replicationMode; - rpc_bind_addr = "[::]:3901"; rpc_public_addr = "[${publicV6Address}]:3901"; rpc_secret = "5c1915fa04d0b6739675c61bf5907eb0fe3d9c69850c83820f51b4d25d13868c"; @@ -43,7 +41,7 @@ let root_domain = ".web.garage"; index = "index.html"; }; - }; + } // extraSettings; }; environment.systemPackages = [ pkgs.minio-client ]; @@ -54,19 +52,21 @@ in { basic = runTest { imports = [ + ./common.nix ./basic.nix ]; _module.args = { - inherit mkNode; + inherit mkNode package; }; }; with-3node-replication = runTest { imports = [ + ./common.nix ./with-3node-replication.nix ]; _module.args = { - inherit mkNode; + inherit mkNode package; }; }; } diff --git a/nixos/tests/garage/with-3node-replication.nix b/nixos/tests/garage/with-3node-replication.nix index 5d04e817cf49..884ef780a4d5 100644 --- a/nixos/tests/garage/with-3node-replication.nix +++ b/nixos/tests/garage/with-3node-replication.nix @@ -1,101 +1,47 @@ -{ mkNode, ... }: +{ + lib, + mkNode, + package, + testScriptSetup, + ... +}: +let + extraSettings = + if (lib.versionAtLeast package.version "2") then + { + replication_factor = 3; + consistency_mode = "consistent"; + } + else + { + replication_mode = "3"; + }; +in { name = "garage-3node-replication"; nodes = { node1 = mkNode { - replicationMode = "3"; + inherit extraSettings; publicV6Address = "fc00:1::1"; }; node2 = mkNode { - replicationMode = "3"; + inherit extraSettings; publicV6Address = "fc00:1::2"; }; node3 = mkNode { - replicationMode = "3"; + inherit extraSettings; publicV6Address = "fc00:1::3"; }; node4 = mkNode { - replicationMode = "3"; + inherit extraSettings; publicV6Address = "fc00:1::4"; }; }; testScript = # python '' - from typing import List - from dataclasses import dataclass - import re - start_all() - - cur_version_regex = re.compile('Current cluster layout version: (?P\d*)') - key_creation_regex = re.compile('Key name: (?P.*)\nKey ID: (?P.*)\nSecret key: (?P.*)') - - @dataclass - class S3Key: - key_name: str - key_id: str - secret_key: str - - @dataclass - class GarageNode: - node_id: str - host: str - - def get_node_fqn(machine: Machine) -> GarageNode: - node_id, host = machine.succeed("garage node id").split('@') - return GarageNode(node_id=node_id, host=host) - - def get_node_id(machine: Machine) -> str: - return get_node_fqn(machine).node_id - - def get_layout_version(machine: Machine) -> int: - version_data = machine.succeed("garage layout show") - m = cur_version_regex.search(version_data) - if m and m.group('ver') is not None: - return int(m.group('ver')) + 1 - else: - raise ValueError('Cannot find current layout version') - - def apply_garage_layout(machine: Machine, layouts: List[str]): - for layout in layouts: - machine.succeed(f"garage layout assign {layout}") - version = get_layout_version(machine) - machine.succeed(f"garage layout apply --version {version}") - - def create_api_key(machine: Machine, key_name: str) -> S3Key: - output = machine.succeed(f"garage key create {key_name}") - m = key_creation_regex.match(output) - if not m or not m.group('key_id') or not m.group('secret_key'): - raise ValueError('Cannot parse API key data') - return S3Key(key_name=key_name, key_id=m.group('key_id'), secret_key=m.group('secret_key')) - - def get_api_key(machine: Machine, key_pattern: str) -> S3Key: - output = machine.succeed(f"garage key info {key_pattern}") - m = key_creation_regex.match(output) - if not m or not m.group('key_name') or not m.group('key_id') or not m.group('secret_key'): - raise ValueError('Cannot parse API key data') - return S3Key(key_name=m.group('key_name'), key_id=m.group('key_id'), secret_key=m.group('secret_key')) - - def test_bucket_writes(node): - node.succeed("garage bucket create test-bucket") - s3_key = create_api_key(node, "test-api-key") - node.succeed("garage bucket allow --read --write test-bucket --key test-api-key") - other_s3_key = get_api_key(node, 'test-api-key') - assert other_s3_key.secret_key == other_s3_key.secret_key - node.succeed( - f"mc alias set test-garage http://[::1]:3900 {s3_key.key_id} {s3_key.secret_key} --api S3v4" - ) - node.succeed("echo test | mc pipe test-garage/test-bucket/test.txt") - assert node.succeed("mc cat test-garage/test-bucket/test.txt").strip() == "test" - - def test_bucket_over_http(node, bucket='test-bucket', url=None): - if url is None: - url = f"{bucket}.web.garage" - - node.succeed(f'garage bucket website --allow {bucket}') - node.succeed(f'echo hello world | mc pipe test-garage/{bucket}/index.html') - assert (node.succeed(f"curl -H 'Host: {url}' http://localhost:3902")).strip() == 'hello world' + ${testScriptSetup} with subtest("Garage works as a multi-node S3 storage"): nodes = ('node1', 'node2', 'node3', 'node4') diff --git a/pkgs/tools/filesystems/garage/default.nix b/pkgs/tools/filesystems/garage/default.nix index db5632e9d058..177862b18d26 100644 --- a/pkgs/tools/filesystems/garage/default.nix +++ b/pkgs/tools/filesystems/garage/default.nix @@ -137,11 +137,20 @@ rec { cargoHash = "sha256-vcvD0Fn/etnAuXrM3+rj16cqpEmW2nzRmrjXsftKTFE="; }; + garage_2_0_0 = generic { + version = "2.0.0"; + hash = "sha256-dn7FoouF+5qmW6fcC20bKQSc6D2G9yrWdBK3uN3bF58="; + cargoHash = "sha256-6VM/EesrUIaQOeDGqzb0kOqMz4hW7zBJUnaRQ9C3cqc="; + }; + garage_0_8 = garage_0_8_7; garage_0_9 = garage_0_9_4; garage_1_x = garage_1_2_0; + garage_1 = garage_1_x; + + garage_2 = garage_2_0_0; garage = garage_1_x; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 8793e507df2d..bdd61c65297e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3038,8 +3038,13 @@ with pkgs; garage_0_9 garage_0_8_7 garage_0_9_4 + garage_1_2_0 garage_1_x + garage_1 + + garage_2_0_0 + garage_2 ; gaugePlugins = recurseIntoAttrs (callPackage ../by-name/ga/gauge/plugins { }); From fe4eca815c46536ae9d8b2cc65c953cb122a3cea Mon Sep 17 00:00:00 2001 From: Guy Chronister Date: Mon, 26 May 2025 14:59:54 +0000 Subject: [PATCH 07/24] completely: 0.6.3 -> 0.7.1 remove rec --- pkgs/by-name/co/completely/Gemfile.lock | 6 +++--- pkgs/by-name/co/completely/gemset.nix | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkgs/by-name/co/completely/Gemfile.lock b/pkgs/by-name/co/completely/Gemfile.lock index d6985978275b..53b2f0a2d03f 100644 --- a/pkgs/by-name/co/completely/Gemfile.lock +++ b/pkgs/by-name/co/completely/Gemfile.lock @@ -2,11 +2,11 @@ GEM remote: https://rubygems.org/ specs: colsole (1.0.0) - completely (0.6.3) + completely (0.7.1) colsole (>= 0.8.1, < 2) mister_bin (~> 0.7) docopt_ng (0.7.1) - mister_bin (0.7.6) + mister_bin (0.8.1) colsole (>= 0.8.1, < 2) docopt_ng (~> 0.7, >= 0.7.1) @@ -17,4 +17,4 @@ DEPENDENCIES completely BUNDLED WITH - 2.5.16 + 2.6.6 diff --git a/pkgs/by-name/co/completely/gemset.nix b/pkgs/by-name/co/completely/gemset.nix index f823d1203a07..ec0d8c65df42 100644 --- a/pkgs/by-name/co/completely/gemset.nix +++ b/pkgs/by-name/co/completely/gemset.nix @@ -18,10 +18,10 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0ci8iza647hvc4f1cmf9mpsm3i78ysf6g6213wkyrr5jk296hjjb"; + sha256 = "0129alz54h2vy7vd19i5664sasdbvrl4zgj70hl5j4rpvckr5lf8"; type = "gem"; }; - version = "0.6.3"; + version = "0.7.1"; }; docopt_ng = { groups = [ "default" ]; @@ -42,9 +42,9 @@ platforms = [ ]; source = { remotes = [ "https://rubygems.org" ]; - sha256 = "0xx8cxvzcn47zsnshcllf477x4rbssrchvp76929qnsg5k9q7fas"; + sha256 = "1zz3vpy6xrgzln2dpxgcnrq1bpzz0syl60whqc9zf8j29mayw1fy"; type = "gem"; }; - version = "0.7.6"; + version = "0.8.1"; }; } From a5425d5c2dcdcb0305e8c2658c03068763133c80 Mon Sep 17 00:00:00 2001 From: Misael Aguayo Date: Fri, 20 Jun 2025 14:40:34 -0500 Subject: [PATCH 08/24] roslyn-ls: 5.0.0-1.25302.10 -> 5.0.0-1.25312.6 --- pkgs/by-name/ro/roslyn-ls/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ro/roslyn-ls/package.nix b/pkgs/by-name/ro/roslyn-ls/package.nix index 651269965234..4068c505d404 100644 --- a/pkgs/by-name/ro/roslyn-ls/package.nix +++ b/pkgs/by-name/ro/roslyn-ls/package.nix @@ -32,18 +32,18 @@ in buildDotnetModule rec { inherit pname dotnet-sdk dotnet-runtime; - vsVersion = "2.82.12"; + vsVersion = "2.83.5"; src = fetchFromGitHub { owner = "dotnet"; repo = "roslyn"; rev = "VSCode-CSharp-${vsVersion}"; - hash = "sha256-5QCiA2NxjWUFLut8gxboR2kTibN66QCxbe2g2jdrINo="; + hash = "sha256-1YH2cxj+Or73Z1Ery/63RubIgkM5Iz9PiKii65noj/c="; }; # versioned independently from vscode-csharp # "roslyn" in here: # https://github.com/dotnet/vscode-csharp/blob/main/package.json - version = "5.0.0-1.25302.10"; + version = "5.0.0-1.25312.6"; projectFile = "src/LanguageServer/${project}/${project}.csproj"; useDotnetFromEnv = true; nugetDeps = ./deps.json; From 42077d864aa8e39bc9433efc68de3a2cd855cfd1 Mon Sep 17 00:00:00 2001 From: arthsmn Date: Fri, 20 Jun 2025 19:29:47 -0300 Subject: [PATCH 09/24] azahar: 2122 -> 2122.1 --- pkgs/by-name/az/azahar/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/az/azahar/package.nix b/pkgs/by-name/az/azahar/package.nix index 594f8e1f8f88..91f5d5517cd8 100644 --- a/pkgs/by-name/az/azahar/package.nix +++ b/pkgs/by-name/az/azahar/package.nix @@ -52,11 +52,11 @@ let in stdenv.mkDerivation (finalAttrs: { pname = "azahar"; - version = "2122"; + version = "2122.1"; src = fetchzip { url = "https://github.com/azahar-emu/azahar/releases/download/${finalAttrs.version}/azahar-unified-source-${finalAttrs.version}.tar.xz"; - hash = "sha256-isohwigDgqwPJxinBju1biAXC3CX3JrNJiQ1NY+NjRo="; + hash = "sha256-RQ8dgD09cWyVWGSLzHz1oJOKia1OKr2jHqYwKaVGfxE="; }; nativeBuildInputs = [ From 582d04558d7cfb0026d8d4059a4b4d60b23d4450 Mon Sep 17 00:00:00 2001 From: Anders Kaseorg Date: Fri, 20 Jun 2025 16:45:00 -0700 Subject: [PATCH 10/24] =?UTF-8?q?mozillavpn:=202.27.0=20=E2=86=92=202.29.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Anders Kaseorg --- pkgs/by-name/mo/mozillavpn/package.nix | 30 ++++---------------------- 1 file changed, 4 insertions(+), 26 deletions(-) diff --git a/pkgs/by-name/mo/mozillavpn/package.nix b/pkgs/by-name/mo/mozillavpn/package.nix index 22487b17c307..4fc9428ab227 100644 --- a/pkgs/by-name/mo/mozillavpn/package.nix +++ b/pkgs/by-name/mo/mozillavpn/package.nix @@ -4,7 +4,6 @@ cargo, cmake, fetchFromGitHub, - fetchpatch, go, lib, libcap, @@ -23,36 +22,15 @@ stdenv.mkDerivation (finalAttrs: { pname = "mozillavpn"; - version = "2.27.0"; + version = "2.29.0"; src = fetchFromGitHub { owner = "mozilla-mobile"; repo = "mozilla-vpn-client"; tag = "v${finalAttrs.version}"; fetchSubmodules = true; - hash = "sha256-TfiEc5Lptr0ntp4buEEWbQTvNkVjZbdMWDv8CEZa6IM="; + hash = "sha256-Oh3qV5/fQNLjv3qnhRrgRV0d+homlGmEpTSeou3lZfE="; }; - patches = [ - # Provide default args for LottieStatus::changed so moc can call it (#10420) - (fetchpatch { - url = "https://github.com/mozilla-mobile/mozilla-vpn-client/commit/e5abe5714a5b506e398c088d21672f00d6f93240.patch"; - hash = "sha256-DU5wQ1DDF8DbmMIlohoEIDJ7/9+9GVwrvsr51T9bGx8="; - }) - # Remove Qt.labls.qmlmodels usage (#10422) - (fetchpatch { - url = "https://github.com/mozilla-mobile/mozilla-vpn-client/commit/4497972b1bf7b7f215dc6c1227d76d6825f5b958.patch"; - hash = "sha256-RPRdARM/jXSHmTGGjiOrfJ7KVejp3JmUfsN5pmKYPuY="; - }) - # Qt compat: Make sure to include what we use - (fetchpatch { - url = "https://github.com/mozilla-mobile/mozilla-vpn-client/commit/0909d43447a7ddbc6ec20d108637524552848bd6.patch"; - hash = "sha256-Hpn69hQxa269XH+Ku/MYD2GwdFhfCX4yoVRCEDfIOKc="; - }) - # Use QDesktopUnixServices after qt 6.9.0 - (fetchpatch { - url = "https://github.com/mozilla-mobile/mozilla-vpn-client/pull/10424/commits/81e66044388459ffe2b08804ab5a326586ac7113.patch"; - hash = "sha256-+v3NoTAdkjKEyBPbbJZQ2d11hJMyE3E4B9uYUerVa7c="; - }) - ]; + patches = [ ]; netfilter = buildGoModule { pname = "${finalAttrs.pname}-netfilter"; @@ -67,7 +45,7 @@ stdenv.mkDerivation (finalAttrs: { cargoDeps = rustPlatform.fetchCargoVendor { inherit (finalAttrs) src patches; - hash = "sha256-SGC+YT5ATV/ZaP/wrm3c31OQBw6Pk8ZSXjxEPFdP2f8="; + hash = "sha256-Flsa93Nko/sHr9z+YW7xDFMVLOzJE4oJFAl841gpPpw="; }; buildInputs = [ From b9c819d37b0e8c0c22b2d3c2c2332848832bc8d6 Mon Sep 17 00:00:00 2001 From: Sizhe Zhao Date: Sat, 21 Jun 2025 11:57:57 +0800 Subject: [PATCH 11/24] luau: 0.678 -> 0.679 --- pkgs/by-name/lu/luau/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/lu/luau/package.nix b/pkgs/by-name/lu/luau/package.nix index 60a0e49cfa79..84d8502d773a 100644 --- a/pkgs/by-name/lu/luau/package.nix +++ b/pkgs/by-name/lu/luau/package.nix @@ -9,13 +9,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "luau"; - version = "0.678"; + version = "0.679"; src = fetchFromGitHub { owner = "luau-lang"; repo = "luau"; tag = finalAttrs.version; - hash = "sha256-FYh7LTLDdl3eYXRDAn+FDkqBCiWY0JqHrX9lbz5r+gI="; + hash = "sha256-PLYiGMdXA/PFZaOOv/fmRjU5b9fNmvUoExNjFq81tto="; }; nativeBuildInputs = [ cmake ]; From 864a8cdbbecc3465f482f48c75c83c358673a9f5 Mon Sep 17 00:00:00 2001 From: Linus Karl Date: Sat, 21 Jun 2025 15:35:51 +0200 Subject: [PATCH 12/24] kstars: 3.7.6 -> 3.7.7 --- pkgs/by-name/ks/kstars/package.nix | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/ks/kstars/package.nix b/pkgs/by-name/ks/kstars/package.nix index 57f39ef79967..8c617b0f1e34 100644 --- a/pkgs/by-name/ks/kstars/package.nix +++ b/pkgs/by-name/ks/kstars/package.nix @@ -2,7 +2,6 @@ lib, stdenv, fetchurl, - fetchpatch, cfitsio, cmake, curl, @@ -23,20 +22,13 @@ stdenv.mkDerivation (finalAttrs: { pname = "kstars"; - version = "3.7.6"; + version = "3.7.7"; src = fetchurl { url = "mirror://kde/stable/kstars/${finalAttrs.version}/kstars-${finalAttrs.version}.tar.xz"; - hash = "sha256-6hwWMmAGKJmldL8eTLQzzBsumk5thFoqGvm2dWk0Jpo="; + hash = "sha256-8tvWwmxFUSqnw5JPC/Bgao75eORoxUUF3MDLL+EgAkU="; }; - patches = [ - (fetchpatch { - url = "https://invent.kde.org/education/kstars/-/commit/92eb37bdb3e24bd06e6da9977f3bf76218c95339.diff"; - hash = "sha256-f2m15op48FiPYsKJ7WudlejVwoiGYWGnX2QiCnBINU8="; - }) - ]; - nativeBuildInputs = with kdePackages; [ extra-cmake-modules kdoctools From 16cc3b2548d5094e2dea9314af9c898a90d0d01c Mon Sep 17 00:00:00 2001 From: emaryn Date: Sat, 7 Jun 2025 14:47:04 +0800 Subject: [PATCH 13/24] x2goclient: 4.1.2.2 -> 4.1.2.3 --- .../networking/remote/x2goclient/default.nix | 63 ++++++++++--------- pkgs/top-level/all-packages.nix | 2 +- 2 files changed, 35 insertions(+), 30 deletions(-) diff --git a/pkgs/applications/networking/remote/x2goclient/default.nix b/pkgs/applications/networking/remote/x2goclient/default.nix index 6500d65151c9..93d118d415a9 100644 --- a/pkgs/applications/networking/remote/x2goclient/default.nix +++ b/pkgs/applications/networking/remote/x2goclient/default.nix @@ -1,57 +1,54 @@ { - stdenv, lib, + stdenv, fetchurl, + libsForQt5, + pkg-config, + bash, cups, - libssh, libXpm, + libssh, nx-libs, openldap, openssh, - qt5, - qtbase, - qtsvg, - qtx11extras, - qttools, - phonon, - pkg-config, }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "x2goclient"; - version = "4.1.2.2"; + version = "4.1.2.3"; src = fetchurl { - url = "https://code.x2go.org/releases/source/${pname}/${pname}-${version}.tar.gz"; - sha256 = "yZUyZ8QPpnEZrZanO6yx8mYZbaIFnwzc0bjVGZQh0So="; + url = "https://code.x2go.org/releases/source/x2goclient/x2goclient-${finalAttrs.version}.tar.gz"; + hash = "sha256-q4uzx40xYlx0nkLxX4EP49JCknoVKYMIwT3qO5Fayjw="; }; buildInputs = [ cups - libssh libXpm + libssh + libsForQt5.phonon + libsForQt5.qtbase + libsForQt5.qtsvg + libsForQt5.qttools + libsForQt5.qtx11extras nx-libs openldap openssh - qtbase - qtsvg - qtx11extras - qttools - phonon ]; nativeBuildInputs = [ pkg-config - qt5.wrapQtAppsHook + libsForQt5.wrapQtAppsHook ]; postPatch = '' - substituteInPlace src/onmainwindow.cpp --replace "/usr/sbin/sshd" "${openssh}/bin/sshd" + substituteInPlace src/onmainwindow.cpp \ + --replace-fail "/usr/sbin/sshd" "${lib.getExe' openssh "sshd"}" substituteInPlace Makefile \ - --replace "SHELL=/bin/bash" "SHELL=$SHELL" \ - --replace "lrelease-qt4" "${qttools.dev}/bin/lrelease" \ - --replace "qmake-qt4" "${qtbase.dev}/bin/qmake" \ - --replace "-o root -g root" "" + --replace-fail "SHELL=/bin/bash" "SHELL ?= ${lib.getExe bash}" \ + --replace-fail "lrelease-qt4" "${lib.getExe' libsForQt5.qttools.dev "lrelease"}" \ + --replace-fail "qmake-qt4" "${lib.getExe' libsForQt5.qtbase.dev "qmake"}" \ + --replace-fail "-o root -g root" "" ''; makeFlags = [ @@ -59,6 +56,10 @@ stdenv.mkDerivation rec { "ETCDIR=$(out)/etc" "build_client" "build_man" + # No rule to make target 'SHELL' + "MAKEOVERRIDES=" + ".MAKEOVERRIDES=" + ".MAKEFLAGS=" ]; installTargets = [ @@ -71,12 +72,16 @@ stdenv.mkDerivation rec { "--set QT_QPA_PLATFORM xcb" ]; - meta = with lib; { + meta = { description = "Graphical NoMachine NX3 remote desktop client"; mainProgram = "x2goclient"; homepage = "http://x2go.org/"; maintainers = [ ]; - license = licenses.gpl2; - platforms = platforms.linux; + license = with lib.licenses; [ + agpl3Plus + mit + free + ]; # Some X2Go components are licensed under some license (MIT X11, BSD, etc.) + platforms = lib.platforms.linux; }; -} +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b20f87db9d05..bfcadad816ca 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -14509,7 +14509,7 @@ with pkgs; autoconf = buildPackages.autoconf269; }; - x2goclient = libsForQt5.callPackage ../applications/networking/remote/x2goclient { }; + x2goclient = callPackage ../applications/networking/remote/x2goclient { }; x32edit = callPackage ../applications/audio/midas/x32edit.nix { }; From eb7082e1070e59b1766d5195f375085fdf607614 Mon Sep 17 00:00:00 2001 From: Gaetan Lepage Date: Sat, 21 Jun 2025 22:01:13 +0200 Subject: [PATCH 14/24] das: relax plotly depenency, cleanup --- pkgs/by-name/da/das/package.nix | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkgs/by-name/da/das/package.nix b/pkgs/by-name/da/das/package.nix index 4635b60bd565..8ffc24cddf9d 100644 --- a/pkgs/by-name/da/das/package.nix +++ b/pkgs/by-name/da/das/package.nix @@ -1,10 +1,11 @@ { lib, - python3, + python3Packages, fetchFromGitHub, + versionCheckHook, }: -python3.pkgs.buildPythonApplication rec { +python3Packages.buildPythonApplication rec { pname = "das"; version = "1.0.3"; pyproject = true; @@ -21,11 +22,12 @@ python3.pkgs.buildPythonApplication rec { "defusedxml" "netaddr" "networkx" + "plotly" ]; - build-system = with python3.pkgs; [ poetry-core ]; + build-system = with python3Packages; [ poetry-core ]; - dependencies = with python3.pkgs; [ + dependencies = with python3Packages; [ dash defusedxml dnspython @@ -40,6 +42,10 @@ python3.pkgs.buildPythonApplication rec { pythonImportsCheck = [ "das" ]; + nativeCheckInputs = [ + versionCheckHook + ]; + meta = { description = "Divide full port scan results and use it for targeted Nmap runs"; homepage = "https://github.com/snovvcrash/DivideAndScan"; From 1df2e254998a873dd6bf862e2c5a0aab908a8496 Mon Sep 17 00:00:00 2001 From: Bruno BELANYI Date: Sat, 14 Jun 2025 21:14:47 +0200 Subject: [PATCH 15/24] cambia: init at 0-unstable-2025-03-07 --- pkgs/by-name/ca/cambia/package.nix | 89 ++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 pkgs/by-name/ca/cambia/package.nix diff --git a/pkgs/by-name/ca/cambia/package.nix b/pkgs/by-name/ca/cambia/package.nix new file mode 100644 index 000000000000..6134050d9e90 --- /dev/null +++ b/pkgs/by-name/ca/cambia/package.nix @@ -0,0 +1,89 @@ +{ + lib, + stdenv, + fetchFromGitHub, + buildNpmPackage, + cargo-tauri, + fetchpatch, + nix-update-script, + openssl, + pkg-config, + rustPlatform, +}: +let + version = "0-unstable-2025-03-07"; + + src = fetchFromGitHub { + owner = "arg274"; + repo = "cambia"; + rev = "bef0975f72e15b925d881ab70d3bc556ecf4ff7f"; + hash = "sha256-4/GKvU3r4JpOKgkLgSOKEHnSoIsjgjQU6pay2deiIng="; + }; + + meta = { + description = "Compact disc ripper log checking utility"; + homepage = "https://github.com/arg274/cambia"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ ambroisie ]; + }; + + frontend = buildNpmPackage (finalAttrs: { + pname = "cambia-frontend"; + inherit version; + + src = "${src}/web"; + npmDepsHash = "sha256-U+2YfsC4u6rJdeMo2zxWiXGM3061MKCcFl0oZt0ug6o="; + + installPhase = '' + runHook preInstall + cp -r build/ $out + runHook postInstall + ''; + + meta = meta // { + description = "Web UI for Cambia"; + }; + }); +in + +rustPlatform.buildRustPackage (finalAttrs: { + pname = "cambia"; + inherit version src; + + cargoHash = "sha256-dNgFQiJrakdP0ynyVcak6cKU02Z5dcw2nhh9XhlWsOg="; + + cargoPatches = [ + # https://github.com/arg274/cambia/pull/5 + (fetchpatch { + name = "cargo.lock.patch"; + url = "https://github.com/arg274/cambia/commit/b47944fbaf4e631ede25c560a4d7e684a2ad5014.patch"; + hash = "sha256-y9WkEmzBaFJ0eHWK0hVmB6+IdWespp79N9lSuteZZAI="; + }) + ]; + + postPatch = '' + cp -r ${finalAttrs.passthru.frontend} web/build/ + ''; + + nativeBuildInputs = [ + pkg-config + ]; + + buildInputs = [ + openssl + ]; + + passthru = { + updateScript = nix-update-script { + extraArgs = [ + "-s" + "frontend" + ]; + }; + inherit frontend; + }; + + meta = meta // { + mainProgram = "cambia"; + }; +}) From 4c4a46bcc96fb8092c571d15d110d65769032a90 Mon Sep 17 00:00:00 2001 From: Pascal Dietrich Date: Sun, 22 Jun 2025 13:13:44 +0200 Subject: [PATCH 16/24] tauno-monitor: 0.1.29 -> 0.2.0 --- pkgs/by-name/ta/tauno-monitor/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/ta/tauno-monitor/package.nix b/pkgs/by-name/ta/tauno-monitor/package.nix index c92b1e7d1b5c..709db657b9c8 100644 --- a/pkgs/by-name/ta/tauno-monitor/package.nix +++ b/pkgs/by-name/ta/tauno-monitor/package.nix @@ -13,14 +13,14 @@ }: python3Packages.buildPythonApplication rec { pname = "tauno-monitor"; - version = "0.1.29"; + version = "0.2.0"; pyproject = false; src = fetchFromGitHub { owner = "taunoe"; repo = "tauno-monitor"; tag = "v${version}"; - hash = "sha256-U7vp0cPIRQeeuLGazoCQAnVQaKxDznC65bE31SwYU3A="; + hash = "sha256-144kRMhZUwgn3BRy6c0A5Fwh1Yisuf7H2s/0ChpIKVI="; }; nativeBuildInputs = [ From 9b713ee98a6ff316f2f6f1c467ac72e078920e78 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 22 Jun 2025 12:56:17 +0000 Subject: [PATCH 17/24] rospo: 0.14.0 -> 0.15.0 --- pkgs/by-name/ro/rospo/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ro/rospo/package.nix b/pkgs/by-name/ro/rospo/package.nix index 5658c5854d74..498cacccd35c 100644 --- a/pkgs/by-name/ro/rospo/package.nix +++ b/pkgs/by-name/ro/rospo/package.nix @@ -8,16 +8,16 @@ buildGoModule rec { pname = "rospo"; - version = "0.14.0"; + version = "0.15.0"; src = fetchFromGitHub { owner = "ferama"; repo = "rospo"; rev = "v${version}"; - hash = "sha256-H6hZbOnX+1P1Ob5fCROQtV+64NiFD9mO3kiaQY63OBM="; + hash = "sha256-xfCjRAsKJxtYeY2Mx+l1tDtqAF0SKjTCJCh1gCG+Rl8="; }; - vendorHash = "sha256-KyTDyV27YQDqbEyKSYfbJuTKw2EsZAqWsHhmMncUHUs="; + vendorHash = "sha256-6hCaguJP7XXdxYYS2KuBegwPaKP8rD9YI5727HZo7uA="; ldflags = [ "-s" From 324a8fe38b8808d352c8a9796f3e87be997a25b6 Mon Sep 17 00:00:00 2001 From: beeb <703631+beeb@users.noreply.github.com> Date: Mon, 9 Jun 2025 11:23:30 +0200 Subject: [PATCH 18/24] lintspec: 0.5.0 -> 0.6.0 --- pkgs/by-name/li/lintspec/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/li/lintspec/package.nix b/pkgs/by-name/li/lintspec/package.nix index d403c207cbf7..0c0f75e5ece6 100644 --- a/pkgs/by-name/li/lintspec/package.nix +++ b/pkgs/by-name/li/lintspec/package.nix @@ -6,17 +6,17 @@ rustPlatform.buildRustPackage rec { pname = "lintspec"; - version = "0.5.0"; + version = "0.6.0"; src = fetchFromGitHub { owner = "beeb"; repo = "lintspec"; tag = "v${version}"; - hash = "sha256-I9u4fS3K3tPgr15lAEkBQO1KXSNPAu3aiM9Qo9IRuHE="; + hash = "sha256-xT+2gDaKwjnBZBmeY/5UDka/EFodRGflb433BfDeuuk="; }; useFetchCargoVendor = true; - cargoHash = "sha256-wTR4E+Pbx0ReeVav/ECklS8on0v5aYvFqE+FZhieRHk="; + cargoHash = "sha256-r9CRu0zLvsllo3v8E1C8VxmsMbhOQxY8H/imZt04Nok="; meta = { description = "Blazingly fast linter for NatSpec comments in Solidity code"; From 77d8d443e0d029500e9f038a1dcfd01a62e797a7 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 22 Jun 2025 15:44:35 +0000 Subject: [PATCH 19/24] harper: 0.42.0 -> 0.44.0 --- pkgs/by-name/ha/harper/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/ha/harper/package.nix b/pkgs/by-name/ha/harper/package.nix index 0775cf4535d9..4e3656d2b61a 100644 --- a/pkgs/by-name/ha/harper/package.nix +++ b/pkgs/by-name/ha/harper/package.nix @@ -7,18 +7,18 @@ rustPlatform.buildRustPackage rec { pname = "harper"; - version = "0.42.0"; + version = "0.44.0"; src = fetchFromGitHub { owner = "Automattic"; repo = "harper"; rev = "v${version}"; - hash = "sha256-qzNH8qGpSNtGQqce3E/mEQoJUP2mQsQ8ntTi9F3ol1I="; + hash = "sha256-7sF2hwj4Gnca8QVociECKY+8grIDwcUoK9Zpx5YdNr0="; }; buildAndTestSubdir = "harper-ls"; useFetchCargoVendor = true; - cargoHash = "sha256-PxYRQ6nYHXXgxb8YXkm57wIFXQrF5+cdEHA+CMk22wg="; + cargoHash = "sha256-SnwmXBt3wqsZPfKu3FIura8/y9MfU8VUKYRisdlcNXE="; passthru.updateScript = nix-update-script { }; From c9f2eef679a59e38f5c7d69cd4b6f4443e377a3e Mon Sep 17 00:00:00 2001 From: Nikolay Korotkiy Date: Sun, 22 Jun 2025 22:56:46 +0400 Subject: [PATCH 20/24] rospo: modernize --- pkgs/by-name/ro/rospo/package.nix | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/pkgs/by-name/ro/rospo/package.nix b/pkgs/by-name/ro/rospo/package.nix index 498cacccd35c..c3b0323460e0 100644 --- a/pkgs/by-name/ro/rospo/package.nix +++ b/pkgs/by-name/ro/rospo/package.nix @@ -2,18 +2,19 @@ lib, stdenv, buildGoModule, + buildPackages, fetchFromGitHub, installShellFiles, }: -buildGoModule rec { +buildGoModule (finalAttrs: { pname = "rospo"; version = "0.15.0"; src = fetchFromGitHub { owner = "ferama"; repo = "rospo"; - rev = "v${version}"; + tag = "v${finalAttrs.version}"; hash = "sha256-xfCjRAsKJxtYeY2Mx+l1tDtqAF0SKjTCJCh1gCG+Rl8="; }; @@ -22,19 +23,27 @@ buildGoModule rec { ldflags = [ "-s" "-w" - "-X github.com/ferama/rospo/cmd.Version=${version}" + "-X github.com/ferama/rospo/cmd.Version=${finalAttrs.version}" ]; nativeBuildInputs = [ installShellFiles ]; doCheck = false; - postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) '' - installShellCompletion --cmd rospo \ - --bash <($out/bin/rospo completion bash) \ - --fish <($out/bin/rospo completion fish) \ - --zsh <($out/bin/rospo completion zsh) - ''; + postInstall = + let + rospoBin = + if stdenv.buildPlatform.canExecute stdenv.hostPlatform then + placeholder "out" + else + buildPackages.rospo; + in + '' + installShellCompletion --cmd rospo \ + --bash <(${rospoBin}/bin/rospo completion bash) \ + --fish <(${rospoBin}/bin/rospo completion fish) \ + --zsh <(${rospoBin}/bin/rospo completion zsh) + ''; meta = { description = "Simple, reliable, persistent ssh tunnels with embedded ssh server"; @@ -43,4 +52,4 @@ buildGoModule rec { maintainers = with lib.maintainers; [ sikmir ]; mainProgram = "rospo"; }; -} +}) From eaf6d06d65e8603cd54f527d61d86244ddf4f6e1 Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 22 Jun 2025 19:35:37 +0000 Subject: [PATCH 21/24] mdns-scanner: 0.12.1 -> 0.13.0 --- pkgs/by-name/md/mdns-scanner/package.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/by-name/md/mdns-scanner/package.nix b/pkgs/by-name/md/mdns-scanner/package.nix index 17e9f15247b6..781cf8669be0 100644 --- a/pkgs/by-name/md/mdns-scanner/package.nix +++ b/pkgs/by-name/md/mdns-scanner/package.nix @@ -6,16 +6,16 @@ rustPlatform.buildRustPackage (finalAttrs: { pname = "mdns-scanner"; - version = "0.12.1"; + version = "0.13.0"; src = fetchFromGitHub { owner = "CramBL"; repo = "mdns-scanner"; tag = "v${finalAttrs.version}"; - hash = "sha256-I0/ms1FFTGgSk101GBascTSMBCLAmzqk2yiNYskedvU="; + hash = "sha256-86GpBjgfBMkqzoWPEbjQM6PvSEb67A8nL7sEtplXoic="; }; - cargoHash = "sha256-JdeIEaSfiMCQ9n3Y4DpTWhheHaA54zJKUsG/e4Xo9LU="; + cargoHash = "sha256-z0IHONtU1pgViQZu0Q2fZVjdJ6sSlgnIw83hqWLKfVM="; meta = { homepage = "https://github.com/CramBL/mdns-scanner"; From 3e81a31ae7c8ddd3019639d960fca599403e7417 Mon Sep 17 00:00:00 2001 From: Denilson dos Santos Ebling Date: Sun, 22 Jun 2025 16:48:58 -0300 Subject: [PATCH 22/24] maintainers: add debling --- maintainers/maintainer-list.nix | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 664ee433104b..282af77b9af2 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -5986,6 +5986,13 @@ githubId = 30749142; keys = [ { fingerprint = "4E35 F2E5 2132 D654 E815 A672 DB2C BC24 2868 6000"; } ]; }; + debling = { + name = "Denilson S. Ebling"; + email = "d.ebling8@gmail.com"; + github = "debling"; + githubId = 32403873; + keys = [ { fingerprint = "3EDD 9C88 B0F2 58F8 C25F 5D2C CCBC 8AA1 AF06 2142"; } ]; + }; declan = { name = "Declan Rixon"; email = "declan.fraser.rixon@gmail.com"; From b587b5619684d378a40ced2d0846262b9b6cec9e Mon Sep 17 00:00:00 2001 From: "R. Ryantm" Date: Sun, 22 Jun 2025 20:16:52 +0000 Subject: [PATCH 23/24] libretro.genesis-plus-gx: 0-unstable-2025-06-13 -> 0-unstable-2025-06-22 --- .../emulators/libretro/cores/genesis-plus-gx.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/emulators/libretro/cores/genesis-plus-gx.nix b/pkgs/applications/emulators/libretro/cores/genesis-plus-gx.nix index 740d4758a4bc..9ee731557d98 100644 --- a/pkgs/applications/emulators/libretro/cores/genesis-plus-gx.nix +++ b/pkgs/applications/emulators/libretro/cores/genesis-plus-gx.nix @@ -5,13 +5,13 @@ }: mkLibretroCore { core = "genesis-plus-gx"; - version = "0-unstable-2025-06-13"; + version = "0-unstable-2025-06-22"; src = fetchFromGitHub { owner = "libretro"; repo = "Genesis-Plus-GX"; - rev = "def3a7c0e413ef35a7d9d4430e5c9c9a5698b4fe"; - hash = "sha256-MCLPReWzW+NsEVtt4ySplLzGKGAaNXgDtoPYJC2yY3I="; + rev = "e1b0d20b66441c0ff220abbb1da8e6a911b9a761"; + hash = "sha256-pvzLI3G6046W11x8Sfev6W5tGYn8/d2EnmIQc99aHN4="; }; meta = { From 173c62d2ca5bd432d36e787101dba2001899e312 Mon Sep 17 00:00:00 2001 From: Denilson dos Santos Ebling Date: Sun, 22 Jun 2025 16:49:36 -0300 Subject: [PATCH 24/24] river-ultitile: init at 1.3.0 --- .../ri/river-ultitile/build.zig.zon.nix | 99 +++++++++++++++++++ pkgs/by-name/ri/river-ultitile/package.nix | 69 +++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 pkgs/by-name/ri/river-ultitile/build.zig.zon.nix create mode 100644 pkgs/by-name/ri/river-ultitile/package.nix diff --git a/pkgs/by-name/ri/river-ultitile/build.zig.zon.nix b/pkgs/by-name/ri/river-ultitile/build.zig.zon.nix new file mode 100644 index 000000000000..a26d29e2067e --- /dev/null +++ b/pkgs/by-name/ri/river-ultitile/build.zig.zon.nix @@ -0,0 +1,99 @@ +# generated by zon2nix (https://github.com/Cloudef/zig2nix) + +{ + lib, + linkFarm, + fetchurl, + fetchgit, + runCommandLocal, + zig, + name ? "zig-packages", +}: + +with builtins; +with lib; + +let + unpackZigArtifact = + { name, artifact }: + runCommandLocal name { nativeBuildInputs = [ zig ]; } '' + hash="$(zig fetch --global-cache-dir "$TMPDIR" ${artifact})" + mv "$TMPDIR/p/$hash" "$out" + chmod 755 "$out" + ''; + + fetchZig = + { + name, + url, + hash, + }: + let + artifact = fetchurl { inherit url hash; }; + in + unpackZigArtifact { inherit name artifact; }; + + fetchGitZig = + { + name, + url, + hash, + rev ? throw "rev is required, remove and regenerate the zon2json-lock file", + }: + let + parts = splitString "#" url; + url_base = elemAt parts 0; + url_without_query = elemAt (splitString "?" url_base) 0; + in + fetchgit { + inherit name rev hash; + url = url_without_query; + deepClone = false; + }; + + fetchZigArtifact = + { + name, + url, + hash, + ... + }@args: + let + parts = splitString "://" url; + proto = elemAt parts 0; + path = elemAt parts 1; + fetcher = { + "git+http" = fetchGitZig ( + args + // { + url = "http://${path}"; + } + ); + "git+https" = fetchGitZig ( + args + // { + url = "https://${path}"; + } + ); + http = fetchZig { + inherit name hash; + url = "http://${path}"; + }; + https = fetchZig { + inherit name hash; + url = "https://${path}"; + }; + }; + in + fetcher.${proto}; +in +linkFarm name [ + { + name = "wayland-0.3.0-lQa1kjPIAQDmhGYpY-zxiRzQJFHQ2VqhJkQLbKKdt5wl"; + path = fetchZigArtifact { + name = "wayland"; + url = "https://codeberg.org/ifreund/zig-wayland/archive/v0.3.0.tar.gz"; + hash = "sha256-xU8IrETSFOKKQQMgwVyRKLwGaek4USaKXg49S9oHSTQ="; + }; + } +] diff --git a/pkgs/by-name/ri/river-ultitile/package.nix b/pkgs/by-name/ri/river-ultitile/package.nix new file mode 100644 index 000000000000..83c5c351a7a7 --- /dev/null +++ b/pkgs/by-name/ri/river-ultitile/package.nix @@ -0,0 +1,69 @@ +{ + callPackage, + fetchFromSourcehut, + lib, + pandoc, + pkg-config, + stdenv, + wayland, + wayland-protocols, + wayland-scanner, + zig_0_14, +}: + +let + zig = zig_0_14; +in +stdenv.mkDerivation (finalAttrs: { + pname = "river-ultitile"; + version = "1.3.0"; + + src = fetchFromSourcehut { + owner = "~midgard"; + repo = "river-ultitile"; + rev = "v${finalAttrs.version}"; + hash = "sha256-whzJZLgd51kXOVq9YVqcADTOyGmHmwJZWzbrZGZx3Ak="; + }; + + nativeBuildInputs = [ + zig.hook + pkg-config + wayland + wayland-scanner + ]; + + buildInputs = [ + wayland-protocols + pandoc # used for building documentation + ]; + + deps = callPackage ./build.zig.zon.nix { }; + + zigBuildFlags = [ + "--system" + "${finalAttrs.deps}" + ]; + + meta = { + description = "Configurable layout generator for the River compositor"; + longDescription = '' + A layout generator for **river**. Features include: + - **configurable** layouts employing nested tiles (no juggling with coordinates), + - **widescreen** support by default, + - default layouts, switchable at run time with a command or key binding: + - dwm-like main/stack layout, + - main on the left on normal screens, + - **main in the center and stacks on both sides** on widescreens, + - a vertical stack, + - a horizontal stack, and + - a monocle layout, + - optional per-tag-per-output state. + ''; + changelog = "https://git.sr.ht/~midgard/river-ultitile/tree/v${finalAttrs.version}/item/CHANGELOG.md"; + homepage = "https://git.sr.ht/~midgard/river-ultitile"; + license = lib.licenses.gpl3Plus; + mainProgram = "river-ultitile"; + maintainers = with lib.maintainers; [ debling ]; + platforms = lib.platforms.linux; + }; +})