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..26947fc5 --- /dev/null +++ b/flake.nix @@ -0,0 +1,253 @@ +{ +  description = "sisu parser & document generator"; +  inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; +  outputs = { +    self, +    nixpkgs, +  } @ inputs: let +    pname = "sisu"; +    version = "7.3.1"; +    shell = ./shell.nix; # ./default.nix; +    devEnv = ./.envrc; # ./.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 = ""; +    installPhase = '' +      runHook preInstall +      mkdir -p $out/lib +      mkdir -p $out/setup +      mkdir -p $out/data +      mkdir -p $out/bin +      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 = ""; +  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; +          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 = '' +        #${pkgs.nix}/bin/nix build ".#" --print-build-logs; +        nix build ".#" --print-build-logs; +        echo "" +        sisu -v +      ''; +    in +      with pkgs; { +        default = mkShell { +          name = "sisu dev base shell"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            jq +            git +          ]; +          inherit shellHook; +        }; +        rsh-epub = mkShell { +          name = "sisu dev shell for epub output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            graphicsmagick +            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 +            validatePkgConfig +            jq +            #git +          ]; +          inherit shellHook; +        }; +        rsh-html = mkShell { +          name = "sisu dev shell for html output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            validatePkgConfig +            jq +            #git +          ]; +          inherit shellHook; +        }; +        rsh-latex-pdf = mkShell { +          name = "sisu dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            source-sans-pro +            source-serif-pro +            source-code-pro +            texlive.combined.scheme-full +            # texliveFull # texliveTeTeX +            noto-fonts +            noto-fonts-cjk-sans +            takao +            validatePkgConfig +            jq +            #git +          ]; +          inherit shellHook; +        }; +        rsh-comprehensive-shell = mkShell { +          name = "comprehensive sisu dev shell (for epub & latex & pdf output)"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            openssl +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            epr +            sigil +            calibre #(suite includes: ebook-viewer) +            foliate +            validatePkgConfig +            jq +            source-sans-pro +            source-serif-pro +            source-code-pro +            texlive.combined.scheme-full +            # texliveFull # texliveTeTeX +            noto-fonts +            noto-fonts-cjk-sans +            takao +            validatePkgConfig +            jq +            git +          ]; +          inherit shellHook; +        }; +        rsh-sqlite = mkShell { +          name = "sisu dev shell for sqlite3 output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            validatePkgConfig +            jq +            #git +          ]; +          inherit shellHook; +        }; +        rsh-i18n = mkShell { +          name = "sisu dev shell internationalization, po4a"; +          inherit shell; +          inherit devEnv; +          packages = [ +            ruby +            rubyPackages.rake +            rubyPackages.sqlite3 +            rubyPackages.thor +            sqlite +            graphicsmagick +            perl538Packages.Po4a +            validatePkgConfig +            jq +            #git +          ]; +          inherit shellHook; +        }; +        #default = import ./shell.nix { inherit pkgs; }; +    }); +  }; +} | 
