109 lines
2.3 KiB
Nix
109 lines
2.3 KiB
Nix
{ 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.pyqt6
|
|
ps.pyqt6-webengine
|
|
ps.qrcode
|
|
ps.qtconsole
|
|
ps.retry
|
|
ps.pymupdf
|
|
ps.sexpdata
|
|
ps.epc
|
|
# Wrap native dependencies in python env $PATH
|
|
pkgs.aria2
|
|
])).override { ignoreCollisions = true; });
|
|
|
|
node = "${nodejs}/bin/node";
|
|
|
|
pname = "eaf";
|
|
version = "20210309.0";
|
|
|
|
eaf-terminal = fetchFromGitHub {
|
|
owner = "emacs-eaf";
|
|
repo = "eaf-terminal";
|
|
rev = "b7ddb82baf9604cb52a83d6e0631e6a5edc415b1";
|
|
hash = "sha256-4TRIAcReJs9a91DMKD+puApmSstxYLgLHV300GFDufQ=";
|
|
};
|
|
|
|
eaf-browser = fetchFromGitHub {
|
|
owner = "emacs-eaf";
|
|
repo = "eaf-browser";
|
|
rev = "9761f7bd22aa69f144a0a032643b0834dde6cb60";
|
|
hash = "sha256-jcCn16lXqcq1UcekekJiTfRBjjgaY0Hkz69ycElSzuA=";
|
|
};
|
|
|
|
eaf-pdf-viewer = fetchFromGitHub {
|
|
owner = "emacs-eaf";
|
|
repo = "eaf-pdf-viewer";
|
|
rev = "0b79e9000551200b6a0d2206de14b87d9ed3c9c9";
|
|
hash = "sha256-Co5RWWI0OC1w5JrCVpbwafuEEluh48JDzkMQp5QdIbE=";
|
|
};
|
|
|
|
in melpaBuild {
|
|
|
|
inherit pname version;
|
|
|
|
src = fetchFromGitHub {
|
|
owner = "emacs-eaf";
|
|
repo = "emacs-application-framework";
|
|
rev = "9bf8caba36e27fafcef5d8e68969a1a8eb5432ed";
|
|
sha256 = "sha256-4CPhEO4d66GzD3vOcNyRl6DmRDYiiIeRhX/9RUPZ+PM=";
|
|
};
|
|
|
|
dontConfigure = true;
|
|
dontBuild = true;
|
|
|
|
postPatch = ''
|
|
substituteInPlace eaf.el \
|
|
--replace '"xdotool' '"${xdotool}/bin/xdotool' \
|
|
--replace '"wmctrl' '"${wmctrl}'
|
|
sed -i s#'defcustom eaf-python-command .*'#'defcustom eaf-python-command "${pythonEnv.interpreter}"'# eaf.el
|
|
mkdir app
|
|
cp -r ${eaf-terminal} app/terminal
|
|
cp -r ${eaf-pdf-viewer} app/pdf-viewer
|
|
cp -r ${eaf-browser} app/browser
|
|
substituteInPlace app/terminal/buffer.py --replace-warn \
|
|
'"node"' \
|
|
'"${node}"'
|
|
'';
|
|
|
|
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 "emacs-eaf/emacs-application-framework"
|
|
:fetcher github
|
|
:files ("*")
|
|
'';
|
|
|
|
packageRequires = [
|
|
ctable
|
|
deferred
|
|
epc
|
|
s
|
|
];
|
|
|
|
}
|