change the way import-dhall works
This commit is contained in:
parent
067764c4a5
commit
feb637855c
3 changed files with 46 additions and 19 deletions
|
@ -1,18 +0,0 @@
|
||||||
{pkgs ? import <nixpkgs> {}}: code: let
|
|
||||||
codeString = builtins.toString code;
|
|
||||||
file =
|
|
||||||
if builtins.isPath code
|
|
||||||
then code
|
|
||||||
else builtins.toFile "dhall-expr" codeString;
|
|
||||||
drv = pkgs.stdenvNoCC.mkDerivation {
|
|
||||||
name = "dhall-expr-as-nix";
|
|
||||||
src = ./.;
|
|
||||||
buildCommand = ''
|
|
||||||
cd $src
|
|
||||||
dhall-to-nix < ${file} > $out
|
|
||||||
'';
|
|
||||||
|
|
||||||
nativeBuildInputs = [pkgs.dhall-nix];
|
|
||||||
};
|
|
||||||
in
|
|
||||||
import "${drv}" (import ./runtime.nix pkgs.lib)
|
|
|
@ -33,7 +33,6 @@
|
||||||
devShells.default = pkgs.mkShell {
|
devShells.default = pkgs.mkShell {
|
||||||
nativeBuildInputs = [self.packages.${system}.dhall self.packages.${system}.dhall-nix];
|
nativeBuildInputs = [self.packages.${system}.dhall self.packages.${system}.dhall-nix];
|
||||||
};
|
};
|
||||||
lib.dhallToNix = import ./dhallToNix.nix {inherit pkgs;};
|
|
||||||
})
|
})
|
||||||
// {
|
// {
|
||||||
overlays.default = final: prev: {
|
overlays.default = final: prev: {
|
||||||
|
@ -44,6 +43,8 @@
|
||||||
sha256 = "157x95yw9hibpifa8figawgclnc1d1bapmbp1zw60l2viy936b83";
|
sha256 = "157x95yw9hibpifa8figawgclnc1d1bapmbp1zw60l2viy936b83";
|
||||||
};
|
};
|
||||||
inherit (self.packages.${prev.emptyDirectory.system}) dhall-nix-lib;
|
inherit (self.packages.${prev.emptyDirectory.system}) dhall-nix-lib;
|
||||||
|
dhall-to-nix-package = super.callPackage ./pkgs/dhall-to-nix-package.nix {};
|
||||||
|
import-dhall-package = path: let drv = super.callPackage (path + "/package.nix") { buildDhallDirectoryPackage = self.dhall-to-nix-package; }; in import "${drv}" (import ./runtime.nix final.lib);
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
inherit (self.packages.${prev.system}) dhall dhall-nix dhall-nixpkgs;
|
inherit (self.packages.${prev.system}) dhall dhall-nix dhall-nixpkgs;
|
||||||
|
|
44
pkgs/dhall-to-nix-package.nix
Normal file
44
pkgs/dhall-to-nix-package.nix
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
{ dhall, dhall-nix, stdenvNoCC, lndir }:
|
||||||
|
|
||||||
|
{ name
|
||||||
|
|
||||||
|
# Expressions to add to the cache before interpreting the code
|
||||||
|
, dependencies ? []
|
||||||
|
# The root path of the expression
|
||||||
|
, src
|
||||||
|
, ...
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
cache = ".cache";
|
||||||
|
|
||||||
|
data = ".local/share";
|
||||||
|
|
||||||
|
cacheDhall = "${cache}/dhall";
|
||||||
|
|
||||||
|
dataDhall = "${data}/dhall";
|
||||||
|
|
||||||
|
sourceFile = "source.dhall";
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
name = "${name}.nix";
|
||||||
|
inherit src;
|
||||||
|
nativeBuildInputs = [lndir dhall dhall-nix];
|
||||||
|
buildInputs = dependencies;
|
||||||
|
configurePhase = ''
|
||||||
|
mkdir -p ${cacheDhall}
|
||||||
|
|
||||||
|
for dependency in $buildInputs; do
|
||||||
|
lndir -silent $dependency/${cacheDhall} ${cacheDhall}
|
||||||
|
done
|
||||||
|
|
||||||
|
export XDG_CACHE_HOME=$PWD/${cache}
|
||||||
|
'';
|
||||||
|
buildPhase = ''
|
||||||
|
cat package.dhall | dhall resolve | dhall normalize > resolved.dhall
|
||||||
|
'';
|
||||||
|
installPhase = ''
|
||||||
|
dhall-to-nix < resolved.dhall > $out
|
||||||
|
'';
|
||||||
|
}
|
Loading…
Reference in a new issue