{ config, config', lib, inputs, pkgs, ... }: with lib; let cfg = config.myOptions.programs.helix; in { options.myOptions.programs.helix.enable = mkEnableOption "enable helix"; config = mkIf cfg.enable { nix.settings = { substituters = [ "https://helix.cachix.org" ]; trusted-public-keys = [ "helix.cachix.org-1:ejp9KQpR1FBI2onstMQ34yogDm4OgU2ru6lIwPvuCVs=" ]; }; home-manager.users.${config'.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 nodePackages.vscode-css-languageserver-bin nodePackages.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 = "${pkgs.clang-tools}/bin/clangd"; clangd.fallbackFlags = [ "-std=c++2b" ]; }; vscode-css-language-server = { command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver"; args = [ "--stdio" ]; }; }; language = [ { name = "rust"; auto-format = false; } { name = "html"; file-types = [ "html" ]; } { name = "c"; } ]; }; }; }; }; }