En fait toute la procédure est présente dans le wiki : https://nixos.wiki/wiki/Emacs.
Installation du paquet à la main
Avec `emacsPackage.mon_paquet`.
installation avec l'overlay emacs
Presque pareil avec l'overlay, il y a une liste de paquets à installer.
installation d'un paquet non présent dans nix
écrire la dérivation
inspirée de la documentation dans le wiki
Une dérivation pour le paquet.
Adapter si besoin les scripts de construction (buildPhase, installPhase).
On veut continuer à utiliser la gestion automatique des installations avec use-package dans notre fichier org de configuration.
On surcharge la liste des paquest (epkgs) pour ajouter notre dérivation.
Et notre paquet va s'installer tout seul.
Le fichier pour empaqueter wallabag.el. Comme on ne fait pas la compilation je ne sais pas si les dépendances (emacsql, …) sont nécessaire. A vérifier. A la construction on recopie des fichiers supplémentaires.
{
trivialBuild,
fetchFromGitHub,
emacsql,
emacsql-sqlite,
request,
}:
trivialBuild rec {
pname = "wallabag-el";
version = "main-2024-07-12";
src = fetchFromGitHub {
owner = "chenyanming";
repo = "wallabag.el";
rev = "0f8fd51a7abc5fcac04cc9e50f47823c690b0533";
hash = "sha256-xH8lJGnBmG3G+V9fBzX+DkuSygcNrjl+2BkBGjTY6w4=";
};
# On ne fait pas le bytecompile car il y a des erreurs...
# emacs -L . --batch -f batch-byte-compile wallabag.el
buildPhase = ''
runHook preBuild
mkdir -p $out/share/emacs/site-lisp
cp emojis.alist $out/share/emacs/site-lisp
cp default.css $out/share/emacs/site-lisp
runHook postBuild
'';
propagatedUserEnvPkgs = [
emacsql
emacsql-sqlite
request
];
buildInputs = propagatedUserEnvPkgs;
}
Et la configuration pour wombat. Cela doit fonctionner mais je n’ai pas testé car mon serveur wallabag < 2.6.0. On change le home pour pointer vers le répertoire de construction car à la construcion il y a une tentative de créer un répertoire dans le home. Et les dérivations se font dans un bac à sable, sans home directory.
{
trivialBuild,
fetchFromGitHub,
emacsql,
}:
trivialBuild rec {
pname = "wombag";
version = "main-2024-07-12";
src = fetchFromGitHub {
owner = "karthink";
repo = "wombag";
rev = "d5e19cc55a7388aa3c158b5c19c885b61da1f63e";
hash = "sha256-UQ4bxOVS+mk+Cq1cge1xkaTX4Eg+xgVTFzXOKm6Rc2Y=";
};
# On modifie le chemin du home pour pouvoir créer ~/.emacs.d/wombag
# durant la phase de build.
buildPhase = ''
export XDG_CACHE_HOME=$out
buildPhase
'';
# elisp dependencies
propagatedUserEnvPkgs = [
emacsql
];
buildInputs = propagatedUserEnvPkgs;
}