Install figma
- Add it as a packages
- Install it
diff --git a/modules/figma.nix b/modules/figma.nix
new file mode 100644
index 0000000..c8752da
--- /dev/null
+++ b/modules/figma.nix
@@ -0,0 +1,4 @@
+{pkgs, ...}: {
+ home.home.packages = [pkgs.figma];
+ config.internal.allowUnfree = ["figma"];
+}
diff --git a/packages/figma.nix b/packages/figma.nix
new file mode 100644
index 0000000..b42ea41
--- /dev/null
+++ b/packages/figma.nix
@@ -0,0 +1,139 @@
+{
+ 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;
+ };
+ }