about summary refs log tree commit diff
path: root/nixpkgs/pkgs/servers/geospatial/geoserver/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/servers/geospatial/geoserver/default.nix')
-rw-r--r--nixpkgs/pkgs/servers/geospatial/geoserver/default.nix74
1 files changed, 52 insertions, 22 deletions
diff --git a/nixpkgs/pkgs/servers/geospatial/geoserver/default.nix b/nixpkgs/pkgs/servers/geospatial/geoserver/default.nix
index a58a3bb717e1..1ad28bfd5d1e 100644
--- a/nixpkgs/pkgs/servers/geospatial/geoserver/default.nix
+++ b/nixpkgs/pkgs/servers/geospatial/geoserver/default.nix
@@ -1,14 +1,13 @@
 { lib
+, callPackage
 , fetchurl
 , makeWrapper
 , nixosTests
 , stdenv
-
 , jre
 , unzip
 }:
-
-stdenv.mkDerivation rec {
+stdenv.mkDerivation (finalAttrs: rec {
   pname = "geoserver";
   version = "2.24.2";
 
@@ -25,24 +24,55 @@ stdenv.mkDerivation rec {
   sourceRoot = ".";
   nativeBuildInputs = [ unzip makeWrapper ];
 
-  installPhase = ''
-    runHook preInstall
-    mkdir -p $out/share/geoserver
-    cp -r . $out/share/geoserver
-    rm -fr $out/share/geoserver/bin/*.bat
-
-    makeWrapper $out/share/geoserver/bin/startup.sh $out/bin/geoserver-startup \
-      --set JAVA_HOME "${jre}" \
-      --set GEOSERVER_HOME "$out/share/geoserver"
-    makeWrapper $out/share/geoserver/bin/shutdown.sh $out/bin/geoserver-shutdown \
-      --set JAVA_HOME "${jre}" \
-      --set GEOSERVER_HOME "$out/share/geoserver"
-    runHook postInstall
-  '';
-
-  passthru = {
-    tests.geoserver = nixosTests.geoserver;
-  };
+  installPhase =
+    let
+      inputs = finalAttrs.buildInputs or [ ];
+      ldLibraryPathEnvName = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
+    in
+    ''
+      runHook preInstall
+      mkdir -p $out/share/geoserver
+      cp -r . $out/share/geoserver
+      rm -fr $out/share/geoserver/bin/*.bat
+
+      makeWrapper $out/share/geoserver/bin/startup.sh $out/bin/geoserver-startup \
+        --prefix PATH : "${lib.makeBinPath inputs}" \
+        --prefix ${ldLibraryPathEnvName} : "${lib.makeLibraryPath inputs}" \
+        --set JAVA_HOME "${jre}" \
+        --set GEOSERVER_HOME "$out/share/geoserver"
+      makeWrapper $out/share/geoserver/bin/shutdown.sh $out/bin/geoserver-shutdown \
+        --prefix PATH : "${lib.makeBinPath inputs}" \
+        --prefix ${ldLibraryPathEnvName} : "${lib.makeLibraryPath inputs}" \
+        --set JAVA_HOME "${jre}" \
+        --set GEOSERVER_HOME "$out/share/geoserver"
+      runHook postInstall
+    '';
+
+
+  passthru =
+    let
+      geoserver = finalAttrs.finalPackage;
+      extensions = lib.attrsets.filterAttrs (n: v: lib.isDerivation v) (callPackage ./extensions.nix { });
+    in
+    {
+      withExtensions = selector:
+        let
+          selectedExtensions = selector extensions;
+        in
+        geoserver.overrideAttrs (finalAttrs: previousAttrs: {
+          pname = previousAttrs.pname + "-with-extensions";
+          buildInputs = lib.lists.unique ((previousAttrs.buildInputs or [ ]) ++ lib.lists.concatMap (drv: drv.buildInputs) selectedExtensions);
+          postInstall = (previousAttrs.postInstall or "") + ''
+            for extension in ${builtins.toString selectedExtensions} ; do
+              cp -r $extension/* $out
+              # Some files are the same for all/several extensions. We allow overwriting them again.
+              chmod -R +w $out
+            done
+          '';
+        });
+      tests.geoserver = nixosTests.geoserver;
+      passthru.updateScript = ./update.sh;
+    };
 
   meta = with lib; {
     description = "Open source server for sharing geospatial data";
@@ -52,4 +82,4 @@ stdenv.mkDerivation rec {
     maintainers = teams.geospatial.members;
     platforms = platforms.all;
   };
-}
+})