diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 265 |
1 files changed, 81 insertions, 184 deletions
@@ -1,35 +1,28 @@ { description = "a sisu like document parser search form"; inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - #inputs.flake-utils.url = "github:numtide/flake-utils"; inputs.spine-d-overlay = { url = "git://git.sisudoc.org/package/dlang-nix-overlays-and-flake"; inputs.nixpkgs.follows = "nixpkgs"; - flake = true; }; outputs = { self, nixpkgs, - #flake-utils, spine-d-overlay, ... }@inputs: let pname = "spine_search"; version = "0.18.0"; - shell = ./shell.nix; - devEnv = ./nixDevEnv.sh; + #shell = ./shell.nix; + #devEnv = ./nixDevEnv.sh; supportedSystems = ["x86_64-linux"]; forAllSystems = nixpkgs.lib.genAttrs supportedSystems; nixpkgsFor = forAllSystems (system: import nixpkgs {inherit system;}); # nixpkgs instantiated for supported system types - checkPhase = '' - runHook preCheck - dub test --combined --skip-registry=all - runHook postCheck - ''; localOverlay = (final: prev: { - ldc = prev.callPackage ./nix-overlays/ldc { }; - dmd = prev.callPackage ./nix-overlays/dmd { }; - dub = prev.callPackage ./nix-overlays/dub { }; + ldc = prev.callPackage ./nix-overlays/ldc { }; # -> ok 1.42.0 + # dmd overlay: revert to GCC14; (current) GCC 15 introduced nullptr in its headers, and DMD's ImportC parser needs update to handle it, monitor and update: + dmd = prev.callPackage ./nix-overlays/dmd { stdenv = prev.gcc14Stdenv; }; # -> ok 2.111.0 + dub = prev.callPackage ./nix-overlays/dub { }; # -> ? 1.40.0 #gdc = prev.callPackage ./nix-overlays/gdc { }; }); pkgsForSystem = system: import nixpkgs { @@ -41,165 +34,79 @@ preBuild = '' export HOME=$(pwd) ''; + checkPhase = '' + runHook preCheck + dub test --combined --skip-registry=all + runHook postCheck + ''; installPhase = '' runHook preInstall - mkdir -p $out/share/cgi-bin - install -m755 -D ./cgi-bin/spine_search $out/share/cgi-bin/spine_search + mkdir -p $out/cgi-bin + install -m755 -D ./cgi-bin/spine_search $out/cgi-bin/spine_search runHook postInstall ''; postInstall = '' - echo `ls -la $out/share/cgi-bin/spine_search` + echo `ls -la $out/cgi-bin/spine_search` ''; + # Helper to reduce duplication across build variants + mkSpineSearch = {pkgs, compiler, compilerCmd, dubConfig}: pkgs.stdenv.mkDerivation { + inherit pname version; + meta.mainProgram = "spine_search"; + src = self; + buildInputs = [pkgs.sqlite]; + nativeBuildInputs = [pkgs.dub compiler pkgs.gnumake]; + buildPhase = '' + runHook preBuild + buildCMD="dub run --cache=local --compiler=$(type -P ${compilerCmd}) --build=${dubConfig} --combined --skip-registry=all" + echo $buildCMD + $buildCMD + echo $buildCMD + runHook postBuild + ''; + inherit preBuild; + inherit checkPhase; + inherit installPhase; + inherit postInstall; + }; in { packages = forAllSystems (system: let pkgs-ovl = pkgsForSystem system; pkgs-nix = nixpkgsFor.${system}; - in - with pkgs-nix; { - default = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine-search"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = [sqlite]; - nativeBuildInputs = [dub ldc gnumake]; - buildPhase = '' - runHook preBuild - for DC_ in dmd ldmd2 ldc2 gdc gdmd; do - echo "- check for D compiler $DC_" - DC=$(type -P $DC_ || echo "") - if [ ! "$DC" == "" ]; then break; fi - done - if [ "$DC" == "" ]; then exit "Error: could not find D compiler"; fi - echo "$DC_ used as D compiler to build $pname" - buildCMD="dub run --cache=local --compiler=$DC --build=$DC_ --combined --skip-registry=all" - echo $buildCMD - $buildCMD - echo $buildCMD - runHook postBuild - ''; - inherit preBuild; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - spine-search-nixpkgs-dmd = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine_search-dmd"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = with pkgs-nix; [sqlite]; - nativeBuildInputs = with pkgs-nix; [dub dmd gnumake]; - buildPhase = '' - runHook preBuild - buildCMD="dub run --cache=local --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all" - echo $buildCMD - $buildCMD - echo $buildCMD - runHook postBuild - ''; - inherit preBuild; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - spine-search-nixpkgs-ldc = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine_search-ldc"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = with pkgs-nix; [sqlite]; - nativeBuildInputs = with pkgs-nix; [dub ldc gnumake]; - buildPhase = '' - runHook preBuild - buildCMD="dub run --cache=local --compiler=$(type -P ldmd2) --build=ldmd2 --combined --skip-registry=all" - echo $buildCMD - $buildCMD - echo $buildCMD - runHook postBuild - ''; - inherit preBuild; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - spine-search-overlay-dmd = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine_search-dmd"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = with pkgs-ovl; [sqlite]; - nativeBuildInputs = with pkgs-ovl; [dub dmd gnumake]; - buildPhase = '' - runHook preBuild - buildCMD="dub run --cache=local --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all" - echo $buildCMD - $buildCMD - echo $buildCMD - runHook postBuild - ''; - inherit preBuild; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - spine-search-overlay-ldc = stdenv.mkDerivation { - inherit pname; - inherit version; - meta.mainProgram = "spine_search-ldc"; - executable = true; - src = self; - inherit shell; - inherit devEnv; - buildInputs = with pkgs-ovl; [sqlite]; - nativeBuildInputs = with pkgs-ovl; [dub ldc gnumake]; - buildPhase = '' - runHook preBuild - buildCMD="dub run --cache=local --compiler=$(type -P ldmd2) --build=ldmd2 --combined --skip-registry=all" - echo $buildCMD - $buildCMD - echo $buildCMD - runHook postBuild - ''; - inherit preBuild; - inherit checkPhase; - inherit installPhase; - inherit postInstall; - }; - #spine-search-overlay-gdc = stdenv.mkDerivation { - # inherit pname; - # inherit version; - # meta.mainProgram = "spine_search-gdc"; - # executable = true; - # src = self; - # inherit shell; - # inherit devEnv; - # buildInputs = with pkgs-ovl; [ sqlite ]; - # nativeBuildInputs = with pkgs-ovl; [ dub gdc gnumake ]; - # buildPhase = '' - # runHook preBuild - # dub run --cache=local --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all - # runHook postBuild - # ''; - # inherit preBuild; - # inherit checkPhase; - # inherit installPhase; - # inherit postInstall; - #}; - #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; - }); + in { + default = self.packages.${system}.spine-search-nixpkgs-ldc; + spine-search-nixpkgs-dmd = mkSpineSearch { + pkgs = pkgs-nix; + # nixpkgs dmd: revert to GCC14 (same nullptr/ImportC fix as overlay dmd) + compiler = pkgs-nix.dmd.override { stdenv = pkgs-nix.gcc14Stdenv; }; + #compiler = pkgs-nix.dmd; + compilerCmd = "dmd"; + dubConfig = "dmd"; + }; + spine-search-nixpkgs-ldc = mkSpineSearch { + pkgs = pkgs-nix; + compiler = pkgs-nix.ldc; + compilerCmd = "ldmd2"; + dubConfig = "ldmd2"; + }; + spine-search-overlay-dmd = mkSpineSearch { + pkgs = pkgs-ovl; + compiler = pkgs-ovl.dmd; + compilerCmd = "dmd"; + dubConfig = "dmd"; + }; + spine-search-overlay-ldc = mkSpineSearch { + pkgs = pkgs-ovl; + compiler = pkgs-ovl.ldc; + compilerCmd = "ldmd2"; + dubConfig = "ldmd2"; + }; + #spine-search-overlay-gdc = mkSpineSearch { + # pkgs = pkgs-ovl; + # compiler = pkgs-ovl.gdc; + # compilerCmd = "gdc"; + # dubConfig = "gdc"; + #}; + }); devShells = forAllSystems (system: let pkgs-ovl = pkgsForSystem system; pkgs-nix = nixpkgsFor.${system}; @@ -211,9 +118,7 @@ with pkgs-nix; { dsh-d-overlay = spine-d-overlay.devShells.${system}.default; dsh-overlay = mkShell { - name = "spine-0.18.0 base dev shell, ldc-1.42.0, dub-1.40.0"; - inherit shell; - inherit devEnv; + name = "${pname}-${version} dev shell (overlay)"; packages = with pkgs-ovl; [ ldc #dmd @@ -223,10 +128,8 @@ ]; inherit shellHook; }; - dsh-nixpkgs-dmd-dub = mkShell { - name = "spine-0.18.0 base dev shell"; - inherit shell; - inherit devEnv; + dsh-nixpkgs-dmd = mkShell { + name = "${pname}-${version} dev shell (nixpkgs dmd)"; packages = [ dmd dub @@ -235,10 +138,8 @@ ]; inherit shellHook; }; - dsh-nixpkgs-ldc-dub = mkShell { - name = "spine-0.18.0 base dev shell"; - inherit shell; - inherit devEnv; + dsh-nixpkgs-ldc = mkShell { + name = "${pname}-${version} dev shell (nixpkgs ldc)"; packages = [ ldc dub @@ -247,10 +148,9 @@ ]; inherit shellHook; }; - dsh-overlay-dmd-dub = mkShell { - name = "spine-0.18.0 base dev shell, dmd-2.111.0, dub-1.40.0"; - inherit shell; - inherit devEnv; + dsh-overlay-dmd = mkShell { + name = "${pname}-${version} dev shell (overlay dmd)"; + # "spine-0.18.0 base dev shell, dmd-2.111.0, dub-1.40.0"; packages = with pkgs-ovl; [ dmd dub @@ -259,10 +159,9 @@ ]; inherit shellHook; }; - dsh-overlay-ldc-dub = mkShell { - name = "spine-0.18.0 base dev shell, ldc-1.42.0, dub-1.40.0"; - inherit shell; - inherit devEnv; + dsh-overlay-ldc = mkShell { + name = "${pname}-${version} dev shell (overlay ldc)"; + # "spine-0.18.0 base dev shell, ldc-1.42.0, dub-1.40.0"; packages = with pkgs-ovl; [ ldc dub @@ -272,9 +171,7 @@ inherit shellHook; }; dsh-sqlite = mkShell { - name = "spine dev shell for latex & pdf output"; - inherit shell; - inherit devEnv; + name = "${pname}-${version} dev shell (sqlite)"; packages = [ ldc #dmd |
