110 lines
2.3 KiB
Nix
110 lines
2.3 KiB
Nix
{
|
|
lib,
|
|
stdenv,
|
|
fetchFromGitHub,
|
|
buildGoModule,
|
|
gradle,
|
|
makeWrapper,
|
|
jre,
|
|
symlinkJoin,
|
|
}:
|
|
let
|
|
pname = "alda";
|
|
version = "2.3.2";
|
|
src = fetchFromGitHub {
|
|
owner = "alda-lang";
|
|
repo = "alda";
|
|
tag = "release-${version}";
|
|
hash = "sha256-qOEYBWU9xL62MyLSsJ0wtNea2eRhd/3ZT27j3gmNzQI=";
|
|
};
|
|
license = lib.licenses.epl20;
|
|
|
|
alda_client = buildGoModule {
|
|
pname = "${pname}-client";
|
|
inherit version src;
|
|
|
|
sourceRoot = "${src.name}/client";
|
|
vendorHash = "sha256-h09w6ZLirLNxYv/ibeN5pCnXSvT+1FGiXiYNReZBMXI=";
|
|
|
|
preBuild = ''
|
|
go generate main.go
|
|
'';
|
|
|
|
env.CGO_ENABLED = 0;
|
|
ldflags = [
|
|
"-w"
|
|
"-extldflags '-static'"
|
|
];
|
|
tags = [ "netgo" ];
|
|
subPackages = [ "." ];
|
|
|
|
postInstall = ''
|
|
mv $out/bin/client $out/bin/alda
|
|
'';
|
|
|
|
meta = {
|
|
inherit license;
|
|
homepage = "https://github.com/alda-lang/alda/tree/master/client";
|
|
broken = !stdenv.buildPlatform.canExecute stdenv.hostPlatform;
|
|
maintainers = [ lib.maintainers.ericdallo ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
};
|
|
alda_player = stdenv.mkDerivation {
|
|
pname = "${pname}-player";
|
|
inherit version src;
|
|
|
|
sourceRoot = "${src.name}/player";
|
|
nativeBuildInputs = [
|
|
gradle
|
|
makeWrapper
|
|
];
|
|
|
|
mitmCache = gradle.fetchDeps {
|
|
inherit pname;
|
|
data = ./deps.json;
|
|
};
|
|
__darwinAllowLocalNetworking = true;
|
|
|
|
gradleBuildTask = "fatJar";
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/{bin,share}
|
|
cp build/libs/alda-player-fat.jar $out/share
|
|
|
|
makeWrapper ${lib.getExe jre} $out/bin/alda-player \
|
|
--add-flags "-jar $out/share/alda-player-fat.jar"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
meta = {
|
|
inherit license;
|
|
homepage = "https://github.com/alda-lang/alda/tree/master/player";
|
|
maintainers = [ lib.maintainers.ericdallo ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
};
|
|
in
|
|
symlinkJoin {
|
|
inherit pname version;
|
|
paths = [
|
|
alda_client
|
|
alda_player
|
|
];
|
|
|
|
meta = {
|
|
inherit license;
|
|
description = "Music programming language for musicians";
|
|
homepage = "https://alda.io";
|
|
sourceProvenance = with lib.sourceTypes; [
|
|
fromSource
|
|
binaryBytecode
|
|
];
|
|
maintainers = [ lib.maintainers.ericdallo ];
|
|
platforms = lib.platforms.unix;
|
|
};
|
|
}
|