-*- mode: org -*-
#+TITLE:       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 - 2024 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 sh
if [ -f .envrc ]; then
  source_env_if_exists .envrc || source .envrc
fi
#+END_SRC

** envrc :envrc:

#+NAME: envrc
#+HEADER: :tangle ../.envrc
#+BEGIN_SRC sh
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/<<direnv-version>>/direnvrc" "<<direnv-sha>>"
    - ${NixDirEnvVersion}

#+HEADER: :tangle ../.envrc-nix
#+BEGIN_SRC sh
NIX_ENFORCE_PURITY=1
# - https://github.com/nix-community/nix-direnv
NixDirEnvVersion="<<direnv-version>>"
NixDirEnvSHA="<<direnv-sha>>"
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:
  ❯❯ nix develop
  ❯❯ nix develop ".#" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-nixpkgs-dmd-dub" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-overlay-dmd-dub" --print-build-logs -c zsh
  ❯❯ nix develop ".#dsh-nixpkgs-ldc-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
  ❯❯ nix build ".#spine-nixpkgs-dmd" --print-build-logs
  ❯❯ nix build ".#spine-overlay-dmd" --print-build-logs
  ❯❯ nix build ".#spine-nixpkgs-ldc" --print-build-logs
  ❯❯ nix build ".#spine-overlay-ldc" --print-build-logs
  - (see nix other/additional build options):
    ❯❯ nix flake show
'
#+END_SRC

*** 3.0.0

#+NAME: direnv-version
#+BEGIN_SRC sh
3.0.0
#+END_SRC

#+NAME: direnv-sha
#+BEGIN_SRC sh
sha256-21TMnI2xWX7HkSTjFFri2UaohXVj854mgvWapWrxRXg=
#+END_SRC

*** 2.4.0

#+BEGIN_SRC sh
2.4.0
#+END_SRC

#+BEGIN_SRC sh
sha256-XQzUAvL6pysIJnRJyR7uVpmUSZfc7LSgWQwq/4mBr1U=
#+END_SRC

#+BEGIN_SRC sh
2.3.0
#+END_SRC

#+BEGIN_SRC sh
sha256-Dmd+j63L84wuzgyjITIfSxSD57Tx7v51DMxVZOsiUD8=
#+END_SRC

#+NAME: direnv-sha_
#+BEGIN_SRC sh
sha256-0000000000000000000000000000000000000000000=
#+END_SRC

#+BEGIN_SRC sh
- https://github.com/nix-community/nix-direnv
NixDirEnvSHA="sha256-0000000000000000000000000000000000000000000="
direnv fetchurl https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc
#+END_SRC

** .envrc-git-init

#+HEADER: :tangle ../.envrc-git-init
#+HEADER: :noweb yes
#+BEGIN_SRC sh
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 sh
export DFLAGS="-O2 -inline -boundscheck=on -color=on"
export SpineVER=$(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g')
export SpineBIN=result/bin
export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine
export SpineDOC=~/grotto/repo/git.repo/projects/project-spine/doc-reform-markup/spine-markup-samples
export SpinePOD=${SpineDOC}/markup/pod
export SpineOUT=/srv/www/spine
export SpineOUTversioned=/srv/www/spine/${SpineVER}
export SpineSearchActionLocal='http://localhost/spine_search'
export SpineSearchActionRemote='https://sisudoc.org/spine_search'
export SpineCGIform='spine_search'
export SpineSQLdb='spine.search.db'
export SpineCGIbin=/var/www/cgi/cgi-bin
export SpineDBpath=/var/www/sqlite
#export SpineDBpath=/srv/www/spine/sqlite
#+END_SRC

#+HEADER: :tangle-NO ../.envrc-local
#+HEADER: :noweb yes
#+BEGIN_SRC sh
if [[ ! -d ./.git ]]; then
  git init
  git add .
fi
echo '
  .envrc-local echo ❯❯

  ❯❯ nix flake update && nix flake check --show-trace && nix flake show && nix develop ".#devShell" -c $SHELL

  ❯❯ nix develop
  ❯❯ nix develop -c $SHELL
  ❯❯ nix develop ".#dsh-overlay-ldc" --print-build-logs

  ❯❯ nix build
  ❯❯ nix build ".#default" --print-build-logs
'
#+END_SRC

#+BEGIN_SRC sh
#export NIX_PATH=/nix/var/nix/profiles/per-user/root/channels/nixos
#export NIX_PATH=/srv/nix/nixpkgs
#export NIX_PATH=nixpkgs=/srv/nix/nixpkgs
#+END_SRC