at master 55 lines 1.5 kB view raw
1{ 2 bash, 3 fetchFromGitHub, 4 lib, 5 libsodium, 6 postgresql, 7 postgresqlBuildExtension, 8 postgresqlTestExtension, 9}: 10 11postgresqlBuildExtension (finalAttrs: { 12 pname = "pgsodium"; 13 version = "3.1.9"; 14 15 src = fetchFromGitHub { 16 owner = "michelp"; 17 repo = "pgsodium"; 18 tag = "v${finalAttrs.version}"; 19 hash = "sha256-Y8xL3PxF1GQV1JIgolMI1e8oGcUvWAgrPv84om7wKP8="; 20 }; 21 22 buildInputs = [ 23 bash # required for patchShebangs 24 libsodium 25 ]; 26 27 postInstall = '' 28 install -D -t $out/share/pgsodium/getkey_scripts getkey_scripts/* 29 ln -s $out/share/pgsodium/getkey_scripts/pgsodium_getkey_urandom.sh $out/share/postgresql/extension/pgsodium_getkey 30 ''; 31 32 passthru.tests.extension = postgresqlTestExtension { 33 inherit (finalAttrs) finalPackage; 34 postgresqlExtraSettings = '' 35 shared_preload_libraries=pgsodium 36 ''; 37 sql = '' 38 CREATE EXTENSION pgsodium; 39 40 SELECT pgsodium.version(); 41 SELECT pgsodium.crypto_auth_keygen(); 42 SELECT pgsodium.randombytes_random() FROM generate_series(0, 5); 43 SELECT * FROM pgsodium.crypto_box_new_keypair(); 44 ''; 45 }; 46 47 meta = { 48 description = "Modern cryptography for PostgreSQL using libsodium"; 49 homepage = "https://github.com/michelp/pgsodium"; 50 changelog = "https://github.com/michelp/pgsodium/releases/tag/v${finalAttrs.version}"; 51 license = lib.licenses.postgresql; 52 maintainers = [ ]; 53 platforms = postgresql.meta.platforms; 54 }; 55})