Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pkgs/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ let

common = {
apple-emoji-ttf = pkgs.callPackage ./apple-emoji-ttf { };
learnharness = pkgs.callPackage ./learnharness { };
# Custom pre-commit to avoid Swift dependency on Darwin
pre-commit = pkgs.callPackage ./pre-commit { };
};
Expand Down
84 changes: 84 additions & 0 deletions pkgs/learnharness/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
{ lib
, stdenv
, fetchurl
, appimageTools
, unzip
, makeWrapper
,
}:

let
pname = "learnharness";
version = "0.3.7";

meta = {
description = "An agent harness for learning: adaptive teaching, practice, and a persistent knowledge graph";
homepage = "https://github.com/amosblomqvist/learnharness";
downloadPage = "https://github.com/amosblomqvist/learnharness/releases";
license = lib.licenses.agpl3Only;
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
platforms = [
"x86_64-linux"
"aarch64-darwin"
];
mainProgram = "learnharness";
};

linux =
let
src = fetchurl {
url = "https://github.com/amosblomqvist/learnharness/releases/download/v${version}/LearnHarness-${version}-x86_64.AppImage";
hash = "sha256-7zRlGDOxGOpcdEnM2UUFgBB66xg+bHGrFQdrQ7xFGOw=";
};
appimageContents = appimageTools.extract { inherit pname version src; };
in
appimageTools.wrapType2 {
inherit
pname
version
src
meta
;

extraInstallCommands = ''
install -m 444 -D ${appimageContents}/learnharness.desktop -t $out/share/applications
substituteInPlace $out/share/applications/learnharness.desktop \
--replace-fail 'Exec=AppRun --no-sandbox %U' 'Exec=learnharness %U'
cp -r ${appimageContents}/usr/share/icons $out/share
'';
};

darwin = stdenv.mkDerivation {
inherit pname version meta;

src = fetchurl {
url = "https://github.com/amosblomqvist/learnharness/releases/download/v${version}/LearnHarness-${version}-arm64-mac.zip";
hash = "sha256-WwfbG5j0ZMV9zfZ5h6jntWqwNPejIeXGdx1cFP8xcus=";
};

nativeBuildInputs = [
unzip
makeWrapper
];

sourceRoot = ".";

# Preserve macOS symlinks inside Electron Framework.framework
unpackCmd = "unzip -q $curSrc";

dontConfigure = true;
dontBuild = true;
dontFixup = true;

installPhase = ''
runHook preInstall

mkdir -p "$out/Applications" "$out/bin"
cp -a "LearnHarness.app" "$out/Applications/"
makeWrapper "$out/Applications/LearnHarness.app/Contents/MacOS/LearnHarness" "$out/bin/learnharness"

runHook postInstall
'';
};
in
if stdenv.hostPlatform.isDarwin then darwin else linux
Loading