diff options
Diffstat (limited to 'org/config_nix.org')
| -rw-r--r-- | org/config_nix.org | 527 | 
1 files changed, 527 insertions, 0 deletions
| diff --git a/org/config_nix.org b/org/config_nix.org new file mode 100644 index 00000000..b7f3248e --- /dev/null +++ b/org/config_nix.org @@ -0,0 +1,527 @@ +-*- 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 +if [ -f .envrc-local ]; then +  source_env_if_exists .envrc-local || source .envrc-local +fi +if [ -f .envrc-nix ]; then +  source_env_if_exists .envrc-nix || source .envrc-nix +fi +#+END_SRC + +*** .envrc-nix + +#+HEADER: :tangle ../.envrc-nix +#+BEGIN_SRC sh +NIX_ENFORCE_PURITY=1 +# - https://github.com/nix-community/nix-direnv +#NixDirEnvSHA="sha256-0000000000000000000000000000000000000000000=" +#direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc +NixDirEnvVersion="2.4.0" +NixDirEnvSHA="sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=" +if ! has nix_direnv_version || ! nix_direnv_version ${NixDirEnvVersion}; then +  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "${NixDirEnvSHA}" +fi +watch_file flake.lock +watch_file flake.nix +watch_file shell.nix +watch_file makefile +watch_file .envrc +watch_file .envrc-local +watch_file .envrc-nix +nix_direnv_watch_file flake.nix +nix_direnv_watch_file shell.nix +nix_direnv_watch_file .envrc +nix_direnv_watch_file .envrc-local +nix_direnv_watch_file .envrc-nix +#nix flake update +#nix flake check +echo "" +PATH_add result/bin +nix flake show +#use flake . +#+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 + +#+BEGIN_SRC sh + 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/*" +#+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 = ./shell.nix; # ./.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_current>> +            sqlite +            jq +            git +          ]; +          inherit shellHook; +        }; +        dsh-epub = mkShell { +          name = "sisu dev shell for epub output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            <<ruby_current>> +            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 +            jq +            #git +          ]; +          inherit shellHook; +        }; +        dsh-html = mkShell { +          name = "sisu dev shell for html output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            <<ruby_current>> +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            jq +            #git +          ]; +          inherit shellHook; +        }; +        dsh-latex-pdf = mkShell { +          name = "sisu dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            <<ruby_current>> +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            source-sans-pro +            source-serif-pro +            source-code-pro +            texlive.combined.scheme-full +            noto-fonts +            noto-fonts-cjk-sans +            takao +            jq +            #git +          ]; +          inherit shellHook; +        }; +        dsh-sqlite = mkShell { +          name = "sisu dev shell for sqlite3 output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            <<ruby_current>> +            sqlite +            graphicsmagick +            zip +            unzip +            xz +            jq +            #git +          ]; +          inherit shellHook; +        }; +        dsh-i18n = mkShell { +          name = "sisu dev shell internationalization, po4a"; +          inherit shell; +          inherit devEnv; +          packages = [ +            <<ruby_current>> +            sqlite +            graphicsmagick +            perl538Packages.Po4a +            jq +            #git +          ]; +          inherit shellHook; +        }; +        #default = import ./shell.nix {inherit pkgs;}; +      }); +  }; +} +#+END_SRC + +** shell.nix TODO + +#+HEADER: :tangle ../shell.nix +#+HEADER: :shebang "#!/usr/bin/env -S nix-shell --impure\n#!nix-shell -i bash" +#+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 = '' +    ''; +  } +#+END_SRC +{ pkgs ? import <nixpkgs> {} }: +with pkgs; +mkShell { +  buildInputs = [ +    <<ruby_current>> +    sqlite +    graphicsmagick +    unzip +    xz +    zip +    openssl +    #texlive-combined-full +    nixFlakes +    validatePkgConfig +    nix-output-monitor +    nix-tree +    jq +    git +    #starship +  ]; +  shellHook = '' +  ''; +} +#+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.2 + +#+HEADER: :tangle-NO ../nix/pkglst/packages_ruby_3_2.nix +#+BEGIN_SRC nix +{ pkgs ? import <nixpkgs> {} }: +with pkgs; [ +  <<ruby_version_3_2>> +  <<packages_project_relevant>> +  <<packages_build>> +] +#+END_SRC + +*** ruby 3.1 + +#+HEADER: :tangle-NO ../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-NO ../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_1>> +#+END_SRC + +*** ruby current + +#+NAME: ruby_current +#+BEGIN_SRC nix +<<ruby_version_3_3>> +#+END_SRC + +*** ruby next + +#+NAME: ruby_next +#+BEGIN_SRC nix +<<ruby_version_3_3>> +#+END_SRC + +*** ruby 3.3 - ruby_version_3_3 + +#+NAME: ruby_version_3_3 +#+BEGIN_SRC nix +ruby_3_3 +rubyPackages_3_3.rake +rubyPackages_3_3.sqlite3 +rubyPackages_3_3.thor +#+END_SRC + +*** ruby 3.2 - ruby_version_3_2 + +#+NAME: ruby_version_3_2 +#+BEGIN_SRC nix +ruby_3_2 +rubyPackages_3_2.rake +rubyPackages_3_2.sqlite3 +rubyPackages_3_2.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 + +*** 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 + +*** 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 +graphicsmagick +unzip +xz +zip +openssl +#texlive-combined-full +#+END_SRC + +*** project misc build packages + +#+NAME: packages_build +#+BEGIN_SRC nix +nixFlakes +validatePkgConfig +nix-output-monitor +nix-tree +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 | 
