diff options
Diffstat (limited to 'org/config_nix.org')
| -rw-r--r-- | org/config_nix.org | 481 | 
1 files changed, 481 insertions, 0 deletions
| diff --git a/org/config_nix.org b/org/config_nix.org new file mode 100644 index 00000000..019cac7c --- /dev/null +++ b/org/config_nix.org @@ -0,0 +1,481 @@ +-*- mode: org -*- +#+TITLE:       configuration nix +#+DESCRIPTION: makefile for spine +#+FILETAGS:    :sisu:build:tools: +#+AUTHOR:      Ralph Amissah +#+EMAIL:       [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] +#+COPYRIGHT:   Copyright (C) 2015 - 2023 Ralph Amissah +#+LANGUAGE:    en +#+STARTUP:     content hideblocks hidestars noindent entitiespretty +#+PROPERTY:    header-args  :exports code +#+PROPERTY:    header-args+ :noweb yes +#+PROPERTY:    header-args+ :results no +#+PROPERTY:    header-args+ :cache no +#+PROPERTY:    header-args+ :padline no +#+PROPERTY:    header-args+ :mkdirp yes +#+OPTIONS:     H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t + +* nix :nix: + +#+NAME: nixpkgs_local +#+BEGIN_SRC sh +/srv/nix/nixpkgs +#+END_SRC + +- default.nix +- shell.nix + +** envrc :envrc: +*** .envrc + +- https://github.com/nix-community/nix-direnv +  - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-0000000000000000000000000000000000000000000=" + +#+HEADER: :tangle ../.envrc +#+BEGIN_SRC sh +use flake . +#use flake .#default +NIX_ENFORCE_PURITY=1 +NixDirEnvVersion="2.2.1" +if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then +# - https://github.com/nix-community/nix-direnv +# source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-0000000000000000000000000000000000000000000=" +  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +fi +watch_file flake.lock +watch_file flake.nix +if [ -f .envrc-local ]; then +  source_env_if_exists .envrc-local || source .envrc-local +fi +#nix flake update && nix flake check --show-trace && nix flake show +#+END_SRC + +*** .envrc-local CHECK MODIFY + +- bespoke modify appropriately and generate if needed + +#+HEADER: :tangle ../.envrc-local_ +#+HEADER: :noweb yes +#+BEGIN_SRC sh +export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos +#export NIX_PATH=nixpkgs=/nixpkgs-ra/nixpkgs +## reload when these files change +use flake +watch_file flake.nix +#eval "$(nix print-dev-env)" +export sisuVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') +#export sisuBIN=bin +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=/var/www +export sisuOUTver=/tmp/sisu/$sisuVER/www +export RUBYLIB+=`pwd`/lib +#+END_SRC + +** flake :flake: +*** flake +**** flake.nix + +#+HEADER: :tangle ../flake.nix +#+HEADER: :noweb yes +#+BEGIN_SRC nix +{ +  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                  = "<<sisu_version_set>>"; +      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; +          }; +      }); +  }; +} +#+END_SRC + +** shell.nix TODO + +#+HEADER: :tangle ../shell.nix +#+HEADER: :shebang #!/usr/bin/env -S nix-shell --pure +#+HEADER: :tangle-mode (identity #o755) +#+BEGIN_SRC nix +{ pkgs ? import <nixpkgs> {} }: +with pkgs; +mkShell { +  buildInputs = [ +    <<ruby_current>> +    <<packages_project_relevant>> +    <<packages_build>> +    <<packages_extra>> +  ]; +  shellHook = '' +    if [[ -e ".envrc" ]]; then +      source .envrc +    fi +    eval "$(starship init bash)" +  ''; +} +#+END_SRC + +** packages.nix +*** default + +#+HEADER: :NO-tangle ../packages.nix +#+BEGIN_SRC nix +{ pkgs ? import <nixpkgs> {} }: +with pkgs; [ +  <<ruby_current>> +  <<packages_project_relevant>> +  <<packages_build>> +] +#+END_SRC + +*** ruby 3.1 + +#+HEADER: :tangle ../nix/pkglst/packages_ruby_3_1.nix +#+BEGIN_SRC nix +{ pkgs ? import <nixpkgs> {} }: +with pkgs; [ +  <<ruby_version_3_1>> +  <<packages_project_relevant>> +  <<packages_build>> +] +#+END_SRC + +*** ruby 3.0 + +#+HEADER: :tangle ../nix/pkglst/packages_ruby_3_0.nix +#+BEGIN_SRC nix +{ pkgs ? import <nixpkgs> {} }: +with pkgs; [ +  <<ruby_version_3_0>> +  <<packages_project_relevant>> +  <<packages_build>> +] +#+END_SRC + +*** ruby legacy + +#+NAME: ruby_legacy +#+BEGIN_SRC nix +<<ruby_version_3_0>> +#+END_SRC + +*** ruby current + +#+NAME: ruby_current +#+BEGIN_SRC nix +<<ruby_version_3_1>> +#+END_SRC + +*** ruby next + +#+NAME: ruby_next +#+BEGIN_SRC nix +<<ruby_version_3_1>> +#+END_SRC + +*** ruby 3.0 - ruby_version_3_0 + +#+NAME: ruby_version_3_0 +#+BEGIN_SRC nix +ruby_3_0 +rubyPackages_3_0.rake +rubyPackages_3_0.sqlite3 +rubyPackages_3_0.thor +#+END_SRC + +*** ruby 3.1 - ruby_version_3_1 + +#+NAME: ruby_version_3_1 +#+BEGIN_SRC nix +ruby_3_1 +rubyPackages_3_1.rake +rubyPackages_3_1.sqlite3 +rubyPackages_3_1.thor +#+END_SRC + +*** nix related packages + +#+NAME: nix_packages +#+BEGIN_SRC nix +nix +bundler +bundix +#+END_SRC + +*** project relevant packages + +#+NAME: packages_project_relevant +#+BEGIN_SRC nix +sqlite +unzip +xz +zip +openssl +#texlive-combined-full +#+END_SRC + +*** project misc build packages + +#+NAME: packages_build +#+BEGIN_SRC nix +nixFlakes +validatePkgConfig +jq +git +#+END_SRC + +#+NAME: packages_extra +#+BEGIN_SRC nix +starship +#+END_SRC + +** variables +** spine version SET VERSION :version:set:project: + +#+NAME: sisu_version_set +#+BEGIN_SRC sh +0.7.3 +#+END_SRC | 
