FG42/nix/hm/default.nix

72 lines
2.1 KiB
Nix

# Fg42 - Emacs Editor for advance users
#
# Copyright (c) 2010-2024 Sameer Rahmani <lxsameer@gnu.org>
#
# 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 <http://www.gnu.org/licenses/>.
# This is the home manager module that exposes FG42. It differs
# from FG42 modules that are structurally the same but used in
# different context
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.programs.fg42;
defaultModules = pkgs.callPackage ../modules { };
in
{
meta.maintainers = [ (import ../maintainers.nix { }).lxsameer ];
options = {
enable = mkEnableOption "FG42";
extraModules = mkOption {
type = types.listOf types.submodule;
default = cfg.defaultModules ++ cfg.extraModules;
defaultText = literalExpression "[]";
example = literalExpression ''
extraModules = [
./any-fg42-module-youwant.nix
];
'';
};
modules = mkOption {
type = types.listOf types.deferredModule;
default = cfg.defaultModules ++ cfg.extraModules;
defaultText = literalExpression "[]";
example = literalExpression ''
modules = [
./any-fg42-module-youwant.nix
];
'';
};
finalPackage = mkOption {
type = types.package;
visible = false;
readOnly = true;
description = ''
The Emacs package including any overrides and extra packages.
'';
};
config = mkIf cfg.enable {
home.packages = [ cfg.finalPackage ];
programs.fg42.finalPackage = pkgs.callPackage ../fg42 {
modules = cfg.modules ++ cfg.extraModules;
};
};
};
}