diff options
| author | seth <[email protected]> | 2024-10-27 02:27:42 -0400 |
|---|---|---|
| committer | seth <[email protected]> | 2024-10-27 02:27:42 -0400 |
| commit | 87e5274c0ad37baf3130e090f6645935e9c17e11 (patch) | |
| tree | 6e995f0bba34861c114a540319f0f9d76e91410b /users/seth/programs/fish.nix | |
| parent | d088ba5731cca3c552584b9eb2e212c8fd624b58 (diff) | |
seth: merge shell modules with regular programs
Diffstat (limited to 'users/seth/programs/fish.nix')
| -rw-r--r-- | users/seth/programs/fish.nix | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/users/seth/programs/fish.nix b/users/seth/programs/fish.nix new file mode 100644 index 0000000..b1f792a --- /dev/null +++ b/users/seth/programs/fish.nix @@ -0,0 +1,68 @@ +{ + config, + lib, + pkgs, + ... +}: +let + cfg = config.seth.programs.fish; +in +{ + options.seth.programs.fish = { + enable = lib.mkEnableOption "Fish configuration"; + withPlugins = lib.mkEnableOption "Fish plugins" // { + default = true; + }; + }; + + config = lib.mkIf cfg.enable ( + lib.mkMerge [ + { + programs.fish = { + enable = true; + + interactiveShellInit = '' + ${lib.getExe pkgs.nix-your-shell} fish | source + ''; + + functions = { + last_history_item.body = "echo $history[1]"; + }; + + shellAbbrs = { + nixgc = "sudo nix-collect-garbage -d && nix-collect-garbage -d"; + "!!" = { + position = "anywhere"; + function = "last_history_item"; + }; + }; + }; + } + + # TODO: do i still need this weird sourcing? + (lib.mkIf config.seth.standalone.enable { + programs.fish = { + interactiveShellInit = '' + set -l nixfile ${config.home.homeDirectory}/.nix-profile/etc/profile.d/nix.fish + if test -e $nixfile + source $nixfile + end + ''; + }; + }) + + (lib.mkIf cfg.withPlugins { + programs.fish = { + plugins = + let + useFishPlugins = map (plugin: { + name = plugin; + inherit (pkgs.fishPlugins.${plugin}) src; + }); + in + useFishPlugins [ "autopair" ]; + }; + }) + ] + ); +} |
