icestudio: init at 0-unstable-2024-11-18 (#356775)
Co-authored-by: Abdullah Imad <me@imad.nyc> Co-authored-by: Alberto Merino <amerinor01@gmail.com> Co-authored-by: Enric Morales <me@enric.me> Co-authored-by: Jack Leightcap <jack@leightcap.com> Co-authored-by: Roland Coeurjoly <rolandcoeurjoly@gmail.com> Co-authored-by: Fedi Jamoussi <Fedi.Jamoussi@protonmail.ch>
This commit is contained in:
co-authored by
Abdullah Imad
Alberto Merino
Enric Morales
Jack Leightcap
Roland Coeurjoly
parent
36aa068c28
commit
3c19b680f9
@@ -0,0 +1,125 @@
|
||||
{
|
||||
lib,
|
||||
fetchurl,
|
||||
fetchFromGitHub,
|
||||
buildNpmPackage,
|
||||
makeDesktopItem,
|
||||
makeWrapper,
|
||||
|
||||
nwjs,
|
||||
python3,
|
||||
}:
|
||||
|
||||
let
|
||||
# Use unstable because it has improvements for finding python
|
||||
version = "0-unstable-2024-11-18";
|
||||
|
||||
src = fetchFromGitHub {
|
||||
owner = "FPGAwars";
|
||||
repo = "icestudio";
|
||||
rev = "87d057adb1e795352a7dd67666a69ada4269b2e8";
|
||||
hash = "sha256-VZuc5Wa6o5PMUE+P4EMDl/pI/zmcff9OEhqeCfS4bzE=";
|
||||
};
|
||||
|
||||
collection = fetchurl {
|
||||
url = "https://github.com/FPGAwars/collection-default/archive/v0.4.1.zip";
|
||||
hash = "sha256-F2cAqkTPC7xfGnPQiS8lTrD4y34EkHFUEDPVaYzVVg8=";
|
||||
};
|
||||
|
||||
app = buildNpmPackage {
|
||||
pname = "icestudio-app";
|
||||
inherit version src;
|
||||
npmDepsHash = "sha256-CbrnhnhCG8AdAqySO6fB5hZ128lHyC3WH/vZcFtv6Ko=";
|
||||
sourceRoot = "${src.name}/app";
|
||||
dontNpmBuild = true;
|
||||
installPhase = ''
|
||||
cp -r . $out
|
||||
'';
|
||||
};
|
||||
|
||||
desktopItem = makeDesktopItem {
|
||||
desktopName = "Icestudio";
|
||||
comment = "Visual editor for open FPGA boards";
|
||||
name = "icestudio";
|
||||
exec = "icestudio";
|
||||
icon = "icestudio";
|
||||
terminal = false;
|
||||
categories = [ "Development" ];
|
||||
};
|
||||
in
|
||||
buildNpmPackage rec {
|
||||
pname = "icestudio";
|
||||
inherit version src;
|
||||
npmDepsHash = "sha256-y1lo5+qJ6JBxjt7wtUmTHuJHMH9Mztf6xmmadI8zBgA=";
|
||||
npmFlags = [
|
||||
# Use the legacy dependency resolution, with less strict version
|
||||
# requirements for transative dependencies
|
||||
"--legacy-peer-deps"
|
||||
|
||||
# We want to avoid call the scripts/postInstall.sh until we copy the
|
||||
# collection and app derivation we do that on installPhase
|
||||
"--ignore-scripts"
|
||||
];
|
||||
|
||||
buildPhase = ''
|
||||
runHook preBuild
|
||||
|
||||
# Copy the `app` derivation into the folder expected for grunt
|
||||
cp -r ${app}/* app
|
||||
|
||||
# Copy the cached `collection` derivation into the cache location so that
|
||||
# grunt avoids downloading it
|
||||
install -m444 -D ${collection} cache/collection/collection-default.zip
|
||||
|
||||
./node_modules/.bin/grunt getcollection
|
||||
|
||||
# Use grunt to distribute package
|
||||
# TODO: support aarch64
|
||||
./node_modules/.bin/grunt dist \
|
||||
--platform=none `# skip platform-specific steps` \
|
||||
--dont-build-nwjs `# use the nwjs package shipped by Nix` \
|
||||
--dont-clean-tmp `# skip cleaning the tmp folder as we'll use it in $out`
|
||||
|
||||
runHook postBuild
|
||||
'';
|
||||
|
||||
installPhase = ''
|
||||
runHook preInstall
|
||||
|
||||
cp -r dist/tmp $out
|
||||
|
||||
for size in 16 32 64 128 256; do
|
||||
install -Dm644 docs/resources/icons/"$size"x"$size"/apps/icon.png \
|
||||
$out/share/icons/hicolor/"$size"x"$size"/apps/icestudio.png
|
||||
done
|
||||
|
||||
install -Dm644 ${desktopItem}/share/applications/icestudio.desktop -t $out/share/applications
|
||||
|
||||
makeWrapper ${nwjs}/bin/nw $out/bin/${pname} \
|
||||
--add-flags $out \
|
||||
--prefix PATH : "${python3}/bin"
|
||||
|
||||
runHook postInstall
|
||||
'';
|
||||
|
||||
nativeBuildInputs = [ makeWrapper ];
|
||||
|
||||
buildInputs = [ python3 ];
|
||||
|
||||
meta = {
|
||||
description = "Visual editor for open FPGA boards";
|
||||
homepage = "https://github.com/FPGAwars/icestudio/";
|
||||
license = lib.licenses.gpl2Only;
|
||||
maintainers =
|
||||
with lib.maintainers;
|
||||
[
|
||||
kiike
|
||||
jleightcap
|
||||
rcoeurjoly
|
||||
amerino
|
||||
]
|
||||
++ [ lib.teams.ngi ];
|
||||
mainProgram = "icestudio";
|
||||
platforms = lib.platforms.linux;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user