{ config, lib, inputs, pkgs, ... }: let cfg = config.myOptions.programs.helix; inherit (config.myOptions.other.system) username; inherit (lib) getExe getExe' mkEnableOption mkIf; clangd = getExe' pkgs.clang-tools "clangd"; css-languageserver = getExe pkgs.vscode-langservers-extracted; in { options.myOptions.programs.helix.enable = mkEnableOption "helix"; config = mkIf cfg.enable { home-manager.users.${username} = { programs.helix = { enable = true; package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (self: { makeWrapperArgs = with pkgs; self.makeWrapperArgs or [] ++ [ "--suffix" "PATH" ":" (lib.makeBinPath [ rustfmt rust-analyzer nil clang-tools nodePackages.bash-language-server vscode-langservers-extracted ]) ]; }); settings = { theme = "catppuccin_mocha"; editor = { scrolloff = 7; mouse = false; middle-click-paste = false; line-number = "relative"; auto-completion = false; auto-format = false; completion-replace = true; true-color = true; undercurl = true; rulers = [ 80 ]; bufferline = "multiple"; color-modes = true; lsp = { display-messages = true; display-inlay-hints = true; }; cursor-shape = { normal = "block"; insert = "bar"; select = "underline"; }; auto-pairs = false; whitespace.render.newline = "all"; indent-guides.render = true; }; }; languages = { language-server = { nil = { command = lib.getExe pkgs.nil; config.nil.formatting.command = [ "${lib.getExe pkgs.alejandra}" "-q" ]; }; clangd = { command = clangd; clangd.fallbackFlags = [ "-std=c++2b" ]; }; vscode-css-language-server = { command = "${css-languageserver}"; args = [ "--stdio" ]; }; }; language = [ { name = "rust"; auto-format = false; } { name = "html"; file-types = [ "html" ]; } { name = "c"; } ]; }; }; }; }; }