72 lines
2.1 KiB
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;
|
|
};
|
|
};
|
|
};
|
|
}
|