From 48a4d43c3aadaf9cbdc5d1c3ff84d566b6147917 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gutyina=20Gerg=C5=91?= Date: Sun, 15 Feb 2026 14:12:46 +0100 Subject: [PATCH 1/5] ncps: add update script --- pkgs/by-name/nc/ncps/package.nix | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkgs/by-name/nc/ncps/package.nix b/pkgs/by-name/nc/ncps/package.nix index 3b4ca8918f1f..4b44ae3ff073 100644 --- a/pkgs/by-name/nc/ncps/package.nix +++ b/pkgs/by-name/nc/ncps/package.nix @@ -13,6 +13,7 @@ python3, redis, writeShellScriptBin, + nix-update-script, }: let @@ -94,6 +95,10 @@ let source $src/nix/packages/ncps/pre-check-redis.sh ''; + passthru = { + updateScript = nix-update-script { }; + }; + meta = { description = "Nix binary cache proxy service"; homepage = "https://github.com/kalbasit/ncps"; From e4cb026384ab34e539f5a94973a87369f41fee37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gutyina=20Gerg=C5=91?= Date: Sun, 15 Feb 2026 13:13:24 +0000 Subject: [PATCH 2/5] ncps: 0.8.4 -> 0.8.5 --- pkgs/by-name/nc/ncps/package.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkgs/by-name/nc/ncps/package.nix b/pkgs/by-name/nc/ncps/package.nix index 4b44ae3ff073..2df3f7148bb8 100644 --- a/pkgs/by-name/nc/ncps/package.nix +++ b/pkgs/by-name/nc/ncps/package.nix @@ -34,13 +34,13 @@ let finalAttrs = { pname = "ncps"; - version = "0.8.4"; + version = "0.8.5"; src = fetchFromGitHub { owner = "kalbasit"; repo = "ncps"; tag = "v${finalAttrs.version}"; - hash = "sha256-GJnWVhn8SZY5IJbBSuq1j8qV06/kdHhcVu6QhnTsk0Y="; + hash = "sha256-0kQ2DTnBil7eSP/eSwLVqw/UyIwBMFtmKAeLCi64Fr8="; }; vendorHash = "sha256-AcgC+zTS3eVsbcs0jim4zDBGc3lIjwPbdVT7/KQ9Lkc="; From 2951072c8c57190d11447084d6792a1fe88e66a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gutyina=20Gerg=C5=91?= Date: Sun, 15 Feb 2026 14:27:30 +0100 Subject: [PATCH 3/5] ncps: move dbmate-wrapped into passthru --- pkgs/by-name/nc/ncps/package.nix | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/pkgs/by-name/nc/ncps/package.nix b/pkgs/by-name/nc/ncps/package.nix index 2df3f7148bb8..c364f89ddd84 100644 --- a/pkgs/by-name/nc/ncps/package.nix +++ b/pkgs/by-name/nc/ncps/package.nix @@ -21,17 +21,6 @@ let exec ${dbmate}/bin/dbmate "$@" ''; - dbmate-wrapper = buildGoModule { - pname = "ncps-dbmate-wrapper"; - inherit (finalAttrs) version; - - src = "${finalAttrs.src}/nix/dbmate-wrapper/src"; - - vendorHash = null; - - subPackages = [ "." ]; - }; - finalAttrs = { pname = "ncps"; version = "0.8.5"; @@ -68,7 +57,7 @@ let mkdir -p $out/share/ncps cp -r db $out/share/ncps/db - makeWrapper ${dbmate-wrapper}/bin/dbmate-wrapper \ + makeWrapper ${finalAttrs.passthru.dbmate-wrapper}/bin/dbmate-wrapper \ $out/bin/dbmate-ncps \ --prefix PATH : ${dbmate-real}/bin \ --set NCPS_DB_MIGRATIONS_DIR $out/share/ncps/db/migrations @@ -96,6 +85,17 @@ let ''; passthru = { + dbmate-wrapper = buildGoModule { + pname = "ncps-dbmate-wrapper"; + inherit (finalAttrs) version; + + src = "${finalAttrs.src}/nix/dbmate-wrapper/src"; + + vendorHash = null; + + subPackages = [ "." ]; + }; + updateScript = nix-update-script { }; }; From c0ef87b7042a2839ba6bd3652bd94b1d4e17e272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gutyina=20Gerg=C5=91?= Date: Sun, 15 Feb 2026 14:32:22 +0100 Subject: [PATCH 4/5] ncps: use standard finalAttrs pattern --- pkgs/by-name/nc/ncps/package.nix | 180 +++++++++++++++---------------- 1 file changed, 89 insertions(+), 91 deletions(-) diff --git a/pkgs/by-name/nc/ncps/package.nix b/pkgs/by-name/nc/ncps/package.nix index c364f89ddd84..c258b2dcb0e3 100644 --- a/pkgs/by-name/nc/ncps/package.nix +++ b/pkgs/by-name/nc/ncps/package.nix @@ -20,95 +20,93 @@ let dbmate-real = writeShellScriptBin "dbmate.real" '' exec ${dbmate}/bin/dbmate "$@" ''; - - finalAttrs = { - pname = "ncps"; - version = "0.8.5"; - - src = fetchFromGitHub { - owner = "kalbasit"; - repo = "ncps"; - tag = "v${finalAttrs.version}"; - hash = "sha256-0kQ2DTnBil7eSP/eSwLVqw/UyIwBMFtmKAeLCi64Fr8="; - }; - - vendorHash = "sha256-AcgC+zTS3eVsbcs0jim4zDBGc3lIjwPbdVT7/KQ9Lkc="; - - ldflags = [ - "-X github.com/kalbasit/ncps/pkg/ncps.Version=v${finalAttrs.version}" - ]; - - subPackages = [ "." ]; - - nativeBuildInputs = [ - curl # used for checking MinIO health check - dbmate # used for testing - jq # used for testing by the init-minio - mariadb # MySQL/MariaDB for integration tests - minio # S3-compatible storage for integration tests - minio-client # mc CLI for MinIO setup - postgresql # PostgreSQL for integration tests - python3 # used for generating the ports - redis # Redis for distributed locking integration tests - makeWrapper # For wrapping dbmate. - ]; - - postInstall = '' - mkdir -p $out/share/ncps - cp -r db $out/share/ncps/db - - makeWrapper ${finalAttrs.passthru.dbmate-wrapper}/bin/dbmate-wrapper \ - $out/bin/dbmate-ncps \ - --prefix PATH : ${dbmate-real}/bin \ - --set NCPS_DB_MIGRATIONS_DIR $out/share/ncps/db/migrations - ''; - - doCheck = true; - - checkFlags = [ "-race" ]; - - # pre and post checks - preCheck = '' - # Set up cleanup trap to ensure background processes are killed even if tests fail - cleanup() { - source $src/nix/packages/ncps/post-check-minio.sh - source $src/nix/packages/ncps/post-check-mysql.sh - source $src/nix/packages/ncps/post-check-postgres.sh - source $src/nix/packages/ncps/post-check-redis.sh - } - trap cleanup EXIT - - source $src/nix/packages/ncps/pre-check-minio.sh - source $src/nix/packages/ncps/pre-check-mysql.sh - source $src/nix/packages/ncps/pre-check-postgres.sh - source $src/nix/packages/ncps/pre-check-redis.sh - ''; - - passthru = { - dbmate-wrapper = buildGoModule { - pname = "ncps-dbmate-wrapper"; - inherit (finalAttrs) version; - - src = "${finalAttrs.src}/nix/dbmate-wrapper/src"; - - vendorHash = null; - - subPackages = [ "." ]; - }; - - updateScript = nix-update-script { }; - }; - - meta = { - description = "Nix binary cache proxy service"; - homepage = "https://github.com/kalbasit/ncps"; - license = lib.licenses.mit; - mainProgram = "ncps"; - maintainers = with lib.maintainers; [ - kalbasit - aciceri - ]; - }; - }; in -buildGoModule finalAttrs +buildGoModule (finalAttrs: { + pname = "ncps"; + version = "0.8.5"; + + src = fetchFromGitHub { + owner = "kalbasit"; + repo = "ncps"; + tag = "v${finalAttrs.version}"; + hash = "sha256-0kQ2DTnBil7eSP/eSwLVqw/UyIwBMFtmKAeLCi64Fr8="; + }; + + vendorHash = "sha256-AcgC+zTS3eVsbcs0jim4zDBGc3lIjwPbdVT7/KQ9Lkc="; + + ldflags = [ + "-X github.com/kalbasit/ncps/pkg/ncps.Version=v${finalAttrs.version}" + ]; + + subPackages = [ "." ]; + + nativeBuildInputs = [ + curl # used for checking MinIO health check + dbmate # used for testing + jq # used for testing by the init-minio + mariadb # MySQL/MariaDB for integration tests + minio # S3-compatible storage for integration tests + minio-client # mc CLI for MinIO setup + postgresql # PostgreSQL for integration tests + python3 # used for generating the ports + redis # Redis for distributed locking integration tests + makeWrapper # For wrapping dbmate. + ]; + + postInstall = '' + mkdir -p $out/share/ncps + cp -r db $out/share/ncps/db + + makeWrapper ${finalAttrs.passthru.dbmate-wrapper}/bin/dbmate-wrapper \ + $out/bin/dbmate-ncps \ + --prefix PATH : ${dbmate-real}/bin \ + --set NCPS_DB_MIGRATIONS_DIR $out/share/ncps/db/migrations + ''; + + doCheck = true; + + checkFlags = [ "-race" ]; + + # pre and post checks + preCheck = '' + # Set up cleanup trap to ensure background processes are killed even if tests fail + cleanup() { + source $src/nix/packages/ncps/post-check-minio.sh + source $src/nix/packages/ncps/post-check-mysql.sh + source $src/nix/packages/ncps/post-check-postgres.sh + source $src/nix/packages/ncps/post-check-redis.sh + } + trap cleanup EXIT + + source $src/nix/packages/ncps/pre-check-minio.sh + source $src/nix/packages/ncps/pre-check-mysql.sh + source $src/nix/packages/ncps/pre-check-postgres.sh + source $src/nix/packages/ncps/pre-check-redis.sh + ''; + + passthru = { + dbmate-wrapper = buildGoModule { + pname = "ncps-dbmate-wrapper"; + inherit (finalAttrs) version; + + src = "${finalAttrs.src}/nix/dbmate-wrapper/src"; + + vendorHash = null; + + subPackages = [ "." ]; + }; + + updateScript = nix-update-script { }; + }; + + meta = { + description = "Nix binary cache proxy service"; + homepage = "https://github.com/kalbasit/ncps"; + license = lib.licenses.mit; + mainProgram = "ncps"; + maintainers = with lib.maintainers; [ + kalbasit + aciceri + ]; + }; +}) From fba69cbec5393f188b7c2b4cf3e5802a9858c29b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gutyina=20Gerg=C5=91?= Date: Sun, 15 Feb 2026 14:35:48 +0100 Subject: [PATCH 5/5] ncps: reference existing NixOS tests --- pkgs/by-name/nc/ncps/package.nix | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/pkgs/by-name/nc/ncps/package.nix b/pkgs/by-name/nc/ncps/package.nix index c258b2dcb0e3..99734c0b3bb3 100644 --- a/pkgs/by-name/nc/ncps/package.nix +++ b/pkgs/by-name/nc/ncps/package.nix @@ -13,6 +13,7 @@ python3, redis, writeShellScriptBin, + nixosTests, nix-update-script, }: @@ -96,6 +97,16 @@ buildGoModule (finalAttrs: { subPackages = [ "." ]; }; + tests = { + inherit (nixosTests) + ncps + ncps-custom-sqlite-directory + ncps-custom-storage-local + ncps-ha-pg + ncps-ha-pg-redis + ; + }; + updateScript = nix-update-script { }; };