From 4667f482fffe11c2b02087105fc90548d7204356 Mon Sep 17 00:00:00 2001 From: Alistair Grant Date: Fri, 8 Sep 2023 08:27:08 +0200 Subject: [PATCH] glamoroustoolkit: init at v0.7.2 Includes significant feedback from Anderson Torres to refactor derivation to meet guidelines. Co-authored-by: Anderson Torres --- .../GlamorousToolkit-GetImage | 25 +++++ .../tools/glamoroustoolkit/default.nix | 103 ++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 3 files changed, 130 insertions(+) create mode 100755 pkgs/development/tools/glamoroustoolkit/GlamorousToolkit-GetImage create mode 100644 pkgs/development/tools/glamoroustoolkit/default.nix diff --git a/pkgs/development/tools/glamoroustoolkit/GlamorousToolkit-GetImage b/pkgs/development/tools/glamoroustoolkit/GlamorousToolkit-GetImage new file mode 100755 index 000000000000..20c2c315a350 --- /dev/null +++ b/pkgs/development/tools/glamoroustoolkit/GlamorousToolkit-GetImage @@ -0,0 +1,25 @@ +#! /usr/bin/env nix-shell +#! nix-shell -i bash --packages curl +# +# Download the latest GlamorousToolkit image to the current directory, which must be empty +# +set -e + +if [ ! -z "$(ls)" ] +then + echo "Warning: the directory is not empty, continuing may overwrite some files" + read -p "Continue? (Y/N): " confirm && [[ $confirm == [yY] || $confirm == [yY][eE][sS] ]] || exit 1 +fi + +GTVERSION=$(curl -s https://api.github.com/repos/feenkcom/gtoolkit/releases/latest 2>/dev/null | grep tag_name | cut -d '"' -f 4) +if [ -z "$GTVERSION" ] +then + echo "Failed to get Gt Version string, exiting..." + exit 1 +fi + +curl -L \ + -o gt-image.zip \ + https://github.com/feenkcom/gtoolkit/releases/download/${GTVERSION}/GlamorousToolkit-Linux-x86_64-${GTVERSION}.zip +unzip gt-image.zip +rm -rf bin lib diff --git a/pkgs/development/tools/glamoroustoolkit/default.nix b/pkgs/development/tools/glamoroustoolkit/default.nix new file mode 100644 index 000000000000..b53983037a53 --- /dev/null +++ b/pkgs/development/tools/glamoroustoolkit/default.nix @@ -0,0 +1,103 @@ +{ lib +, stdenv +, fetchzip +, cairo +, dbus +, fontconfig +, freetype +, glib +, gtk3 +, libX11 +, libXcursor +, libXext +, libXi +, libXrandr +, libXrender +, libglvnd +, libuuid +, libxcb +, makeWrapper +}: + +stdenv.mkDerivation (finalAttrs: { + pname = "glamoroustoolkit"; + version = "0.7.2"; + + src = fetchzip { + url = "https://github.com/feenkcom/gtoolkit-vm/releases/download/v${finalAttrs.version}/GlamorousToolkit-x86_64-unknown-linux-gnu.zip"; + stripRoot = false; + hash = "sha256-Tahe/P0sxmuhSG5JxOkyQGLTOyVrjMEkxvzPc2CBV0Y="; + }; + + sourceRoot = "."; + + dontConfigure = true; + dontBuild = true; + dontPatchELF = true; + + installPhase = '' + runHook preInstall + + install -d $out/bin $out/lib + cp -r $src/bin $src/lib $out/ + cp ${./GlamorousToolkit-GetImage} $out/bin/GlamorousToolkit-GetImage + + runHook postInstall + ''; + +preFixup = let + libPath = lib.makeLibraryPath [ + cairo + dbus + fontconfig + freetype + glib + gtk3 + libX11 + libXcursor + libXext + libXi + libXrandr + libXrender + libglvnd + libuuid + libxcb + stdenv.cc.cc.lib + ]; + in '' + chmod +x $out/lib/*.so + patchelf \ + --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \ + --set-rpath "${libPath}:$out/lib" \ + $out/bin/GlamorousToolkit $out/bin/GlamorousToolkit-cli + patchelf --shrink-rpath \ + $out/bin/GlamorousToolkit $out/bin/GlamorousToolkit-cli + patchelf \ + --set-rpath "${libPath}:$out/lib" \ + $out/lib/*.so + patchelf --shrink-rpath $out/lib/*.so + # + # shrink-rpath gets it wrong for the following libraries, + # restore the full rpath. + # + patchelf \ + --set-rpath "${libPath}:$out/lib" \ + $out/lib/libPharoVMCore.so \ + $out/lib/libWinit.so \ + $out/lib/libPixels.so + patchelf --set-rpath $out/lib $out/lib/libssl.so + + ln -s $out/lib/libcrypto.so $out/lib/libcrypto.so.1.1 + ln -s $out/lib/libcairo.so $out/lib/libcairo.so.2 + ln -s $out/lib/libgit2.so $out/lib/libgit2.so.1.1 + ''; + + meta = { + homepage = "https://gtoolkit.com"; + description = "The GlamorousToolkit Development Environment"; + license = lib.licenses.mit; + maintainers = [ lib.maintainers.akgrant43 ]; + platforms = [ "x86_64-linux" ]; + sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ]; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 401eb75075eb..75a97301a437 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -682,6 +682,8 @@ with pkgs; glade = callPackage ../development/tools/glade { }; + glamoroustoolkit = callPackage ../development/tools/glamoroustoolkit { }; + gobble = callPackage ../tools/X11/gobble { }; goda = callPackage ../development/tools/goda { };