Initial nix ad-hoc package installation

This commit is contained in:
Omar Brikaa 2022-08-28 15:00:28 +02:00
parent 10183d0638
commit 8e230befce
3 changed files with 32 additions and 40 deletions

View File

@ -10,32 +10,27 @@
args = { args = {
inherit pkgs; inherit pkgs;
piston = { piston = {
mkRuntime = { mkRuntime = builderFn: let
language, languagePackagesFn = packages: with packages; [ ];
version, buildRes = builderFn languagePackagesFn;
runtime? null, compileFile = if builtins.hasAttr "compile" buildRes then
run, pkgs.writeShellScript "compile" buildRes.compile
compile? null,
packages? null,
aliases? [],
limitOverrides? {},
tests
}: let
compileFile = if compile != null then
pkgs.writeShellScript "compile" compile
else null; else null;
runFile = pkgs.writeShellScript "run" run; runFile = pkgs.writeShellScript "run" buildRes.run;
metadata = { metadata = {
inherit language version runtime aliases limitOverrides; language = buildRes.language;
version = buildRes.version;
runtime = buildRes.runtime or null;
aliases = buildRes.aliases or [];
limitOverrides = buildRes.limitOverrides or {};
run = runFile; run = runFile;
compile = compileFile; compile = compileFile;
packageSupport = packages != null;
}; };
tests = if (builtins.length buildRes.tests) > 0 then
buildRes.tests
else abort "Language ${buildRes.language} doesn't provide any tests";
in { in {
inherit packages metadata; inherit metadata tests;
tests = if (builtins.length tests) > 0 then
tests
else abort "Language ${language} doesn't provide any tests";
}; };
mkTest = { mkTest = {
files, files,

2
piston
View File

@ -94,7 +94,7 @@ case "$SUBCOMMAND" in
-e PISTON_RUNTIME_SET=$runtime_set \ -e PISTON_RUNTIME_SET=$runtime_set \
-v "$SCRIPT_DIR":/piston/src \ -v "$SCRIPT_DIR":/piston/src \
-v $DEV_VOLUME_NAME:/nix \ -v $DEV_VOLUME_NAME:/nix \
-d "$IMAGE_NAME_DEV:$IMAGE_TAG" \ "$IMAGE_NAME_DEV:$IMAGE_TAG" \
bash -c "cd /piston/src/api && yarn run dev" bash -c "cd /piston/src/api && yarn run dev"
;; ;;

View File

@ -1,27 +1,24 @@
{pkgs, piston, ...}: { pkgs, piston, ... }:
let let basePkg = pkgs.python3;
pkg = pkgs.python3; in piston.mkRuntime (libraries:
in piston.mkRuntime { let pkg = basePkg.withPackages libraries;
in {
language = "python3"; language = "python3";
version = pkg.version; version = basePkg.version;
aliases = [ aliases = [ "py3" "py" "python" ];
"py3"
"py"
"python"
];
run = '' run = ''
${pkg}/bin/python3 "$@" ${pkg}/bin/python3 "$@"
''; '';
tests = [ tests = [
(piston.mkTest { (piston.mkTest {
files = { files = {
"test.py" = '' "test.py" = ''
print("OK") print("OK")
''; '';
}; };
}) })
]; ];
} })