aboutsummaryrefslogtreecommitdiffstats
path: root/nvim
diff options
context:
space:
mode:
authorArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-09-17 10:12:18 +0530
committerArpit Chakladar <54011232+arpitchakladar@users.noreply.github.com>2024-09-17 10:12:18 +0530
commitcbd5b66b89fba2ad23a9da7372cf916305efad1f (patch)
tree0a5580244e3fe87b05c581681e558925d0635ad7 /nvim
downloadhome-manager-config-cbd5b66b89fba2ad23a9da7372cf916305efad1f.tar.gz
home-manager-config-cbd5b66b89fba2ad23a9da7372cf916305efad1f.zip
Initial commit.
Diffstat (limited to 'nvim')
-rw-r--r--nvim/colorscheme.nix43
-rw-r--r--nvim/default.nix37
-rw-r--r--nvim/keybindings.lua8
-rw-r--r--nvim/options.lua23
-rw-r--r--nvim/plugins/comment.lua1
-rw-r--r--nvim/plugins/lualine/default.nix6
-rw-r--r--nvim/plugins/lualine/init.lua6
-rw-r--r--nvim/plugins/lualine/theme.nix15
-rw-r--r--nvim/plugins/nvim-tree.lua13
9 files changed, 152 insertions, 0 deletions
diff --git a/nvim/colorscheme.nix b/nvim/colorscheme.nix
new file mode 100644
index 0000000..d053324
--- /dev/null
+++ b/nvim/colorscheme.nix
@@ -0,0 +1,43 @@
+# Using the stylix to have a consistent colorscheme
+config:
+
+with config.lib.stylix.colors.withHashtag;
+''
+-- Apply the color scheme
+vim.cmd("highlight clear")
+vim.cmd("syntax reset")
+
+-- Set terminal colors
+vim.g.terminal_color_0 = "${base00}"
+vim.g.terminal_color_1 = "${base08}"
+vim.g.terminal_color_2 = "${base0B}"
+vim.g.terminal_color_3 = "${base0A}"
+vim.g.terminal_color_4 = "${base0D}"
+vim.g.terminal_color_5 = "${base0E}"
+vim.g.terminal_color_6 = "${base0C}"
+vim.g.terminal_color_7 = "${base05}"
+vim.g.terminal_color_8 = "${base03}"
+vim.g.terminal_color_9 = "${base08}"
+vim.g.terminal_color_10 = "${base0B}"
+vim.g.terminal_color_11 = "${base0A}"
+vim.g.terminal_color_12 = "${base0D}"
+vim.g.terminal_color_13 = "${base0E}"
+vim.g.terminal_color_14 = "${base0C}"
+vim.g.terminal_color_15 = "${base07}"
+
+-- Set highlight groups
+vim.api.nvim_set_hl(0, "Normal", { fg = "${base05}", bg = "${base00}" })
+vim.api.nvim_set_hl(0, "Comment", { fg = "${base03}", bg = "${base00}", italic = true })
+vim.api.nvim_set_hl(0, "Constant", { fg = "${base09}" })
+vim.api.nvim_set_hl(0, "String", { fg = "${base0B}" })
+vim.api.nvim_set_hl(0, "Identifier", { fg = "${base08}" })
+vim.api.nvim_set_hl(0, "Function", { fg = "${base0D}" })
+vim.api.nvim_set_hl(0, "Statement", { fg = "${base0E}" })
+vim.api.nvim_set_hl(0, "Keyword", { fg = "${base0E}" })
+vim.api.nvim_set_hl(0, "Type", { fg = "${base0A}" })
+vim.api.nvim_set_hl(0, "Special", { fg = "${base0C}" })
+vim.api.nvim_set_hl(0, "PreProc", { fg = "${base0A}" })
+vim.api.nvim_set_hl(0, "Underlined", { fg = "${base0B}", underline = true })
+vim.api.nvim_set_hl(0, "Error", { fg = "${base08}", bg = "${base00}", bold = true })
+vim.api.nvim_set_hl(0, "Todo", { fg = "${base0A}", bg = "${base00}", bold = true })
+''
diff --git a/nvim/default.nix b/nvim/default.nix
new file mode 100644
index 0000000..f2589ae
--- /dev/null
+++ b/nvim/default.nix
@@ -0,0 +1,37 @@
+{ pkgs, config, ... }:
+
+{
+ programs.neovim =
+ let
+ toLua = str: "lua << EOF\n${str}\nEOF\n";
+ toLuaFile = file: "lua << EOF\n${builtins.readFile file}\nEOF\n";
+ in {
+ enable = true;
+ viAlias = true;
+ vimAlias = true;
+ vimdiffAlias = true;
+
+ extraLuaConfig = ''
+${import ./colorscheme.nix config}
+${builtins.readFile ./options.lua}
+${builtins.readFile ./keybindings.lua}
+'';
+ plugins = with pkgs.vimPlugins; [
+ {
+ plugin = comment-nvim;
+ config = toLuaFile ./plugins/comment.lua;
+ }
+
+ {
+ plugin = lualine-nvim;
+ config = toLua (import ./plugins/lualine/default.nix config);
+ }
+
+ nvim-web-devicons
+ {
+ plugin = nvim-tree-lua;
+ config = toLuaFile ./plugins/nvim-tree.lua;
+ }
+ ];
+ };
+}
diff --git a/nvim/keybindings.lua b/nvim/keybindings.lua
new file mode 100644
index 0000000..d952736
--- /dev/null
+++ b/nvim/keybindings.lua
@@ -0,0 +1,8 @@
+-- Navigate splits
+vim.keymap.set("n", "<C-h>", ":wincmd h<CR>", { silent = true })
+vim.keymap.set("n", "<C-j>", ":wincmd j<CR>", { silent = true })
+vim.keymap.set("n", "<C-k>", ":wincmd k<CR>", { silent = true })
+vim.keymap.set("n", "<C-l>", ":wincmd l<CR>", { silent = true })
+
+-- NvimTree
+vim.keymap.set("n", "<C-n>", ":NvimTreeToggle<CR>", { silent = true })
diff --git a/nvim/options.lua b/nvim/options.lua
new file mode 100644
index 0000000..2897a69
--- /dev/null
+++ b/nvim/options.lua
@@ -0,0 +1,23 @@
+vim.g.mapleader = " "
+vim.g.maplocalleader = " "
+
+vim.o.clipboard = "unnamedplus"
+
+vim.o.number = true
+vim.o.list = true
+vim.o.listchars = "tab:| ,trail:_,lead:_"
+
+vim.o.laststatus = 3
+vim.opt.fillchars = { eob = " " }
+
+vim.o.signcolumn = "auto"
+
+vim.o.tabstop = 2
+vim.o.shiftwidth = 2
+vim.o.expandtab = false
+
+vim.o.updatetime = 300
+
+vim.o.termguicolors = true
+
+vim.o.mouse = "a"
diff --git a/nvim/plugins/comment.lua b/nvim/plugins/comment.lua
new file mode 100644
index 0000000..9086261
--- /dev/null
+++ b/nvim/plugins/comment.lua
@@ -0,0 +1 @@
+require("Comment").setup();
diff --git a/nvim/plugins/lualine/default.nix b/nvim/plugins/lualine/default.nix
new file mode 100644
index 0000000..b6be39e
--- /dev/null
+++ b/nvim/plugins/lualine/default.nix
@@ -0,0 +1,6 @@
+config:
+
+''
+${import ./theme.nix config}
+${builtins.readFile ./init.lua}
+''
diff --git a/nvim/plugins/lualine/init.lua b/nvim/plugins/lualine/init.lua
new file mode 100644
index 0000000..36acda4
--- /dev/null
+++ b/nvim/plugins/lualine/init.lua
@@ -0,0 +1,6 @@
+require("lualine").setup {
+ options = {
+ globalstatus = true,
+ theme = theme
+ }
+}
diff --git a/nvim/plugins/lualine/theme.nix b/nvim/plugins/lualine/theme.nix
new file mode 100644
index 0000000..26c420e
--- /dev/null
+++ b/nvim/plugins/lualine/theme.nix
@@ -0,0 +1,15 @@
+config:
+
+with config.lib.stylix.colors.withHashtag;
+''
+local theme = {
+ normal = {
+ a = { fg = "${base07}", bg = "${base0D}", gui = "bold" },
+ b = { fg = "${base05}", bg = "${base01}" },
+ c = { fg = "${base03}", bg = "${base00}" },
+ },
+ insert = { a = { fg = "${base07}", bg = "${base0B}", gui = "bold" } },
+ visual = { a = { fg = "${base07}", bg = "${base0C}", gui = "bold" } },
+ replace = { a = { fg = "${base07}", bg = "${base08}", gui = "bold" } },
+ command = { a = { fg = "${base07}", bg = "${base0A}", gui = "bold" } },
+}''
diff --git a/nvim/plugins/nvim-tree.lua b/nvim/plugins/nvim-tree.lua
new file mode 100644
index 0000000..1aa2e6e
--- /dev/null
+++ b/nvim/plugins/nvim-tree.lua
@@ -0,0 +1,13 @@
+require("nvim-tree").setup {
+ filters = {
+ enable = false
+ },
+ renderer = {
+ indent_markers = {
+ enable = true
+ },
+ root_folder_label = function(path)
+ return vim.fn.fnamemodify(path, ":t")
+ end
+ }
+}