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;
+    };
+  }