feat: nixvim + zsh, fix: warnings
This commit is contained in:
@@ -19,6 +19,8 @@ in {
|
|||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
config = lib.mkIf cfg.enable {
|
||||||
hectic.archetype.base.enable = true;
|
hectic.archetype.base.enable = true;
|
||||||
|
hectic.program.zsh.enable = true;
|
||||||
|
hectic.program.nixvim.enable = true;
|
||||||
|
|
||||||
services.getty.autologinUser = "root";
|
services.getty.autologinUser = "root";
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,8 @@ in {
|
|||||||
"xen_blkfront"
|
"xen_blkfront"
|
||||||
] ++ (if pkgs.system != "aarch64-linux" then [ "vmw_pvscsi" ] else []);
|
] ++ (if pkgs.system != "aarch64-linux" then [ "vmw_pvscsi" ] else []);
|
||||||
|
|
||||||
networking.useDHCP = lib.mkDefault true;
|
networking.useDHCP = false;
|
||||||
|
networking.useNetworkd = true;
|
||||||
systemd.network.enable = true;
|
systemd.network.enable = true;
|
||||||
systemd.network.networks."30-wan" = {
|
systemd.network.networks."30-wan" = {
|
||||||
matchConfig.Name = cfg.networkMatchConfigName;
|
matchConfig.Name = cfg.networkMatchConfigName;
|
||||||
|
|||||||
197
nixos/module/hectic/program/nixvim.nix
Normal file
197
nixos/module/hectic/program/nixvim.nix
Normal file
@@ -0,0 +1,197 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
flake,
|
||||||
|
self,
|
||||||
|
}: {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.hectic.program.nixvim;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
inputs.nixvim.nixosModules.nixvim
|
||||||
|
];
|
||||||
|
|
||||||
|
options.hectic.program.nixvim.enable = lib.mkEnableOption "Enable hectic nixvim config";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
programs.nixvim = {
|
||||||
|
enable = true;
|
||||||
|
|
||||||
|
extraPackages = with pkgs; [ gcc ];
|
||||||
|
|
||||||
|
colorschemes.kanagawa = {
|
||||||
|
enable = true;
|
||||||
|
settings.colors.theme.all = {};
|
||||||
|
};
|
||||||
|
|
||||||
|
opts = {
|
||||||
|
spell = true;
|
||||||
|
spelllang = [ "en" "ru" "it" ];
|
||||||
|
tabstop = 2;
|
||||||
|
shiftwidth = 2;
|
||||||
|
softtabstop = 2;
|
||||||
|
expandtab = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraFiles = {
|
||||||
|
"spell/ru.utf-8.spl".source = pkgs.fetchurl {
|
||||||
|
url = "https://ftp.nluug.nl/vim/runtime/spell/ru.utf-8.spl";
|
||||||
|
sha256 = "sha256-6y0714ogILMLzAp8/r2s6/t6QnWBEU9muIpXeubaxU0=";
|
||||||
|
};
|
||||||
|
"spell/ru.utf-8.sug".source = pkgs.fetchurl {
|
||||||
|
url = "https://ftp.nluug.nl/vim/runtime/spell/ru.utf-8.sug";
|
||||||
|
sha256 = "sha256-6r2GForYXVv7gGiAjPeYK6sDdK/CmctJ7MidcWFvOTs=";
|
||||||
|
};
|
||||||
|
"spell/it.utf-8.spl".source = pkgs.fetchurl {
|
||||||
|
url = "https://ftp.nluug.nl/vim/runtime/spell/it.utf-8.spl";
|
||||||
|
hash = "sha256-2AczkD6DbVN5DAq4wcLyn2Y8oqd67ns4Guprh2KudBM=";
|
||||||
|
};
|
||||||
|
"spell/it.utf-8.sug".source = pkgs.fetchurl {
|
||||||
|
url = "https://ftp.nluug.nl/vim/runtime/spell/it.utf-8.sug";
|
||||||
|
hash = "sha256-4LsXYaeScJJrdaj69PTQ2EDVWis0UY/Y5RKSfCckzko=";
|
||||||
|
};
|
||||||
|
"ftdetect/hemar.vim".text = ''
|
||||||
|
au BufRead,BufNewFile *.hemar setfiletype hemar
|
||||||
|
'';
|
||||||
|
"queries/hemar/highlights.scm".text = ''
|
||||||
|
(interpolation) @keyword
|
||||||
|
|
||||||
|
(for "for" @keyword)
|
||||||
|
(for "in" @keyword)
|
||||||
|
(done "done" @keyword)
|
||||||
|
|
||||||
|
(path) @field
|
||||||
|
(string) @string
|
||||||
|
(text) @text
|
||||||
|
|
||||||
|
(for
|
||||||
|
"{[" @punctuation.bracket
|
||||||
|
"]}" @punctuation.bracket)
|
||||||
|
|
||||||
|
(done
|
||||||
|
"{[" @punctuation.bracket
|
||||||
|
"]}" @punctuation.bracket)
|
||||||
|
|
||||||
|
(interpolation
|
||||||
|
"{[" @punctuation.bracket
|
||||||
|
"]}" @punctuation.bracket)
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfigLuaPre = /* lua */ ''
|
||||||
|
-- map leader
|
||||||
|
vim.api.nvim_set_keymap("", "<Space>", "<Nop>", { noremap = true, silent = true })
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
|
||||||
|
-- render markdown
|
||||||
|
require('render-markdown').setup({
|
||||||
|
link = {
|
||||||
|
enabled = true,
|
||||||
|
render_modes = false,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
-- nowrap for *.nowrap.* markdown files
|
||||||
|
vim.api.nvim_create_autocmd("FileType", {
|
||||||
|
pattern = "markdown",
|
||||||
|
callback = function()
|
||||||
|
if vim.fn.expand("%:t"):find("%.nowrap%.") then vim.opt_local.wrap = false end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
-- toggle conceallevel
|
||||||
|
vim.keymap.set("n", "<leader>tc", ":setlocal <C-R>=&conceallevel ? 'conceallevel=0' : 'conceallevel=2'<CR><CR>", { desc = "[T]oggle [C]onceallevel" })
|
||||||
|
|
||||||
|
-- tree-sitter: register hemar parser
|
||||||
|
local parser_config = require("nvim-treesitter.parsers").get_parser_configs()
|
||||||
|
parser_config.hemar = {
|
||||||
|
install_info = {
|
||||||
|
url = "https://github.com/hectic-lab/util.nix",
|
||||||
|
files = { "package/hemar/grammar/tree-sitter/src/parser.c" },
|
||||||
|
generate_requires_npm = false,
|
||||||
|
requires_generate_from_grammar = false,
|
||||||
|
},
|
||||||
|
filetype = "hemar",
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
|
||||||
|
extraConfigLuaPost = /* lua */ ''
|
||||||
|
vim.cmd [[
|
||||||
|
hi Normal guibg=none ctermbg=none
|
||||||
|
hi NonText guibg=none ctermbg=none
|
||||||
|
]]
|
||||||
|
'';
|
||||||
|
|
||||||
|
keymaps = [
|
||||||
|
{ mode = "n"; key = "<leader>o"; options.silent = true; action = "<cmd>Oil<CR>"; }
|
||||||
|
{ mode = "n"; key = "<leader>dd"; action = "<cmd>lua vim.diagnostic.open_float()<CR>"; }
|
||||||
|
{ mode = "n"; key = "<leader>dn"; action = "<cmd>lua vim.diagnostic.goto_next()<CR>"; }
|
||||||
|
{ mode = "n"; key = "<leader>dp"; action = "<cmd>lua vim.diagnostic.goto_prev()<CR>"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
extraPlugins = with pkgs.vimPlugins; [
|
||||||
|
nvim-treesitter-parsers.templ
|
||||||
|
vim-shellcheck
|
||||||
|
vim-grammarous
|
||||||
|
];
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
render-markdown.enable = true;
|
||||||
|
fidget.enable = true;
|
||||||
|
oil.enable = true;
|
||||||
|
|
||||||
|
treesitter = {
|
||||||
|
enable = true;
|
||||||
|
settings = {
|
||||||
|
ensure_installed = [ "hemar" ];
|
||||||
|
highlight.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
lsp = {
|
||||||
|
enable = true;
|
||||||
|
keymaps.lspBuf = {
|
||||||
|
"<leader>lh" = "hover";
|
||||||
|
"<leader>ld" = "definition";
|
||||||
|
"<leader>lD" = "references";
|
||||||
|
"<leader>lr" = "rename";
|
||||||
|
"<leader>li" = "implementation";
|
||||||
|
"<leader>lt" = "type_definition";
|
||||||
|
"<leader>lf" = "format";
|
||||||
|
"<leader>la" = "code_action";
|
||||||
|
};
|
||||||
|
servers = {
|
||||||
|
rust_analyzer = {
|
||||||
|
enable = true;
|
||||||
|
installRustc = false;
|
||||||
|
installCargo = false;
|
||||||
|
};
|
||||||
|
nixd = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
nil_ls = {
|
||||||
|
enable = true;
|
||||||
|
extraOptions.formatting.command = [ "nixpkgs-fmt" ];
|
||||||
|
};
|
||||||
|
clangd.enable = true;
|
||||||
|
ts_ls.enable = true;
|
||||||
|
gopls.enable = true;
|
||||||
|
templ.enable = true;
|
||||||
|
bashls.enable = true;
|
||||||
|
kotlin_language_server.enable = true;
|
||||||
|
metals = {
|
||||||
|
enable = true;
|
||||||
|
cmd = [ "metals" ];
|
||||||
|
};
|
||||||
|
sqls.enable = true;
|
||||||
|
java_language_server.enable = true;
|
||||||
|
pyright.enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
51
nixos/module/hectic/program/zsh.nix
Normal file
51
nixos/module/hectic/program/zsh.nix
Normal file
@@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
inputs,
|
||||||
|
flake,
|
||||||
|
self,
|
||||||
|
}: {
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
cfg = config.hectic.program.zsh;
|
||||||
|
in {
|
||||||
|
imports = [
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
];
|
||||||
|
|
||||||
|
options.hectic.program.zsh.enable = lib.mkEnableOption "Enable hectic zsh config";
|
||||||
|
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
# system-level zsh must be on for home-manager zsh to work
|
||||||
|
programs.zsh.enable = true;
|
||||||
|
users.defaultUserShell = pkgs.zsh;
|
||||||
|
|
||||||
|
home-manager.users.root = {
|
||||||
|
home.stateVersion = lib.mkDefault "25.05";
|
||||||
|
|
||||||
|
programs.zsh = {
|
||||||
|
enable = true;
|
||||||
|
enableCompletion = true;
|
||||||
|
autosuggestion.enable = true;
|
||||||
|
syntaxHighlighting.enable = true;
|
||||||
|
|
||||||
|
history = {
|
||||||
|
size = 10000;
|
||||||
|
path = "$HOME/.zsh/.zsh_history";
|
||||||
|
};
|
||||||
|
|
||||||
|
oh-my-zsh = {
|
||||||
|
enable = true;
|
||||||
|
theme = "terminalparty";
|
||||||
|
};
|
||||||
|
|
||||||
|
shellAliases = self.lib.sharedShellAliases;
|
||||||
|
|
||||||
|
initContent = ''
|
||||||
|
set -ovi
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user