summaryrefslogtreecommitdiffhomepage
path: root/package.nix
diff options
context:
space:
mode:
Diffstat (limited to 'package.nix')
-rw-r--r--package.nix71
1 files changed, 71 insertions, 0 deletions
diff --git a/package.nix b/package.nix
new file mode 100644
index 0000000..bbe23ca
--- /dev/null
+++ b/package.nix
@@ -0,0 +1,71 @@
+# package.nix - spine_search CGI derivation (build logic)
+#
+# Standalone, callPackage-style derivation for the spine_search CGI
+# binary. Used by shell.nix to put a freshly-built spine_search into
+# the dev shell. May also be consumed via:
+# nix-build ./package.nix
+# pkgs.callPackage ./package.nix {}
+#
+# Compiler defaults to ldc/ldmd2 (matching the flake's default
+# package `spine-search-nixpkgs-ldc`). Override to build with dmd:
+# pkgs.callPackage ./package.nix {
+# compilerPkg = pkgs.dmd;
+# compilerBin = "dmd";
+# buildType = "dmd";
+# }
+#
+# Note: spine_search is a CGI binary and is installed to
+# $out/cgi-bin/spine_search (not $out/bin/), since it is intended to
+# be served by a web server, not invoked directly from PATH.
+{
+ lib,
+ stdenv,
+ dub,
+ ldc,
+ gnumake,
+ sqlite,
+ compilerPkg ? ldc,
+ compilerBin ? "ldmd2",
+ buildType ? "ldmd2",
+}:
+stdenv.mkDerivation {
+ pname = "spine_search";
+ version = "0.18.0";
+ src = lib.cleanSource ./.;
+ buildInputs = [ sqlite ];
+ nativeBuildInputs = [ dub compilerPkg gnumake ];
+ preBuild = ''
+ export HOME=$(pwd)
+ '';
+ buildPhase = ''
+ runHook preBuild
+ buildCMD="dub run --cache=local \
+ --compiler=$(type -P ${compilerBin}) \
+ --build=${buildType} \
+ --combined --skip-registry=all"
+ echo $buildCMD
+ $buildCMD
+ runHook postBuild
+ '';
+ checkPhase = ''
+ runHook preCheck
+ dub test --combined --skip-registry=all
+ runHook postCheck
+ '';
+ installPhase = ''
+ runHook preInstall
+ mkdir -p $out/cgi-bin
+ install -m755 -D ./cgi-bin/spine_search $out/cgi-bin/spine_search
+ runHook postInstall
+ '';
+ postInstall = ''
+ echo `ls -la $out/cgi-bin/spine_search`
+ '';
+ meta = {
+ description = "CGI search interface for spine document collections";
+ homepage = "https://sisudoc.org";
+ license = lib.licenses.agpl3Plus;
+ platforms = lib.platforms.linux;
+ mainProgram = "spine_search";
+ };
+}