diff --git a/flake.lock b/flake.lock index 1cc1ba6..a539e8f 100644 --- a/flake.lock +++ b/flake.lock @@ -68,6 +68,22 @@ "type": "github" } }, + "nixpkgs-glslls": { + "locked": { + "lastModified": 1649333979, + "narHash": "sha256-NN4povtqDoa8i6cWgwjOIq7M99d2+gAYzKNNqQP1h1o=", + "owner": "felschr", + "repo": "nixpkgs", + "rev": "e03c66c1ab447e03301a51b1d8b3a543658dacd0", + "type": "github" + }, + "original": { + "owner": "felschr", + "ref": "glsl-language-server", + "repo": "nixpkgs", + "type": "github" + } + }, "nur": { "locked": { "lastModified": 1651598969, @@ -129,6 +145,7 @@ "home-manager": "home-manager", "nixos-hardware": "nixos-hardware", "nixpkgs": "nixpkgs", + "nixpkgs-glslls": "nixpkgs-glslls", "nur": "nur", "nvim-kitty-navigator": "nvim-kitty-navigator", "pre-commit-hooks": "pre-commit-hooks" diff --git a/flake.nix b/flake.nix index 9eb99cf..e64ccf4 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,8 @@ { inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + inputs.nixpkgs-glslls.url = "github:felschr/nixpkgs/glsl-language-server"; + inputs.nixos-hardware.url = "github:NixOS/nixos-hardware/master"; inputs.flake-utils.url = "github:numtide/flake-utils"; @@ -45,6 +47,10 @@ deconz = self: super: { deconz = self.qt5.callPackage ./pkgs/deconz { }; }; + glslls = self: super: { + glsl-language-server = + nixpkgs-glslls.legacyPackages.${self.system}.glsl-language-server; + }; }; nixosModules = { flakeDefaults = import ./modules/flakeDefaults.nix; @@ -53,7 +59,7 @@ homeManagerModules = { git = import ./home/modules/git.nix; }; systemDefaults = { modules = [ nixosModules.flakeDefaults ]; - overlays = [ nur.overlay overlays.neovim overlays.deconz ]; + overlays = [ nur.overlay overlays.neovim overlays.deconz glslls ]; }; lib = rec { createSystem = hostName: diff --git a/home/editors/lsp.nix b/home/editors/lsp.nix index e230e02..9f54978 100644 --- a/home/editors/lsp.nix +++ b/home/editors/lsp.nix @@ -17,6 +17,7 @@ haskellPackages.haskell-language-server rust-analyzer sumneko-lua-language-server + glsl-language-server # linters & formatters nodePackages.eslint diff --git a/home/editors/neovim/lsp/lsp.lua b/home/editors/neovim/lsp/lsp.lua index 793c448..d054b75 100644 --- a/home/editors/neovim/lsp/lsp.lua +++ b/home/editors/neovim/lsp/lsp.lua @@ -27,8 +27,20 @@ local diagnosticls_on_attach = function(_, bufnr) }) end +local config = require("lspconfig") +local configs = require("lspconfig.configs") + +if not configs.glslls then + configs.glslls = { + default_config = { + cmd = { "glslls", "--stdin" }; + filetypes = { "glsl" }; + root_dir = config.util.root_pattern("*.conf", ".git"); + settings = {}; + }; + } +end -local config = require'lspconfig' local capabilities_ = vim.lsp.protocol.make_client_capabilities() local capabilities = require("cmp_nvim_lsp").update_capabilities(capabilities_) capabilities.textDocument.completion.completionItem.snippetSupport = true @@ -47,6 +59,7 @@ local servers = { "hls", "rust_analyzer", "vimls", + "glslls", } for _, lsp in ipairs(servers) do config[lsp].setup {