blob: b42ea41d0357d97a85f7c869938d314b44dfcb74 [file] [log] [blame]
{
pkgs,
lib,
stdenv,
unzip,
fetchurl,
makeDesktopItem,
buildFHSUserEnv,
# Specify any font packages to include
# e.g. figma.override { fonts = [ noto-fonts fira-code ]; }
fonts ? [],
}: let
version = "0.10.0";
# Figma executable.
# Currently won't run outside of FHS even with autopatching - needs help.
figma-exec = stdenv.mkDerivation rec {
inherit version;
pname = "figma-exec";
src = fetchurl {
url = "https://github.com/Figma-Linux/figma-linux/releases/download/v${version}/figma-linux_${version}_linux_amd64.zip";
sha256 = "sha256-1jdaa/oZu5io/sHHkNzdrCgWWfqW0AMqUGx6amJJpyU=";
};
buildInputs = [unzip];
unpackPhase = ''
runHook preUnpack
mkdir output
unzip $src -d output
runHook postUnpack
'';
installPhase = ''
APPDIR=$out/etc/figma-linux
# Copy application to etc
mkdir -p $out/etc/figma-linux
cp -r output/. $APPDIR
# Add icons
for size in 24 36 48 64 72 96 128 192 256 384 512; do
mkdir -p "$out/share/icons/hicolor/''${size}x''${size}/apps"
cp -rf "$APPDIR/icons/''${size}x''${size}.png" "$out/share/icons/hicolor/''${size}x''${size}/apps/figma-linux.png"
done
mkdir -p "$out/share/icons/hicolor/scalable/apps"
cp -rf "$APPDIR/icons/scalable.svg" "$out/share/icons/hicolor/scalable/apps/figma-linux.svg"
# Copy fonts
mkdir -p $out/share/fonts
${lib.concatMapStringsSep "\n"
(f: "cp -r ${f}/share/fonts/. $out/share/fonts/")
fonts}
# Link binary
mkdir -p $out/bin
ln -s $out/etc/figma-linux/figma-linux $out/bin/figma
# Link desktop item
mkdir -p $out/share/applications
ln -s ${desktopItem}/share/applications/* $out/share/applications
'';
desktopItem = makeDesktopItem {
name = "Figma";
exec = "figma";
icon = "figma-linux";
desktopName = "Figma";
genericName = "Vector Graphics Designer";
comment = "Unofficial desktop application for linux";
type = "Application";
categories = ["Graphics"];
mimeTypes = ["application/figma" "x-scheme-handler/figma"];
extraConfig = {StartupWMClass = "figma-linux";};
};
};
figma-fhs = buildFHSUserEnv {
name = "figma-fhs";
targetPkgs = pkgs:
with pkgs; [
figma-exec
alsaLib
at-spi2-atk
at-spi2-core
atk
avahi
brotli
cairo
cups
dbus
expat
freetype
pango
gcc
glib
glibc
gdk-pixbuf
gtk3
icu
libxkbcommon
mesa
ffmpeg
libdrm
libGL
nss
nspr
udev
xorg.libXdamage
xorg.libXext
xorg.libX11
xorg.libXau
xorg.libxcb
xorg.libXcomposite
xorg.libXdmcp
xorg.libXfixes
xorg.libXrender
xorg.libXrandr
xorg.libxshmfence
wayland
];
runScript = "figma";
};
in
stdenv.mkDerivation {
pname = "figma";
inherit version;
src = builtins.path {path = ./.;};
nativeBuildInputs = [figma-fhs];
installPhase = ''
# Add binary link
mkdir -p $out/bin
cp -r ${figma-fhs}/bin/figma-fhs $out/bin/figma
# Link icons + desktop items
mkdir -p $out/share
cp -r ${figma-exec}/share/. $out/share
'';
meta = with lib; {
description = "unofficial Electron-based Figma desktop app for Linux";
homepage = "https://github.com/Figma-Linux/figma-linux";
# While the container application is GPL-2.0,
# Figma itself (running in the application) is nonFree.
license = licenses.unfree;
};
}