diff options
| author | Ralph Amissah <ralph.amissah@gmail.com> | 2021-01-02 14:06:16 -0500 | 
|---|---|---|
| committer | Ralph Amissah <ralph.amissah@gmail.com> | 2021-01-23 17:01:15 -0500 | 
| commit | 4437c10fad8925d6322c83bf1553daa9a36ceb31 (patch) | |
| tree | 6d5a85e7d5da7d41320a9773bb8830ef4908e3df | |
| parent | nix shebangs, consider (diff) | |
nix, work on build
26 files changed, 703 insertions, 974 deletions
| @@ -22,8 +22,8 @@  !misc  !misc/**  !*.nix -!nixEnv -!nixEnv/** +!nix +!nix/**  !.envrc  !src  !src/** diff --git a/default.nix b/default.nix index bf5940a..fa6adad 100755 --- a/default.nix +++ b/default.nix @@ -2,14 +2,19 @@  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv,  }: -with import ./mkDub.nix { inherit pkgs; }; +with import ./nix/mkDub.nix { inherit pkgs; };  mkDubDerivation rec {    name = "spine-${version}";    version = "0.11.1";    src = ./.;    buildInputs = [      pkgs.sqlite +    (import ./nix/shell-packages.nix { inherit pkgs; })    ]; +  # installPhase = '' +  #   install -m755 -D spine $out/bin/spine +  #   echo "built $out/bin/spine" +  # '';    meta = with stdenv.lib; {      homepage = http://sisudoc.org;      description = "a sisu like document parser"; diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..a392048 --- /dev/null +++ b/flake.nix @@ -0,0 +1,37 @@ +{ +  description = "a sisu like document parser"; +  inputs = { +    flake-utils.url = "github:numtide/flake-utils"; +    nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; +    # pkgs /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {} +    #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform"; +    #spine.url = "./."; +    d2sqlite3 = { +      url    = "github:dlang-community/d2sqlite3"; +      flake  = false; +    }; +    tinyendian = { +      url    = "github:kiith-sa/tinyendian"; +      flake  = false; +    }; +    dyaml = { +      url    = "github:dlang-community/D-YAML"; +      flake  = false; +    }; +    imageformats = { +      url    = "github:lgvz/imageformats"; +      flake  = false; +    }; +    dub2nix-src = { +      url = "github:lionello/dub2nix"; +      flake  = false; +    }; +  }; +  outputs = { self, nixpkgs, flake-utils }: +    flake-utils.lib.simpleFlake { +    #flake-utils.lib.spine { +      inherit self nixpkgs; +      name = "spine"; +      #shell = ./shell.nix; +    }; +} @@ -534,26 +534,7 @@ tangle_maker:  				(setq-local org-src-preserve-indentation t) \  			(org-babel-tangle) \  			(kill-buffer)) '($$ORGFILES)))" 2>&1 -nixsh_dmd_nixpkg: -	ln -sf nixEnv/shells/shell-dmd-verNix.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -nixsh_dmd_user: -	ln -sf nixEnv/shells/shell-dmd-verUser.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -nixsh_ldc_nixpkg: -	ln -sf nixEnv/shells/shell-ldc-verNix.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -nixsh_ldc_user: -	ln -sf nixEnv/shells/shell-ldc-verUser.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; +  gitsnapshot: distclean tangle  	git commit -a  .PHONY : all build rebuild debug release \ diff --git a/mkDub.nix b/mkDub.nix deleted file mode 120000 index 254bb41..0000000 --- a/mkDub.nix +++ /dev/null @@ -1 +0,0 @@ -nixEnv/dub/mkDub-ldc.nix
\ No newline at end of file diff --git a/dub.selections.nix b/nix/dub.selections.nix index 28f9d2e..28f9d2e 100644 --- a/dub.selections.nix +++ b/nix/dub.selections.nix diff --git a/nixEnv/nixDevEnv/dub/mkDub-ldc.nix b/nix/mkDub.nix index a9cbb82..bfcb038 100644 --- a/nixEnv/nixDevEnv/dub/mkDub-ldc.nix +++ b/nix/mkDub.nix @@ -57,7 +57,7 @@ in {      src,      nativeBuildInputs ? [],      dubJSON ? src + "/dub.json", -    selections ? src + "/dub.selections.nix", +    selections ? src + "/nix/dub.selections.nix",      deps ? import selections,      passthru ? {},      package ? lib.importJSON dubJSON, diff --git a/nixEnv/nixDevEnv/shells/packages-ldc.nix b/nix/shell-packages.nix index bcef059..9e40e24 100644 --- a/nixEnv/nixDevEnv/shells/packages-ldc.nix +++ b/nix/shell-packages.nix @@ -6,7 +6,8 @@ let    dub2nix = (import dub2nix-src) { inherit pkgs; };  in  with pkgs; [ -  nix +  nixFlakes +  dub    ldc    sqlite    nix-prefetch-git diff --git a/nixEnv/dub/mkDub-dmd.nix b/nixEnv/dub/mkDub-dmd.nix deleted file mode 100644 index a35f2d5..0000000 --- a/nixEnv/dub/mkDub-dmd.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ pkgs ? import <nixpkgs> {}, -  stdenv ? pkgs.stdenv, -  rdmd ? pkgs.rdmd, -  dmd ? pkgs.dmd, -  dub ? pkgs.dub }: - -with stdenv; -let -  # Filter function to remove the .dub package folder from src -  filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( -    type == "directory" && baseName == ".dub" -  ); - -  # Convert a GIT rev string (tag) to a simple semver version -  rev-to-version = builtins.replaceStrings ["v" "refs/tags/v"] ["" ""]; - -  dep2src = dubDep: pkgs.fetchgit { inherit (dubDep.fetch) url rev sha256 fetchSubmodules; }; - -  # Fetch a dependency (source only for now) -  fromDub = dubDep: mkDerivation rec { -    name = "${src.name}-${version}"; -    version = rev-to-version dubDep.fetch.rev; -    nativeBuildInputs = [ rdmd dmd dub ]; -    src = dep2src dubDep; - -    buildPhase = '' -      runHook preBuild -      export HOME=$PWD -      dub build -b=release -      runHook postBuild -    ''; - -    # outputs = [ "lib" ]; - -    # installPhase = '' -    #   runHook preInstall -    #   mkdir -p $out/bin -    #   runHook postInstall -    # ''; -  }; - -  # Adds a local package directory (e.g. a git repository) to Dub -  dub-add-local = dubDep: "dub add-local ${(fromDub dubDep).src.outPath} ${rev-to-version dubDep.fetch.rev}"; - -  # The target output of the Dub package -  targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; - -  # Remove reference to build tools and library sources -  disallowedReferences = deps: [ dmd rdmd dub ] ++ builtins.map dep2src deps; - -  removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; - -in { -  inherit fromDub; - -  mkDubDerivation = lib.makeOverridable ({ -    src, -    nativeBuildInputs ? [], -    dubJSON ? src + "/dub.json", -    selections ? src + "/dub.selections.nix", -    deps ? import selections, -    passthru ? {}, -    package ? lib.importJSON dubJSON, -    ... -  } @ attrs: stdenv.mkDerivation (attrs // { - -    pname = package.name; - -    nativeBuildInputs = [ rdmd dmd dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; -    disallowedReferences = disallowedReferences deps; - -    passthru = passthru // { -      inherit dub dmd rdmd pkgs; -    }; - -    src = lib.cleanSourceWith { -      filter = filterDub; -      src = lib.cleanSource src; -    }; - -    preFixup = '' -      find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true -    ''; - -    buildPhase = '' -      runHook preBuild - -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub build --build=release --combined --skip-registry=all - -      runHook postBuild -    ''; - -    checkPhase = '' -      runHook preCheck - -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub test --combined --skip-registry=all - -      runHook postCheck -    ''; - -    installPhase = '' -      runHook preInstall - -      mkdir -p $out/bin -      cp -r "${targetOf package}" $out/bin - -      runHook postInstall -    ''; - -    meta = lib.optionalAttrs (package ? description) { -      description = package.description; -    } // attrs.meta or {}; -  } // lib.optionalAttrs (!(attrs ? version)) { -    # Use name from dub.json, unless pname and version are specified -    name = package.name; -  })); -} diff --git a/nixEnv/dub/mkDub-ldc.nix b/nixEnv/dub/mkDub-ldc.nix deleted file mode 100644 index a9cbb82..0000000 --- a/nixEnv/dub/mkDub-ldc.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ pkgs ? import <nixpkgs> {}, -  stdenv ? pkgs.stdenv, -  ldc ? pkgs.ldc, -  dub ? pkgs.dub -}: - -with stdenv; -let -  # Filter function to remove the .dub package folder from src -  filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( -    type == "directory" && baseName == ".dub" -  ); - -  # Convert a GIT rev string (tag) to a simple semver version -  rev-to-version = builtins.replaceStrings ["v" "refs/tags/v"] ["" ""]; - -  dep2src = dubDep: pkgs.fetchgit { inherit (dubDep.fetch) url rev sha256 fetchSubmodules; }; - -  # Fetch a dependency (source only for now) -  fromDub = dubDep: mkDerivation rec { -    name = "${src.name}-${version}"; -    version = rev-to-version dubDep.fetch.rev; -    nativeBuildInputs = [ ldc dub ]; -    src = dep2src dubDep; - -    buildPhase = '' -      runHook preBuild -      export HOME=$PWD -      dub build -b=release -      runHook postBuild -    ''; - -    # outputs = [ "lib" ]; - -    # installPhase = '' -    #   runHook preInstall -    #   mkdir -p $out/bin -    #   runHook postInstall -    # ''; -  }; - -  # Adds a local package directory (e.g. a git repository) to Dub -  dub-add-local = dubDep: "dub add-local ${(fromDub dubDep).src.outPath} ${rev-to-version dubDep.fetch.rev}"; - -  # The target output of the Dub package -  targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; - -  # Remove reference to build tools and library sources -  disallowedReferences = deps: [ ldc dub ] ++ builtins.map dep2src deps; - -  removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; - -in { -  inherit fromDub; - -  mkDubDerivation = lib.makeOverridable ({ -    src, -    nativeBuildInputs ? [], -    dubJSON ? src + "/dub.json", -    selections ? src + "/dub.selections.nix", -    deps ? import selections, -    passthru ? {}, -    package ? lib.importJSON dubJSON, -    ... -  } @ attrs: stdenv.mkDerivation (attrs // { - -    pname = package.name; - -    nativeBuildInputs = [ ldc dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; -    disallowedReferences = disallowedReferences deps; - -    passthru = passthru // { -      inherit dub ldc pkgs; -    }; - -    src = lib.cleanSourceWith { -      filter = filterDub; -      src = lib.cleanSource src; -    }; - -    preFixup = '' -      find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true -    ''; - -    buildPhase = '' -      runHook preBuild - -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub build --compiler=ldc2 --build=release --combined --skip-registry=all - -      runHook postBuild -    ''; - -    checkPhase = '' -      runHook preCheck - -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub test --combined --skip-registry=all - -      runHook postCheck -    ''; - -    installPhase = '' -      runHook preInstall - -      mkdir -p $out/bin -      cp -r "${targetOf package}" $out/bin - -      runHook postInstall -    ''; - -    meta = lib.optionalAttrs (package ? description) { -      description = package.description; -    } // attrs.meta or {}; -  } // lib.optionalAttrs (!(attrs ? version)) { -    # Use name from dub.json, unless pname and version are specified -    name = package.name; -  })); -} diff --git a/nixEnv/nixDevEnv/dub/mkDub-dmd.nix b/nixEnv/nixDevEnv/dub/mkDub-dmd.nix deleted file mode 100644 index a35f2d5..0000000 --- a/nixEnv/nixDevEnv/dub/mkDub-dmd.nix +++ /dev/null @@ -1,121 +0,0 @@ -{ pkgs ? import <nixpkgs> {}, -  stdenv ? pkgs.stdenv, -  rdmd ? pkgs.rdmd, -  dmd ? pkgs.dmd, -  dub ? pkgs.dub }: - -with stdenv; -let -  # Filter function to remove the .dub package folder from src -  filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( -    type == "directory" && baseName == ".dub" -  ); - -  # Convert a GIT rev string (tag) to a simple semver version -  rev-to-version = builtins.replaceStrings ["v" "refs/tags/v"] ["" ""]; - -  dep2src = dubDep: pkgs.fetchgit { inherit (dubDep.fetch) url rev sha256 fetchSubmodules; }; - -  # Fetch a dependency (source only for now) -  fromDub = dubDep: mkDerivation rec { -    name = "${src.name}-${version}"; -    version = rev-to-version dubDep.fetch.rev; -    nativeBuildInputs = [ rdmd dmd dub ]; -    src = dep2src dubDep; - -    buildPhase = '' -      runHook preBuild -      export HOME=$PWD -      dub build -b=release -      runHook postBuild -    ''; - -    # outputs = [ "lib" ]; - -    # installPhase = '' -    #   runHook preInstall -    #   mkdir -p $out/bin -    #   runHook postInstall -    # ''; -  }; - -  # Adds a local package directory (e.g. a git repository) to Dub -  dub-add-local = dubDep: "dub add-local ${(fromDub dubDep).src.outPath} ${rev-to-version dubDep.fetch.rev}"; - -  # The target output of the Dub package -  targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; - -  # Remove reference to build tools and library sources -  disallowedReferences = deps: [ dmd rdmd dub ] ++ builtins.map dep2src deps; - -  removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; - -in { -  inherit fromDub; - -  mkDubDerivation = lib.makeOverridable ({ -    src, -    nativeBuildInputs ? [], -    dubJSON ? src + "/dub.json", -    selections ? src + "/dub.selections.nix", -    deps ? import selections, -    passthru ? {}, -    package ? lib.importJSON dubJSON, -    ... -  } @ attrs: stdenv.mkDerivation (attrs // { - -    pname = package.name; - -    nativeBuildInputs = [ rdmd dmd dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; -    disallowedReferences = disallowedReferences deps; - -    passthru = passthru // { -      inherit dub dmd rdmd pkgs; -    }; - -    src = lib.cleanSourceWith { -      filter = filterDub; -      src = lib.cleanSource src; -    }; - -    preFixup = '' -      find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true -    ''; - -    buildPhase = '' -      runHook preBuild - -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub build --build=release --combined --skip-registry=all - -      runHook postBuild -    ''; - -    checkPhase = '' -      runHook preCheck - -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub test --combined --skip-registry=all - -      runHook postCheck -    ''; - -    installPhase = '' -      runHook preInstall - -      mkdir -p $out/bin -      cp -r "${targetOf package}" $out/bin - -      runHook postInstall -    ''; - -    meta = lib.optionalAttrs (package ? description) { -      description = package.description; -    } // attrs.meta or {}; -  } // lib.optionalAttrs (!(attrs ? version)) { -    # Use name from dub.json, unless pname and version are specified -    name = package.name; -  })); -} diff --git a/nixEnv/nixDevEnv/overlays/ldcVersion.nix b/nixEnv/nixDevEnv/overlays/ldcVersion.nix deleted file mode 100644 index 5bc7f7a..0000000 --- a/nixEnv/nixDevEnv/overlays/ldcVersion.nix +++ /dev/null @@ -1,15 +0,0 @@ -self: super: rec { -  ldc = super.ldc.overrideAttrs(oldAttrs: rec { -    pname   = "ldc"; -    version = "1.24.0"; -    sha256  = "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx"; -    name = "${pname}-${version}"; -    src = super.fetchurl { -      url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; -      sha256 = sha256; -    }; -    postUnpack = '' -      patchShebangs . -    ''; -  }); -} diff --git a/nixEnv/nixDevEnv/shells/shell-dmd-verNix.nix b/nixEnv/nixDevEnv/shells/shell-dmd-verNix.nix deleted file mode 100644 index 7f16efe..0000000 --- a/nixEnv/nixDevEnv/shells/shell-dmd-verNix.nix +++ /dev/null @@ -1,12 +0,0 @@ -{ pkgs ? import <nixpkgs> {} }: -pkgs.mkShell { -  buildInputs = with pkgs; [ -    nix -    dub -    dmd -    rdmd -    sqlite -    dub2nix -    nix-prefetch-git -  ]; -} diff --git a/nixEnv/nixDevEnv/shells/shell-dmd-verUser.nix b/nixEnv/nixDevEnv/shells/shell-dmd-verUser.nix deleted file mode 100644 index 334aece..0000000 --- a/nixEnv/nixDevEnv/shells/shell-dmd-verUser.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs ? import <nixpkgs> -  { overlays = [ ]; } -}: -pkgs.mkShell { -  buildInputs = with pkgs; [ -    nix -    dub -    dmd -    rdmd -    sqlite -    dub2nix -    nix-prefetch-git -  ]; -} diff --git a/nixEnv/nixDevEnv/shells/shell-ldc-verNix.nix b/nixEnv/nixDevEnv/shells/shell-ldc-verNix.nix deleted file mode 100644 index 0a6aa9a..0000000 --- a/nixEnv/nixDevEnv/shells/shell-ldc-verNix.nix +++ /dev/null @@ -1,5 +0,0 @@ -{ pkgs ? import <nixpkgs> {} }: -pkgs.mkShell { -  buildInputs = with pkgs; -  [ (import ./packages-ldc.nix { inherit pkgs; }) ]; -} diff --git a/nixEnv/nixDevEnv/shells/shell-ldc-verUser.nix b/nixEnv/nixDevEnv/shells/shell-ldc-verUser.nix deleted file mode 100644 index 1c9c092..0000000 --- a/nixEnv/nixDevEnv/shells/shell-ldc-verUser.nix +++ /dev/null @@ -1,7 +0,0 @@ -{ pkgs ? import <nixpkgs> { -  overlays = [ (import ../overlays/ldcVersion.nix) ]; -} }: -pkgs.mkShell { -  buildInputs = with pkgs; -  [ (import ./packages-ldc.nix { inherit pkgs; }) ]; -} diff --git a/nixEnv/overlays/ldcVersion.nix b/nixEnv/overlays/ldcVersion.nix deleted file mode 100644 index 5bc7f7a..0000000 --- a/nixEnv/overlays/ldcVersion.nix +++ /dev/null @@ -1,15 +0,0 @@ -self: super: rec { -  ldc = super.ldc.overrideAttrs(oldAttrs: rec { -    pname   = "ldc"; -    version = "1.24.0"; -    sha256  = "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx"; -    name = "${pname}-${version}"; -    src = super.fetchurl { -      url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; -      sha256 = sha256; -    }; -    postUnpack = '' -      patchShebangs . -    ''; -  }); -} diff --git a/nixEnv/shells/packages-ldc.nix b/nixEnv/shells/packages-ldc.nix deleted file mode 100644 index bcef059..0000000 --- a/nixEnv/shells/packages-ldc.nix +++ /dev/null @@ -1,14 +0,0 @@ -{ pkgs ? import <nixpkgs> {} }: -let -  dub2nix-src = fetchTarball { -    url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; -  }; -  dub2nix = (import dub2nix-src) { inherit pkgs; }; -in -with pkgs; [ -  nix -  ldc -  sqlite -  nix-prefetch-git -  validatePkgConfig -] diff --git a/nixEnv/shells/shell-dmd-verNix.nix b/nixEnv/shells/shell-dmd-verNix.nix deleted file mode 100755 index cac08f4..0000000 --- a/nixEnv/shells/shell-dmd-verNix.nix +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env -S nix-shell -{ pkgs ? import <nixpkgs> {} }: -pkgs.mkShell { -  buildInputs = with pkgs; [ -    nix -    dub -    dmd -    rdmd -    sqlite -    dub2nix -    nix-prefetch-git -  ]; -} diff --git a/nixEnv/shells/shell-dmd-verUser.nix b/nixEnv/shells/shell-dmd-verUser.nix deleted file mode 100755 index 4e40c0b..0000000 --- a/nixEnv/shells/shell-dmd-verUser.nix +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env -S nix-shell -{ pkgs ? import <nixpkgs> -  { overlays = [ ]; } -}: -pkgs.mkShell { -  buildInputs = with pkgs; [ -    nix -    dub -    dmd -    rdmd -    sqlite -    dub2nix -    nix-prefetch-git -  ]; -} diff --git a/nixEnv/shells/shell-ldc-verNix.nix b/nixEnv/shells/shell-ldc-verNix.nix deleted file mode 100755 index 748f553..0000000 --- a/nixEnv/shells/shell-ldc-verNix.nix +++ /dev/null @@ -1,12 +0,0 @@ -#!/usr/bin/env -S nix-shell -{ pkgs ? import <nixpkgs> {} }: -pkgs.mkShell { -  buildInputs = with pkgs; [ -    (import ./packages-ldc.nix { inherit pkgs; }) -  ]; -  shellHook = '' -    # nix-build -    ## nix-build -I nixpkgs=<provide local nix path> -    ## nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs -  ''; -} diff --git a/nixEnv/shells/shell-ldc-verUser.nix b/nixEnv/shells/shell-ldc-verUser.nix deleted file mode 100755 index d7f3267..0000000 --- a/nixEnv/shells/shell-ldc-verUser.nix +++ /dev/null @@ -1,14 +0,0 @@ -#!/usr/bin/env -S nix-shell -{ pkgs ? import <nixpkgs> { -  overlays = [ (import ../overlays/ldcVersion.nix) ]; -} }: -pkgs.mkShell { -  buildInputs = with pkgs; [ -    (import ./packages-ldc.nix { inherit pkgs; }) -  ]; -  shellHook = '' -    # nix-build -    ## nix-build -I nixpkgs=<provide local nix path> -    ## nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs -  ''; -} diff --git a/org/spine_build_scaffold.org b/org/spine_build_scaffold.org index dd043e2..e06bbc6 100644 --- a/org/spine_build_scaffold.org +++ b/org/spine_build_scaffold.org @@ -999,30 +999,6 @@ tangle_maker:  			(kill-buffer)) '($$ORGFILES)))" 2>&1  #+END_SRC -#+NAME: make_nix_project_shell -#+BEGIN_SRC makefile -nixsh_dmd_nixpkg: -	ln -sf nixEnv/shells/shell-dmd-verNix.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -nixsh_dmd_user: -	ln -sf nixEnv/shells/shell-dmd-verUser.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -nixsh_ldc_nixpkg: -	ln -sf nixEnv/shells/shell-ldc-verNix.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -nixsh_ldc_user: -	ln -sf nixEnv/shells/shell-ldc-verUser.nix shell.nix; \ -	ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix; \ -	ls -la shell.nix mkDub.nix | cut -d " " -f 9-; \ -	nix-shell; -#+END_SRC -  *** git snapshot  #+NAME: make_git_snapshot @@ -1045,7 +1021,7 @@ gitsnapshot: distclean tangle  #+BEGIN_SRC json  :NO-tangle ../dub.settings.json  {    "defaultArchitecture": "x86_64", -  "defaultCompiler": "ldc" +  "defaultCompiler":     "ldc"  }  #+END_SRC @@ -1163,7 +1139,7 @@ gitsnapshot: distclean tangle  }  #+END_SRC -* dub.sdl :dub:config:sdl: +* dub.sdl REFERENCE :dub:config:sdl:  Every DUB package should contain a [[http://code.dlang.org/package-format?lang=json][dub.json]] (or [[http://code.dlang.org/package-format?lang=sdl][dub.sdl]])  not configured here using dub.json for the moment @@ -1183,11 +1159,11 @@ stringImportPaths   "./views"  buildRequirements   "allowWarnings"  targetType          "executable"  platforms           "posix" -dependency          "d2sqlite3"      version="~><<version_d2sqlite3>>"      # https://code.dlang.org/packages/d2sqlite3     http://biozic.github.io/d2sqlite3/d2sqlite3 +dependency          "d2sqlite3"      version="~><<version_d2sqlite3>>"     # https://code.dlang.org/packages/d2sqlite3     http://biozic.github.io/d2sqlite3/d2sqlite3    subconfiguration  "d2sqlite3"      "all-included" -dependency          "imageformats"   version="~><<version_imageformats>>"       # https://code.dlang.org/packages/imageformats  https://github.com/lgvz/imageformats -dependency          "dyaml"          version="~><<version_dyaml>>"       # https://code.dlang.org/packages/dyaml         https://github.com/dlang-community/D-YAML -dependency          "tinyendian"     version="~><<version_tinyendian>>"       # http://code.dlang.org/packages/tinyendian     https://github.com/dlang-community/tinyendian // dyaml dependency +dependency          "imageformats"   version="~><<version_imageformats>>"  # https://code.dlang.org/packages/imageformats  https://github.com/lgvz/imageformats +dependency          "dyaml"          version="~><<version_dyaml>>"         # https://code.dlang.org/packages/dyaml         https://github.com/dlang-community/D-YAML +dependency          "tinyendian"     version="~><<version_tinyendian>>"    # http://code.dlang.org/packages/tinyendian     https://github.com/dlang-community/tinyendian // dyaml dependency  #+END_SRC  ** default @@ -1311,7 +1287,7 @@ configuration "build" {  }  #+END_SRC -* meson :meson:build: +* meson REVISIT :meson:build:  ** notes  http://mesonbuild.com/D.html @@ -1722,20 +1698,6 @@ tinyendian_dep = declare_dependency(  - see shell.nix minimal content: -#+BEGIN_SRC nix :NO-tangle shell.nix -with import <nixpkgs> {}; -let -  dub2nix-src = fetchTarball { -    url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; -  }; -  dub2nix = (import dub2nix-src) { inherit pkgs; }; -in mkShell { -  buildInputs = [ -    dub dmd rdmd sqlite dub2nix nix-prefetch-git -  ]; -} -#+END_SRC -  - run: nix-shell  - run: dub init @@ -1743,7 +1705,7 @@ in mkShell {  - add d2sqlite3 dependency (provide as dependency during “dub init” or add it to    the dub.json manually) -#+BEGIN_SRC json :NO-tangle dub.json +#+BEGIN_SRC json :NO-tangle ../dub.json  {    "authors": [      "Ralph Amissah" @@ -1791,6 +1753,7 @@ make modificatons if desired         nix-build -I nixpkgs=[path-to]/nixpkgs  ** envrc :envrc: +*** .envrc  #+BEGIN_SRC nix :tangle ../.envrc  if type lorri &>/dev/null; then @@ -1808,231 +1771,259 @@ if [ -e .envrc-local ]; then  fi  #+END_SRC -** shells shell.nix SELECT :shell: - -  nix-shell -  nix-shell --pure -I nixpkgs=/nixpkgs-ra/nixpkgs -   nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs {}; ldc" - -*** dmd shell :dmd: +- enable flakes -- ln -sf nixEnv/shells/shell-dmd-verNix.nix shell.nix -- ln -sf nixEnv/shells/shell-dmd-verUser.nix shell.nix - -- ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix - -**** nixpkg - -- ln -sf nixEnv/shells/shell-dmd-verNix.nix shell.nix -- ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix - -#+BEGIN_SRC nix :tangle ../nixEnv/shells/shell-dmd-verNix.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell" -{ pkgs ? import <nixpkgs> {} }: -<<nix_shell_mkshell_with_buildInputs_dmd>> +#+BEGIN_SRC nix :NO-tangle ../.envrc +if [ -f flake.lock ] && [ -f flake.nix ]; then +    # reload when these files change +    watch_file flake.nix +    watch_file flake.lock +    # load the flake devShell +    if [ ! -d $(direnv_layout_dir) ]; then +        mkdir $(direnv_layout_dir) +    fi +    eval "$(nix --experimental-features 'nix-command flakes' print-dev-env --profile "$(direnv_layout_dir)/flake-profile")" +else +    # fall back to using direnv's builtin nix support +    # to prevent bootstrapping problems. +  #  use nix +  if type lorri &>/dev/null; then +      echo "direnv: using lorri from PATH ($(type -p lorri))" +      eval "$(lorri direnv)" +  else +      # fall back to using direnv's builtin nix support +      # to prevent bootstrapping problems. +      use nix +      NIX_ENFORCE_PURITY=0 +  fi +  # source an additional user-specific .envrc in ./.envrc-local +  if [ -e .envrc-local ]; then +     source .envrc-local +  fi +fi  #+END_SRC -**** user +*** .envrc-local CHECK MODIFY -- ln -sf nixEnv/shells/shell-dmd-verUser.nix shell.nix -- ln -sf nixEnv/dub/mkDub-dmd.nix mkDub.nix +- bespoke modify appropriately and generate if needed -#+BEGIN_SRC nix :tangle ../nixEnv/shells/shell-dmd-verUser.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell" -<<nix_shell_overlay_user_version_dmd>> -<<nix_shell_mkshell_with_buildInputs_dmd>> +#+BEGIN_SRC nix :NO-tangle ../.envrc-local +export NIX_PATH=nixpkgs=<<nixpkgs_path>> +nix-instantiate --find-file nixpkgs  #+END_SRC -*** ldc shell :ldc: - -- ln -sf nixEnv/shells/shell-ldc-verNix.nix shell.nix -- ln -sf nixEnv/shells/shell-ldc-verUser.nix shell.nix - -- ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix - -**** nixpkg - -- ln -sf nixEnv/shells/shell-ldc-verNix.nix shell.nix -- ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix +**** nixpkgs_path SETUP +***** nixpkgs select path SELECT -#+BEGIN_SRC nix :tangle ../nixEnv/shells/shell-ldc-verNix.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell" -{ pkgs ? import <nixpkgs> {} }: -<<nix_shell_mkshell_with_buildInputs_ldc>> +#+NAME: nixpkgs_path +#+BEGIN_SRC nix +<<nixpkgs_path_default>>  #+END_SRC -**** user +***** nixpkgs path options -- ln -sf nixEnv/shells/shell-ldc-verUser.nix shell.nix -- ln -sf nixEnv/dub/mkDub-ldc.nix mkDub.nix +- <nixpkgs> -#+BEGIN_SRC nix :tangle ../nixEnv/shells/shell-ldc-verUser.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell" -<<nix_shell_overlay_user_version_ldc>> -<<nix_shell_mkshell_with_buildInputs_ldc>> +#+NAME: nixpkgs_path_default +#+BEGIN_SRC nix +<nixpkgs>  #+END_SRC -***** (import ./nixEnv/overlays/ldcVersion.nix) +- local path -#+NAME: nix_shell_overlay_user_version_ldc +#+NAME: nixpkgs_path_local  #+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> { -  overlays = [ (import ../overlays/ldcVersion.nix) ]; -} }: +/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs  #+END_SRC -**** mkShell with build inputs +** flake :flake: -#+NAME: nix_shell_mkshell_with_buildInputs_ldc -#+BEGIN_SRC nix -pkgs.mkShell { -  buildInputs = with pkgs; [ -    (import ./packages-ldc.nix { inherit pkgs; }) -  ]; -  shellHook = '' -    # nix-build -    ## nix-build -I nixpkgs=<provide local nix path> -    ## nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs -  ''; -} -#+END_SRC +- flake.nix +    /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs +    ./shell.nix +  - shell.nix +      ./shell-packages.nix +    - shell-packages.nix +  - default.nix +      ./nix/mkDub.nix +    - mkdub.nix +       ./nix/dub.selections.nix +    - dub.selections.nix -- overlay header +nix develop -*** parts -**** dub2nix +#+BEGIN_SRC nix :tangle ../flake.nix +{ +  description = "a sisu like document parser"; +  inputs = { +    flake-utils.url = "github:numtide/flake-utils"; +    nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; +    # pkgs /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {} +    #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform"; +    #spine.url = "./."; +    d2sqlite3 = { +      url    = "github:dlang-community/d2sqlite3"; +      flake  = false; +    }; +    tinyendian = { +      url    = "github:kiith-sa/tinyendian"; +      flake  = false; +    }; +    dyaml = { +      url    = "github:dlang-community/D-YAML"; +      flake  = false; +    }; +    imageformats = { +      url    = "github:lgvz/imageformats"; +      flake  = false; +    }; +    dub2nix-src = { +      url = "github:lionello/dub2nix"; +      flake  = false; +    }; +  }; +  outputs = { self, nixpkgs, flake-utils }: +    flake-utils.lib.simpleFlake { +    #flake-utils.lib.spine { +      inherit self nixpkgs; +      name = "spine"; +      #shell = ./shell.nix; +    }; +} +#+END_SRC -#+NAME: nix_shell_dub2nix -#+BEGIN_SRC nix -dub2nix-src = fetchTarball { -  url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; -}; -dub2nix = (import dub2nix-src) { inherit pkgs; }; +#+BEGIN_SRC nix :NO-tangle ../flake.nix +{ +  description = "a sisu like document parser"; +  inputs = { +    flake-utils.url = "github:numtide/flake-utils"; +    nixpkgs.url = "/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs"; +    # pkgs /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {} +    #spine.url = "/grotto-ra/repo/git.repo/projects/project-spine/doc-reform"; +    #spine.url = "./."; +  }; +  outputs = { self, nixpkgs, flake-utils }: +    #flake-utils.lib.eachSystem [ "x86_64-linux" "defaultPackage.x86_64-linux" "packages.x86_64-linux.defaultPackage.x86_64-linux" ] (system: +    flake-utils.lib.eachDefaultSystem (system: +      let +        #pkgs = ${system}; +        pkgs = nixpkgs.legacyPackages.${system}; +        # project = pkgs.spine.project' { +        #   src = ./.; +        #   compiler-nix-name = "ldc"; +        # }; +      in { #project.flake {} // { +        #devShell = project.shellFor { +        #  (import ./shell.nix self { inherit pkgs; }); +        #}; +        devShell = import ./default.nix self { inherit pkgs; }; +      } +    ); +}  #+END_SRC -**** overlays :overlays: +** shell.nix :shell: -#+NAME: nix_shell_overlay_none -#+BEGIN_SRC nix -{ overlays = [ ]; } -#+END_SRC +  nix-shell -***** (import ./nixEnv/overlays/dmdVersion.nix) +  shell.nix --pure +  shell.nix --pure -I .envrc -no working overlay, default none: +  nix-shell --pure -I nixpkgs=/nixpkgs-ra/nixpkgs +  nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs {}; ldc" +  nix-shell --pure -p "with import /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {}; [dub ldc]" -#+NAME: nix_shell_overlay_user_version_dmd -#+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> -  { overlays = [ ]; } -}: -#+END_SRC +  shell.nix direnv: export +IN_NIX_SHELL -use if working overlay: +  nix-shell -p nixFlakes +  nix-shell -p nixFlakes --pure +  nix-shell -p nixFlakes --pure -p "with import /nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs {}; [dub ldc]" -#+BEGIN_SRC nix -{ overlays = [ -  (import ../overlays/dmdVersion.nix) -]; } -#+END_SRC +  shell.nix -I .envrc +  shell.nix -**** build inputs +  nix-build +  nix-build -I nixpkgs=<provide local nix path> +  nix-build -I .envrc -#+NAME: nix_shell_mkshell_with_buildInputs_dmd -#+BEGIN_SRC nix +#+BEGIN_SRC nix :tangle ../shell.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell" +{ pkgs ? import <nixpkgs> {} }:  pkgs.mkShell {    buildInputs = with pkgs; [ -    nix -    dub -    dmd -    rdmd -    sqlite -    dub2nix -    nix-prefetch-git +    (import ./nix/shell-packages.nix { inherit pkgs; })    ]; +  shellHook = '' +    nix-build +    echo "built spine @ ./result/bin/spine" +  '';  }  #+END_SRC -**** build inputs ldc +- combining shell.nix & default.nix to build package: -#+BEGIN_SRC nix :tangle ../nixEnv/shells/packages-ldc.nix -{ pkgs ? import <nixpkgs> {} }: -let -  dub2nix-src = fetchTarball { -    url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; -  }; -  dub2nix = (import dub2nix-src) { inherit pkgs; }; -in -with pkgs; [ -  nix -  ldc -  sqlite -  nix-prefetch-git -  validatePkgConfig -] -#+END_SRC - -*** shell with dmd & ldc :shell: - -#+NAME: nix_shell_with_compilers_dmd_and_ldc -#+BEGIN_SRC nix -{ pkgs ? import <nixpkgs> { -  overlays = [ -    (import ./nixEnv/overlays/ldcVersion.nix) -  ]; } +#+BEGIN_SRC nix :NO-tangle ../shell.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell" +#!/usr/bin/env -S nix-shell +{ pkgs ? import <nixpkgs> {}, +  stdenv ? pkgs.stdenv,  }: -let -  dub2nix-src = fetchTarball { -    url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; +with import ./nix/mkDub.nix { inherit pkgs; }; +mkDubDerivation rec { +  name = "spine-${version}"; +  version = "0.11.1"; +  src = ./.; +  buildInputs = with pkgs; [( +    import ./nix/shell-packages.nix +    { inherit pkgs; } +  )]; +  meta = with stdenv.lib; { +    homepage = http://sisudoc.org; +    description = "a sisu like document parser"; +    license = licenses.agpl3Plus; +    platforms = platforms.linux; +    maintainers = [ RalphAmissah ];    }; -  dub2nix = (import dub2nix-src) { inherit pkgs; }; -in pkgs.mkShell { -  buildInputs = with pkgs; [ -    nix -    dub -    dmd -    ldc -    rdmd -    sqlite -    dub2nix -    nix-prefetch-git -  ];  }  #+END_SRC -*** dub2nix version :dub2nix: - -#+BEGIN_SRC nix -  dub2nix-src = fetchTarball { -    url = "https://github.com/lionello/dub2nix/archive/8e7c65f1fd8c1ef5b32e2bf63ba80fe4f059ec15.tar.gz"; -    sha256 = "0imlbpv40h303h4mq4vijc9psl401n4sdxn3yp6k4gp2n0853xpm"; -  }; -#+END_SRC - -** default.nix :default: - -- default.nix -I nixpkgs=<provide local nix path> -  e.g. default.nix -I nixpkgs=/nixpkgs-ra/nixpkgs -- nix-build -I nixpkgs=<provide local nix path> -  e.g. nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs - -#+BEGIN_SRC txt :tangle ../default.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-build" -<<nix_project>> -#+END_SRC - -#+BEGIN_SRC txt :tangle ../project.nix -<<nix_project>> -#+END_SRC +- package import incorporated, all in one file -#+NAME: nix_project -#+BEGIN_SRC nix +#+BEGIN_SRC nix :NO-tangle ../shell.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-shell"  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv,  }: -with import ./mkDub.nix { inherit pkgs; }; +with import ./nix/mkDub.nix { inherit pkgs; };  mkDubDerivation rec {    name = "spine-${version}"; -  version = "<<version_spine>>"; +  version = "0.11.1";    src = ./.;    buildInputs = [      pkgs.sqlite +    ( +      let +        dub2nix-src = fetchTarball { +          url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; +        }; +        dub2nix = (import dub2nix-src) { inherit pkgs; }; +      in +      with pkgs; [ +        nixFlakes +        dub +        ldc +        sqlite +        nix-prefetch-git +        validatePkgConfig +      ] +    )    ]; +  shellHook = '' +    # nix-build -I nixpkgs=<provide local nix path> +    nix-build +    echo "built spine" +  ''; +  installPhase = '' +    install -m755 -D spine $out/bin/spine +    echo "built $out/bin/spine" +  '';    meta = with stdenv.lib; {      homepage = http://sisudoc.org;      description = "a sisu like document parser"; @@ -2043,143 +2034,113 @@ mkDubDerivation rec {  }  #+END_SRC -** mkDub.nix :mkDub: +** default.nix :default: -Get current mkDub.nix from the dub2nix project: +- default.nix -I nixpkgs=<provide local nix path> +  e.g. default.nix -I nixpkgs=/nixpkgs-ra/nixpkgs -#+BEGIN_SRC sh -aria2c https://raw.githubusercontent.com/lionello/dub2nix/master/mkDub.nix -#+END_SRC +- nix-build -I nixpkgs=<provide local nix path> +  e.g. nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs -*** mkDub dmd +  nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs +  nix-build -I .envrc-local +  nix-build -I .envrc +  default.nix -I .envrc +  default.nix -#+BEGIN_SRC nix :tangle ../nixEnv/dub/mkDub-dmd.nix +#+BEGIN_SRC nix :tangle ../default.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-build"  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv, -  rdmd ? pkgs.rdmd, -  dmd ? pkgs.dmd, -  dub ? pkgs.dub }: - -with stdenv; -let -  # Filter function to remove the .dub package folder from src -  filterDub = name: type: let baseName = baseNameOf (toString name); in ! ( -    type == "directory" && baseName == ".dub" -  ); - -  # Convert a GIT rev string (tag) to a simple semver version -  rev-to-version = builtins.replaceStrings ["v" "refs/tags/v"] ["" ""]; - -  dep2src = dubDep: pkgs.fetchgit { inherit (dubDep.fetch) url rev sha256 fetchSubmodules; }; - -  # Fetch a dependency (source only for now) -  fromDub = dubDep: mkDerivation rec { -    name = "${src.name}-${version}"; -    version = rev-to-version dubDep.fetch.rev; -    nativeBuildInputs = [ rdmd dmd dub ]; -    src = dep2src dubDep; - -    buildPhase = '' -      runHook preBuild -      export HOME=$PWD -      dub build -b=release -      runHook postBuild -    ''; - -    # outputs = [ "lib" ]; - -    # installPhase = '' -    #   runHook preInstall -    #   mkdir -p $out/bin -    #   runHook postInstall -    # ''; -  }; - -  # Adds a local package directory (e.g. a git repository) to Dub -  dub-add-local = dubDep: "dub add-local ${(fromDub dubDep).src.outPath} ${rev-to-version dubDep.fetch.rev}"; - -  # The target output of the Dub package -  targetOf = package: "${package.targetPath or "."}/${package.targetName or package.name}"; - -  # Remove reference to build tools and library sources -  disallowedReferences = deps: [ dmd rdmd dub ] ++ builtins.map dep2src deps; - -  removeExpr = refs: ''remove-references-to ${lib.concatMapStrings (ref: " -t ${ref}") refs}''; - -in { -  inherit fromDub; - -  mkDubDerivation = lib.makeOverridable ({ -    src, -    nativeBuildInputs ? [], -    dubJSON ? src + "/dub.json", -    selections ? src + "/dub.selections.nix", -    deps ? import selections, -    passthru ? {}, -    package ? lib.importJSON dubJSON, -    ... -  } @ attrs: stdenv.mkDerivation (attrs // { - -    pname = package.name; - -    nativeBuildInputs = [ rdmd dmd dub pkgs.removeReferencesTo ] ++ nativeBuildInputs; -    disallowedReferences = disallowedReferences deps; - -    passthru = passthru // { -      inherit dub dmd rdmd pkgs; -    }; - -    src = lib.cleanSourceWith { -      filter = filterDub; -      src = lib.cleanSource src; -    }; +}: +with import ./nix/mkDub.nix { inherit pkgs; }; +mkDubDerivation rec { +  name = "spine-${version}"; +  version = "<<version_spine>>"; +  src = ./.; +  buildInputs = [ +    pkgs.sqlite +    (import ./nix/shell-packages.nix { inherit pkgs; }) +  ]; +  # installPhase = '' +  #   install -m755 -D spine $out/bin/spine +  #   echo "built $out/bin/spine" +  # ''; +  <<nix_project_meta>> +} +#+END_SRC -    preFixup = '' -      find $out/bin -type f -exec ${removeExpr (disallowedReferences deps)} '{}' + || true -    ''; +** project.nix :project: -    buildPhase = '' -      runHook preBuild +#+BEGIN_SRC nix :tangle ../project.nix :tangle-mode (identity #o755) :shebang "#!/usr/bin/env -S nix-build" +{ pkgs ? import <nixpkgs> {}, +  stdenv ? pkgs.stdenv, +}: +with import ./nix/mkDub.nix { inherit pkgs; }; +mkDubDerivation rec { +  name = "spine-${version}"; +  version = "<<version_spine>>"; +  src = ./.; +  buildInputs = [ +    pkgs.sqlite +    ( +      <<nix_dub2nix_with_pkgs>> +    ) +  ]; +  shellHook = '' +    # nix-build -I nixpkgs=<provide local nix path> +    nix-build +    echo "built spine" +  ''; +  installPhase = '' +    install -m755 -D spine $out/bin/spine +    echo "built $out/bin/spine" +  ''; +  <<nix_project_meta>> +} +#+END_SRC -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub build --build=release --combined --skip-registry=all +- unused +  - installPhase -      runHook postBuild -    ''; +#+BEGIN_SRC txt +installPhase = '' +  mkdir -p $out/bin +  cp spine $out/bin +  chmod +x $out/bin/spine +''; +#+END_SRC -    checkPhase = '' -      runHook preCheck +** project meta -      export HOME=$PWD -      ${lib.concatMapStringsSep "\n" dub-add-local deps} -      dub test --combined --skip-registry=all +#+NAME: nix_project_meta +#+BEGIN_SRC nix +meta = with stdenv.lib; { +  homepage = http://sisudoc.org; +  description = "a sisu like document parser"; +  license = licenses.agpl3Plus; +  platforms = platforms.linux; +  maintainers = [ RalphAmissah ]; +}; +#+END_SRC -      runHook postCheck -    ''; +** mkDub.nix :mkDub: -    installPhase = '' -      runHook preInstall +Get current mkDub.nix from the dub2nix project: -      mkdir -p $out/bin -      cp -r "${targetOf package}" $out/bin +#+BEGIN_SRC sh +aria2c https://raw.githubusercontent.com/lionello/dub2nix/master/mkDub.nix ./nix/. +#+END_SRC -      runHook postInstall -    ''; +*** dub2nix -    meta = lib.optionalAttrs (package ? description) { -      description = package.description; -    } // attrs.meta or {}; -  } // lib.optionalAttrs (!(attrs ? version)) { -    # Use name from dub.json, unless pname and version are specified -    name = package.name; -  })); -} +#+BEGIN_SRC nix :tangle ../nix/shell-packages.nix +{ pkgs ? import <nixpkgs> {} }: +<<nix_dub2nix_with_pkgs>>  #+END_SRC -*** mkDub ldc HACK +*** mkDub -#+BEGIN_SRC nix :tangle ../nixEnv/dub/mkDub-ldc.nix +#+BEGIN_SRC nix :tangle ../nix/mkDub.nix  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv,    ldc ? pkgs.ldc, @@ -2239,7 +2200,7 @@ in {      src,      nativeBuildInputs ? [],      dubJSON ? src + "/dub.json", -    selections ? src + "/dub.selections.nix", +    selections ? src + "/nix/dub.selections.nix",      deps ? import selections,      passthru ? {},      package ? lib.importJSON dubJSON, @@ -2303,93 +2264,39 @@ in {  }  #+END_SRC -** overlays :overlay: -*** compilers (latest versions) [version information set elsewhere] -**** ldcVersion.nix overlay :ldc:version: +** dub2nix & shared pkgs SHARED +*** dub2nix with pkgs shared -#+BEGIN_SRC nix :tangle ../nixEnv/overlays/ldcVersion.nix -self: super: rec { -  ldc = super.ldc.overrideAttrs(oldAttrs: rec { -    pname   = "ldc"; -    <<ldc_version_info>> -    name = "${pname}-${version}"; -    src = super.fetchurl { -      url = "https://github.com/ldc-developers/ldc/releases/download/v${version}/ldc-${version}-src.tar.gz"; -      sha256 = sha256; -    }; -    postUnpack = '' -      patchShebangs . -    ''; -  }); -} -#+END_SRC - -**** dmdVersion.nix overlay HACK :dmd:version: - -no working overlay, tangle to work on - -#+BEGIN_SRC nix :NO-tangle ../nixEnv/overlays/dmdVersion.nix -self: super: rec { -  pname   = "dmd"; -  <<dmd_version_info>> -  dmd = super.dmd.overrideAttrs(oldAttrs: rec { -    inherit pname year version sha256; -    name = "${pname}-${version}"; -    src = super.fetchurl { -      url = "http://downloads.dlang.org/releases/${year}/dmd.${version}.linux.tar.xz"; -      sha256 = sha256; -    }; -    # postUnpack = '' -    #   patchShebangs . -    # ''; -  }); -} -#+END_SRC - -** version info REVIEW :version: - -- https://dlang.org/download.html - -*** compilers (set latest versions) :compiler:version: -**** ldc VERSION :version:set:ldc: - -- https://github.com/ldc-developers/ldc/releases - -***** 1.24.0 HACK - -- https://github.com/ldc-developers/ldc/releases/tag/v1.24.0 -  - nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.24.0/ldc-1.24.0-src.tar.gz - -#+NAME: ldc_version_info +#+NAME: nix_dub2nix_with_pkgs  #+BEGIN_SRC nix -version = "1.24.0"; -sha256  = "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx"; +let +  <<nix_shell_dub2nix>> +in +with pkgs; [ +  <<nix_shell_with_pkgs_list>> +]  #+END_SRC -- ldc-1.24.0 overlay does not build with latest nixos version, nixos-20.09 -  nixos at ldc-1.20.0 - -***** 1.23.0 - -- https://github.com/ldc-developers/ldc/releases/tag/v1.23.0 -  - nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.23.0/ldc-1.23.0-src.tar.gz +*** get dub2nix +#+NAME: nix_shell_dub2nix  #+BEGIN_SRC nix -version = "1.23.0"; -sha256  = "1fdgj222x29as466vdxy9c0m82zzlsb7vnvvh89n2riszcrx463d"; +dub2nix-src = fetchTarball { +  url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; +}; +dub2nix = (import dub2nix-src) { inherit pkgs; };  #+END_SRC -**** dmd :dmd: -https://dlang.org/changelog/index.html -https://dlang.org/changelog/pending.html -http://downloads.dlang.org/releases/ -http://downloads.dlang.org/releases/2.x/ +*** with pkgs list -#+NAME: dmd_version_info +#+NAME: nix_shell_with_pkgs_list  #+BEGIN_SRC nix -version = "2.094.0"; -sha256  = "0xhm8m46ahfx3hcibi3vws02zaplny3226f3x8cd8584gzfqyzxp"; -year    = "2020"; +nixFlakes +dub +ldc +sqlite +nix-prefetch-git +validatePkgConfig  #+END_SRC  * .gitignore :gitignore: @@ -2419,8 +2326,8 @@ year    = "2020";  !misc  !misc/**  !*.nix -!nixEnv -!nixEnv/** +!nix +!nix/**  !.envrc  !src  !src/** @@ -2469,7 +2376,8 @@ tmp/**  #.reggae/**  #+END_SRC -* sh script to batch process _emacs org babel tangle_ :shell_script:tangle: +* misc +** sh script to batch process _emacs org babel tangle_ :shell_script:tangle:    [[http://orgmode.org/manual/Batch-execution.html]]  creates a shell batch script called "tangle", that will tangle (emacs org  babel tangle) org files in ./org/ to create .d source files in ./src/doc_reform/ @@ -2504,23 +2412,66 @@ emacs --batch -Q -q \  #+END_SRC  ** build +*** nix +**** nix-shell + +- default.nix + +#+BEGIN_SRC sh +nix-shell +nix-build +#+END_SRC + +- project.nix + +#+BEGIN_SRC sh +nix-shell +nix-build project.nix +#+END_SRC + +**** nix-shell --pure + +- default.nix + +#+BEGIN_SRC sh +nix-shell --pure +nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs +#+END_SRC + +- project.nix + +#+BEGIN_SRC sh +nix-shell --pure +nix-build -I nixpkgs=/nixpkgs-ra/nixpkgs/.gitworktree/ra/nixpkgs project.nix +#+END_SRC + +**** derivation .drv + +#+BEGIN_SRC sh +nix show-derivation /nix/store/q7n14bm8j5vzm62qaraczdb4bpyf59vv-spine-0.11.1.drv +#+END_SRC +  *** dub -#+BEGIN_SRC sh  :tangle no +#+BEGIN_SRC sh  dub build -h  #+END_SRC  #+BEGIN_SRC sh -time (dub --compiler=dmd --config=spine-dmd --debug=steps) +time dub --compiler=ldc2 -v --force  time (dub --compiler=ldc2 --config=spine-ldc --debug=steps) -time (dub --compiler=gdc --config=spine-gdc --debug=steps) -  time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc)  time (dub --compiler=ldc2 --config=spine-ldc --debug=io)  time (dub --compiler=ldc2 --config=spine-ldc --debug=checkdoc --debug=summary --debug=dumpdoc --debug=io)  time (dub --compiler=ldc2 --config=spine-ldc-debug --debug=io) -time (dub --compiler=gdc --config=spine-gdc-debug --debug=io) + +time dub --compiler=dmd -v --force +time (dub --compiler=dmd --config=spine-dmd --debug=steps)  time (dub --compiler=dmd --config=spine-dmd-debug --debug=io) + +time dub --compiler=gdc -v --force +time (dub --compiler=gdc --config=spine-gdc --debug=steps) +time (dub --compiler=gdc --config=spine-gdc-debug --debug=io)  #+END_SRC  *** make @@ -2541,36 +2492,26 @@ time make tangle ldc  time make ldc_testrun_find_pod_epub  #+END_SRC -** dub zfunc :zfunc: -*** ,dubdmd :dmd: - -#+BEGIN_SRC sh  :tangle no -time dub --compiler=dmd -v --force -#+END_SRC - -*** ,dubldc :ldc: - -#+BEGIN_SRC sh  :tangle no -time dub --compiler=ldc2 -v --force -#+END_SRC - -*** ,dubgdc :gdc: - -#+BEGIN_SRC sh  :tangle no -time dub --compiler=gdc -v --force -#+END_SRC -  ** git  *** project version +#+BEGIN_SRC sh  echo $(git describe --long --tags | sed 's/^[ a-z_-]\+\([0-9.]\+\)/\1/;s/\([^-]*-g\)/r\1/;s/-/./g') +#+END_SRC  *** what files changed + +#+BEGIN_SRC sh  git whatchanged --since="1 day ago" --oneline --name-only --pretty=format: | sort -u  git log --since="1 day ago" --name-only --pretty=format: | sort -u +#+END_SRC  ** test run  *** e.g. + +#+BEGIN_SRC sh +time (./result/bin/spine --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst ) +  time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual/media/text/en/sisu_markup.sst )  time (./bin/spine-ldc --source --html -v --output-dir=tmp/program-output data/pod/sisu-manual ) @@ -2596,6 +2537,43 @@ time ( find data/sisudir/media/text -name *.ss[tm] | sort | xargs ./bin/spine-ld  find data/pod -maxdepth 2 -name pod.manifest | sort | xargs  find data/sisudir/media/text -name *.ss[tm] | sort | xargs +#+END_SRC + +*** sort + +#+BEGIN_SRC sh +~dr/bin/spine-ldc -v  --sqlite-db-create --sqlite-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www/html \ +  ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/* + +~dr/bin/spine-ldc -v  --sqlite-update --sqlite-filename="spine.search.db"   --output=/var/www/html \ +  ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/* + +~dr/bin/spine-ldc -v --html --harvest-link  --output=/var/www/html \ +   ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod/* + +~dr/bin/spine-ldc -q --show-config --html --output=/var/www/html ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod + +~dr/bin/spine-ldc -q --show-config ~grotto/repo/git.repo/code/project-spine/doc-reform-markup/markup_samples/markup/pod + +~dr/result/bin/spine --html --output=/var/www/html /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/* + +~dr/result/bin/spine --very-verbose --sqlite-db-create --sqlite-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/* + +~dr/result/bin/spine --very-verbose --sqlite-update --sqlite-filename="spine.search.db" --cgi-sqlite-search-filename="spine-search" --output=/var/www /grotto-ra/repo/git.repo/projects/project-spine/doc-reform-markup/markup_samples/markup/pod/* +#+END_SRC + +- produces: +  - sqlite db @:           /var/www/html/sqlite/spine.search.db +  - search script in D @:  /var/www/html/cgi/src/spine_search.d +  - html output *          /var/www/html/en/html/[filename] + +#+BEGIN_SRC sh +cd /var/www/html/cgi + +cp arsd/cgi.d /var/www/html/cgi/.          *-[needs to be implemented as part of code] + +dub --force --compiler=ldc2 && sudo cp -v cgi-bin/spine-search /usr/lib/cgi-bin/. +#+END_SRC  *** list markup files  find data/pod -name pod.manifest | sort @@ -2606,8 +2584,8 @@ time make ldc_testrun_paths_pod_pod | ag "^\".+\"|NOT found"  time make ldc_testrun_find_pod_pod  time make ldc_testrun_find_dir_pod  time make ldc_testrun_filelist_dir_pod -** misc -*** compilers + +** compilers  - [X] Set D_COMPILER (one of DMD LDC or GDC)  - [X] Set debug flags (using DMD standard flag -deb @@ -2615,14 +2593,44 @@ time make ldc_testrun_filelist_dir_pod  [[http://wiki.dlang.org/Compilers][D Compilers wiki https://wiki.dlang.org/Compilers]]  [[http://dlang.org/download.html][D Compilers download http://dlang.org/download.html]] -*** dub :dub: +** version info REVIEW :version: + +- https://dlang.org/download.html + +*** compilers (set latest versions) :compiler:version: +**** ldc VERSION :version:set:ldc: + +- https://github.com/ldc-developers/ldc/releases + +***** 1.24.0 HACK + +- https://github.com/ldc-developers/ldc/releases/tag/v1.24.0 +  - nix-prefetch-url https://github.com/ldc-developers/ldc/releases/download/v1.24.0/ldc-1.24.0-src.tar.gz + +#+NAME: ldc_version_info +#+BEGIN_SRC nix +version = "1.24.0"; +sha256  = "0g5svf55i0kq55q49awmwqj9qi1n907cyrn1vjdjgs8nx6nn35gx"; +#+END_SRC + +- ldc-1.24.0 overlay does not build with latest nixos version, nixos-20.09 +  nixos at ldc-1.20.0 + +**** dmd :dmd: + +- https://dlang.org/changelog/index.html +- https://dlang.org/changelog/pending.html +- http://downloads.dlang.org/releases/ +- http://downloads.dlang.org/releases/2.x/ + +** dub :dub:  https://github.com/dlang/dub/  http://code.dlang.org/getting_started  http://code.dlang.org/docs/commandline -**** setup -***** dub json or sdlang +*** setup +**** dub json or sdlang  Every DUB package should contain a [[http://code.dlang.org/package-format?lang=json][dub.json]] or [[http://code.dlang.org/package-format?lang=sdl][dub.sdl]]  https://code.dlang.org/package-format?lang=sdl @@ -2631,7 +2639,7 @@ https://github.com/Abscissa/SDLang-D/blob/master/HOWTO.md  https://code.dlang.org/docs/commandline -***** dub dependencies +**** dub dependencies  dub list  dub upgrade @@ -2642,8 +2650,8 @@ dub fetch unit-threaded ?  sdp ~master: /home/ralph/grotto/repo/git.repo/utils/spine-x/  /home/ralph/.dub/packages/* -**** build -***** debug flags +*** build +**** debug flags  #+BEGIN_SRC sh  biblio @@ -2696,3 +2704,163 @@ summary  table  toc  #+END_SRC + +*** dub (using ldc rather than dmd) overlay REFERENCE :overlay: + +#+BEGIN_SRC nix :NO-tangle ~/nixpkgs/pkgs/development/tools/build-managers/dub/default.nix +{ stdenv, fetchFromGitHub, curl, libevent, rsync , ldc ? null, dcompiler ? ldc }: + +assert dcompiler != null; + +stdenv.mkDerivation rec { +  pname = "dub"; +  version = "1.23.0"; + +  enableParallelBuilding = true; + +  src = fetchFromGitHub { +    owner = "dlang"; +    repo = "dub"; +    rev = "v${version}"; +    sha256 = "vqn6QlPMFc/sVbwHeU/eQ/1jB3KRW5PABMDUQDXkRBk="; +    # nix-prefetch-url https://github.com/dlang/dub/archive/v1.23.0.tar.gz +  }; + +  postUnpack = '' +      patchShebangs . +  ''; + +  # Can be removed with https://github.com/dlang/dub/pull/1368 +  dubvar = "\\$DUB"; +  postPatch = '' +      substituteInPlace test/fetchzip.sh \ +          --replace "dub remove" "\"${dubvar}\" remove" +  ''; + +  nativeBuildInputs = [ dcompiler libevent rsync ]; +  buildInputs = [ curl ]; + +  buildPhase = '' +    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 dub" +    $dc ./build.d +    ./build +  ''; + +  doCheck = !stdenv.isDarwin; + +  checkPhase = '' +    export DUB=$NIX_BUILD_TOP/source/bin/dub +    export PATH=$PATH:$NIX_BUILD_TOP/source/bin/ +    export DC=${dcompiler.out}/bin/${dcompiler.pname} +    echo "DC out --> $DC" +    export HOME=$TMP +    #rm -rf test/* +    rm -rf test/issue502-root-import +    rm test/issue990-download-optional-selected.sh +    rm test/timeout.sh +    rm test/issue674-concurrent-dub.sh +    rm test/issue672-upgrade-optional.sh +    rm test/issue1574-addcommand.sh +    rm test/issue1524-maven-upgrade-dependency-tree.sh +    rm test/issue1416-maven-repo-pkg-supplier.sh +    rm test/issue1037-better-dependency-messages.sh +    rm test/interactive-remove.sh +    rm test/fetchzip.sh +    rm test/feat663-search.sh +    rm test/ddox.sh +    rm test/0-init-multi.sh +    rm test/4-describe-data-1-list.sh +    rm test/4-describe-data-3-zero-delim.sh +    rm test/4-describe-import-paths.sh +    rm test/4-describe-string-import-paths.sh +    rm test/4-describe-json.sh +    rm test/5-convert-stdout.sh +    rm test/0-init-multi-json.sh +    rm test/issue1003-check-empty-ld-flags.sh +    rm test/issue103-single-file-package.sh +    rm test/issue1040-run-with-ver.sh +    rm test/issue1091-bogus-rebuild.sh +    rm test/issue1180-local-cache-broken.sh +    rm test/issue1194-warn-wrong-subconfig.sh +    rm test/issue1277.sh +    rm test/issue1372-ignore-files-in-hidden-dirs.sh +    rm test/issue1447-build-settings-vars.sh +    rm test/issue1531-toolchain-requirements.sh +    rm test/issue1773-lint.sh +    rm test/issue346-redundant-flags.sh +    rm test/issue361-optional-deps.sh +    rm test/issue564-invalid-upgrade-dependency.sh +    rm test/issue586-subpack-dep.sh +    rm test/issue616-describe-vs-generate-commands.sh +    rm test/issue686-multiple-march.sh +    rm test/issue813-fixed-dependency.sh +    rm test/issue813-pure-sub-dependency.sh +    rm test/issue820-extra-fields-after-convert.sh +    rm test/issue877-auto-fetch-package-on-run.sh +    rm test/issue923-subpackage-deps.sh +    rm test/single-file-sdl-default-name.sh +    rm test/subpackage-common-with-sourcefile-globbing.sh +    rm test/issue934-path-dep.sh +    rm test/version-spec.sh +    rm -rf test/1-dynLib-simple +    rm -rf test/1-exec-simple-package-json +    rm -rf test/1-exec-simple +    rm -rf test/1-staticLib-simple +    rm -rf test/2-dynLib-dep +    rm -rf test/2-staticLib-dep +    rm -rf test/2-dynLib-with-staticLib-dep +    rm -rf test/2-sourceLib-dep/ +    rm -rf test/3-copyFiles +    rm -rf test/custom-source-main-bug487 +    rm -rf test/custom-unittest +    rm -rf test/issue1262-version-inheritance-diamond +    rm -rf test/git-dependency +    rm -rf test/issue1003-check-empty-ld-flags +    rm -rf test/ignore-hidden-1 +    rm -rf test/ignore-hidden-2 +    rm -rf test/issue1427-betterC +    rm -rf test/issue130-unicode-* +    rm -rf test/issue1262-version-inheritance +    rm -rf test/issue1372-ignore-files-in-hidden-dirs +    rm -rf test/issue1350-transitive-none-deps +    rm -rf test/issue1775 +    rm -rf test/issue1447-build-settings-vars +    rm -rf test/issue1408-inherit-linker-files +    rm -rf test/issue1551-var-escaping +    rm -rf test/issue754-path-selection-fail +    rm -rf test/issue1788-incomplete-string-import-override +    rm -rf test/subpackage-ref +    rm -rf test/issue777-bogus-path-dependency +    rm -rf test/issue959-path-based-subpack-dep +    rm -rf test/issue97-targettype-none-nodeps +    rm -rf test/issue97-targettype-none-onerecipe +    rm -rf test/path-subpackage-ref +    rm -rf test/sdl-package-simple +    ./test/run-unittest.sh +  ''; + +  installPhase = '' +    mkdir -p $out/bin +    cp bin/dub $out/bin +    #cp $NIX_BUILD_TOP/dub $out/bin +  ''; + +  meta = with stdenv.lib; { +    description = "Package and build manager for D applications and libraries"; +    homepage = "https://code.dlang.org/"; +    license = licenses.mit; +    maintainers = with maintainers; [ ThomasMader ]; +    platforms = [ "x86_64-linux" "i686-linux" "x86_64-darwin" ]; +  }; +} +#+END_SRC diff --git a/project.nix b/project.nix index 9b335e3..1877443 100644..100755 --- a/project.nix +++ b/project.nix @@ -1,14 +1,40 @@ +#!/usr/bin/env -S nix-build  { pkgs ? import <nixpkgs> {},    stdenv ? pkgs.stdenv,  }: -with import ./mkDub.nix { inherit pkgs; }; +with import ./nix/mkDub.nix { inherit pkgs; };  mkDubDerivation rec {    name = "spine-${version}";    version = "0.11.1";    src = ./.;    buildInputs = [      pkgs.sqlite +    ( +      let +        dub2nix-src = fetchTarball { +          url = "https://github.com/lionello/dub2nix/archive/master.tar.gz"; +        }; +        dub2nix = (import dub2nix-src) { inherit pkgs; }; +      in +      with pkgs; [ +        nixFlakes +        dub +        ldc +        sqlite +        nix-prefetch-git +        validatePkgConfig +      ] +    )    ]; +  shellHook = '' +    # nix-build -I nixpkgs=<provide local nix path> +    nix-build +    echo "built spine" +  ''; +  installPhase = '' +    install -m755 -D spine $out/bin/spine +    echo "built $out/bin/spine" +  '';    meta = with stdenv.lib; {      homepage = http://sisudoc.org;      description = "a sisu like document parser"; diff --git a/shell.nix b/shell.nix index e102643..4edc4bd 120000..100755 --- a/shell.nix +++ b/shell.nix @@ -1 +1,11 @@ -nixEnv/shells/shell-ldc-verNix.nix
\ No newline at end of file +#!/usr/bin/env -S nix-shell +{ pkgs ? import <nixpkgs> {} }: +pkgs.mkShell { +  buildInputs = with pkgs; [ +    (import ./nix/shell-packages.nix { inherit pkgs; }) +  ]; +  shellHook = '' +    nix-build +    echo "built spine @ ./result/bin/spine" +  ''; +} diff --git a/spine.nix b/spine.nix new file mode 120000 index 0000000..ef4723a --- /dev/null +++ b/spine.nix @@ -0,0 +1 @@ +project.nix
\ No newline at end of file | 
