diff options
Diffstat (limited to 'nixpkgs/pkgs/servers/geospatial/geoserver/default.nix')
-rw-r--r-- | nixpkgs/pkgs/servers/geospatial/geoserver/default.nix | 74 |
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; }; -} +}) |