From 3e208d20934bedd8cd7769f23f35cfae9d8e7d0d Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Fri, 14 Feb 2025 01:18:47 -0500 Subject: seth: simplify module structure Moving to mixins generally reduces the boilerplate in all configurations, and less custom "stuff" These are then enabled by the regular options in programs.nix for example Many of the other options (like desktops) also had little use in being abstracted as there's no situation where I'd *not* want them to be applied when said desktop is in use --- users/seth/mixins/fish.nix | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 users/seth/mixins/fish.nix (limited to 'users/seth/mixins/fish.nix') diff --git a/users/seth/mixins/fish.nix b/users/seth/mixins/fish.nix new file mode 100644 index 0000000..e02c736 --- /dev/null +++ b/users/seth/mixins/fish.nix @@ -0,0 +1,55 @@ +{ + config, + lib, + pkgs, + ... +}: + +{ + config = lib.mkMerge [ + { + programs.fish = { + functions = { + last_history_item.body = "echo $history[1]"; + }; + + interactiveShellInit = '' + set --global hydro_symbol_prompt ">" + + set --global hydro_color_duration $fish_color_end + set --global hydro_color_error $fish_color_error + set --global hydro_color_git cba6f7 + set --global hydro_color_prompt $fish_color_cwd + set --global hydro_color_pwd $fish_color_user + ''; + + plugins = [ + { + name = "hydro"; + inherit (pkgs.fishPlugins.hydro) src; + } + ]; + + 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 + ''; + }; + }) + ]; +} -- cgit v1.2.3