diff options
author | Ralph Amissah <ralph.amissah@gmail.com> | 2023-01-30 21:46:59 -0500 |
---|---|---|
committer | Ralph Amissah <ralph.amissah@gmail.com> | 2023-02-08 16:31:55 -0500 |
commit | 615892da80afb671040c8be5d89430ae2fafe180 (patch) | |
tree | 8926f3a0f91bdbe9482b1337e849cbd42c980e20 | |
parent | version & changelog, open commit window (diff) |
nix flake, install & devShells etc.
-rw-r--r-- | .envrc | 19 | ||||
-rw-r--r-- | .gitattributes | 4 | ||||
-rw-r--r-- | .gitignore | 17 | ||||
-rw-r--r-- | flake.lock | 43 | ||||
-rw-r--r-- | flake.nix | 253 | ||||
-rw-r--r-- | org/config_build.org (renamed from org/sisu_build.org) | 238 | ||||
-rw-r--r-- | org/config_git.org | 119 | ||||
-rw-r--r-- | org/config_nix.org | 481 | ||||
-rw-r--r-- | org/sisu-bin.org | 2 |
9 files changed, 927 insertions, 249 deletions
@@ -1,8 +1,15 @@ -NIX_ENFORCE_PURITY=0 -if ! has nix_direnv_version || ! nix_direnv_version 1.4.0; then -# https://github.com/nix-community/nix-direnv - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/1.4.0/direnvrc" "sha256-4XfVDjv75eHMWN4G725VW7BoOV4Vl3vAabK4YXIfPyE=" +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 -if [ -e .env/local ]; then - source_env_if_exists .env/local || source .env/local +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 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..0c60eb5d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +/org export-ignore +.gitattributes export-ignore +tangle export-ignore +flake.lock export-ignore @@ -1,5 +1,11 @@ # git ls-files --others --exclude-from=.git/info/exclude +# git check-ignore -v flake.lock +# git clean -ix +# find . -name "*_" | xargs rm -rf * +!nix/** +!*.nix +!flake.lock !README !COPYRIGHT !CHANGELOG @@ -18,13 +24,11 @@ !conf/** !*.json !*.org +!org/ +!org/*.org !*.rb !*.txt !*.yml -!*.nix -!nix/ -!nix/** -!org/ !bin !bin/sisu !bin/sisu-* @@ -40,8 +44,10 @@ !data/sisu/** !*.sst !*.ssm +!*.ssi !**/*.sst !**/*.ssm +!**/*.ssi !debian/ !debian/changelog !debian/compat @@ -74,4 +80,7 @@ *_ .* !.gitignore +!.gitattributes !.envrc +!.env +!.env/** diff --git a/flake.lock b/flake.lock new file mode 100644 index 00000000..a8de0b2a --- /dev/null +++ b/flake.lock @@ -0,0 +1,43 @@ +{ + "nodes": { + "flake-utils": { + "locked": { + "lastModified": 1667395993, + "narHash": "sha256-nuEHfE/LcWyuSWnS8t12N1wc105Qtau+/OdUAjtQ0rA=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "5aed5285a952e0b949eb3ba02c12fa4fcfef535f", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1675698036, + "narHash": "sha256-BgsQkQewdlQi8gapJN4phpxkI/FCE/2sORBaFcYbp/A=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "1046c7b92e908a1202c0f1ba3fc21d19e1cf1b62", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + } + }, + "root": "root", + "version": 7 +} 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; + }; + }); + }; +} diff --git a/org/sisu_build.org b/org/config_build.org index 37463bff..def24caf 100644 --- a/org/sisu_build.org +++ b/org/config_build.org @@ -2517,243 +2517,6 @@ WOK end #+END_SRC -* nix - -** envrc - -#+HEADER: :tangle ../.envrc -#+BEGIN_SRC sh -NIX_ENFORCE_PURITY=0 -if ! has nix_direnv_version || ! nix_direnv_version 1.4.0; then -# https://github.com/nix-community/nix-direnv - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/1.4.0/direnvrc" "sha256-4XfVDjv75eHMWN4G725VW7BoOV4Vl3vAabK4YXIfPyE=" -fi -if [ -e .env/local ]; then - source_env_if_exists .env/local || source .env/local -fi -#+END_SRC - -#+HEADER: :tangle ../.envrc-local_ -#+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 SisuSRC=/grotto-ra/repo/git.repo/projects/project-sisu/sisu -export SisuDOC=/grotto-ra/repo/git.repo/projects/project-sisu/susu-markup/sisu-markup-samples/data/samples/current -export SisuOUT=/tmp/sisu/$SisuVER/www -export SisuOUTstatic=/var/www - -export RUBYLIB+=`pwd`/lib -#+END_SRC - -** shell.nix - -*** 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 - -#+BEGIN_SRC nix -#!/usr/bin/env -S nix-shell --pure -{ pkgs ? import <nixpkgs> {} }: -with pkgs; -mkShell { - buildInputs = [ - ruby_3_1 - rubyPackages_3_1.rake - rubyPackages_3_1.sqlite3 - rubyPackages_3_1.thor - sqlite - unzip - xz - zip - openssl - #texlive-combined-full - nixFlakes - validatePkgConfig - jq - git - ### candy - starship - ]; - shellHook = '' - if [[ -e ".envrc" ]]; then - source .envrc - fi - eval "$(starship init bash)" - ''; -} -#+END_SRC - - -#+HEADER: :NO-tangle ../shell.nix -#+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> {} }: -pkgs.mkShell { - buildInputs = [ - (import ./packages.nix { inherit pkgs; }) - ]; -} -#+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 2.6 - -#+HEADER: :tangle ../nix/pkglst/packages_ruby_2_6.nix -#+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> {} }: -with pkgs; [ - <<ruby_version_2_6>> - <<packages_project_relevant>> - <<packages_build>> -] -#+END_SRC - -*** ruby legacy - -#+NAME: ruby_legacy -#+BEGIN_SRC nix -<<ruby_version_2_6>> -#+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 2.6 - ruby_version_2_6 - -#+NAME: ruby_version_2_6 -#+BEGIN_SRC nix -ruby_2_6 -rubyPackages_2_6.rake -rubyPackages_2_6.sqlite3 -rubyPackages_2_6.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 - -*** 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 - * descriptions ** README @@ -5331,7 +5094,6 @@ Configure substitution in _sisu/sisu_document_make [https://www.sisudoc.org/] https://www.sisudoc.org/ - https://www.jus.uio.no/sisu/ git clone git://git.sisudoc.org/software/sisu --branch upstream https://git.sisudoc.org/sisu/ diff --git a/org/config_git.org b/org/config_git.org new file mode 100644 index 00000000..88eae7f5 --- /dev/null +++ b/org/config_git.org @@ -0,0 +1,119 @@ +-*- mode: org -*- +#+TITLE: configuration git +#+DESCRIPTION: documents - structuring, various output representations & search +#+FILETAGS: :sisu:configure:git: +#+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 + +* git +** .gitignore :gitignore: + +#+HEADER: :tangle "../.gitignore" +#+BEGIN_SRC sh +# git ls-files --others --exclude-from=.git/info/exclude +# git check-ignore -v flake.lock +# git clean -ix +# find . -name "*_" | xargs rm -rf +,* +!nix/** +!*.nix +!flake.lock +!README +!COPYRIGHT +!CHANGELOG +!CHANGELOGS/ +!CHANGELOGS/CHANGELOG +!CHANGELOGS/CHANGELOG_v* +!makefile +!Rakefile +!Rantfile +!qi +!setup/ +!setup/* +!version +!version.txt +!conf/ +!conf/** +!*.json +!*.org +!org/ +!org/*.org +!*.rb +!*.txt +!*.yml +!bin +!bin/sisu +!bin/sisu-* +!bin/sisugem +!lib +!lib/** +!man +!man/** +!data +!data/doc +!data/doc/** +!data/sisu +!data/sisu/** +!*.sst +!*.ssm +!*.ssi +!**/*.sst +!**/*.ssm +!**/*.ssi +!debian/ +!debian/changelog +!debian/compat +!debian/control +!debian/copyright +!debian/gbp.conf +!debian/sisu*.manpages +!debian/sisu*.install +!debian/manpages/ +!debian/manpages/sisu*.7 +!debian/rules +!debian/sisu\.* +!debian/source/ +!debian/source/format +!debian/watch +,*~ +,*_ +\#* +,*.\#* +,*.tmp +,*_tmp +,*.gem +,*.gemspec +!sisu.gemspec +,*_.rb +,*.rb_ +0???-*.patch +,*.gz +,*.xz +,*_ +.* +!.gitignore +!.gitattributes +!.envrc +!.env +!.env/** +#+END_SRC + +** .gitattributes :gitattributes: + +#+HEADER: :tangle "../.gitattributes" +#+BEGIN_SRC sh +/org export-ignore +.gitattributes export-ignore +tangle export-ignore +flake.lock export-ignore +#+END_SRC 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 diff --git a/org/sisu-bin.org b/org/sisu-bin.org index 1ee0d567..52ad8ec7 100644 --- a/org/sisu-bin.org +++ b/org/sisu-bin.org @@ -26,7 +26,7 @@ <<sisu_project_version_current_set>> #+END_SRC -#+NAME: sisu_version_current_set +#+NAME: sisu_project_version_current_set #+BEGIN_SRC yaml --- :project: SiSU |