mirror of
https://github.com/nix-community/home-manager.git
synced 2025-11-08 19:46:05 +01:00
Some files don't need nesting and can be root level again to reduce conflicts with other PRs. Signed-off-by: Austin Horstman <khaneliman12@gmail.com>
117 lines
2.6 KiB
Nix
117 lines
2.6 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) mkOption types;
|
|
|
|
cfg = config.programs.pet;
|
|
|
|
format = pkgs.formats.toml { };
|
|
|
|
snippetType = types.submodule {
|
|
options = {
|
|
description = mkOption {
|
|
type = types.str;
|
|
default = "";
|
|
example = "Count the number of commits in the current branch";
|
|
description = ''
|
|
Description of the snippet.
|
|
'';
|
|
};
|
|
|
|
command = mkOption {
|
|
type = types.str;
|
|
default = "";
|
|
example = "git rev-list --count HEAD";
|
|
description = ''
|
|
The command.
|
|
'';
|
|
};
|
|
|
|
output = mkOption {
|
|
type = types.str;
|
|
default = "";
|
|
example = "473";
|
|
description = ''
|
|
Example output of the command.
|
|
'';
|
|
};
|
|
|
|
tag = mkOption {
|
|
type = types.listOf types.str;
|
|
default = [ ];
|
|
example = lib.literalExpression ''["git" "nixpkgs"]'';
|
|
description = ''
|
|
List of tags attached to the command.
|
|
'';
|
|
};
|
|
};
|
|
};
|
|
|
|
in
|
|
{
|
|
options.programs.pet = {
|
|
enable = lib.mkEnableOption "pet";
|
|
|
|
package = lib.mkPackageOption pkgs "pet" { nullable = true; };
|
|
|
|
settings = mkOption {
|
|
type = format.type;
|
|
default = { };
|
|
description = ''
|
|
Settings written to {file}`config.toml`. See the pet
|
|
documentation for details.
|
|
'';
|
|
};
|
|
|
|
selectcmdPackage = lib.mkPackageOption pkgs "fzf" {
|
|
nullable = true;
|
|
extraDescription = "The package needed for the {var}`settings.selectcmd`.";
|
|
};
|
|
|
|
snippets = mkOption {
|
|
type = types.listOf snippetType;
|
|
default = [ ];
|
|
description = ''
|
|
The snippets.
|
|
'';
|
|
};
|
|
};
|
|
|
|
config = lib.mkIf cfg.enable {
|
|
programs.pet.settings =
|
|
let
|
|
defaultGeneral = {
|
|
selectcmd = lib.mkDefault "fzf";
|
|
snippetfile = config.xdg.configHome + "/pet/snippet.toml";
|
|
};
|
|
in
|
|
if lib.versionAtLeast config.home.stateVersion "21.11" then
|
|
{
|
|
General = defaultGeneral;
|
|
}
|
|
else
|
|
defaultGeneral;
|
|
|
|
home.packages =
|
|
lib.optional (cfg.package != null) cfg.package
|
|
++ lib.optional (cfg.selectcmdPackage != null) cfg.selectcmdPackage;
|
|
|
|
xdg.configFile = {
|
|
"pet/config.toml".source = format.generate "config.toml" (
|
|
if lib.versionAtLeast config.home.stateVersion "21.11" then
|
|
cfg.settings
|
|
else
|
|
{
|
|
General = cfg.settings;
|
|
}
|
|
);
|
|
"pet/snippet.toml" = lib.mkIf (cfg.snippets != [ ]) {
|
|
source = format.generate "snippet.toml" { snippets = cfg.snippets; };
|
|
};
|
|
};
|
|
};
|
|
}
|