about summary refs log tree commit diff
path: root/kittybox.nix
diff options
context:
space:
mode:
Diffstat (limited to 'kittybox.nix')
-rw-r--r--kittybox.nix15
1 files changed, 14 insertions, 1 deletions
diff --git a/kittybox.nix b/kittybox.nix
index d7577fd..ccf3ea8 100644
--- a/kittybox.nix
+++ b/kittybox.nix
@@ -1,8 +1,10 @@
 { stdenv, lib, naersk, lld, mold, typescript
 , useWebAuthn ? false, openssl, zlib, pkg-config, protobuf
+, usePostgres ? true, postgresql, postgresqlTestHook
 , nixosTests }:
 
 assert useWebAuthn -> openssl != null && pkg-config != null;
+assert usePostgres -> postgresql != null && postgresqlTestHook != null;
 
 naersk.buildPackage {
   pname = "kittybox";
@@ -12,13 +14,24 @@ naersk.buildPackage {
 
   doCheck = stdenv.hostPlatform == stdenv.targetPlatform;
   cargoOptions = x: x ++ (lib.optionals useWebAuthn [
-    "--no-default-features" "--features=\"webauthn\""
+    "--no-default-features" "--features=\"webauthn${lib.optionalString usePostgres " sqlx"}\""
   ]);
   buildInputs = lib.optional useWebAuthn openssl;
   nativeBuildInputs = [ typescript ] ++ (lib.optional useWebAuthn pkg-config);
 
+  nativeCheckInputs = lib.optionals usePostgres [
+    postgresql postgresqlTestHook
+  ];
+
+  # Tests create arbitrary databases; we need to be prepared for that
+  postgresqlTestUserOptions = "LOGIN SUPERUSER";
+  postgresqlTestSetupPost = ''
+    export DATABASE_URL="postgres://localhost?host=$PGHOST&user=$PGUSER&dbname=$PGDATABASE"
+  '';
+
   passthru = {
     tests = nixosTests;
+    hasPostgres = usePostgres;
   };
 
   meta = with lib.meta; {