-*- mode: org -*- #+TITLE: sisudoc spine (doc_reform) (project) environment #+DESCRIPTION: env envrc used by make & nix #+FILETAGS: :spine:build:tools: #+AUTHOR: Ralph Amissah #+EMAIL: [[mailto:ralph.amissah@gmail.com][ralph.amissah@gmail.com]] #+COPYRIGHT: Copyright (C) 2015 - 2025 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 - [[./doc-reform.org][doc-reform.org]] [[../org/][org/]] - [[./config_nix.org][config_nix.org]] - [[./config_make.org][config_make.org]] * envrc ** nixDevEnv envrc :envrc: #+HEADER: :tangle ../nixDevEnv.sh #+BEGIN_SRC shell if [ -f .envrc ]; then source_env_if_exists .envrc || source .envrc fi #+END_SRC ** envrc :envrc: #+NAME: envrc #+HEADER: :tangle ../.envrc #+BEGIN_SRC shell if [ -f .envrc-git-init ]; then source_env_if_exists .envrc-git-init || source .envrc-git-init fi 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 - https://github.com/nix-community/nix-direnv - source_url - direnv fetchurl "https://raw.githubusercontent.com/nix-community/nix-direnv/<>/direnvrc" "<>" - ${NixDirEnvVersion} #+HEADER: :tangle ../.envrc-nix #+BEGIN_SRC shell NIX_ENFORCE_PURITY=1 # - https://github.com/nix-community/nix-direnv NixDirEnvVersion="<>" NixDirEnvSHA="<>" 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 nixDevEnv.sh watch_file .envrc-local watch_file .envrc-nix PATH_add result/bin use flake . #use flake .#default echo ' • consider running: ❯❯ nix flake show ❯❯ nix flake update && nix flake check && nix flake show • for a dev shell (development environment): • nix develop ❯❯ nix develop ".#" --print-build-logs -c zsh • nix develop using nixpkgs ❯❯ nix develop ".#dsh-epub" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-html" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-i18n" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-latex-pdf" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-spine" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-sqlite" --print-build-logs -c zsh • nix develop using package overlays: (dmd, ldc, dub) ❯❯ nix develop ".#dsh" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-overlay-dmd" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-overlay-ldc" --print-build-logs -c zsh ❯❯ nix flake show • to build project: ❯❯ nix build --print-build-logs ❯❯ nix build ".#" --print-build-logs • to build project: • nix build using nixpkgs ❯❯ nix build ".#spine-nixpkgs-dmd" --print-build-logs ❯❯ nix build ".#spine-nixpkgs-ldc" --print-build-logs • nix build using package overlays: (dmd, ldc, dub, dtools) ❯❯ nix build ".#spine-overlay-dmd" --print-build-logs ❯❯ nix build ".#spine-overlay-ldc" --print-build-logs • to build using dub (on nix or otherwise): you need to be in sisudoc-spine to use source code tree directly. • for develop environment & build options ❯❯ nix flake update && nix flake check && nix flake show ❯❯ nix flake show • if on nix: build the sisudoc-spine using nix build commands above and run the result against the sample files here in the sisudoc-spine-samples dir (assuming the appropriate paths have been set in your .envrc-local) ❯❯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* ❯❯ ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-pdf --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* ' echo "• ❯❯ ${SpineBIN} -v --source --pod --epub --html --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* ❯❯ ${SpineBIN} -v --source --pod --latex --latex-init --epub --html --html-link-pdf --html-link-curate --html-link-markup --curate --output=${SpineOUT} ${SpinePOD}/* " #+END_SRC ** .envrc-git-init #+HEADER: :tangle ../.envrc-git-init #+HEADER: :noweb yes #+BEGIN_SRC shell if [[ ! -d ./.git ]]; then git init git add . fi #+END_SRC ** .envrc-local CHECK MODIFY - bespoke modify appropriately and generate if needed #+HEADER: :tangle ../.envrc-local_ #+HEADER: :noweb yes #+BEGIN_SRC shell export SpineBIN=./result/bin/spine # ❯❯ nix builds spine binary: #export SpineBIN=./result/bin/spine # ❯❯ if from ../sisudoc-spine on directory tree nix build #export SpineBIN=../sisudoc-spine/result/bin/spine # ❯❯ dub builds spine binary (name depends on build, check): #export SpineBIN=../sisudoc-spine/bin/spine #export SpineBIN=../sisudoc-spine/bin/spine-ldc #export SpineBIN=../sisudoc-spine/bin/spine-dmd # ❯❯ location of source files: export SpineDOC=. # ❯❯ location of source files pod: export SpinePOD=${SpineDOC}/markup/pod # ❯❯ sisudoc-spine output processing path: export SpineOUT=./OUTPUT_TEST_sisudocSpine # ❯❯ sisudoc-spine output processing path (web server e.g.): #export SpineOUT=/srv/www/spine # ❯❯ path configured for cgi search form: export SpineSearchActionLocal='http://localhost/spine_search' export SpineSearchActionRemote='https://sisudoc.org/spine_search' # ❯❯ cgi search form name: export SpineCGIform='spine_search' # ❯❯ search form db name: export SpineSQLdb='spine.search.db' # ❯❯ configuration cgi search form path: export SpineCGIbin=/var/www/cgi/cgi-bin # ❯❯ configuration db path: export SpineDBpath=/var/www/sqlite #export SpineDBpath=/srv/www/spine/sqlite #+END_SRC * versions GET ** direnv #+NAME: direnv_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./nix-develop-dlang-shared.org:direnv-version()>> #+END_SRC #+NAME: direnv_hash #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./nix-develop-dlang-shared.org:direnv-hash()>> #+END_SRC ** spine project VERSION :version:set:project: #+NAME: spine_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./sisudoc_spine_version_info_and_doc_header_including_copyright_and_license.org:spine_project_version()>> #+END_SRC ** dlang overlays - does not make sense to update versions here, unless you carry on careful syncing with provided dlang related overlays ... which should not be necessary, so they are available here but have been taken out of use; the latest available overlay is pulled *** ldc #+NAME: ldc_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./nix-develop-dlang-shared.org:ldc-version()>> #+END_SRC *** dmd #+NAME: dmd_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./nix-develop-dlang-shared.org:dmd-version()>> #+END_SRC *** dub #+NAME: dub_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./nix-develop-dlang-shared.org:dub-version()>> #+END_SRC *** dtools #+NAME: dtools_version #+HEADER: :noweb yes #+BEGIN_SRC emacs-lisp <<./nix-develop-dlang-shared.org:dtools-version()>> #+END_SRC * __END__