nixos-conf/development.nix

149 lines
3.2 KiB
Nix
Raw Normal View History

2024-11-29 02:41:01 +02:00
{ pkgs, ... }:
let
nixvim = import (
builtins.fetchGit {
url = "https://github.com/nix-community/nixvim";
ref = "nixos-24.05";
}
);
in
2024-05-23 13:39:48 +03:00
{
2024-06-02 16:18:19 +03:00
#################### Git configuration ####################
programs.git = {
enable = true;
lfs.enable = true;
config = {
user = {
email = "vili.m.sinerva@gmail.com";
name = "Vili Sinervä";
2024-10-17 02:08:55 +03:00
signingkey = "DF8FEAF54EFAC996!";
2024-06-02 16:18:19 +03:00
};
merge = {
ff = "true";
};
pull = {
ff = "only";
};
commit.gpgsign = "true";
2024-06-02 05:53:39 +03:00
};
};
2024-05-23 13:39:48 +03:00
2024-06-02 16:18:19 +03:00
#################### Packages ####################
environment.systemPackages = with pkgs; [
nixfmt-rfc-style
2024-10-04 12:03:23 +03:00
nixd
2024-06-02 16:18:19 +03:00
];
#################### Neovim configuration ####################
2024-11-29 02:41:01 +02:00
imports = [ nixvim.nixosModules.nixvim ];
programs.nixvim = {
2024-06-02 16:18:19 +03:00
enable = true;
defaultEditor = true;
vimAlias = true;
2024-11-29 02:41:01 +02:00
colorschemes.vscode.enable = true;
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
globals.mapleader = " ";
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
opts = {
colorcolumn = "100";
cursorline = true;
number = true;
showcmd = true;
signcolumn = "yes";
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
scrolloff = 16;
shiftwidth = 3;
tabstop = 3;
};
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
keymaps = [
{
key = "<C-h>";
action = "<cmd>TmuxNavigateLeft<cr>";
options.silent = true;
}
{
key = "<C-j>";
action = "<cmd>TmuxNavigateDown<cr>";
options.silent = true;
}
{
key = "<C-k>";
action = "<cmd>TmuxNavigateUp<cr>";
options.silent = true;
}
{
key = "<C-l>";
action = "<cmd>TmuxNavigateRight<cr>";
options.silent = true;
}
];
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
# TODO Autocomplete
# TODO Filebrowser
# TODO Check desireable keybinds and commands for all plugins
plugins = {
gitsigns.enable = true;
lualine = {
enable = true;
iconsEnabled = false;
};
markdown-preview.enable = true;
nix.enable = true;
rainbow-delimiters.enable = true;
sleuth.enable = true;
tmux-navigator = {
enable = true;
settings.no_mappings = true;
};
treesitter = {
enable = true;
folding = true;
indent = true;
nixGrammars = true;
};
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
# cmp-vsnip.enable = true;
friendly-snippets.enable = true;
nvim-autopairs.enable = true;
2024-06-02 16:18:19 +03:00
2024-11-29 02:41:01 +02:00
lsp = {
enable = true;
keymaps = {
diagnostic = {
"<leader>j" = "goto_next";
"<leader>k" = "goto_prev";
};
lspBuf = {
K = "hover";
gD = "references";
gd = "definition";
gi = "implementation";
gt = "type_definition";
};
};
servers = {
clangd.enable = true;
cmake.enable = true;
dockerls.enable = true;
docker-compose-language-service.enable = true;
eslint.enable = true;
html.enable = true;
jsonls.enable = true;
nixd.enable = true;
pylsp.enable = true;
rust-analyzer = {
enable = true;
installCargo = true;
installRustc = true;
};
yamlls.enable = true;
};
};
lsp-format.enable = true;
2024-06-02 16:18:19 +03:00
};
2024-06-02 05:53:39 +03:00
};
2024-06-02 16:18:19 +03:00
}