mirror of
https://github.com/nix-community/home-manager.git
synced 2026-06-05 21:02:51 +00:00
`literalExpression` is intended just to signify code that needs to stay a string that gets represented exactly as-is for docs. It has been misused heavily and people get confused repeatedly on when or not to use it because of the rampant misuse.
80 lines
1.9 KiB
Nix
80 lines
1.9 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
pkgs,
|
|
...
|
|
}:
|
|
let
|
|
inherit (lib) mkIf;
|
|
|
|
cfg = config.programs.navi;
|
|
|
|
yamlFormat = pkgs.formats.yaml { };
|
|
|
|
configDir =
|
|
if pkgs.stdenv.isDarwin && !config.xdg.enable then
|
|
"Library/Application Support"
|
|
else
|
|
config.xdg.configHome;
|
|
|
|
in
|
|
{
|
|
meta.maintainers = [ ];
|
|
|
|
options.programs.navi = {
|
|
enable = lib.mkEnableOption "Navi";
|
|
|
|
package = lib.mkPackageOption pkgs "navi" { };
|
|
|
|
settings = lib.mkOption {
|
|
inherit (yamlFormat) type;
|
|
default = { };
|
|
example = {
|
|
cheats = {
|
|
paths = [
|
|
"~/cheats/"
|
|
];
|
|
};
|
|
};
|
|
description = ''
|
|
Configuration written to
|
|
{file}`$XDG_CONFIG_HOME/navi/config.yaml` on Linux or
|
|
{file}`$HOME/Library/Application Support/navi/config.yaml`
|
|
on Darwin. See
|
|
<https://github.com/denisidoro/navi/blob/master/docs/config_file.md>
|
|
for more information.
|
|
'';
|
|
};
|
|
|
|
enableBashIntegration = lib.hm.shell.mkBashIntegrationOption { inherit config; };
|
|
|
|
enableFishIntegration = lib.hm.shell.mkFishIntegrationOption { inherit config; };
|
|
|
|
enableZshIntegration = lib.hm.shell.mkZshIntegrationOption { inherit config; };
|
|
};
|
|
|
|
config = mkIf cfg.enable {
|
|
home.packages = [ cfg.package ];
|
|
|
|
programs.bash.initExtra = mkIf cfg.enableBashIntegration ''
|
|
if [[ :$SHELLOPTS: =~ :(vi|emacs): ]]; then
|
|
eval "$(${cfg.package}/bin/navi widget bash)"
|
|
fi
|
|
'';
|
|
|
|
programs.zsh.initContent = mkIf cfg.enableZshIntegration ''
|
|
if [[ $options[zle] = on ]]; then
|
|
eval "$(${cfg.package}/bin/navi widget zsh)"
|
|
fi
|
|
'';
|
|
|
|
programs.fish.shellInit = mkIf cfg.enableFishIntegration ''
|
|
${cfg.package}/bin/navi widget fish | source
|
|
'';
|
|
|
|
home.file."${configDir}/navi/config.yaml" = mkIf (cfg.settings != { }) {
|
|
source = yamlFormat.generate "navi-config" cfg.settings;
|
|
};
|
|
};
|
|
}
|