Add development runtimes

This commit is contained in:
2023-01-07 18:58:10 +00:00
parent 1d0f43a118
commit e1b8e670c9
18 changed files with 228 additions and 51 deletions

View File

@ -27,6 +27,9 @@ with lib.my;
desktop = { desktop = {
firefox.enable = true; firefox.enable = true;
}; };
dev = {
node.enable = true;
};
editors = { editors = {
neovim.enable = true; neovim.enable = true;
vscode.enable = true; vscode.enable = true;

View File

@ -3,6 +3,12 @@
./options.nix ./options.nix
./desktop/firefox.nix ./desktop/firefox.nix
./desktop/gnome.nix ./desktop/gnome.nix
./dev/java.nix
./dev/lua.nix
./dev/node.nix
./dev/python.nix
./dev/rust.nix
./dev/zig.nix
./editors/neovim ./editors/neovim
./editors/vscode.nix ./editors/vscode.nix
./security/gpg.nix ./security/gpg.nix

16
modules/dev/java.nix Normal file
View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.dev.java;
in {
options.modules.dev.java = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
jdk
];
};
}

16
modules/dev/lua.nix Normal file
View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.dev.lua;
in {
options.modules.dev.lua = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
lua
];
};
}

16
modules/dev/node.nix Normal file
View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.dev.node;
in {
options.modules.dev.node = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
nodejs_latest
];
};
}

16
modules/dev/python.nix Normal file
View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.dev.python;
in {
options.modules.dev.python = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
python310
];
};
}

19
modules/dev/rust.nix Normal file
View File

@ -0,0 +1,19 @@
{ config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.dev.rust;
in {
options.modules.dev.rust = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
rustc
rustup
rustfmt
rust-bindgen
];
};
}

16
modules/dev/zig.nix Normal file
View File

@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
with lib;
with lib.my;
let cfg = config.modules.dev.zig;
in {
options.modules.dev.zig = {
enable = mkBoolOpt false;
};
config = mkIf cfg.enable {
user.packages = with pkgs; [
zig
];
};
}

View File

@ -2,7 +2,9 @@
with lib; with lib;
with lib.my; with lib.my;
let cfg = config.modules.editors.neovim; let
cfg = config.modules.editors.neovim;
dev = config.modules.dev;
in { in {
options.modules.editors.neovim = { options.modules.editors.neovim = {
enable = mkBoolOpt false; enable = mkBoolOpt false;
@ -12,6 +14,9 @@ in {
user.packages = with pkgs; [ user.packages = with pkgs; [
(neovim.override { (neovim.override {
configure = { configure = {
customRC = ''
luafile ~/.config/nvim/init.lua
'';
packages.myPlugins = with pkgs.vimPlugins; { packages.myPlugins = with pkgs.vimPlugins; {
start = [ start = [
(nvim-treesitter.withPlugins ( (nvim-treesitter.withPlugins (
@ -57,15 +62,56 @@ in {
zig zig
] ]
)) ))
nvim-lspconfig
]; ];
}; };
}; };
}) })
]; ] ++
# Install appropriate language servers
(if dev.java.enable then [
java-language-server # Java
ltex-ls # LaTeX
] else []) ++
(if dev.lua.enable then [
sumneko-lua-language-server # Lua
] else []) ++
(if dev.node.enable then [
nodePackages.bash-language-server # Bash
nodePackages.dockerfile-language-server-nodejs # Dockerfile
nodePackages.graphql-language-service-cli # GraphQL
nodePackages.purescript-language-server # PureScript
nodePackages.svelte-language-server # Svelte
nodePackages.typescript-language-server # JavaScript/TypeScript
nodePackages.vim-language-server # Vim
nodePackages.vscode-langservers-extracted # HTML, CSS, JSON, ESLint
nodePackages.vue-language-server # Vue.js
nodePackages.yaml-language-server # YAML
] else []) ++
(if dev.python.enable then [
cmake-language-server # CMake
python310Packages.python-lsp-server # Python
] else []) ++
(if dev.rust.enable then [
rust-analyzer # Rust
] else []) ++
(if dev.zig.enable then [
zls # Zig
] else []);
home.configFile = { home.configFile = {
"nvim/init.lua" = { source = ./init.lua; }; "nvim/init.lua".source = ./init.lua;
"nvim/lua" = { source = ./lua; recursive = true; }; "nvim/lua" = { source = ./lua; recursive = true; };
"nvim/lua/config/lsp.lua".text = ''
-- This file is autogenerated, do not edit.
${if dev.java.enable then "require('config.lsp.java')\n" else ""}
${if dev.lua.enable then "require('config.lsp.lua')\n" else ""}
${if dev.node.enable then "require('config.lsp.node')\n" else ""}
${if dev.python.enable then "require('config.lsp.python')\n" else ""}
${if dev.rust.enable then "require('config.lsp.rust')\n" else ""}
${if dev.zig.enable then "require('config.lsp.zig')\n" else ""}
'';
}; };
env.EDITOR = "nvim"; env.EDITOR = "nvim";

View File

@ -1,4 +1,6 @@
require("config.core") require("config.core")
require("config.keymap") require("config.keymap")
require("config.treesitter")
require("config.plugins") require("config.plugins")
require("config.lsp")

View File

@ -1,32 +0,0 @@
require("nvim-lsp-installer").setup({
ensure_installed = {
"bashls",
"cmake",
"cssls",
"dockerls",
"eslint",
"graphql",
"html",
"jsonls",
"tsserver",
"ltex",
"sumneko_lua",
"marksman",
"pylsp",
"rust_analyzer",
"stylelint_lsp",
"vimls",
"lemminx",
"yamlls",
"zls",
},
ui = {
check_outdated_servers_on_open = false,
icons = {
server_installed = "",
server_pending = "",
server_uninstalled = "",
},
},
})

View File

@ -0,0 +1,6 @@
lspconfig = require('lspconfig')
-- Requires Java
lspconfig.java_language_server.setup{}
lspconfig.ltex.setup{}

View File

@ -0,0 +1,22 @@
lspconfig = require('lspconfig')
-- Requires Lua
lspconfig.sumneko_lua.setup {
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = {'vim'},
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = {
enable = false,
},
},
},
}

View File

@ -0,0 +1,17 @@
lspconfig = require('lspconfig')
-- Requires Node.js
lspconfig.bashls.setup{}
lspconfig.cssls.setup{}
lspconfig.dockerls.setup{}
lspconfig.eslint.setup{}
lspconfig.graphql.setup{}
lspconfig.html.setup{}
lspconfig.jsonls.setup{}
lspconfig.purescriptls.setup{}
lspconfig.svelte.setup{}
lspconfig.tsserver.setup{}
lspconfig.vimls.setup{}
lspconfig.vuels.setup{}
lspconfig.yamlls.setup{}

View File

@ -0,0 +1,6 @@
lspconfig = require('lspconfig')
-- Requires Python
lspconfig.cmake.setup{}
lspconfig.pylsp.setup{}

View File

@ -0,0 +1,5 @@
lspconfig = require('lspconfig')
-- Requires Rust
lspconfig.rls.setup{}

View File

@ -0,0 +1,5 @@
lspconfig = require('lspconfig')
-- Requires Zig
lspconfig.zls.setup{}

View File

@ -39,31 +39,25 @@ return packer.startup(function(use)
use { "wbthomason/packer.nvim", opt = true } use { "wbthomason/packer.nvim", opt = true }
use { "mbbill/undotree" } use { "mbbill/undotree" }
use { "nvim-lua/plenary.nvim" } use { "nvim-lua/plenary.nvim" }
use {
"nvim-treesitter/nvim-treesitter",
event = "BufEnter",
run = ":TSUpdate",
config = [[require('config.treesitter')]]
}
use { "tpope/vim-fugitive", event = "User InGitRepo" } use { "tpope/vim-fugitive", event = "User InGitRepo" }
-- Editing -- Editing
use { "andymass/vim-matchup", after = "nvim-treesitter" } use { "andymass/vim-matchup" }
use { "godlygeek/tabular" } use { "godlygeek/tabular" }
use { "JoosepAlviste/nvim-ts-context-commentstring", after = "nvim-treesitter" } use { "JoosepAlviste/nvim-ts-context-commentstring" }
use { "kana/vim-textobj-user" } use { "kana/vim-textobj-user" }
use { "mg979/vim-visual-multi", branch = "master" } use { "mg979/vim-visual-multi", branch = "master" }
use { "nvim-treesitter/nvim-treesitter-context", after = "nvim-treesitter" } use { "nvim-treesitter/nvim-treesitter-context" }
use { "nvim-treesitter/nvim-treesitter-textobjects", after = "nvim-treesitter" } use { "nvim-treesitter/nvim-treesitter-textobjects" }
use { "p00f/nvim-ts-rainbow", after = "nvim-treesitter" } use { "p00f/nvim-ts-rainbow" }
use { "terryma/vim-expand-region" } use { "terryma/vim-expand-region" }
use { "tommcdo/vim-exchange", event = "VimEnter" } use { "tommcdo/vim-exchange", event = "VimEnter" }
use { "tpope/vim-abolish" } use { "tpope/vim-abolish" }
use { "tpope/vim-commentary", event = "VimEnter" } use { "tpope/vim-commentary", event = "VimEnter" }
use { "tpope/vim-repeat", event = "VimEnter" } use { "tpope/vim-repeat", event = "VimEnter" }
use { "tpope/vim-surround", event = "VimEnter" } use { "tpope/vim-surround", event = "VimEnter" }
use { "windwp/nvim-autopairs", after = "nvim-treesitter" } use { "windwp/nvim-autopairs" }
use { "windwp/nvim-ts-autotag", after = "nvim-treesitter" } use { "windwp/nvim-ts-autotag" }
-- UI -- UI
use { "junegunn/goyo.vim" } use { "junegunn/goyo.vim" }
@ -71,13 +65,11 @@ return packer.startup(function(use)
use { "markonm/traces.vim" } use { "markonm/traces.vim" }
-- Searching -- Searching
use { "nvim-telescope/telescope.nvim", after = "nvim-treesitter", config = [[require('config.telescope')]] } use { "nvim-telescope/telescope.nvim", config = [[require('config.telescope')]] }
use { "cljoly/telescope-repo.nvim", requires = "telescope.nvim" } use { "cljoly/telescope-repo.nvim", requires = "telescope.nvim" }
use { "dyng/ctrlsf.vim" } use { "dyng/ctrlsf.vim" }
-- LSP -- LSP
use { "neovim/nvim-lspconfig" }
use { "williamboman/nvim-lsp-installer", config = [[require('config.lsp')]] }
use { "jose-elias-alvarez/null-ls.nvim" } use { "jose-elias-alvarez/null-ls.nvim" }
if PACKER_BOOTSTRAP then if PACKER_BOOTSTRAP then