diff --git a/flake.nix b/flake.nix index 1dccc15..325e859 100644 --- a/flake.nix +++ b/flake.nix @@ -22,16 +22,17 @@ homeConfigurations."tacocat" = home-manager.lib.homeManagerConfiguration { inherit pkgs; - # Specify your home configuration modules here, for example, - # the path to your home.nix. - modules = [ + # Specify your home configuration modules here, for example, + # the path to your home.nix. + modules = [ ./home.nix ./shell ./programs + ./helix ]; - # Optionally use extraSpecialArgs - # to pass through arguments to home.nix + # Optionally use extraSpecialArgs + # to pass through arguments to home.nix extraSpecialArgs = {inherit inputs system;}; }; }; diff --git a/helix/default.nix b/helix/default.nix new file mode 100644 index 0000000..e62d2ba --- /dev/null +++ b/helix/default.nix @@ -0,0 +1,85 @@ +{ config, pkgs, inputs, ... }: + +{ + + imports = [ + ./languages.nix + ]; + + programs.helix = { + enable = true; + # package = inputs.helix.packages."x86_64-linux".default; + + package = inputs.helix.packages.${pkgs.system}.default.overrideAttrs (self: { + makeWrapperArgs = with pkgs; + self.makeWrapperArgs + or [] + ++ [ + "--suffix" + "PATH" + ":" + (lib.makeBinPath [ + clang-tools + marksman + nil + nodePackages.bash-language-server + nodePackages.vscode-css-languageserver-bin + nodePackages.vscode-langservers-extracted + shellcheck + ]) + ]; + }); + + settings = { + theme = "rose_pine_moon"; + editor = { + line-number = "relative"; + lsp.display-messages = true; + scrolloff = 5; + middle-click-paste = false; + cursorline = true; + auto-format = false; + idle-timeout = 400; + color-modes = true; + soft-wrap.enable = true; + whitespace = { + render = { + space = "none"; + tab = "none"; + newline = "none"; + }; + }; + indent-guides = { + render = true; + character = "▏"; + }; + }; + }; +# languages = { +# language = [{ +# name = "nix"; +# scope = "flake.nix"; +# roots = [ "flake.nix" "flake.lock" ]; +# injection-regex = "nix"; +# auto-format = false; +# file-types = [ "nix" ]; +# comment-token = "#"; +# indent = { +# tab-width = 2; +# unit = " "; +# }; +# language-servers = [ "${pkgs.nil}" ]; +# formatter = { +# command = "${pkgs.nixpkgs-fmt}"; +# }; +# }]; +# grammar = [{ +# name = "nix"; +# source = { +# git = "https://github.com/nix-community/tree-sitter-nix"; +# rev = "66e3e9ce9180ae08fc57372061006ef83f0abde7"; +# }; +# }]; +# }; + }; +} diff --git a/helix/languages.nix b/helix/languages.nix new file mode 100644 index 0000000..4ab1890 --- /dev/null +++ b/helix/languages.nix @@ -0,0 +1,31 @@ +{ pkgs, lib, ... }: + +{ + programs.helix.languages = { + language-server = { + bash-language-server = { + command = "${pkgs.nodePackages.bash-language-server}/bin/bash-language-server"; + args = ["start"]; + }; + + clangd = { + command = "${pkgs.clang-tools}/bin/clangd"; + clangd.fallbackFlags = ["-std=c++2b"]; + }; + + nil = { + command = lib.getExe pkgs.nil; + config.nil.formatting.command = ["${lib.getExe pkgs.alejandra}" "-q"]; + }; + + vscode-css-language-server = { + command = "${pkgs.nodePackages.vscode-css-languageserver-bin}/bin/css-languageserver"; + args = ["--stdio"]; + config = { + provideFormatter = true; + css.validate.enable = true; + }; + }; + }; + }; +} diff --git a/programs/default.nix b/programs/default.nix index 1aaec6e..82c0af1 100644 --- a/programs/default.nix +++ b/programs/default.nix @@ -1,6 +1,5 @@ { imports = [ ./kitty.nix - ./helix.nix ]; } diff --git a/programs/helix.nix b/programs/helix.nix deleted file mode 100644 index f648510..0000000 --- a/programs/helix.nix +++ /dev/null @@ -1,59 +0,0 @@ -{ config, pkgs, inputs, ... }: - -{ - programs.helix = { - enable = true; - package = inputs.helix.packages."x86_64-linux".default; - settings = { - theme = "rose_pine_moon"; - editor = { - line-number = "relative"; - lsp.display-messages = true; - scrolloff = 5; - middle-click-paste = false; - cursorline = true; - auto-format = false; - idle-timeout = 400; - color-modes = true; - soft-wrap.enable = true; - whitespace = { - render = { - space = "none"; - tab = "none"; - newline = "none"; - }; - }; - indent-guides = { - render = true; - character = "▏"; - }; - }; - }; - languages = { - language = [{ - name = "nix"; - scope = "flake.nix"; - roots = [ "flake.nix" "flake.lock" ]; - injection-regex = "nix"; - auto-format = false; - file-types = [ "nix" ]; - comment-token = "#"; - indent = { - tab-width = 2; - unit = " "; - }; - language-servers = [ "${pkgs.nil}" ]; - formatter = { - command = "${pkgs.nixpkgs-fmt}"; - }; - }]; -# grammar = [{ -# name = "nix"; -# source = { -# git = "https://github.com/nix-community/tree-sitter-nix"; -# rev = "66e3e9ce9180ae08fc57372061006ef83f0abde7"; -# }; -# }]; - }; - }; -}