aboutsummaryrefslogtreecommitdiffstats
path: root/modules/by-name/fi/fish/module.nix
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--modules/by-name/fi/fish/module.nix85
1 files changed, 85 insertions, 0 deletions
diff --git a/modules/by-name/fi/fish/module.nix b/modules/by-name/fi/fish/module.nix
new file mode 100644
index 00000000..590df8b9
--- /dev/null
+++ b/modules/by-name/fi/fish/module.nix
@@ -0,0 +1,85 @@
+# nixos-config - My current NixOS configuration
+#
+# Copyright (C) 2025 Benedikt Peetz <benedikt.peetz@b-peetz.de>
+# SPDX-License-Identifier: GPL-3.0-or-later
+#
+# This file is part of my nixos-config.
+#
+# You should have received a copy of the License along with this program.
+# If not, see <https://www.gnu.org/licenses/gpl-3.0.txt>.
+{
+ config,
+ lib,
+ pkgs,
+ ...
+}: let
+ cfg = config.soispha.programs.fish;
+
+ sourceFile = path: "source ${path}\n";
+
+ extraFiles = builtins.concatStringsSep "\n" (
+ builtins.map (value:
+ if builtins.isPath value
+ then (sourceFile value)
+ else value) (
+ builtins.attrValues cfg.integrations
+ )
+ );
+in {
+ options.soispha.programs.fish = {
+ enable = lib.mkEnableOption "fish";
+
+ integrations = lib.mkOption {
+ type = lib.types.attrsOf (lib.types.either lib.types.path lib.types.str);
+ example = ''
+ {
+ atuin = ./integrations/atuin.fish;
+ }
+ '';
+ default = {};
+ };
+ };
+
+ config = lib.mkIf cfg.enable {
+ # Ensure that the default shell of the user is actually enabled.
+ programs.fish = {
+ enable = true;
+ package = pkgs.fish-patched;
+ };
+
+ home-manager.users.soispha = {
+ home.sessionPath = lib.mkForce [];
+
+ programs.fish = {
+ enable = true;
+
+ package = config.programs.fish.package;
+
+ interactiveShellInit = let
+ start = lib.modules.mkBefore (
+ sourceFile ./config/01_show-task.fish
+ );
+ end = lib.modules.mkAfter (
+ sourceFile ./config/keybindings/00__start.fish
+ + sourceFile ./config/keybindings/01_insert.fish
+ + sourceFile ./config/keybindings/02_command.fish
+ + sourceFile ./config/keybindings/03_visual.fish
+ + sourceFile ./config/keybindings/04_replace.fish
+ + sourceFile ./config/keybindings/05_operator.fish
+ + sourceFile ./config/keybindings/06_replace_one.fish
+ + sourceFile ./config/keybindings/07_others.fish
+ + sourceFile ./config/keybindings/08__end.fish
+ );
+ in
+ lib.modules.mkMerge
+ [
+ start
+
+ extraFiles
+
+ end
+ ];
+ };
+ };
+ };
+}