60 lines
1.2 KiB
Nix
60 lines
1.2 KiB
Nix
|
{ lib, stdenv, fetchFromGitHub, janet }:
|
||
|
|
||
|
let
|
||
|
platformFiles = {
|
||
|
aarch64-darwin = "macos_config.janet";
|
||
|
aarch64-linux = "linux_config.janet";
|
||
|
x86_64-darwin = "macos_config.janet";
|
||
|
x86_64-linux = "linux_config.janet";
|
||
|
};
|
||
|
|
||
|
platformFile = platformFiles.${stdenv.hostPlatform.system};
|
||
|
|
||
|
in
|
||
|
stdenv.mkDerivation rec {
|
||
|
pname = "jpm";
|
||
|
version = "0.0.2";
|
||
|
|
||
|
src = fetchFromGitHub {
|
||
|
owner = "janet-lang";
|
||
|
repo = pname;
|
||
|
rev = version;
|
||
|
sha256 = "sha256-nv+vkDjEY711L+C5ibw48DUSNqq2UJiFC2i5LntuBNM=";
|
||
|
};
|
||
|
|
||
|
# `auto-shebangs true` gives us a shebang line that points to janet inside the
|
||
|
# jpm bin folder
|
||
|
postPatch = ''
|
||
|
substituteInPlace configs/${platformFile} \
|
||
|
--replace 'auto-shebang true' 'auto-shebang false' \
|
||
|
--replace /usr/local $out
|
||
|
'';
|
||
|
|
||
|
dontConfigure = true;
|
||
|
|
||
|
buildInputs = [ janet ];
|
||
|
|
||
|
dontBuild = true;
|
||
|
|
||
|
installPhase = ''
|
||
|
runHook preInstall
|
||
|
|
||
|
mkdir -p $out/{lib/janet,share/man/man1}
|
||
|
|
||
|
janet bootstrap.janet configs/${platformFile}
|
||
|
|
||
|
runHook postInstall
|
||
|
'';
|
||
|
|
||
|
doInstallCheck = true;
|
||
|
|
||
|
installCheckPhase = ''
|
||
|
$out/bin/jpm help
|
||
|
'';
|
||
|
|
||
|
meta = janet.meta // {
|
||
|
description = "Janet Project Manager for the Janet programming language";
|
||
|
platforms = lib.attrNames platformFiles;
|
||
|
};
|
||
|
}
|