2.home-manager/tests/modules/programs/fish/completions.nix
novenary e4e25a8c31 fish: ensure generated completions considered last
home-manager's generated completions shadow built-in completion scripts.
fish actually has logic to deal with this when the path ends with
/generated_completions, so let's take advantage of it.

Link: 47c773300a/src/autoload.rs (L421-L424)
2025-11-30 17:12:04 -06:00

45 lines
1.1 KiB
Nix

{ lib, pkgs, ... }:
let
myProg = pkgs.writeText "my-prog.fish" ''
complete -c myprog -s o -l output
'';
myApp = pkgs.writeText "my-app.fish" ''
complete -c myapp -s -v
'';
in
{
config = {
programs.fish = {
enable = true;
completions = {
my-prog = ''
complete -c myprog -s o -l output
'';
my-app = {
body = ''
complete -c myapp -s -v
'';
};
};
};
xdg.dataFile."fish/home-manager/generated_completions".source = lib.mkForce (
builtins.toFile "empty" ""
);
nmt = {
description = "if fish.completions is set, check file exists and contents match";
script = ''
assertFileExists home-files/.config/fish/completions/my-prog.fish
echo ${myProg}
assertFileContent home-files/.config/fish/completions/my-prog.fish ${myProg}
assertFileExists home-files/.config/fish/completions/my-app.fish
echo ${myApp}
assertFileContent home-files/.config/fish/completions/my-app.fish ${myApp}
'';
};
};
}