diff options
| -rw-r--r-- | .envrc | 15 | ||||
| -rwxr-xr-x | default.nix | 2 | ||||
| -rw-r--r-- | derivation.nix | 193 | ||||
| -rw-r--r-- | devenv.nix | 85 | ||||
| -rw-r--r-- | flake.lock | 61 | ||||
| -rw-r--r-- | flake.nix | 300 | ||||
| -rw-r--r-- | org/config_nix.org | 802 | ||||
| -rwxr-xr-x | shell.nix | 128 | 
8 files changed, 852 insertions, 734 deletions
| @@ -1,16 +1,17 @@ -use flake . -#use flake .#default  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" "sha256-0000000000000000000000000000000000000000000=" -  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +  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 +#if [ -f .envrc-local ]; then +#  source_env_if_exists .envrc-local || source .envrc-local +#fi  PATH_add result/bin +use flake . +#use flake .#default diff --git a/default.nix b/default.nix index f00ab4c..922b291 100755 --- a/default.nix +++ b/default.nix @@ -1,3 +1,3 @@  #!/usr/bin/env -S nix-build -{ pkgs ? import <nixpkgs> {} }: +{pkgs ? import <nixpkgs> {}}:  pkgs.callPackage ./devenv.nix {} diff --git a/derivation.nix b/derivation.nix index 7c8f816..c59ee23 100644 --- a/derivation.nix +++ b/derivation.nix @@ -1,107 +1,114 @@ -{ pkgs ? import <nixpkgs> {}, +{ +  pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv,    lib ? pkgs.lib,    ldc ? null,    dcompiler ? pkgs.ldc, -  dub ? pkgs.dub +  dub ? pkgs.dub,  }:  assert dcompiler != null;  with ( -  with lib; -  let -    filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( # filter function to remove the .dub package folder from src -      type == "directory" && baseName == ".dub" -    ); +  with lib; let +    filterDub = name: type: let +      baseName = baseNameOf (toString name); +    in +      ! ( # filter function to remove the .dub package folder from src +        type == "directory" && baseName == ".dub" +      );      targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}";      # remove reference to build tools and library sources -    disallowedReferences = deps: [ dcompiler dub ]; +    disallowedReferences = deps: [dcompiler dub];      removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}'';    in {      mkDubDerivation = lib.makeOverridable ({ -      src, -      nativeBuildInputs ? [], -      dubJSON ? src + "/dub.json", -      passthru ? {}, -      package ? lib.importJSON dubJSON, -      ... -    } @ attrs: stdenv.mkDerivation (attrs // { -      pname = package.name; -      nativeBuildInputs = [ dcompiler dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; -      disallowedReferences = disallowedReferences deps; -      passthru = passthru // { -        inherit dub dcompiler pkgs; -      }; -      src = lib.cleanSourceWith { -        filter = filterDub; -        src = lib.cleanSource src; -      }; -      preFixup = '' -        find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true -      ''; -      buildPhase = '' -        runHook preBuild -        HOME="$PWD" -        DFLAGS="-O2 -inline" -        for DC_ in dmd ldmd2 gdmd; do -          echo "- check for D compiler $DC_" -          DC=$(type -P $DC_ || echo "") -          if [ ! "$DC" == "" ]; then -            break -          fi -        done -        if [ "$DC" == "" ]; then -          exit "Error: could not find D compiler" -        fi -        echo "$DC_ used as D compiler to build $pname" -        dub build --compiler=$DC --build=release --combined --skip-registry=all -        runHook postBuild -      ''; -      checkPhase = '' -        runHook preCheck -        HOME="$PWD" -        dub test --combined --skip-registry=all -        runHook postCheck -      ''; -      installPhase = '' -        runHook preInstall -        mkdir -p $out/bin -        cp -r "${targetOf package}" $out/bin -        #cp -rv "${targetOf package}" $out/spine-markup-samples/. -        #cp -rv ./markup $out/spine-markup-samples/. -        runHook postInstall -      ''; -      #postInstall= '' -      #  cp -rv ./markup $out/spine-markup-samples/. -      #''; -      meta = lib.optionalAttrs (package ? description) { -        description = package.description; -      } // attrs.meta or {}; -    } // lib.optionalAttrs (!(attrs ? version)) { -      name = package.name; # use name from dub.json, unless pname and version are specified -    })); +        src, +        nativeBuildInputs ? [], +        dubJSON ? src + "/dub.json", +        passthru ? {}, +        package ? lib.importJSON dubJSON, +        ... +      } @ attrs: +        stdenv.mkDerivation (attrs +          // { +            pname = package.name; +            nativeBuildInputs = [dcompiler dub pkgs.removeReferencesTo] ++ nativeBuildInputs; +            disallowedReferences = disallowedReferences deps; +            passthru = +              passthru +              // { +                inherit dub dcompiler pkgs; +              }; +            src = lib.cleanSourceWith { +              filter = filterDub; +              src = lib.cleanSource src; +            }; +            preFixup = '' +              find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true +            ''; +            buildPhase = '' +              runHook preBuild +              HOME="$PWD" +              DFLAGS="-O2 -inline" +              for DC_ in dmd ldmd2 gdmd; do +                echo "- check for D compiler $DC_" +                DC=$(type -P $DC_ || echo "") +                if [ ! "$DC" == "" ]; then +                  break +                fi +              done +              if [ "$DC" == "" ]; then +                exit "Error: could not find D compiler" +              fi +              echo "$DC_ used as D compiler to build $pname" +              dub build --compiler=$DC --build=release --combined --skip-registry=all +              runHook postBuild +            ''; +            checkPhase = '' +              runHook preCheck +              HOME="$PWD" +              dub test --combined --skip-registry=all +              runHook postCheck +            ''; +            installPhase = '' +              runHook preInstall +              mkdir -p $out/bin +              cp -r "${targetOf package}" $out/bin +              #cp -rv "${targetOf package}" $out/spine-markup-samples/. +              #cp -rv ./markup $out/spine-markup-samples/. +              runHook postInstall +            ''; +            #postInstall= '' +            #  cp -rv ./markup $out/spine-markup-samples/. +            #''; +            meta = +              lib.optionalAttrs (package ? description) { +                description = package.description; +              } +              // attrs.meta or {}; +          } +          // lib.optionalAttrs (!(attrs ? version)) { +            name = package.name; # use name from dub.json, unless pname and version are specified +          }));    }  ); -mkDubDerivation rec { -  pname         = "spine"; -  version       = "0.12.0"; -  zipfile       = "spine-0.12.0-tag-0.11.2.r107.gf89a107.tar.gz"; -  src = fetchTarball { -    #url         = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/tarball/${pname}-${version}.tar.gz"; -    #url         = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine/tarballGitHEAD/${pname}-${version}.tar.gz"; -    #sha256      = "sha256:0000000000000000000000000000000000000000000000000000"; -    url         = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/tarball/spine-0.12.0-tag-0.11.2.r107.gf89a107.tar.gz"; -    sha256      = "sha256:03dr7dn7kq6arw4ry7qar13iqmi1caw70imfjwi8qr7g2j4mnk2q"; -  }; -  nativeBuildInputs = with pkgs; [ dub ldc ]; -  buildInputs = with pkgs; [ nixVersions.unstable sqlite ]; -  meta = with pkgs.lib; { -    description = "A sisu like parser & document generator"; -    longDescription = '' -      a sisu like parser & document generator -    ''; -    homepage    = "https://sisudoc.org"; -    license     = licenses.agpl3Plus; -    platforms   = platforms.linux; -    maintainers = [ "RalphAmissah" ]; -  }; -} +  mkDubDerivation rec { +    pname = "spine"; +    version = "0.12.0"; +    #zipfile = "spine-0.12.0-tag-0.11.2.r107.gf89a107.tar.gz"; +    src = fetchTarball { +      url = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/tarball/spine-0.12.0-tag-0.11.2.r107.gf89a107.tar.gz"; +      sha256 = "sha256:03dr7dn7kq6arw4ry7qar13iqmi1caw70imfjwi8qr7g2j4mnk2q"; +    }; +    nativeBuildInputs = with pkgs; [dub ldc]; +    buildInputs = with pkgs; [nixVersions.unstable sqlite]; +    meta = with pkgs.lib; { +      description = "A sisu like parser & document generator"; +      longDescription = '' +        a sisu like parser & document generator +      ''; +      homepage = "https://sisudoc.org"; +      license = licenses.agpl3Plus; +      platforms = platforms.linux; +      maintainers = ["RalphAmissah"]; +    }; +  } @@ -1,42 +1,45 @@ -{ pkgs ? import <nixpkgs> { }, name ? "user-env" }: +{ +  pkgs ? import <nixpkgs> {}, +  name ? "user-env", +}:  with pkgs; -buildEnv { -  inherit name; -  extraOutputsToInstall = [ "out" "man" "lib" ]; # to get all needed symlinks -  paths = [ -    # ❯❯❯ nix_related -    #nix # if not on NixOS, this is needed -    direnv -    #cachix -    nixVersions.unstable #nixFlakes -    nix-prefetch-git -    validatePkgConfig -    nix-output-monitor -    nix-tree -    jq -    git -    gnumake -    ps -    # ❯❯❯ d_build_related -    # ❯❯ package manager -    dub -    # ❯❯ compiler -    dmd -    ldc -    # ❯❯❯ sqlite search related -    sqlite -    # this will create a script that will rebuild and upgrade your setup; using shell script syntax -    (writeScriptBin "nix-rebuild" '' -      #!${stdenv.shell} -      cd <path-to-flake> || exit 1 -      nix flake update -      nix profile upgrade '.*' -    '') -    # puts in your root the nixpkgs version -    (writeTextFile { -      name = "nixpkgs-version"; -      destination = "/nixpkgs-version"; -      text = lib.version; -    }) -  ]; -} +  buildEnv { +    inherit name; +    extraOutputsToInstall = ["out" "man" "lib"]; # to get all needed symlinks +    paths = [ +      # ❯❯❯ nix_related +      #nix # if not on NixOS, this is needed +      direnv +      nixVersions.unstable #nixFlakes +      nix-prefetch-git +      validatePkgConfig +      nix-output-monitor +      nix-tree +      jq +      alejandra +      git +      # ❯❯❯ dev +      gnumake +      ps +      # ❯❯❯ d_build_related +      # ❯❯ package manager +      dub +      # ❯❯ compiler +      ldc +      # ❯❯❯ sqlite search related +      sqlite +      # this will create a script that will rebuild and upgrade your setup; using shell script syntax +      (writeScriptBin "nix-rebuild" '' +        #!${stdenv.shell} +        #cd <path-to-flake> || exit 1 +        nix flake update +        nix profile upgrade '.*' +      '') +      # puts in your root the nixpkgs version +      (writeTextFile { +        name = "nixpkgs-version"; +        destination = "/nixpkgs-version"; +        text = lib.version; +      }) +    ]; +  } @@ -1,12 +1,15 @@  {    "nodes": {      "flake-utils": { +      "inputs": { +        "systems": "systems" +      },        "locked": { -        "lastModified": 1676283394, -        "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", +        "lastModified": 1681037374, +        "narHash": "sha256-XL6X3VGbEFJZDUouv2xpKg2Aljzu/etPLv5e1FPt1q0=",          "owner": "numtide",          "repo": "flake-utils", -        "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", +        "rev": "033b9f258ca96a10e543d4442071f614dc3f8412",          "type": "github"        },        "original": { @@ -16,12 +19,15 @@        }      },      "flake-utils_2": { +      "inputs": { +        "systems": "systems_2" +      },        "locked": { -        "lastModified": 1676283394, -        "narHash": "sha256-XX2f9c3iySLCw54rJ/CZs+ZK6IQy7GXNY4nSOyu2QG4=", +        "lastModified": 1681037374, +        "narHash": "sha256-XL6X3VGbEFJZDUouv2xpKg2Aljzu/etPLv5e1FPt1q0=",          "owner": "numtide",          "repo": "flake-utils", -        "rev": "3db36a8b464d0c4532ba1c7dda728f4576d6d073", +        "rev": "033b9f258ca96a10e543d4442071f614dc3f8412",          "type": "github"        },        "original": { @@ -32,11 +38,11 @@      },      "nixpkgs": {        "locked": { -        "lastModified": 1677229269, -        "narHash": "sha256-awE2w6oi9rzQ8qj1lwKEDm6qIA0a239fiB+AyPjXR2w=", +        "lastModified": 1681092589, +        "narHash": "sha256-I11GYL+6yD6dX89H0WaMiptE52NZ2Tmx+rA23TUyfH8=",          "owner": "NixOS",          "repo": "nixpkgs", -        "rev": "7d0ed7f2e5aea07ab22ccb338d27fbe347ed2f11", +        "rev": "83ca2cd74539fb8e79d46e233f6bb1d978c36f32",          "type": "github"        },        "original": { @@ -61,8 +67,11 @@          ]        },        "locked": { -        "lastModified": 1677293337, -        "narHash": "sha256-4NHEjFqgnoukc6bC+79NWu1QIpLsWChGRQLI0OC1Pwo=", +        "lastModified": 1681162928, +        "narHash": "sha256-lR+36LESgWKUtGc74TABMeBsPB9R8AKVKil/CDBA0LY=", +        "ref": "refs/heads/main", +        "rev": "e3ced89491d3b39d29ba2ae824a474ef14ebb207", +        "revCount": 576,          "type": "git",          "url": "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine"        }, @@ -70,6 +79,36 @@          "type": "git",          "url": "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine"        } +    }, +    "systems": { +      "locked": { +        "lastModified": 1681028828, +        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", +        "owner": "nix-systems", +        "repo": "default", +        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", +        "type": "github" +      }, +      "original": { +        "owner": "nix-systems", +        "repo": "default", +        "type": "github" +      } +    }, +    "systems_2": { +      "locked": { +        "lastModified": 1681028828, +        "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", +        "owner": "nix-systems", +        "repo": "default", +        "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", +        "type": "github" +      }, +      "original": { +        "owner": "nix-systems", +        "repo": "default", +        "type": "github" +      }      }    },    "root": "root", @@ -1,148 +1,170 @@  { -  description                  = "spine (sisu like parser & document generator) made available to process markup samples"; +  description = "spine (sisu like parser & document generator) made available to process markup samples";    inputs = { -    nixpkgs.url                = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; -    flake-utils.url            = "github:numtide/flake-utils"; -    spine.url                  = "git+file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine"; +    nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; # "github:nixos/nixpkgs"; +    flake-utils.url = "github:numtide/flake-utils"; +    spine.url = "git+file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine";      spine.inputs.nixpkgs.follows = "nixpkgs"; -    spine.flake                = true; +    spine.flake = true;    }; -  outputs = { self, nixpkgs, flake-utils, spine } @inputs: -    let -      version                  = "0.12.0"; -      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. +  outputs = { +    self, +    nixpkgs, +    flake-utils, +    spine, +  } @ inputs: let +    version = "0.12.0"; +    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. +  in { +    packages = forAllSystems (system: let +      pkgs = nixpkgsFor.${system};      in { -      packages = forAllSystems (system: -        let pkgs               = nixpkgsFor.${system}; -        in { -          default              = spine.packages.${system}.default; -          spine-dmd            = spine.packages.${system}.spine-dmd; -          spine-ldc            = spine.packages.${system}.spine-ldc; -          #spine-gdc            = spine.packages.${system}.spine-gdc; -          #vendorSha256         = "sha256-0Q00000000000000000000000000000000000000000="; -      }); -      apps = forAllSystems (system: { -        default = { -          type                 = "app"; -          program              = "${self.packages.${system}.default}/bin/spine"; +      default = spine.packages.${system}.default; +      spine-dmd = spine.packages.${system}.spine-dmd; +      spine-ldc = spine.packages.${system}.spine-ldc; +      #spine-gdc = spine.packages.${system}.spine-gdc; +      #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; +    }); +    apps = forAllSystems (system: { +      default = { +        type = "app"; +        program = "${self.packages.${system}.default}/bin/spine"; +      }; +    }); +    devShells = forAllSystems (system: let +      pkgs = nixpkgsFor.${system}; +      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/*" +      ''; +    in +      with pkgs; { +        devShell = mkShell { +          name = "spine base dev shell"; +          inherit shell; +          inherit devEnv; +          #buildInputs = [ sqlite ]; +          #nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; +          packages = [ +            sqlite +            dub +            dmd +            ldc +            gnumake +          ]; +          inherit shellHook;          }; -      }); -      devShells = forAllSystems (system: -        let -          pkgs = nixpkgsFor.${system}; -          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/*" -          ''; -        in with pkgs; { -          devShell = mkShell { -            name               = "spine base dev shell"; -            inherit shell; -            inherit devEnv; -            #buildInputs        = [ sqlite ]; -            #nativeBuildInputs  = [ dub dmd ldc gdc gnumake ]; -            packages     = [ -              sqlite -              dub dmd ldc gnumake -            ]; -            inherit shellHook; -          }; -          devShell-epub = mkShell { -            name               = "spine dev shell for epub output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              libxml2 -              html-tidy -              xmlstarlet -              epubcheck -              ebook_tools -              libxml2 -              html-tidy -              xmlstarlet -              epubcheck -              ebook_tools -              epr -              sigil -              calibre #(suite includes: ebook-viewer) -              foliate -            ]; -            inherit shellHook; -          }; -          devShell-html = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -            ]; -            inherit shellHook; -          }; -          devShell-latex-pdf = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              source-sans-pro -              source-serif-pro -              source-code-pro -              texlive.combined.scheme-full -            ]; -            inherit shellHook; -          }; -          devShell-sqlite = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -            ]; -            inherit shellHook; -          }; -          devShell-i18n = mkShell { -            name               = "spine dev shell internationalization, po4a"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              perl534Packages.Po4a -            ]; -            inherit shellHook; -          }; -          default = import ./shell.nix { inherit pkgs; }; +        devShell-epub = mkShell { +          name = "spine dev shell for epub output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            epr +            sigil +            calibre #(suite includes: ebook-viewer) +            foliate +          ]; +          inherit shellHook; +        }; +        devShell-html = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +          ]; +          inherit shellHook; +        }; +        devShell-latex-pdf = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            source-sans-pro +            source-serif-pro +            source-code-pro +            texlive.combined.scheme-full +          ]; +          inherit shellHook; +        }; +        devShell-sqlite = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +          ]; +          inherit shellHook; +        }; +        devShell-i18n = mkShell { +          name = "spine dev shell internationalization, po4a"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            perl534Packages.Po4a +          ]; +          inherit shellHook; +        }; +        default = import ./shell.nix {inherit pkgs;};        });    };  } diff --git a/org/config_nix.org b/org/config_nix.org index 896aaed..e43ffbd 100644 --- a/org/config_nix.org +++ b/org/config_nix.org @@ -16,44 +16,34 @@  #+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/nixpkgs-dev/nixpkgs -#+END_SRC - -** spine markup samples - -- default.nix -- shell.nix - -*** envrc :envrc: -**** .envrc +** 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  # - 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" "sha256-0000000000000000000000000000000000000000000=" -  source_url "https://raw.githubusercontent.com/nix-community/nix-direnv/${NixDirEnvVersion}/direnvrc" "sha256-zelF0vLbEl5uaqrfIzbgNzJWGmLzCmYAkInj/LNxvKs=" +  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 +#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 +*** .envrc-local CHECK MODIFY  - bespoke modify appropriately and generate if needed @@ -77,157 +67,178 @@ export SpineCGIform='spine_search'  export SpineSQLdb='spine.search.db'  #+END_SRC -*** flake :flake: -**** flake.nix +** flake.nix :flake:  #+HEADER: :tangle ../flake.nix  #+HEADER: :noweb yes  #+BEGIN_SRC nix  { -  description                  = "spine (sisu like parser & document generator) made available to process markup samples"; +  description = "spine (sisu like parser & document generator) made available to process markup samples";    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>>"; +    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.flake = true;    }; -  outputs = { self, nixpkgs, flake-utils, spine } @inputs: -    let -      version                  = "<<spine_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. +  outputs = { +    self, +    nixpkgs, +    flake-utils, +    spine, +  } @ inputs: let +    version = "<<spine_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. +  in { +    packages = forAllSystems (system: let +      pkgs = nixpkgsFor.${system};      in { -      packages = forAllSystems (system: -        let pkgs               = nixpkgsFor.${system}; -        in { -          default              = spine.packages.${system}.default; -          spine-dmd            = spine.packages.${system}.spine-dmd; -          spine-ldc            = spine.packages.${system}.spine-ldc; -          #spine-gdc            = spine.packages.${system}.spine-gdc; -          #vendorSha256         = "sha256-0Q00000000000000000000000000000000000000000="; -      }); -      apps = forAllSystems (system: { -        default = { -          type                 = "app"; -          program              = "${self.packages.${system}.default}/bin/spine"; +      default = spine.packages.${system}.default; +      spine-dmd = spine.packages.${system}.spine-dmd; +      spine-ldc = spine.packages.${system}.spine-ldc; +      #spine-gdc = spine.packages.${system}.spine-gdc; +      #vendorSha256 = "sha256-0Q00000000000000000000000000000000000000000="; +    }); +    apps = forAllSystems (system: { +      default = { +        type = "app"; +        program = "${self.packages.${system}.default}/bin/spine"; +      }; +    }); +    devShells = forAllSystems (system: let +      pkgs = nixpkgsFor.${system}; +      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/*" +      ''; +    in +      with pkgs; { +        devShell = mkShell { +          name = "spine base dev shell"; +          inherit shell; +          inherit devEnv; +          #buildInputs = [ sqlite ]; +          #nativeBuildInputs = [ dub dmd ldc gdc gnumake ]; +          packages = [ +            sqlite +            dub +            dmd +            ldc +            gnumake +          ]; +          inherit shellHook;          }; -      }); -      devShells = forAllSystems (system: -        let -          pkgs = nixpkgsFor.${system}; -          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/*" -          ''; -        in with pkgs; { -          devShell = mkShell { -            name               = "spine base dev shell"; -            inherit shell; -            inherit devEnv; -            #buildInputs        = [ sqlite ]; -            #nativeBuildInputs  = [ dub dmd ldc gdc gnumake ]; -            packages     = [ -              sqlite -              dub dmd ldc gnumake -            ]; -            inherit shellHook; -          }; -          devShell-epub = mkShell { -            name               = "spine dev shell for epub output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              libxml2 -              html-tidy -              xmlstarlet -              epubcheck -              ebook_tools -              libxml2 -              html-tidy -              xmlstarlet -              epubcheck -              ebook_tools -              epr -              sigil -              calibre #(suite includes: ebook-viewer) -              foliate -            ]; -            inherit shellHook; -          }; -          devShell-html = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -            ]; -            inherit shellHook; -          }; -          devShell-latex-pdf = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              source-sans-pro -              source-serif-pro -              source-code-pro -              texlive.combined.scheme-full -            ]; -            inherit shellHook; -          }; -          devShell-sqlite = mkShell { -            name               = "spine dev shell for latex & pdf output"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -            ]; -            inherit shellHook; -          }; -          devShell-i18n = mkShell { -            name               = "spine dev shell internationalization, po4a"; -            inherit shell; -            inherit devEnv; -            packages = [ -              dub dmd ldc gnumake -              sqlite -              perl534Packages.Po4a -            ]; -            inherit shellHook; -          }; -          default = import ./shell.nix { inherit pkgs; }; +        devShell-epub = mkShell { +          name = "spine dev shell for epub output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            libxml2 +            html-tidy +            xmlstarlet +            epubcheck +            ebook_tools +            epr +            sigil +            calibre #(suite includes: ebook-viewer) +            foliate +          ]; +          inherit shellHook; +        }; +        devShell-html = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +          ]; +          inherit shellHook; +        }; +        devShell-latex-pdf = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            source-sans-pro +            source-serif-pro +            source-code-pro +            texlive.combined.scheme-full +          ]; +          inherit shellHook; +        }; +        devShell-sqlite = mkShell { +          name = "spine dev shell for latex & pdf output"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +          ]; +          inherit shellHook; +        }; +        devShell-i18n = mkShell { +          name = "spine dev shell internationalization, po4a"; +          inherit shell; +          inherit devEnv; +          packages = [ +            dub +            dmd +            ldc +            gnumake +            sqlite +            perl534Packages.Po4a +          ]; +          inherit shellHook; +        }; +        default = import ./shell.nix {inherit pkgs;};        });    };  } @@ -276,15 +287,15 @@ nix flake clone git+file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/  #+NAME: flake_inputs_nix  #+HEADER: :noweb yes  #+BEGIN_SRC nix -nixpkgs.url          = "github:nixos/nixpkgs"; -flake-utils.url      = "github:numtide/flake-utils"; +nixpkgs.url = "github:nixos/nixpkgs"; +flake-utils.url = "github:numtide/flake-utils";  #+END_SRC  #+NAME: flake_inputs_spine  #+HEADER: :noweb yes  #+BEGIN_SRC nix -spine.url          = "git+file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine"; -spine.flake        = true; +spine.url = "git+file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine"; +spine.flake = true;  #+END_SRC  ***** flake outputs @@ -301,11 +312,11 @@ self, nixpkgs, flake-utils  #+NAME: flake_devshells  #+HEADER: :noweb yes  #+BEGIN_SRC nix -devShells               = forAllSystems (system: -  let pkgs              = nixpkgsFor.${system}; +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 @@ -337,28 +348,28 @@ packages.x86_64-linux.spine-tarball = spine-tarball.packages.x86_64-linux.defaul  #+BEGIN_SRC nix  packages.x86_64-linux.spine-markup-samples =    let -    pkgs            = import nixpkgs { -      system        = "x86_64-linux"; +    pkgs = import nixpkgs { +      system = "x86_64-linux";      };    in      pkgs.stdenv.mkDerivation { -      pname         = "spine-markup-samples"; -      version       = "<<spine_version_set>>"; -      description   = "markup samples for spine, a sisu like parser & document generator"; +      pname = "spine-markup-samples"; +      version = "<<spine_version_set>>"; +      description = "markup samples for spine, a sisu like parser & document generator";        inherit self; -      src           = self; -      shell         = ./shell.nix; -      buildPhase    = '' +      src = self; +      shell = ./shell.nix; +      buildPhase = ''          runHook preBuild          HOME="$PWD"          runHook postBuild        ''; -      checkPhase    = '' +      checkPhase = ''          runHook preCheck          HOME="$PWD"          runHook postCheck        ''; -      installPhase  = '' +      installPhase = ''          runHook preInstall          mkdir -p $out/lib/spine-markup-samples          echo "pwd: $PWD" @@ -378,8 +389,8 @@ postInstall = ''  #+BEGIN_SRC nix  inputs.spine.url = fetchTarball { -  url       = "<<spine_tarball_path_url>>"; -  sha256    = "<<spine_tarball_sha256>>"; +  url = "<<spine_tarball_path_url>>"; +  sha256 = "<<spine_tarball_sha256>>";  };  #+END_SRC @@ -391,70 +402,78 @@ inputs.spine.url = fetchTarball {  #+HEADER: :shebang "#!/usr/bin/env -S nix-shell --pure\n#!nix-shell -i bash"  #+HEADER: :noweb yes  #+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> {} }: +{pkgs ? import <nixpkgs> {}}:  with pkgs; -mkShell { -  buildInputs = [ -    # ❯❯❯ nix_related -    # direnv -    # nixVersions.unstable #nixFlakes -    # nix-prefetch-git -    # validatePkgConfig -    # nix-tree jq nix-output-monitor -    # git -    # ps -    # ❯❯❯ d_build_related -    # ❯❯ package manager -    # dub -    # ❯❯ compiler -    # ldc -    # rund -    # ❯❯ linker -    # #lld -    # #mold -    # ❯❯ builder -    # #ninja -    # #meson -    # ❯❯❯ sqlite search related -    #sqlite -    # ❯❯❯ pdf_latex_related -    # source-sans-pro -    # source-serif-pro -    # source-code-pro -    # texlive.combined.scheme-full -    # ❯❯❯ xml_and_epub_related -    # libxml2 -    # html-tidy -    # xmlstarlet -    # epubcheck -    # ebook_tools -    # epr -    # sigil -    # calibre #(suite includes: ebook-viewer) -    # foliate -    # ❯❯❯ i18n translation related -    # perl534Packages.Po4a -  ]; -  shellHook = '' -    nix flake update -    nix flake check -    nix flake show -    echo ' -      shell.nix echo ❯❯ - -      ❯❯ nix flake update && nix flake check --show-trace && nix flake show && nix develop ".#devShell" -c zsh - -      ❯❯ nix develop -      ❯❯ nix develop -c zsh - -      ❯❯ nix build -      ❯❯ nix build ".#default" --print-build-logs -      ❯❯ nix build ".#spine-dmd" --print-build-logs |& nom -      ❯❯ nix build ".#spine-ldc" --print-build-logs |& nom -      ❯❯ nix build ".#spine-gdc" --print-build-logs |& nom -    ' -  ''; -} +  mkShell { +    buildInputs = [ +      # ❯❯❯ nix_related +      ##nix +      #direnv +      #nixVersions.unstable #nixFlakes +      #nix-prefetch-git +      #validatePkgConfig +      nix-output-monitor +      #nix-tree +      #jq +      #alejandra +      #git +      # ❯❯❯ dev +      #gnumake +      #ps +      # ❯❯❯ d_build_related +      # ❯❯ package manager +      #dub +      # ❯❯ compiler +      #ldc +      ##rund +      # ❯❯ linker +      ##lld +      ##mold +      # ❯❯ builder +      ##ninja +      ##meson +      # ❯❯❯ sqlite search related +      #sqlite +      # ❯❯❯ pdf_latex_related +      # source-sans-pro +      # source-serif-pro +      # source-code-pro +      # texlive.combined.scheme-full +      # ❯❯❯ xml_and_epub_related +      # libxml2 +      # html-tidy +      # xmlstarlet +      # epubcheck +      # ebook_tools +      # epr +      # sigil +      # calibre #(suite includes: ebook-viewer) +      # foliate +      # ❯❯❯ i18n translation related +      # perl534Packages.Po4a +    ]; +    shellHook = '' +      nix flake update +      nix flake check +      nix flake show +      echo ' +        shell.nix echo ❯❯ + +        ❯❯ nix flake update && nix flake check --show-trace && nix flake show && nix develop ".#devShell" -c zsh + +        ❯❯ nix develop +        ❯❯ nix develop -c zsh + +        ❯❯ nix build +        ❯❯ nix build ".#default" --print-build-logs +        ❯❯ nix build ".#spine-dmd" --print-build-logs |& nom +        ❯❯ nix build ".#spine-ldc" --print-build-logs |& nom +        ❯❯ nix build ".#spine-gdc" --print-build-logs |& nom + +        ❯❯ nix profile install . +      ' +    ''; +  }  #+END_SRC  **** Notes @@ -560,7 +579,7 @@ nix develop --build -f derivation.nix -I .envrc --print-build-logs  #+HEADER: :tangle-mode (identity #o755)  #+HEADER: :shebang "#!/usr/bin/env -S nix-build"  #+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> {} }: +{pkgs ? import <nixpkgs> {}}:  pkgs.callPackage ./devenv.nix {}  #+END_SRC @@ -571,48 +590,51 @@ nix profile install .  #+HEADER: :tangle ../devenv.nix  #+HEADER: :tangle-mode (identity #o644)  #+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> { }, name ? "user-env" }: +{ +  pkgs ? import <nixpkgs> {}, +  name ? "user-env", +}:  with pkgs; -buildEnv { -  inherit name; -  extraOutputsToInstall = [ "out" "man" "lib" ]; # to get all needed symlinks -  paths = [ -    # ❯❯❯ nix_related -    #nix # if not on NixOS, this is needed -    direnv -    #cachix -    nixVersions.unstable #nixFlakes -    nix-prefetch-git -    validatePkgConfig -    nix-output-monitor -    nix-tree -    jq -    git -    gnumake -    ps -    # ❯❯❯ d_build_related -    # ❯❯ package manager -    dub -    # ❯❯ compiler -    dmd -    ldc -    # ❯❯❯ sqlite search related -    sqlite -    # this will create a script that will rebuild and upgrade your setup; using shell script syntax -    (writeScriptBin "nix-rebuild" '' -      #!${stdenv.shell} -      cd <path-to-flake> || exit 1 -      nix flake update -      nix profile upgrade '.*' -    '') -    # puts in your root the nixpkgs version -    (writeTextFile { -      name = "nixpkgs-version"; -      destination = "/nixpkgs-version"; -      text = lib.version; -    }) -  ]; -} +  buildEnv { +    inherit name; +    extraOutputsToInstall = ["out" "man" "lib"]; # to get all needed symlinks +    paths = [ +      # ❯❯❯ nix_related +      #nix # if not on NixOS, this is needed +      direnv +      nixVersions.unstable #nixFlakes +      nix-prefetch-git +      validatePkgConfig +      nix-output-monitor +      nix-tree +      jq +      alejandra +      git +      # ❯❯❯ dev +      gnumake +      ps +      # ❯❯❯ d_build_related +      # ❯❯ package manager +      dub +      # ❯❯ compiler +      ldc +      # ❯❯❯ sqlite search related +      sqlite +      # this will create a script that will rebuild and upgrade your setup; using shell script syntax +      (writeScriptBin "nix-rebuild" '' +        #!${stdenv.shell} +        #cd <path-to-flake> || exit 1 +        nix flake update +        nix profile upgrade '.*' +      '') +      # puts in your root the nixpkgs version +      (writeTextFile { +        name = "nixpkgs-version"; +        destination = "/nixpkgs-version"; +        text = lib.version; +      }) +    ]; +  }  #+END_SRC  *** derivation.nix :default: @@ -621,121 +643,132 @@ buildEnv {  #+HEADER: :tangle-mode (identity #o644)  #+HEADER: :noweb yes  #+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> {}, +{ +  pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv,    lib ? pkgs.lib,    ldc ? null,    dcompiler ? pkgs.ldc, -  dub ? pkgs.dub +  dub ? pkgs.dub,  }:  assert dcompiler != null;  with ( -  with lib; -  let -    filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( # filter function to remove the .dub package folder from src -      type == "directory" && baseName == ".dub" -    ); +  with lib; let +    filterDub = name: type: let +      baseName = baseNameOf (toString name); +    in +      ! ( # filter function to remove the .dub package folder from src +        type == "directory" && baseName == ".dub" +      );      targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}";      # remove reference to build tools and library sources -    disallowedReferences = deps: [ dcompiler dub ]; +    disallowedReferences = deps: [dcompiler dub];      removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}'';    in {      mkDubDerivation = lib.makeOverridable ({ -      src, -      nativeBuildInputs ? [], -      dubJSON ? src + "/dub.json", -      passthru ? {}, -      package ? lib.importJSON dubJSON, -      ... -    } @ attrs: stdenv.mkDerivation (attrs // { -      pname = package.name; -      nativeBuildInputs = [ dcompiler dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; -      disallowedReferences = disallowedReferences deps; -      passthru = passthru // { -        inherit dub dcompiler pkgs; -      }; -      src = lib.cleanSourceWith { -        filter = filterDub; -        src = lib.cleanSource src; -      }; -      preFixup = '' -        find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true -      ''; -      buildPhase = '' -        runHook preBuild -        HOME="$PWD" -        DFLAGS="-O2 -inline" -        for DC_ in dmd ldmd2 gdmd; do -          echo "- check for D compiler $DC_" -          DC=$(type -P $DC_ || echo "") -          if [ ! "$DC" == "" ]; then -            break -          fi -        done -        if [ "$DC" == "" ]; then -          exit "Error: could not find D compiler" -        fi -        echo "$DC_ used as D compiler to build $pname" -        dub build --compiler=$DC --build=release --combined --skip-registry=all -        runHook postBuild -      ''; -      checkPhase = '' -        runHook preCheck -        HOME="$PWD" -        dub test --combined --skip-registry=all -        runHook postCheck -      ''; -      installPhase = '' -        runHook preInstall -        mkdir -p $out/bin -        cp -r "${targetOf package}" $out/bin -        #cp -rv "${targetOf package}" $out/spine-markup-samples/. -        #cp -rv ./markup $out/spine-markup-samples/. -        runHook postInstall -      ''; -      #postInstall= '' -      #  cp -rv ./markup $out/spine-markup-samples/. -      #''; -      meta = lib.optionalAttrs (package ? description) { -        description = package.description; -      } // attrs.meta or {}; -    } // lib.optionalAttrs (!(attrs ? version)) { -      name = package.name; # use name from dub.json, unless pname and version are specified -    })); +        src, +        nativeBuildInputs ? [], +        dubJSON ? src + "/dub.json", +        passthru ? {}, +        package ? lib.importJSON dubJSON, +        ... +      } @ attrs: +        stdenv.mkDerivation (attrs +          // { +            pname = package.name; +            nativeBuildInputs = [dcompiler dub pkgs.removeReferencesTo] ++ nativeBuildInputs; +            disallowedReferences = disallowedReferences deps; +            passthru = +              passthru +              // { +                inherit dub dcompiler pkgs; +              }; +            src = lib.cleanSourceWith { +              filter = filterDub; +              src = lib.cleanSource src; +            }; +            preFixup = '' +              find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true +            ''; +            buildPhase = '' +              runHook preBuild +              HOME="$PWD" +              DFLAGS="-O2 -inline" +              for DC_ in dmd ldmd2 gdmd; do +                echo "- check for D compiler $DC_" +                DC=$(type -P $DC_ || echo "") +                if [ ! "$DC" == "" ]; then +                  break +                fi +              done +              if [ "$DC" == "" ]; then +                exit "Error: could not find D compiler" +              fi +              echo "$DC_ used as D compiler to build $pname" +              dub build --compiler=$DC --build=release --combined --skip-registry=all +              runHook postBuild +            ''; +            checkPhase = '' +              runHook preCheck +              HOME="$PWD" +              dub test --combined --skip-registry=all +              runHook postCheck +            ''; +            installPhase = '' +              runHook preInstall +              mkdir -p $out/bin +              cp -r "${targetOf package}" $out/bin +              #cp -rv "${targetOf package}" $out/spine-markup-samples/. +              #cp -rv ./markup $out/spine-markup-samples/. +              runHook postInstall +            ''; +            #postInstall= '' +            #  cp -rv ./markup $out/spine-markup-samples/. +            #''; +            meta = +              lib.optionalAttrs (package ? description) { +                description = package.description; +              } +              // attrs.meta or {}; +          } +          // lib.optionalAttrs (!(attrs ? version)) { +            name = package.name; # use name from dub.json, unless pname and version are specified +          }));    }  ); -mkDubDerivation rec { -  pname         = "spine"; -  version       = "<<spine_version_set>>"; -  zipfile       = "<<spine_tarball_filename>>"; -  src = fetchTarball { -    #url         = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/tarball/${pname}-${version}.tar.gz"; -    #url         = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine/tarballGitHEAD/${pname}-${version}.tar.gz"; -    #sha256      = "sha256:0000000000000000000000000000000000000000000000000000"; -    url         = "<<spine_tarball_path_url>>"; -    sha256      = "<<spine_tarball_sha256>>"; -  }; -  nativeBuildInputs = with pkgs; [ dub ldc ]; -  buildInputs = with pkgs; [ nixVersions.unstable sqlite ]; -  meta = with pkgs.lib; { -    description = "A sisu like parser & document generator"; -    longDescription = '' -      a sisu like parser & document generator -    ''; -    homepage    = "https://sisudoc.org"; -    license     = licenses.agpl3Plus; -    platforms   = platforms.linux; -    maintainers = [ "RalphAmissah" ]; -  }; -} +  mkDubDerivation rec { +    pname = "spine"; +    version = "<<spine_version_set>>"; +    #zipfile = "spine-0.12.0-tag-0.11.2.r107.gf89a107.tar.gz"; +    src = fetchTarball { +      url = "<<spine_tarball_path_url>>"; +      sha256 = "<<spine_tarball_sha256>>"; +    }; +    nativeBuildInputs = with pkgs; [dub ldc]; +    buildInputs = with pkgs; [nixVersions.unstable sqlite]; +    meta = with pkgs.lib; { +      description = "A sisu like parser & document generator"; +      longDescription = '' +        a sisu like parser & document generator +      ''; +      homepage = "https://sisudoc.org"; +      license = licenses.agpl3Plus; +      platforms = platforms.linux; +      maintainers = ["RalphAmissah"]; +    }; +  }  #+END_SRC +#url = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/tarball/${pname}-${version}.tar.gz"; +#url = "file:///home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine/tarballGitHEAD/${pname}-${version}.tar.gz"; +#sha256 = "sha256:0000000000000000000000000000000000000000000000000000"; +  # src = fetchTarball { -#   url          = "file:///[path]/${pname}-${version}.tar.gz"; -#   sha256       = "sha256:0000000000000000000000000000000000000000000000000000"; +#   url = "file:///[path]/${pname}-${version}.tar.gz"; +#   sha256 = "sha256:0000000000000000000000000000000000000000000000000000";  # }; -#src           = ./.; +#src = ./.;  ** variables  *** spine version SET VERSION :version:set:project: @@ -769,6 +802,11 @@ file://<<spine_tarball_path>>/<<spine_tarball_filename>>  /home/ralph/grotto/repo/git.repo/projects/doc-reform/code/software/spine  #+END_SRC +#+NAME: nixpkgs_local +#+BEGIN_SRC sh +/srv/nixpkgs-dev/nixpkgs +#+END_SRC +  #+NAME: spine_git_file_path_url  #+HEADER: :noweb yes  #+BEGIN_SRC nix @@ -1,66 +1,74 @@  #!/usr/bin/env -S nix-shell --pure  #!nix-shell -i bash -{ pkgs ? import <nixpkgs> {} }: +{pkgs ? import <nixpkgs> {}}:  with pkgs; -mkShell { -  buildInputs = [ -    # ❯❯❯ nix_related -    # direnv -    # nixVersions.unstable #nixFlakes -    # nix-prefetch-git -    # validatePkgConfig -    # nix-tree jq nix-output-monitor -    # git -    # ps -    # ❯❯❯ d_build_related -    # ❯❯ package manager -    # dub -    # ❯❯ compiler -    # ldc -    # rund -    # ❯❯ linker -    # #lld -    # #mold -    # ❯❯ builder -    # #ninja -    # #meson -    # ❯❯❯ sqlite search related -    #sqlite -    # ❯❯❯ pdf_latex_related -    # source-sans-pro -    # source-serif-pro -    # source-code-pro -    # texlive.combined.scheme-full -    # ❯❯❯ xml_and_epub_related -    # libxml2 -    # html-tidy -    # xmlstarlet -    # epubcheck -    # ebook_tools -    # epr -    # sigil -    # calibre #(suite includes: ebook-viewer) -    # foliate -    # ❯❯❯ i18n translation related -    # perl534Packages.Po4a -  ]; -  shellHook = '' -    nix flake update -    nix flake check -    nix flake show -    echo ' -      shell.nix echo ❯❯ +  mkShell { +    buildInputs = [ +      # ❯❯❯ nix_related +      ##nix +      #direnv +      #nixVersions.unstable #nixFlakes +      #nix-prefetch-git +      #validatePkgConfig +      nix-output-monitor +      #nix-tree +      #jq +      #alejandra +      #git +      # ❯❯❯ dev +      #gnumake +      #ps +      # ❯❯❯ d_build_related +      # ❯❯ package manager +      #dub +      # ❯❯ compiler +      #ldc +      ##rund +      # ❯❯ linker +      ##lld +      ##mold +      # ❯❯ builder +      ##ninja +      ##meson +      # ❯❯❯ sqlite search related +      #sqlite +      # ❯❯❯ pdf_latex_related +      # source-sans-pro +      # source-serif-pro +      # source-code-pro +      # texlive.combined.scheme-full +      # ❯❯❯ xml_and_epub_related +      # libxml2 +      # html-tidy +      # xmlstarlet +      # epubcheck +      # ebook_tools +      # epr +      # sigil +      # calibre #(suite includes: ebook-viewer) +      # foliate +      # ❯❯❯ i18n translation related +      # perl534Packages.Po4a +    ]; +    shellHook = '' +      nix flake update +      nix flake check +      nix flake show +      echo ' +        shell.nix echo ❯❯ -      ❯❯ nix flake update && nix flake check --show-trace && nix flake show && nix develop ".#devShell" -c zsh +        ❯❯ nix flake update && nix flake check --show-trace && nix flake show && nix develop ".#devShell" -c zsh -      ❯❯ nix develop -      ❯❯ nix develop -c zsh +        ❯❯ nix develop +        ❯❯ nix develop -c zsh -      ❯❯ nix build -      ❯❯ nix build ".#default" --print-build-logs -      ❯❯ nix build ".#spine-dmd" --print-build-logs |& nom -      ❯❯ nix build ".#spine-ldc" --print-build-logs |& nom -      ❯❯ nix build ".#spine-gdc" --print-build-logs |& nom -    ' -  ''; -} +        ❯❯ nix build +        ❯❯ nix build ".#default" --print-build-logs +        ❯❯ nix build ".#spine-dmd" --print-build-logs |& nom +        ❯❯ nix build ".#spine-ldc" --print-build-logs |& nom +        ❯❯ nix build ".#spine-gdc" --print-build-logs |& nom + +        ❯❯ nix profile install . +      ' +    ''; +  } | 
