{ melpaBuild
, fetchFromGitHub
, writeText
, pkgs

# Elisp dependencies
, ctable
, deferred
, epc
, s

# Native dependencies
, nodejs
, python3
, wmctrl
, xdotool
}:

let
  # TODO: Package nodejs environment

  pythonEnv = ((python3.withPackages(ps: [
    ps.pyqtwebengine
    ps.pyqt5
    ps.qrcode
    ps.qtconsole
    ps.retry
    ps.pymupdf
    # Wrap native dependencies in python env $PATH
    pkgs.aria2
  ])).override { ignoreCollisions = true; });

  node = "${nodejs}/bin/node";

  pname = "eaf";
  version = "20210309.0";

in melpaBuild {

  inherit pname version;

  src = fetchFromGitHub {
    owner = "emacs-eaf";
    repo = "emacs-application-framework";
    rev = "d55fef029d9a8fa529d2290f2da178dc8ff3d6f7";
    sha256 = "sha256-0UGeo4I4JB95A8W870x4IS6Syh6roMomjTTNQNGbS3E";
  };

  dontConfigure = true;
  dontBuild = true;

  postPatch = ''
   
  '';

  installPhase = ''
    mkdir -p $out/share/emacs/site-lisp/elpa/emacs-$pname-$version
    cp -rv * $out/share/emacs/site-lisp/elpa/emacs-$pname-$version/
  '';

  recipe = writeText "recipe" ''
    (eaf
    :repo "manateelazycat/emacs-application-framework"
    :fetcher github
    :files ("*")
  '';

  packageRequires = [
    ctable
    deferred
    epc
    s
  ];

}