nixos-conf/development.nix

167 lines
3.6 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";
2024-12-01 18:42:45 +02:00
ref = "nixos-24.11";
2024-11-29 02:41:01 +02:00
}
);
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";
};
2024-12-10 22:40:02 +02:00
commit = {
verbose = "true";
};
2024-06-02 16:18:19 +03:00
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
];
2024-12-16 17:39:37 +02:00
fonts.packages = with pkgs; [
nerdfonts
];
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 = [
2024-12-16 17:39:37 +02:00
{
key = "T";
action = "<cmd>Neotree<cr>";
options.silent = true;
}
2024-11-29 02:41:01 +02:00
{
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 Check desireable keybinds and commands for all plugins
plugins = {
gitsigns.enable = true;
lualine = {
enable = true;
2024-12-01 18:42:45 +02:00
settings.options.iconsEnabled = false;
2024-11-29 02:41:01 +02:00
};
markdown-preview.enable = true;
2024-12-16 17:39:37 +02:00
neo-tree.enable = true;
2024-11-29 02:41:01 +02:00
nix.enable = true;
rainbow-delimiters.enable = true;
sleuth.enable = true;
tmux-navigator = {
enable = true;
2024-12-01 18:42:45 +02:00
settings.no_mappings = 1;
2024-11-29 02:41:01 +02:00
};
treesitter = {
enable = true;
folding = true;
2024-12-01 18:42:45 +02:00
settings.indent.enable = true;
2024-11-29 02:41:01 +02:00
nixGrammars = true;
};
2024-12-16 17:39:37 +02:00
web-devicons.enable = true;
2024-06-02 16:18:19 +03:00
2024-12-20 01:20:48 +02:00
cmp = {
enable = true;
settings.sources = [
{ name = "nvim-lsp"; }
{ name = "vim-lsp-signature-help"; }
{ name = "vim-vsnip"; }
];
};
2024-11-29 02:41:01 +02:00
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;
2024-12-01 18:42:45 +02:00
docker_compose_language_service.enable = true;
2024-11-29 02:41:01 +02:00
eslint.enable = true;
html.enable = true;
jsonls.enable = true;
nixd.enable = true;
pylsp.enable = true;
2024-12-01 18:42:45 +02:00
rust_analyzer = {
2024-11-29 02:41:01 +02:00
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
}