1
0
Fork 0
mirror of https://github.com/nix-community/home-manager.git synced 2025-03-31 04:04:32 +00:00
This commit is contained in:
MrTipson 2025-03-27 23:46:13 -05:00 committed by GitHub
commit 5c77bc0494
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 56 additions and 0 deletions

View file

@ -238,6 +238,15 @@ let
echo "end"
echo "setup_hm_session_vars") > $out
'';
sourceHandlersStr = let
handlerAttrs =
[ "onJobExit" "onProcessExit" "onVariable" "onSignal" "onEvent" ];
isHandler = name: def:
isAttrs def && any (attr: hasAttr attr def) handlerAttrs;
handlerFunctions = filterAttrs isHandler cfg.functions;
sourceFunction = name: def:
"source ${config.xdg.configHome}/fish/functions/${name}.fish";
in concatStringsSep "\n" (mapAttrsToList sourceFunction handlerFunctions);
in {
imports = [
@ -485,6 +494,9 @@ in {
source ${translatedSessionVariables}
# Source handler functions
${sourceHandlersStr}
${cfg.shellInit}
status is-login; and begin

View file

@ -3,6 +3,7 @@
fish-format-scripts = ./format-scripts.nix;
fish-functions = ./functions.nix;
fish-no-functions = ./no-functions.nix;
fish-source-handlers = ./source-handlers.nix;
fish-plugins = ./plugins.nix;
fish-manpage = ./manpage.nix;
}

View file

@ -0,0 +1,43 @@
{ config, lib, pkgs, ... }:
with builtins; {
config = {
programs.fish = {
enable = true;
functions = {
normal-function = "";
event-handler = {
body = "";
onEvent = "test";
};
variable-handler = {
body = "";
onVariable = "test";
};
job-handler = {
body = "";
onJobExit = "10";
};
signal-handler = {
body = "";
onSignal = "10";
};
process-handler = {
body = "";
onProcessExit = "10";
};
};
};
nmt.script = ''
assertFileExists home-files/.config/fish/config.fish
assertFileContains home-files/.config/fish/config.fish "source /home/hm-user/.config/fish/functions/event-handler.fish"
assertFileContains home-files/.config/fish/config.fish "source /home/hm-user/.config/fish/functions/variable-handler.fish"
assertFileContains home-files/.config/fish/config.fish "source /home/hm-user/.config/fish/functions/job-handler.fish"
assertFileContains home-files/.config/fish/config.fish "source /home/hm-user/.config/fish/functions/signal-handler.fish"
assertFileContains home-files/.config/fish/config.fish "source /home/hm-user/.config/fish/functions/process-handler.fish"
assertFileNotRegex home-files/.config/fish/config.fish "source /home/hm-user/.config/fish/functions/normal-function.fish"
'';
};
}