idris2: Put prelude in seperate derivation
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
{ mkPrelude, prelude }:
|
||||
mkPrelude {
|
||||
name = "base";
|
||||
dependencies = [ prelude ];
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
mkPrelude,
|
||||
prelude,
|
||||
base,
|
||||
}:
|
||||
mkPrelude {
|
||||
name = "contrib";
|
||||
dependencies = [
|
||||
prelude
|
||||
base
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
{
|
||||
mkPrelude,
|
||||
prelude,
|
||||
base,
|
||||
}:
|
||||
mkPrelude {
|
||||
name = "linear";
|
||||
dependencies = [
|
||||
prelude
|
||||
base
|
||||
];
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
mkPrelude,
|
||||
prelude,
|
||||
base,
|
||||
linear,
|
||||
}:
|
||||
mkPrelude {
|
||||
name = "network";
|
||||
dependencies = [
|
||||
prelude
|
||||
base
|
||||
linear
|
||||
];
|
||||
}
|
||||
@@ -20,6 +20,12 @@ let
|
||||
};
|
||||
# Prelude libraries
|
||||
mkPrelude = callPackage ./mkPrelude.nix { }; # Build helper
|
||||
prelude = callPackage ./prelude.nix { };
|
||||
base = callPackage ./base.nix { };
|
||||
linear = callPackage ./linear.nix { };
|
||||
network = callPackage ./network.nix { };
|
||||
contrib = callPackage ./contrib.nix { };
|
||||
test = callPackage ./test.nix { };
|
||||
|
||||
libidris2_support = callPackage ./libidris2_support.nix { };
|
||||
idris2-unwrapped = callPackage ./unwrapped.nix { };
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
{
|
||||
mkPrelude,
|
||||
}:
|
||||
mkPrelude {
|
||||
name = "prelude";
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
mkPrelude,
|
||||
prelude,
|
||||
base,
|
||||
contrib,
|
||||
}:
|
||||
mkPrelude {
|
||||
name = "test";
|
||||
dependencies = [
|
||||
prelude
|
||||
base
|
||||
contrib
|
||||
];
|
||||
}
|
||||
@@ -121,9 +121,26 @@ stdenv.mkDerivation (finalAttrs: {
|
||||
wrapped = testers.testVersion {
|
||||
package = finalAttrs.finalPackage.withPackages (p: [ p.idris2Api ]);
|
||||
};
|
||||
|
||||
prelude = testers.runCommand {
|
||||
name = "idris2-prelude-wrapped";
|
||||
script = ''
|
||||
local packages=$(idris2 --list-packages)
|
||||
|
||||
if ! [[ $packages =~ "contrib" ]]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
touch "$out"
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [
|
||||
(finalAttrs.finalPackage.withPackages (_: [ ]))
|
||||
];
|
||||
};
|
||||
}
|
||||
// (callPackage ./tests.nix {
|
||||
idris2 = finalAttrs.finalPackage;
|
||||
idris2 = finalAttrs.finalPackage.withPackages (_: [ ]);
|
||||
idris2Packages = idris2Packages.override { idris2 = finalAttrs.finalPackage; };
|
||||
});
|
||||
|
||||
|
||||
@@ -3,17 +3,34 @@
|
||||
makeBinaryWrapper,
|
||||
symlinkJoin,
|
||||
idris2-unwrapped,
|
||||
prelude,
|
||||
linear,
|
||||
base,
|
||||
network,
|
||||
contrib,
|
||||
test,
|
||||
extraPackages ? [ ],
|
||||
}:
|
||||
let
|
||||
preludeLibs = [
|
||||
prelude
|
||||
linear
|
||||
base
|
||||
network
|
||||
contrib
|
||||
test
|
||||
];
|
||||
supportLibrariesPath = lib.makeLibraryPath [ idris2-unwrapped.libidris2_support ];
|
||||
supportSharePath = lib.makeSearchPath "share" [ idris2-unwrapped.libidris2_support ];
|
||||
packagePath = lib.makeSearchPath "idris2-${idris2-unwrapped.version}" (
|
||||
preludeLibs ++ extraPackages
|
||||
);
|
||||
in
|
||||
symlinkJoin {
|
||||
inherit (idris2-unwrapped) version;
|
||||
pname = "idris2-wrapped";
|
||||
|
||||
paths = [ idris2-unwrapped ] ++ extraPackages;
|
||||
paths = [ idris2-unwrapped ];
|
||||
|
||||
nativeBuildInputs = [ makeBinaryWrapper ];
|
||||
|
||||
@@ -22,12 +39,13 @@ symlinkJoin {
|
||||
--set CHEZ "${lib.getExe idris2-unwrapped.chez}" \
|
||||
--suffix IDRIS2_LIBS ':' "${supportLibrariesPath}" \
|
||||
--suffix IDRIS2_DATA ':' "${supportSharePath}" \
|
||||
--suffix IDRIS2_PACKAGE_PATH ':' "$out/idris2-${idris2-unwrapped.version}" \
|
||||
--suffix IDRIS2_PACKAGE_PATH ':' ${packagePath} \
|
||||
--suffix LD_LIBRARY_PATH ':' "${supportLibrariesPath}" \
|
||||
--suffix DYLD_LIBRARY_PATH ':' "${supportLibrariesPath}"
|
||||
'';
|
||||
|
||||
passthru = {
|
||||
prelude = preludeLibs;
|
||||
unwrapped = idris2-unwrapped;
|
||||
src = idris2-unwrapped.src;
|
||||
}
|
||||
|
||||
@@ -49,8 +49,8 @@ let
|
||||
idrName = "idris2-${idris2.version}";
|
||||
libSuffix = "lib/${idrName}";
|
||||
libDirs = libs: (lib.makeSearchPath libSuffix libs) + ":${idris2}/${idrName}";
|
||||
supportDir = "${idris2}/${idrName}/lib";
|
||||
drvAttrs = removeAttrs attrs [
|
||||
supportDir = "${idris2.libidris2_support}/lib";
|
||||
drvAttrs = builtins.removeAttrs attrs [
|
||||
"ipkgName"
|
||||
"idrisLibraries"
|
||||
];
|
||||
|
||||
@@ -6,17 +6,18 @@
|
||||
}:
|
||||
|
||||
let
|
||||
globalLibraries =
|
||||
globalLibrariesPath =
|
||||
let
|
||||
idrName = "idris2-${idris2Packages.idris2.version}";
|
||||
libSuffix = "lib/${idrName}";
|
||||
in
|
||||
[
|
||||
"\\$HOME/.nix-profile/lib/${idrName}"
|
||||
"/run/current-system/sw/lib/${idrName}"
|
||||
"${idris2Packages.idris2}/${idrName}"
|
||||
];
|
||||
globalLibrariesPath = builtins.concatStringsSep ":" globalLibraries;
|
||||
lib.makeSearchPath idrName (
|
||||
[
|
||||
"\\$HOME/.nix-profile/lib/"
|
||||
"/run/current-system/sw/lib/"
|
||||
"${idris2Packages.idris2}"
|
||||
]
|
||||
++ idris2Packages.idris2.prelude
|
||||
);
|
||||
|
||||
inherit (idris2Packages) idris2Api;
|
||||
lspLib = idris2Packages.buildIdris {
|
||||
|
||||
Reference in New Issue
Block a user