at 24.11-pre 73 lines 2.0 kB view raw
1{ lib 2, stdenv 3, fetchFromGitHub 4, libsodium 5, postgresql 6, postgresqlTestHook 7}: 8 9stdenv.mkDerivation (finalAttrs: { 10 pname = "pgsodium"; 11 version = "3.1.9"; 12 13 src = fetchFromGitHub { 14 owner = "michelp"; 15 repo = "pgsodium"; 16 rev = "v${finalAttrs.version}"; 17 hash = "sha256-Y8xL3PxF1GQV1JIgolMI1e8oGcUvWAgrPv84om7wKP8="; 18 }; 19 20 buildInputs = [ 21 libsodium 22 postgresql 23 ]; 24 25 installPhase = '' 26 runHook preInstall 27 28 install -D -t $out/lib pgsodium${postgresql.dlSuffix} 29 install -D -t $out/share/postgresql/extension sql/pgsodium-*.sql 30 install -D -t $out/share/postgresql/extension pgsodium.control 31 32 install -D -t $out/share/pgsodium/getkey_scripts getkey_scripts/* 33 ln -s $out/share/pgsodium/getkey_scripts/pgsodium_getkey_urandom.sh $out/share/postgresql/extension/pgsodium_getkey 34 35 runHook postInstall 36 ''; 37 38 passthru.tests.extension = stdenv.mkDerivation { 39 name = "pgsodium-test"; 40 dontUnpack = true; 41 doCheck = true; 42 nativeCheckInputs = [ postgresqlTestHook (postgresql.withPackages (_: [ finalAttrs.finalPackage ])) ]; 43 failureHook = "postgresqlStop"; 44 postgresqlTestUserOptions = "LOGIN SUPERUSER"; 45 postgresqlExtraSettings = '' 46 shared_preload_libraries=pgsodium 47 ''; 48 passAsFile = [ "sql" ]; 49 sql = '' 50 CREATE EXTENSION pgsodium; 51 52 SELECT pgsodium.version(); 53 SELECT pgsodium.crypto_auth_keygen(); 54 SELECT pgsodium.randombytes_random() FROM generate_series(0, 5); 55 SELECT * FROM pgsodium.crypto_box_new_keypair(); 56 ''; 57 checkPhase = '' 58 runHook preCheck 59 psql -a -v ON_ERROR_STOP=1 -f $sqlPath 60 runHook postCheck 61 ''; 62 installPhase = "touch $out"; 63 }; 64 65 meta = with lib; { 66 description = "Modern cryptography for PostgreSQL using libsodium"; 67 homepage = "https://github.com/michelp/pgsodium"; 68 changelog = "https://github.com/michelp/pgsodium/releases/tag/v${finalAttrs.version}"; 69 license = licenses.postgresql; 70 maintainers = [ ]; 71 platforms = postgresql.meta.platforms; 72 }; 73})