diff options
Diffstat (limited to 'org')
-rw-r--r-- | org/config_env.org | 108 | ||||
-rw-r--r-- | org/config_git.org | 3 | ||||
-rw-r--r-- | org/config_make.org | 131 | ||||
-rw-r--r-- | org/config_nix.org | 107 |
4 files changed, 208 insertions, 141 deletions
diff --git a/org/config_env.org b/org/config_env.org new file mode 100644 index 0000000..b9f7264 --- /dev/null +++ b/org/config_env.org @@ -0,0 +1,108 @@ +-*- 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 - 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 + +- [[./doc-reform.org][doc-reform.org]] [[../org/][org/]] +- [[./config_nix.org][config_nix.org]] +- [[./config_make.org][config_make.org]] + +* envrc +** envrc :envrc: + +#+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 + +- https://github.com/nix-community/nix-direnv + - source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-0000000000000000000000000000000000000000000=" + +#+HEADER: :tangle ../.envrc-nix +#+BEGIN_SRC sh +NIX_ENFORCE_PURITY=1 +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 makefile +watch_file .envrc-local +watch_file .envrc-nix +PATH_add result/bin +nix flake update +nix flake check +nix flake show +use flake . +#use flake .#default +#+END_SRC + +#+NAME: direnv-version +#+BEGIN_SRC sh +2.3.0 +#+END_SRC + +#+NAME: direnv-sha +#+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-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 SpineBIN=result/bin +export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine +export SpineDOC=. +export SpinePOD=${SpineDOC}/markup/pod +export SpineOUT=/srv/www/spine +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 + +#+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 diff --git a/org/config_git.org b/org/config_git.org index dfc7589..b204063 100644 --- a/org/config_git.org +++ b/org/config_git.org @@ -15,7 +15,7 @@ #+PROPERTY: header-args+ :mkdirp yes #+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t -* spine markup samples +* git - spine markup samples ** .gitignore :gitignore: #+HEADER: :tangle "../.gitignore" @@ -32,6 +32,7 @@ !*.nix !flake.lock !.envrc +!.envrc-nix !.env !.env/** !README diff --git a/org/config_make.org b/org/config_make.org index 7f952c3..1cd31cd 100644 --- a/org/config_make.org +++ b/org/config_make.org @@ -13,12 +13,17 @@ #+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_env.org][config_env.org]] + +* make makefile #+HEADER: :tangle ../makefile #+HEADER: :noweb yes #+BEGIN_SRC makefile +include .envrc-local PROG_VER_GIT :=$(shell echo `git describe --long --tags | sed -e "s/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g"`) #PROG_VER_DECLARED :=$(shell echo `cat ./views/version.txt | grep --color=never "enum" | sed 's/.\+(\([0-9]\+\),[ \t]\+\([0-9]\+\),[ \t]\+\([0-9]\+\)[ \t]*).\+/\1.\2.\3/g'`) DUB=dub @@ -49,13 +54,15 @@ $(SiSU_MARKUP_SAMPLES_FIND_PODS) | xargs # find data/sisudir/media/text -name *.ss[tm] | sort | xargs # Date := `date "+%Y%m%d"` -SpineBIN := "$${SpineBIN}" # './result/bin' -SpineOUT := "$${SpineOUT}" # '/srv/www/spine' -SpinePOD := "$${SpinePOD}" # '~/grotto/repo/git.repo/projects/doc-reform/data/markup/spine-samples/markup/pod' -SpineSearchActionLocal := 'http://localhost/spine_search' -SpineSearchActionRemote := 'https://sisudoc.org/spine_search' -SpineCGIform := 'spine_search' -SpineSQLdb := 'spine.search.db' +#SpineBIN := $(SpineBIN) # './result/bin' +#SpineOUT := $(SpineOUT) # '/srv/www/spine' +#SpinePOD := $(SpinePOD) # 'markup/pod' +#SpineSearchActionLocal := $(SpineSearchActionLocal) # 'http://localhost/spine_search' +#SpineSearchActionRemote := $(SpineSearchActionRemote) # 'https://sisudoc.org/spine_search' +#SpineCGIform := $(SpineCGIform) # 'spine_search' +#SpineSQLdb := $(SpineSQLdb) # 'spine.search.db' +#SpineCGIbin := $(SpineCGIbin) # '/var/www/cgi/cgi-bin' +#SpineDBpath := "$(SpineDBpath)" # '/var/www/sqlite' hwd := `pwd` gwd := `pwd` + "/src/ext_depends" deps := "`ls -gx './src/ext_depends'`" @@ -81,8 +88,7 @@ nix-devshell: nix flake update && nix flake check --show-trace && nix flake show && nix develop ".#devShell" # nix build -build: - nix-build +build: nix-build-default nix-build-default: nix build ".#default" --print-build-logs @@ -108,58 +114,80 @@ org-tangle: org-tangle *.org; \ cd - +# output local +out-local: + $(SpineBIN)/spine -v \ + --latex --latex-init \ + --epub --html \ + --html-link-search --html-link-pdf --html-link-curate --html-link-markup \ + --cgi-sqlite-search-filename=$(SpineCGIform) --cgi-url-action=$(SpineSearchActionLocal) \ + --sqlite-update --sqlite-db-filename=$(SpineSQLdb) \ + --curate \ + --output=$(SpineOUT) $(SpinePOD)/* + +# output remote +out-remote: + $(SpineBIN)/spine -v \ + --latex --latex-init \ + --epub --html \ + --html-link-search --html-link-pdf --html-link-curate --html-link-markup \ + --cgi-sqlite-search-filename=$(SpineCGIform) --cgi-url-action=$(SpineSearchActionRemote) \ + --sqlite-update --sqlite-db-filename="$(SpineSQLdb)" \ + --curate \ + --output=$(SpineOUT) $(SpinePOD)/* + # epub output out-epub: - $${SpineBIN}/spine -v \ - --epub --output=$${SpineOUT} $${SpinePOD}/* + $(SpineBIN)/spine -v \ + --epub --output=$(SpineOUT) $(SpinePOD)/* # html output with local search links out-html: - $${SpineBIN}/spine -v --generated-by \ + $(SpineBIN)/spine -v --generated-by \ --curate \ - --html --html-link-search --html-link-curate --cgi-url-action="$${SpineSearchActionLocal}" \ - --output=$${SpineOUT} $${SpinePOD}/* + --html --html-link-search --html-link-curate --cgi-url-action=$(SpineSearchActionLocal) \ + --output=$(SpineOUT) $(SpinePOD)/* # latex output out-latex: - $${SpineBIN}/spine -v \ + $(SpineBIN)/spine -v \ --latex \ - --output=$${SpineOUT} $${SpinePOD}/* + --output=$(SpineOUT) $(SpinePOD)/* # odf output out-odf: - $${SpineBIN}/spine -v \ + $(SpineBIN)/spine -v \ --odf \ - --output=$${SpineOUT} $${SpinePOD}/* + --output=$(SpineOUT) $(SpinePOD)/* # sqlite output out-sqlite: - $${SpineBIN}/spine -v \ - --sqlite-update --sqlite-db-filename="$${SpineSQLdb}" \ - --output=$${SpineOUT} $${SpinePOD}/* + $(SpineBIN)/spine -v \ + --sqlite-update --sqlite-db-filename=$(SpineSQLdb) \ + --output=$(SpineOUT) $(SpinePOD)/* # generate markup sample output with local search links output-samples-local: - $${SpineBIN}/spine -v \ + $(SpineBIN)/spine -v \ --latex --latex-init \ --epub \ --html --html-link-search --html-link-pdf --html-link-curate --html-link-markup \ - --cgi-sqlite-search-filename="$${SpineCGIform}" --cgi-url-action="$${SpineSearchActionLocal}" \ + --cgi-sqlite-search-filename=$(SpineCGIform) --cgi-url-action=$(SpineSearchActionLocal) \ --curate \ - --sqlite-update --sqlite-db-filename="$${SpineSQLdb}" \ - --output=$${SpineOUT} $${SpinePOD}/* + --sqlite-update --sqlite-db-filename="$(SpineSQLdb)" \ + --output=$(SpineOUT) $(SpinePOD)/* # generate markup sample output with remote search links output-samples-remote: - $${SpineBIN}/spine -v \ + $(SpineBIN)/spine -v \ --generated-by \ --latex --latex-init \ --epub \ --html --html-link-search --html-link-pdf --html-link-curate \ - --cgi-sqlite-search-filename="$${SpineCGIform}" --cgi-url-action="$${SpineSearchActionRemote}" \ + --cgi-sqlite-search-filename=$(SpineCGIform) --cgi-url-action=$(SpineSearchActionRemote) \ --curate \ - --sqlite-update --sqlite-db-filename="$${SpineSQLdb}" \ - --output=$${SpineOUT} $${SpinePOD}/* + --sqlite-update --sqlite-db-filename=$(SpineSQLdb) \ + --output=$(SpineOUT) $(SpinePOD)/* # generate markup sample output with local search links output-samples: output-samples-local @@ -208,28 +236,28 @@ org-e: # show markup pod source selections markup: - ls -1 --color=always $${SpinePOD} - ls -1 -d --color=always $${SpinePOD}/*/ + ls -1 --color=always $(SpinePOD) + ls -1 -d --color=always $(SpinePOD)/*/ # show markup pod source tree markup-pod-tree: - exa -alT --git -I'.git|.dub|*_' --color=always -L5 $${SpinePOD} | less -R + exa -alT --git -I'.git|.dub|*_' --color=always -L5 $(SpinePOD) | less -R # show markup pod source tree tree-src-search-cgi: - exa -alT --git -I'*_' --color=always -L5 $${SpineSearchCGI}/src $${SpineSearchCGI}/views | less -R + exa -alT --git -I'*_' --color=always -L5 $(SpineSearchCGI)/src $(SpineSearchCGI)/views | less -R # show markup files markup-files: - cd $${SpinePOD}; \ + cd $(SpinePOD); \ find . -type f -iname "*sst"; \ cd -; \ - echo $${SpinePOD} -# find $${SpinePOD}/. -type f -iname "*sst" + echo $(SpinePOD) +# find $(SpinePOD)/. -type f -iname "*sst" # preview markup files vim markup-files-vi: - cd $${SpinePOD}; \ + cd $(SpinePOD); \ fd --max-depth 5 --type file -g "*.ss?" | sort \ | fzf \ --preview='bat --color "always" {}' \ @@ -239,7 +267,7 @@ markup-files-vi: # preview markup files emacs markup-files-e: - cd $${SpinePOD}; \ + cd $(SpinePOD); \ fd --max-depth 5 --type file -g "*.ss?" | sort \ | fzf \ --preview='bat --color "always" {}' \ @@ -259,28 +287,28 @@ markup-samples: markup-pod-samples markup-file-samples # markup samples pod manifests markup-pod-samples: - echo "$${SpinePOD}"; \ - find $${SpinePOD} -name pod.manifest | sort + echo $(SpinePOD); \ + find $(SpinePOD) -name pod.manifest | sort -#find $${SpinePOD} -name pod.manifest | sed -E 's:.+?(([/][^/]+){2})$:\1:' +#find $(SpinePOD) -name pod.manifest | sed -E 's:.+?(([/][^/]+){2})$:\1:' # markup samples sst files markup-file-samples: - echo "$${SpinePOD}"; \ - find $${SpinePOD} -name *.ss[tm] | sort + echo $(SpinePOD); \ + find $(SpinePOD) -name *.ss[tm] | sort # archive spine output (www) spineWWWarchive: cd /srv/www ; \ - rm spine_output.$${Date}.tar.bz2 ; \ - sudo tar --exclude='./spine/latex' --exclude='./spine/pod' --exclude='./spine/*_' -cjf spine_output.$${Date}.tar.bz2 ./spine ; \ + rm spine_output.$(Date).tar.bz2 ; \ + sudo tar --exclude='./spine/latex' --exclude='./spine/pod' --exclude='./spine/*_' -cjf spine_output.$(Date).tar.bz2 ./spine ; \ cd - # rsync archived spine output to Linode spineWWWrsyncLinode: - rsync -v /srv/www/spine_output.$${Date}.tar.bz2 linode:./stage/. ; \ + rsync -v /srv/www/spine_output.$(Date).tar.bz2 linode:./stage/. ; \ rsync -v /var/www/sqlite/spine.search.db linode:./stage/. ; \ - echo "tar -xf ../spine_output.$${Date}.tar.bz2" + echo "tar -xf ../spine_output.$(Date).tar.bz2" # get project external dependencies depends_get: @@ -536,13 +564,6 @@ clean_tangle_build: clean tangle build tangle_build: tangle build -build: $(PRG_SRCDIR)/$(PRG_SRC) - $(DC) $(DC_FLAGS) \ - $(DC_FLAG_BINOF)$(PRG_BINDIR)/$(PRG_BIN) \ - $(PRG_SRCDIR)/$(PRG_SRC) - -rebuild: $(PRG_SRCDIR)/$(PRG_SRC) $(PRG_BINDIR)/$(PRG_BIN).o clean build - makefile_new: make -k tangle_maker @@ -798,7 +819,7 @@ version_tag: echo "DRV=<<spine_version_set>>; git tag -f doc-reform-markup-samples_v$$\{DRV} -m\"doc-reform markup-samples spine-$$\{DRV}\" HEAD"; \ echo "git tag -f doc-reform-markup-samples_v<<spine_version_set>> -m\"doc-reform markup-samples spine-<<spine_version_set>>\" HEAD"; -.PHONY : all build rebuild release \ +.PHONY : all build release \ distclean init \ tangle gitsnapshot #+END_SRC diff --git a/org/config_nix.org b/org/config_nix.org index 7153926..7cfd1a5 100644 --- a/org/config_nix.org +++ b/org/config_nix.org @@ -15,58 +15,11 @@ #+PROPERTY: header-args+ :mkdirp yes #+OPTIONS: H:3 num:nil toc:t \n:t ::t |:t ^:nil -:t f:t *:t -* nix :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 -NIX_ENFORCE_PURITY=1 -# - https://github.com/nix-community/nix-direnv -NixDirEnvVersion="2.2.1" -NixDirEnvSHA="sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" -#NixDirEnvSHAget="sha256-0000000000000000000000000000000000000000000=" -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 makefile -if [ -f .envrc-local ]; then - source_env_if_exists .envrc-local || source .envrc-local -fi -PATH_add result/bin -use flake . -#use flake .#default -#+END_SRC - -*** .envrc-local CHECK MODIFY +- [[./doc-reform.org][doc-reform.org]] [[../org/][org/]] +- [[./config_env.org][config_env.org]] -- 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=/srv/nix/nixpkgs -#export NIX_PATH=nixpkgs=/srv/nix/nixpkgs -export DFLAGS="-O2 -inline -boundscheck=on -color=on" -#export SpineBIN=result/bin -export SpinePROJ=~/grotto/repo/git.repo/projects/doc-reform/code/software/spine -export SpineDOC=. -export SpineOUT=/srv/www/spine -export SpineDBpath=/var/www/sqlite -#export SpineDBpath=/srv/www/spine/sqlite -export SpineCGIbin=/var/www/cgi/cgi-bin -export SpineSearchActionLocal='http://localhost/spine_search' -export SpineSearchActionRemote='https://sisudoc.org/spine_search' -export SpineCGIform='spine_search' -export SpineSQLdb='spine.search.db' -#+END_SRC +* nix :nix: ** flake.nix :flake: #+HEADER: :tangle ../flake.nix @@ -77,9 +30,11 @@ export SpineSQLdb='spine.search.db' inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; flake-utils.url = "github:numtide/flake-utils"; - spine.url = "<<spine_git_file_path_url>>"; - spine.inputs.nixpkgs.follows = "nixpkgs"; - spine.flake = true; + spine = { + url = "git+file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine"; + inputs.nixpkgs.follows = "nixpkgs"; + flake = true; + }; }; outputs = { self, @@ -114,28 +69,7 @@ export SpineSQLdb='spine.search.db' shellHook = '' export DFLAGS="-O2 -inline -boundscheck=on -color=on" export Date=`date "+%Y%m%d"` - ### set local values in .envrc-local (or modify here if you must) - # 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 SpineOUT=/srv/www/spine - export SpineDBpath=/var/www/sqlite - # export SpineDBpath=/srv/www/spine/sqlite - export SpineSRC=$SpinePROJ/src - export SpineBIN=$SpinePROJ/result/bin - export SpinePOD=$SpineDOC/markup/pod - export SpineSearchActionLocal='http://localhost/spine_search' - export SpineSearchActionRemote='https://sisudoc.org/spine_search' - export SpineCGIform='spine_search' - export SpineSQLdb='spine.search.db' - export spineNixHelp="cat ./.env/nix-commands" - export spineTest="nix shell .#default --print-build-logs --command spine --very-verbose --epub --html --html-link-search --html-link-curate --curate --output=\"\$SpineOUT\" $SpinePOD/*" - export spineHtml="spine --very-verbose --html --html-link-search --html-link-curate --curate --sqlite-update --sqlite-db-filename=\"spine.search.db\" --cgi-sqlite-search-filename=\"spine_search\" --sqlite-db-path=\"\$SpineDBpath\" --output=\"\$SpineOUT\" $SpinePOD/*" - export spineEpub="spine --very-verbose --epub --output=\"\$SpineOUT\" $SpinePOD/*" - export spineLatex="spine --very-verbose --latex --output=\"\$SpineOUT\" $SpinePOD/*" - export spinePdf="spine --very-verbose --pdf --output=\"\$SpineOUT\" $SpinePOD/*" - export spineSqliteCreateDB="spine --very-verbose --sqlite-db-recreate --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\"" - export spineSqlite="spine --very-verbose --sqlite-discrete --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" - #export spineSqlite="spine --very-verbose --sqlite-update --sqlite-db-path=\"$SpineDBpath\" --sqlite-db-filename=\"spine.search.db\" --output=\"\$SpineOUT\" $SpinePOD/*" + ## set local values in .envrc-local (or here if you must) ''; in with pkgs; { @@ -148,7 +82,7 @@ export SpineSQLdb='spine.search.db' packages = [ sqlite dub - dmd + #dmd ldc gnumake ]; @@ -160,7 +94,7 @@ export SpineSQLdb='spine.search.db' inherit devEnv; packages = [ dub - dmd + #dmd ldc gnumake sqlite @@ -187,7 +121,7 @@ export SpineSQLdb='spine.search.db' inherit devEnv; packages = [ dub - dmd + #dmd ldc gnumake sqlite @@ -200,7 +134,7 @@ export SpineSQLdb='spine.search.db' inherit devEnv; packages = [ dub - dmd + #dmd ldc gnumake sqlite @@ -217,7 +151,7 @@ export SpineSQLdb='spine.search.db' inherit devEnv; packages = [ dub - dmd + #dmd ldc gnumake sqlite @@ -230,7 +164,7 @@ export SpineSQLdb='spine.search.db' inherit devEnv; packages = [ dub - dmd + #dmd ldc gnumake sqlite @@ -316,7 +250,13 @@ devShells = forAllSystems (system: let pkgs = nixpkgsFor.${system}; in { default = pkgs.mkShell { - buildInputs = with pkgs; [ git dub dmd ldc sqlite ]; + buildInputs = with pkgs; [ + git + dub + #dmd + ldc + sqlite + ]; }; }); #+END_SRC @@ -453,9 +393,6 @@ with pkgs; # perl534Packages.Po4a ]; shellHook = '' - nix flake update - nix flake check - nix flake show echo ' shell.nix echo ❯❯ |