# nixos-config - My current NixOS configuration # # Copyright (C) 2025 Benedikt Peetz # 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 . { config, lib, ... }: 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 { home-manager.users.soispha = { home.sessionPath = lib.mkForce []; programs.fish = { enable = true; 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 ]; }; }; }; }