# 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 . # This is the home manager module that exposes FG42. It differs # from FG42 modules that are structurally the same but used in # different context # A list of default FG42 modules to build FG42 with. { lib, config, pkgs, makeFG42Drv, ... }: with lib; let cfg = config.fg42.completion; deps = (with pkgs.emacsPackages; optionals (cfg.backend == "corfu") [ corfu cape ] ++ optionals (cfg.backend == "company") [ company company-box ]); drv = makeFG42Drv { pname = "completion"; version = config.fg42.version; buildInputs = deps; src = ./.; }; backendDesc = '' The backend to use for the completion. (default corfu) ''; in { options.fg42.completion = { enable = mkAndEnableOption "completion"; backend = mkOption { type = types.str; default = "corfu"; description = backendDesc; }; }; config = mkIf cfg.enable { fg42.elispPackages = [ drv ] ++ deps; fg42.requires = [ drv.pname ]; fg42.vars = [ (defVar "completion" cfg.enable "Completion for FG42.") (defVar "completion-backend" cfg.backend backendDesc) ]; }; }