1
0
mirror of https://github.com/nix-community/home-manager synced 2024-06-30 18:38:31 +02:00
home-manager/modules/misc/vte.nix
Emily 9e4a73c25e treewide: convert custom enable docs to Markdown
`nix-doc-munge` can't tell what's going on with this pattern, so I
just handled them all manually.
2023-07-17 16:49:35 +01:00

56 lines
1.6 KiB
Nix

{ config, lib, pkgs, ... }:
with lib;
{
meta.maintainers = [ maintainers.rycee ];
options.programs = let
description = lib.mdDoc ''
Whether to enable integration with terminals using the VTE
library. This will let the terminal track the current working
directory.
'';
in {
bash.enableVteIntegration = mkEnableOption (lib.mdDoc "") // {
inherit description;
};
zsh.enableVteIntegration = mkEnableOption (lib.mdDoc "") // {
inherit description;
};
};
config = mkMerge [
(mkIf config.programs.bash.enableVteIntegration {
# Unfortunately we have to do a little dance here to fix two
# problems with the upstream vte.sh file:
#
# - It does `PROMPT_COMMAND="__vte_prompt_command"` which
# clobbers any previously assigned prompt command.
#
# - Its `__vte_prompt_command` function runs commands that will
# overwrite the exit status of the command the user ran.
programs.bash.initExtra = ''
__HM_PROMPT_COMMAND="''${PROMPT_COMMAND:+''${PROMPT_COMMAND%;};}__hm_vte_prompt_command"
. ${pkgs.vte}/etc/profile.d/vte.sh
if [[ $(type -t __vte_prompt_command) = function ]]; then
__hm_vte_prompt_command() {
local old_exit_status=$?
__vte_prompt_command
return $old_exit_status
}
PROMPT_COMMAND="$__HM_PROMPT_COMMAND"
fi
unset __HM_PROMPT_COMMAND
'';
})
(mkIf config.programs.zsh.enableVteIntegration {
programs.zsh.initExtra = ''
. ${pkgs.vte}/etc/profile.d/vte.sh
'';
})
];
}