diff options
Diffstat (limited to 'flake.nix')
| -rw-r--r-- | flake.nix | 253 | 
1 files changed, 253 insertions, 0 deletions
| diff --git a/flake.nix b/flake.nix new file mode 100644 index 00000000..3b710e7a --- /dev/null +++ b/flake.nix @@ -0,0 +1,253 @@ +{ +  description                  = "sisu parser & document generator"; +  inputs.nixpkgs.url           = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; "github:NixOS/nixpkgs/nixpkgs-unstable"; "nixpkgs/nixos-unstable"; "nixpkgs/nixos-21.11"; +  inputs.flake-utils.url       = "github:numtide/flake-utils"; +  outputs = { self, nixpkgs, flake-utils } @inputs: +    let +      pname                    = "sisu"; +      version                  = "0.7.3"; +      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 +        runHook postCheck +      ''; +      preInstall = '' +        mkdir -p $out/lib +        mkdir -p $out/bin +      ''; +      installPhase = '' +        runHook preInstall +        mkdir -p $out/lib +        mkdir -p $out/setup +        mkdir -p $out/data +        mkdir -p $out/bin +        #cp ./lib/sisu.rb $out/lib/sisu.rb +        cp -R ./lib/* $out/lib/. +        cp -R ./data/* $out/data/. +        cp -R ./setup/* $out/setup/. +        ln -s $out/setup/sisu_version.rb $out/version +        install -m755 ./bin/sisu $out/bin/sisu +        runHook postInstall +      ''; +      postInstall = '' +        # echo `ls -la $out/bin/sisu` +        ## $out/bin/sisu -v +      ''; +    in { +      packages = forAllSystems (system: +        let pkgs               = nixpkgsFor.${system}; +        in with pkgs; { +          default = stdenv.mkDerivation { +            inherit pname; +            inherit version; +            meta.mainProgram   = "sisu"; +            executable         = true; +            src                = self; +            inherit shell; +            inherit devEnv; +            buildInputs        = [ +              ruby_3_1 +              rubyPackages_3_1.rake +              rubyPackages_3_1.sqlite3 +              rubyPackages_3_1.thor +              #ruby_2_7 +              #rubyPackages_2_7.rake +              #rubyPackages_2_7.sqlite3 +              #rubyPackages_2_7.thor +              sqlite +              unzip +              xz +              zip +              openssl +              nixFlakes +              validatePkgConfig +              jq +              git +              sqlite +            ]; +            buildPhase = '' +            ''; +            inherit checkPhase; +            inherit installPhase; +            inherit postInstall; +          }; +          #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; +      }); +      apps = forAllSystems (system: { +        default = { +          type                 = "app"; +          program              = "${self.packages.${system}.default}/bin/sisu"; +        }; +      }); +      devShells = forAllSystems (system: +        let +          pkgs = nixpkgsFor.${system}; +          shellHook = '' +            export Date=`date "+%Y%m%d"` +            export sisuver=$(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 sisuPROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/sisu +            # export sisuDOC=~/grotto/repo/git.repo/projects/project-sisu/doc-reform-markup/sisu-markup-samples +            # export sisuSRC=~/grotto/repo/git.repo/projects/project-sisu/sisu +            # export sisuDOC=~/grotto/repo/git.repo/projects/project-sisu/susu-markup/sisu-markup-samples/data/samples/current +            # export sisuOUT=/srv/www/sisu +            # export sisuOUTver=/srv/www/sisu/$sisuVER/www +            # export sisu=/srv/www/sisu +            # export sisu=/var/www/sqlite +            # export sisu=/srv/www/sisu/sqlite +            export sisu=$sisuPROJ/src +            export sisu=$sisuPROJ/result/lib +            export sisu=$sisuDOC/markup/pod +            export sisu=$sisuOUT/$sisuVER +            export sisu='http://localhost/sisu_search' +            # export sisuSearchActionRemote='https://sisudoc.org/sisu_search' +            export sisuCGIform='sisu_search' +            export sisuSQLdb='sisusearch.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 sisuNixHelp="cat ./.env/nix-commands" +            export sisuTest="nix shell .#default --print-build-logs --command sisu --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$sisuOUT\" $sisuPOD/*" +            export sisuHtml="sisu --very-verbose --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename=\"sisu.search.db\" --cgi-sqlite-search-filename=\"sisu_search\" --sqlite-db-path=\"\$sisuDBpath\" --output=\"\$sisuOUT\" $sisuPOD/*" +            export sisuEpub="sisu --very-verbose --epub --output=\"\$sisuOUT\" $sisuPOD/*" +            export sisuLatex="sisu --very-verbose --latex --output=\"\$sisuOUT\" $sisuPOD/*" +            export sisuPdf="sisu --very-verbose --pdf --output=\"\$sisuOUT\" $sisuPOD/*" +            export sisuSqliteCreateDB="sisu --very-verbose --sqlite-db-recreate --sqlite-db-path=\"$sisuDBpath\" --sqlite-db-filename=\"sisu.search.db\"" +            export sisuSqlite="sisu --very-verbose --sqlite-discrete --sqlite-db-path=\"$sisuDBpath\" --sqlite-db-filename=\"sisu.search.db\" --output=\"\$sisuOUT\" $sisuPOD/*" +            #export sisuSqlite="sisu --very-verbose --sqlite-update --sqlite-db-path=\"$sisuDBpath\" --sqlite-db-filename=\"sisu.search.db\" --output=\"\$sisuOUT\" $sisuPOD/*" +          ''; +        in with pkgs; { +          devShell = mkShell rec { +            name               = "sisu dev shell default"; +            inherit shell; +            inherit devEnv; +            packages = [ sqlite ]; +            inherit shellHook; +          }; +          devShell-epub = mkShell rec { +            name               = "sisu dev shell for epub output"; +            inherit shell; +            inherit devEnv; +            packages = [ +              ruby_3_1 +              rubyPackages_3_1.rake +              rubyPackages_3_1.sqlite3 +              rubyPackages_3_1.thor +              sqlite +              zip +              unzip +              xz +              libxml2 +              html-tidy +              xmlstarlet +              epubcheck +              ebook_tools +              libxml2 +              html-tidy +              xmlstarlet +              epubcheck +              ebook_tools +              epr +              sigil +              calibre #(suite includes: ebook-viewer) +              foliate +              devenv +              nixFlakes +              validatePkgConfig +              jq +              git +            ]; +            inherit shellHook; +          }; +          devShell-html = mkShell rec { +            name               = "sisu dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages = [ +              ruby_3_1 +              rubyPackages_3_1.rake +              rubyPackages_3_1.sqlite3 +              rubyPackages_3_1.thor +              sqlite +              zip +              unzip +              xz +              devenv +              nixFlakes +              validatePkgConfig +              jq +              git +            ]; +            inherit shellHook; +          }; +          devShell-latex-pdf = mkShell rec { +            name               = "sisu dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages = [ +              ruby_3_1 +              rubyPackages_3_1.rake +              rubyPackages_3_1.sqlite3 +              rubyPackages_3_1.thor +              sqlite +              zip +              unzip +              xz +              source-sans-pro +              source-serif-pro +              source-code-pro +              texlive.combined.scheme-full +              devenv +              nixFlakes +              validatePkgConfig +              jq +              git +            ]; +            inherit shellHook; +          }; +          devShell-sqlite = mkShell rec { +            name               = "sisu dev shell for latex & pdf output"; +            inherit shell; +            inherit devEnv; +            packages = [ +              ruby_3_1 +              rubyPackages_3_1.rake +              rubyPackages_3_1.sqlite3 +              rubyPackages_3_1.thor +              sqlite +              zip +              unzip +              xz +              devenv +              nixFlakes +              validatePkgConfig +              jq +              git +            ]; +            inherit shellHook; +          }; +          devShell-i18n = mkShell { +            name               = "sisu dev shell internationalization, po4a"; +            inherit shell; +            inherit devEnv; +            packages = [ +              ruby_3_1 +              rubyPackages_3_1.rake +              rubyPackages_3_1.sqlite3 +              rubyPackages_3_1.thor +              sqlite +              perl534Packages.Po4a +              devenv +              nixFlakes +              validatePkgConfig +              jq +              git +            ]; +            inherit shellHook; +          }; +      }); +  }; +} | 
