diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 494 | 
1 files changed, 258 insertions, 236 deletions
@@ -1,242 +1,264 @@  { -  description                  = "a sisu like parser & document generator"; -  inputs.nixpkgs.url           = "github:NixOS/nixpkgs/nixpkgs-unstable"; -  inputs.flake-utils.url       = "github:numtide/flake-utils"; -  outputs = { self, nixpkgs, flake-utils } @inputs: -    let -      pname                    = "spine"; -      version                  = "0.12.0"; -      shell                    = ./shell.nix; # ./default.nix; -      devEnv                   = ./.envrc; # ./shell.nix; # ./default.nix; -      supportedSystems         = [ "x86_64-linux" ]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; -      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 -      ''; -      installPhase = '' -        runHook preInstall -        mkdir -p $out/bin -        install -m755 ./bin/spine $out/bin/spine -        runHook postInstall -      ''; -      postInstall = '' -        echo `ls -la $out/bin/spine` -        $out/bin/spine -v -      ''; -    in { -      packages = forAllSystems (system: -        let pkgs               = nixpkgsFor.${system}; -        in with pkgs; { -          default = stdenv.mkDerivation { -            inherit pname; -            inherit version; -            meta.mainProgram   = "spine"; -            executable         = true; -            src                = self; -            inherit shell; -            inherit devEnv; -            buildInputs        = [ sqlite ]; -            nativeBuildInputs  = [ dub ldc gnumake ]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; -            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" -              dub build --compiler=$DC --build=$DC_ --combined --skip-registry=all -              runHook postBuild -            ''; -            inherit checkPhase; -            inherit installPhase; -            inherit postInstall; -          }; -          spine-dmd = stdenv.mkDerivation { -            inherit pname; -            inherit version; -            meta.mainProgram   = "spine-dmd"; -            executable         = true; -            src                = self; -            inherit shell; -            inherit devEnv; -            buildInputs        = [ sqlite ]; -            nativeBuildInputs  = [ dub dmd gnumake ]; -            buildPhase = '' -              runHook preBuild -              dub build --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all -              runHook postBuild -            ''; -            inherit checkPhase; -            inherit installPhase; -            inherit postInstall; -          }; -          spine-ldc = stdenv.mkDerivation { -            inherit pname; -            inherit version; -            meta.mainProgram   = "spine-ldc"; -            executable         = true; -            src                = self; -            inherit shell; -            inherit devEnv; -            buildInputs        = [ sqlite ]; -            nativeBuildInputs  = [ dub ldc gnumake ]; -            buildPhase = '' -              runHook preBuild -              dub build --compiler=$(type -P ldc2) --build=ldc2 --combined --skip-registry=all -              runHook postBuild -            ''; -            inherit checkPhase; -            inherit installPhase; -            inherit postInstall; -          }; -          #spine-gdc = stdenv.mkDerivation { -          #  inherit pname; -          #  inherit version; -          #  meta.mainProgram   = "spine-gdc"; -          #  executable         = true; -          #  src                = self; -          #  inherit shell; -          #  inherit devEnv; -          #  buildInputs        = [ sqlite ]; -          #  nativeBuildInputs  = [ dub gdc gnumake ]; -          #  buildPhase = '' -          #    runHook preBuild -          #    dub build --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all -          #    runHook postBuild -          #  ''; -          #  inherit checkPhase; -          #  inherit installPhase; -          #  inherit postInstall; -          #}; -          #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; -      }); -      apps = forAllSystems (system: { -        default = { -          type                 = "app"; -          program              = "${self.packages.${system}.default}/bin/spine"; +  description = "a sisu like parser & document generator"; +  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; +  inputs.flake-utils.url = "github:numtide/flake-utils"; +  outputs = { +    self, +    nixpkgs, +    flake-utils, +  } @ inputs: let +    pname = "spine"; +    version = "0.12.0"; +    shell = ./shell.nix; # ./default.nix; +    devEnv = ./.envrc; # ./shell.nix; # ./default.nix; +    supportedSystems = ["x86_64-linux"]; # [ "x86_64-linux" "x86_64-darwin" "aarch64-linux" "aarch64-darwin" ]; +    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 +    ''; +    installPhase = '' +      runHook preInstall +      mkdir -p $out/bin +      install -m755 ./bin/spine $out/bin/spine +      runHook postInstall +    ''; +    postInstall = '' +      echo `ls -la $out/bin/spine` +      $out/bin/spine -v +    ''; +  in { +    packages = forAllSystems (system: let +      pkgs = nixpkgsFor.${system}; +    in +      with pkgs; { +        default = stdenv.mkDerivation { +          inherit pname; +          inherit version; +          meta.mainProgram = "spine"; +          executable = true; +          src = self; +          inherit shell; +          inherit devEnv; +          buildInputs = [sqlite]; +          nativeBuildInputs = [dub ldc gnumake]; # [ dub dmd ]; [ dub ldc ]; [ dub gdc ]; +          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" +            dub build --compiler=$DC --build=$DC_ --combined --skip-registry=all +            runHook postBuild +          ''; +          inherit checkPhase; +          inherit installPhase; +          inherit postInstall;          }; -      }); -      devShells = forAllSystems (system: -        let -          pkgs = nixpkgsFor.${system}; -          shellHook = '' -            export DFLAGS="-O2 -inline -boundscheck=on -color=on" -            export Date=`date "+%Y%m%d"` -            export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') -            ### set local values in .envrc-local (or modify here if you must) -            # export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine -            # export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples -            # export SpineOUT=/srv/www/spine -            # export SpineDBpath=/var/www/sqlite -            # export SpineDBpath=/srv/www/spine/sqlite -            export SpineSRC=$SpinePROJ/src -            export SpineBIN=$SpinePROJ/result/bin -            export SpinePOD=$SpineDOC/markup/pod -            export SpineOUTversioned=$SpineOUT/$SpineVER -            export SpineSearchActionLocal='http://localhost/spine_search' -            # export SpineSearchActionRemote='https://sisudoc.org/spine_search' -            export SpineCGIform='spine_search' -            export SpineSQLdb='spine.search.db' -            export PROG_VER_GIT="`git describe --long --tags | sed -e 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g'`" -            export PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`" -            export spineNixHelp="cat ./.env/nix-commands" -            export spineTest="nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" $SpinePOD/*" -            export spineHtml="spine --very-verbose --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename=\"spine.search.db\" --cgi-sqlite-search-filename=\"spine_search\" --sqlite-db-path=\"\$SpineDBpath\" --output=\"\$SpineOUT\" $SpinePOD/*" -            export spineEpub="spine --very-verbose --epub --output=\"\$SpineOUT\" $SpinePOD/*" -            export spineLatex="spine --very-verbose --latex --output=\"\$SpineOUT\" $SpinePOD/*" -            export spinePdf="spine --very-verbose --pdf --output=\"\$SpineOUT\" $SpinePOD/*" -            export spineSqliteCreateDB="spine --very-verbose --sqlite-db-recreate --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\"" -            export spineSqlite="spine --very-verbose --sqlite-discrete --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" -            #export spineSqlite="spine --very-verbose --sqlite-update --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" +        spine-dmd = stdenv.mkDerivation { +          inherit pname; +          inherit version; +          meta.mainProgram = "spine-dmd"; +          executable = true; +          src = self; +          inherit shell; +          inherit devEnv; +          buildInputs = [sqlite]; +          nativeBuildInputs = [dub dmd gnumake]; +          buildPhase = '' +            runHook preBuild +            dub build --compiler=$(type -P dmd) --build=dmd --combined --skip-registry=all +            runHook postBuild +          ''; +          inherit checkPhase; +          inherit installPhase; +          inherit postInstall; +        }; +        spine-ldc = stdenv.mkDerivation { +          inherit pname; +          inherit version; +          meta.mainProgram = "spine-ldc"; +          executable = true; +          src = self; +          inherit shell; +          inherit devEnv; +          buildInputs = [sqlite]; +          nativeBuildInputs = [dub ldc gnumake]; +          buildPhase = '' +            runHook preBuild +            dub build --compiler=$(type -P ldc2) --build=ldc2 --combined --skip-registry=all +            runHook postBuild            ''; -        in with pkgs; { -          devShell = mkShell { -            name               = "spine base dev shell"; -            inherit shell; -            inherit devEnv; -            #buildInputs        = [ sqlite ]; -            #nativeBuildInputs  = [ dub dmd ldc gdc gnumake ]; -            packages     = [ -              sqlite -              dub dmd ldc gnumake -            ]; -            inherit shellHook; -          }; -          devShell-epub = mkShell { -            name               = "spine dev shell for epub output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              libxml2 -              html-tidy -              xmlstarlet -              epubcheck -              ebook_tools -              libxml2 -              html-tidy -              xmlstarlet -              epubcheck -              ebook_tools -              epr -              sigil -              calibre #(suite includes: ebook-viewer) -              foliate -            ]; -            inherit shellHook; -          }; -          devShell-html = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -            ]; -            inherit shellHook; -          }; -          devShell-latex-pdf = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              source-sans-pro -              source-serif-pro -              source-code-pro -              texlive.combined.scheme-full -            ]; -            inherit shellHook; -          }; -          devShell-sqlite = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -            ]; -            inherit shellHook; -          }; -          devShell-i18n = mkShell { -            name               = "spine dev shell internationalization, po4a"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              perl534Packages.Po4a -            ]; -            inherit shellHook; -          }; -          default = import ./shell.nix { inherit pkgs; }; +          inherit checkPhase; +          inherit installPhase; +          inherit postInstall; +        }; +        #spine-gdc = stdenv.mkDerivation { +        #  inherit pname; +        #  inherit version; +        #  meta.mainProgram   = "spine-gdc"; +        #  executable         = true; +        #  src                = self; +        #  inherit shell; +        #  inherit devEnv; +        #  buildInputs        = [ sqlite ]; +        #  nativeBuildInputs  = [ dub gdc gnumake ]; +        #  buildPhase = '' +        #    runHook preBuild +        #    dub build --compiler=$(type -P gdc) --build=gdc --combined --skip-registry=all +        #    runHook postBuild +        #  ''; +        #  inherit checkPhase; +        #  inherit installPhase; +        #  inherit postInstall; +        #}; +        #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; +      }); +    apps = forAllSystems (system: { +      default = { +        type = "app"; +        program = "${self.packages.${system}.default}/bin/spine"; +      }; +    }); +    devShells = forAllSystems (system: let +      pkgs = nixpkgsFor.${system}; +      shellHook = '' +        export DFLAGS="-O2 -inline -boundscheck=on -color=on" +        export Date=`date "+%Y%m%d"` +        export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') +        ### set local values in .envrc-local (or modify here if you must) +        # export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine +        # export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples +        # export SpineOUT=/srv/www/spine +        # export SpineDBpath=/var/www/sqlite +        # export SpineDBpath=/srv/www/spine/sqlite +        export SpineSRC=$SpinePROJ/src +        export SpineBIN=$SpinePROJ/result/bin +        export SpinePOD=$SpineDOC/markup/pod +        export SpineOUTversioned=$SpineOUT/$SpineVER +        export SpineSearchActionLocal='http://localhost/spine_search' +        # export SpineSearchActionRemote='https://sisudoc.org/spine_search' +        export SpineCGIform='spine_search' +        export SpineSQLdb='spine.search.db' +        export PROG_VER_GIT="`git describe --long --tags | sed -e 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g'`" +        export PROG_VER_DECLARED="`cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`" +        export spineNixHelp="cat ./.env/nix-commands" +        export spineTest="nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" $SpinePOD/*" +        export spineHtml="spine --very-verbose --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename=\"spine.search.db\" --cgi-sqlite-search-filename=\"spine_search\" --sqlite-db-path=\"\$SpineDBpath\" --output=\"\$SpineOUT\" $SpinePOD/*" +        export spineEpub="spine --very-verbose --epub --output=\"\$SpineOUT\" $SpinePOD/*" +        export spineLatex="spine --very-verbose --latex --output=\"\$SpineOUT\" $SpinePOD/*" +        export spinePdf="spine --very-verbose --pdf --output=\"\$SpineOUT\" $SpinePOD/*" +        export spineSqliteCreateDB="spine --very-verbose --sqlite-db-recreate --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\"" +        export spineSqlite="spine --very-verbose --sqlite-discrete --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" +        #export spineSqlite="spine --very-verbose --sqlite-update --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" +      ''; +    in +      with pkgs; { +        devShell = mkShell { +          name = "spine base dev shell"; +          inherit shell; +          inherit devEnv; +          #buildInputs        = [ sqlite ]; +          #nativeBuildInputs  = [ dub dmd ldc gdc gnumake ]; +          packages = [ +            sqlite +            dub +            dmd +            ldc +            gnumake +          ]; +          inherit shellHook; +        }; +        devShell-epub = mkShell { +          name = "spine dev shell for epub output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            epr +            sigil +            calibre #(suite includes: ebook-viewer) +            foliate +          ]; +          inherit shellHook; +        }; +        devShell-html = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +          ]; +          inherit shellHook; +        }; +        devShell-latex-pdf = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            source-sans-pro +            source-serif-pro +            source-code-pro +            texlive.combined.scheme-full +          ]; +          inherit shellHook; +        }; +        devShell-sqlite = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +          ]; +          inherit shellHook; +        }; +        devShell-i18n = mkShell { +          name = "spine dev shell internationalization, po4a"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            perl534Packages.Po4a +          ]; +          inherit shellHook; +        }; +        default = import ./shell.nix {inherit pkgs;};        });    };  }  | 
