-*- 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-nixpkgs-dmd-dub" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh • nix develop using package overlays: (dmd-<>, ldc-<>, dub-<>) ❯❯ nix develop ".#dsh-overlay-dmd-dub" --print-build-logs -c zsh ❯❯ nix develop ".#dsh-overlay-ldc-dub" --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-<>) ❯❯ nix build ".#spine-overlay-dmd" --print-build-logs ❯❯ nix build ".#spine-overlay-ldc" --print-build-logs • to build using dub on nix (get dependencies by setting your development environment): ❯❯ nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh ❯❯ dub --verbose --compiler=dmd --config=dmd ❯❯ nix develop ".#dsh-nixpkgs-ldc-dub" --print-build-logs -c zsh ❯❯ dub --verbose --compiler=ldmd2 --config=ldmd2 • 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 SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') export SpineBIN=./result/bin/spine # ❯❯ nix builds spine binary: #export SpineBIN=./result/bin/spine # ❯❯ dub builds spine binary (name depends on build, check): #export SpineBIN=./bin/spine #export SpineBIN=./bin/spine-ldc #export SpineBIN=./bin/spine-dmd # ❯❯ location of source files: export SpineDOC=../sisudoc-spine-samples # ❯❯ 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 #export SpineOUTversioned=${SpineOUT}/${SpineVER} # ❯❯ 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 * SHARED versions ** 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 *** 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__