Add development runtimes
This commit is contained in:
@ -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;
|
||||||
|
@ -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
16
modules/dev/java.nix
Normal 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
16
modules/dev/lua.nix
Normal 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
16
modules/dev/node.nix
Normal 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
16
modules/dev/python.nix
Normal 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
19
modules/dev/rust.nix
Normal 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
16
modules/dev/zig.nix
Normal 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
|
||||||
|
];
|
||||||
|
};
|
||||||
|
}
|
@ -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";
|
||||||
|
@ -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")
|
||||||
|
|
||||||
|
@ -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 = "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
6
modules/editors/neovim/lua/config/lsp/java.lua
Normal file
6
modules/editors/neovim/lua/config/lsp/java.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
-- Requires Java
|
||||||
|
lspconfig.java_language_server.setup{}
|
||||||
|
lspconfig.ltex.setup{}
|
||||||
|
|
22
modules/editors/neovim/lua/config/lsp/lua.lua
Normal file
22
modules/editors/neovim/lua/config/lsp/lua.lua
Normal 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,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
17
modules/editors/neovim/lua/config/lsp/node.lua
Normal file
17
modules/editors/neovim/lua/config/lsp/node.lua
Normal 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{}
|
||||||
|
|
6
modules/editors/neovim/lua/config/lsp/python.lua
Normal file
6
modules/editors/neovim/lua/config/lsp/python.lua
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
-- Requires Python
|
||||||
|
lspconfig.cmake.setup{}
|
||||||
|
lspconfig.pylsp.setup{}
|
||||||
|
|
5
modules/editors/neovim/lua/config/lsp/rust.lua
Normal file
5
modules/editors/neovim/lua/config/lsp/rust.lua
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
-- Requires Rust
|
||||||
|
lspconfig.rls.setup{}
|
||||||
|
|
5
modules/editors/neovim/lua/config/lsp/zig.lua
Normal file
5
modules/editors/neovim/lua/config/lsp/zig.lua
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
lspconfig = require('lspconfig')
|
||||||
|
|
||||||
|
-- Requires Zig
|
||||||
|
lspconfig.zls.setup{}
|
||||||
|
|
@ -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
|
||||||
|
Reference in New Issue
Block a user