# Fg42 - Emacs Editor for advance users # # Copyright (c) 2010-2024 Sameer Rahmani # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, version 2. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . { pkgs, ... }: final: prev: rec { /* Create a value to be accessable on the Elisp side as a variable. */ defVar = name: defaultValue: docstring: { inherit name defaultValue docstring; }; /* Create a value to be accessable on the Elisp side as a constant. */ defConst = defVar; /* Creates an Option attribute set for a boolean value option i.e an option to be toggled on or off. The option is enabled by default: Example: mkAndEnableOption "foo" => { _type = "option"; default = true; description = "Whether to enable foo."; example = true; type = { ... }; } */ mkAndEnableOption = name: prev.mkOption { default = true; example = true; description = "Whether to enable ${name}."; type = prev.types.bool; }; makeFG42Drv = { pname, version, ... }@args: (pkgs.emacsPackages.trivialBuild args).overrideAttrs (old: { pname = "fg42-${pname}"; installPhase = '' runHook preInstall LISPDIR=$out/share/emacs/ install -d $LISPDIR cp -rv lisp/ $LISPDIR/site-lisp emacs --batch -l package --eval "(package-generate-autoloads \"${args.pname}\" \"$LISPDIR/site-lisp\")" runHook postInstall ''; }); }