feat(nvim): make golang a devshell

This commit is contained in:
matt1432 2025-06-01 11:27:05 -04:00
parent 8cd000fb6b
commit 3a687ae95c
19 changed files with 64 additions and 11 deletions
configurations/android
devShells/neovim-shells
homeManagerModules/neovim

View file

@ -52,7 +52,6 @@
user = "nix-on-droid"; user = "nix-on-droid";
ideConfig = { ideConfig = {
enableGolang = false;
enableJava = false; enableJava = false;
enableNix = false; enableNix = false;
}; };

View file

@ -25,6 +25,7 @@ in
"kotlin" "kotlin"
"lua" "lua"
"markdown" "markdown"
"golang"
"python" "python"
"qml" "qml"
"rust" "rust"

View file

@ -25,10 +25,6 @@ in {
type = types.bool; type = types.bool;
default = true; default = true;
}; };
enableGolang = mkOption {
type = types.bool;
default = true;
};
enableJava = mkOption { enableJava = mkOption {
type = types.bool; type = types.bool;
default = true; default = true;

View file

@ -15,6 +15,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'cpp', 'c' }, pattern = { 'cpp', 'c' },
@ -39,6 +40,7 @@ in {
config = config =
# lua # lua
'' ''
--
local lsp = require('lspconfig'); local lsp = require('lspconfig');
local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); local default_capabilities = require('cmp_nvim_lsp').default_capabilities();

View file

@ -22,6 +22,7 @@ in {
config = config =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd('User', { vim.api.nvim_create_autocmd('User', {
pattern = 'RoslynInitialized', pattern = 'RoslynInitialized',

View file

@ -36,6 +36,7 @@ in {
mkBefore mkBefore
# lua # lua
'' ''
--
-- Init object to keep track of loaded devShells -- Init object to keep track of loaded devShells
local devShells = {}; local devShells = {};
@ -93,6 +94,7 @@ in {
config = config =
# lua # lua
'' ''
--
require('nvim-autopairs').setup({}); require('nvim-autopairs').setup({});
''; '';
}; };
@ -103,6 +105,7 @@ in {
config = config =
# lua # lua
'' ''
--
-- Disable virtual_text since it's redundant due to tiny-inline-diagnostic. -- Disable virtual_text since it's redundant due to tiny-inline-diagnostic.
vim.diagnostic.config({ vim.diagnostic.config({
virtual_text = false, virtual_text = false,

View file

@ -1,27 +1,42 @@
{ {
config, config,
lib, lib,
pkgs,
... ...
}: let }: let
inherit (lib) mkIf; inherit (lib) mkIf;
cfg = config.programs.neovim; cfg = config.programs.neovim;
flakeEnv = config.programs.bash.sessionVariables.FLAKE;
in { in {
config = mkIf (cfg.enable && cfg.ideConfig.enableGolang) { config = mkIf cfg.enable {
programs = { programs = {
neovim = { neovim = {
extraPackages = with pkgs; [go gopls];
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
local lsp = require('lspconfig'); local lsp = require('lspconfig');
local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); local default_capabilities = require('cmp_nvim_lsp').default_capabilities();
lsp.gopls.setup({ lsp.gopls.setup({
cmd = { '${pkgs.gopls}/bin/gopls' },
capabilities = default_capabilities, capabilities = default_capabilities,
autostart = false,
});
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'go', 'gomod', 'gowork', 'gotmpl' },
callback = function()
vim.cmd[[setlocal ts=4 sw=4 sts=0 expandtab]];
if (devShells['golang'] == nil) then
devShells['golang'] = 1;
require('nix-develop').nix_develop_extend({'${flakeEnv}#golang'}, function()
vim.cmd[[LspStart]];
end);
end
end,
}); });
''; '';
}; };

View file

@ -0,0 +1,12 @@
{
mkShell,
go,
gopls,
...
}:
mkShell {
packages = [
go
gopls
];
}

View file

@ -13,6 +13,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.filetype.add({ vim.filetype.add({
pattern = { [ '.*/hypr/.*%.conf' ] = 'hyprlang' }, pattern = { [ '.*/hypr/.*%.conf' ] = 'hyprlang' },
}); });

View file

@ -22,6 +22,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = 'java', pattern = 'java',
command = 'setlocal ts=4 sw=4 sts=0 expandtab', command = 'setlocal ts=4 sw=4 sts=0 expandtab',
@ -36,6 +37,7 @@ in {
config = config =
# lua # lua
'' ''
--
local startJdtls = function() local startJdtls = function()
local config = { local config = {
capabilities = require('cmp_nvim_lsp').default_capabilities(), capabilities = require('cmp_nvim_lsp').default_capabilities(),

View file

@ -14,6 +14,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'json', 'yaml', '.clang-.*' }, pattern = { 'json', 'yaml', '.clang-.*' },

View file

@ -14,6 +14,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'kotlin' }, pattern = { 'kotlin' },

View file

@ -20,6 +20,7 @@ in {
config = config =
# lua # lua
'' ''
--
local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); local default_capabilities = require('cmp_nvim_lsp').default_capabilities();
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {

View file

@ -27,6 +27,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'markdown', 'tex' }, pattern = { 'markdown', 'tex' },
@ -69,6 +70,7 @@ in {
config = config =
# lua # lua
'' ''
--
require('easytables').setup(); require('easytables').setup();
''; '';
} }
@ -99,6 +101,7 @@ in {
in in
# lua # lua
'' ''
--
vim.g.knap_settings = { vim.g.knap_settings = {
-- HTML -- HTML
htmloutputext = 'html', htmloutputext = 'html',

View file

@ -74,6 +74,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
require('lspconfig').nixd.setup({ require('lspconfig').nixd.setup({
capabilities = require('cmp_nvim_lsp').default_capabilities(), capabilities = require('cmp_nvim_lsp').default_capabilities(),

View file

@ -14,6 +14,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
local lsp = require('lspconfig'); local lsp = require('lspconfig');
local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); local default_capabilities = require('cmp_nvim_lsp').default_capabilities();

View file

@ -14,6 +14,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'qml' }, pattern = { 'qml' },

View file

@ -14,6 +14,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'rust' }, pattern = { 'rust' },

View file

@ -20,6 +20,7 @@ in {
extraLuaConfig = extraLuaConfig =
# lua # lua
'' ''
--
local lsp = require('lspconfig'); local lsp = require('lspconfig');
local tsserver = require('typescript-tools'); local tsserver = require('typescript-tools');
local default_capabilities = require('cmp_nvim_lsp').default_capabilities(); local default_capabilities = require('cmp_nvim_lsp').default_capabilities();
@ -35,7 +36,16 @@ in {
end; end;
vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, { vim.api.nvim_create_autocmd({ 'FileType', 'BufEnter' }, {
pattern = { 'javascript', 'javascriptreact', 'javascript.jsx', 'typescript', 'typescriptreact', 'typescript.tsx', 'css', 'scss' }, pattern = {
'javascript',
'javascriptreact',
'javascript.jsx',
'typescript',
'typescriptreact',
'typescript.tsx',
'css',
'scss',
},
callback = function() callback = function()
vim.cmd[[setlocal ts=4 sw=4 sts=0 expandtab]]; vim.cmd[[setlocal ts=4 sw=4 sts=0 expandtab]];
@ -185,6 +195,7 @@ in {
config = config =
# lua # lua
'' ''
--
local packageInfo = require('package-info'); local packageInfo = require('package-info');
packageInfo.setup({ packageInfo.setup({