1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-11-09 12:06:04 +01:00
home-manager/modules/programs/gitui.nix
Austin Horstman b24689a173 treewide: use mkPackageOption
Standardized interface to provide a consistent treewide experience.
2025-04-02 21:49:14 -05:00

79 lines
2.2 KiB
Nix

{ config, lib, pkgs, ... }:
let
inherit (lib) mkOption types;
cfg = config.programs.gitui;
in {
meta.maintainers = [ lib.hm.maintainers.mifom ];
options.programs.gitui = {
enable = lib.mkEnableOption
"gitui, blazing fast terminal-ui for git written in rust";
package = lib.mkPackageOption pkgs "gitui" { };
keyConfig = mkOption {
type = types.either types.path types.lines;
default = "";
example = ''
exit: Some(( code: Char('c'), modifiers: ( bits: 2,),)),
quit: Some(( code: Char('q'), modifiers: ( bits: 0,),)),
exit_popup: Some(( code: Esc, modifiers: ( bits: 0,),)),
'';
description = ''
Key config in Ron file format. This is written to
{file}`$XDG_CONFIG_HOME/gitui/key_config.ron`.
'';
};
theme = mkOption {
type = types.either types.path types.lines;
default = ''
(
selected_tab: Reset,
command_fg: White,
selection_bg: Blue,
selection_fg: White,
cmdbar_bg: Blue,
cmdbar_extra_lines_bg: Blue,
disabled_fg: DarkGray,
diff_line_add: Green,
diff_line_delete: Red,
diff_file_added: LightGreen,
diff_file_removed: LightRed,
diff_file_moved: LightMagenta,
diff_file_modified: Yellow,
commit_hash: Magenta,
commit_time: LightCyan,
commit_author: Green,
danger_fg: Red,
push_gauge_bg: Blue,
push_gauge_fg: Reset,
tag_fg: LightMagenta,
branch_fg: LightYellow,
)
'';
description = ''
Theme in Ron file format. This is written to
{file}`$XDG_CONFIG_HOME/gitui/theme.ron`.
'';
};
};
config = lib.mkIf cfg.enable {
home.packages = [ cfg.package ];
xdg.configFile."gitui/theme.ron".source =
if builtins.isPath cfg.theme || lib.isStorePath cfg.theme then
cfg.theme
else
pkgs.writeText "gitui-theme.ron" cfg.theme;
xdg.configFile."gitui/key_bindings.ron".source =
if builtins.isPath cfg.keyConfig || lib.isStorePath cfg.keyConfig then
cfg.keyConfig
else
pkgs.writeText "gitui-key-config.ron" cfg.keyConfig;
};
}