feat:neovim updtes

This commit is contained in:
Yadunand Prem 2024-10-11 11:32:17 -04:00
parent 114f618815
commit c01bc77f3b
No known key found for this signature in database
4 changed files with 187 additions and 102 deletions

View File

@ -86,11 +86,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726153070, "lastModified": 1727826117,
"narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=",
"owner": "hercules-ci", "owner": "hercules-ci",
"repo": "flake-parts", "repo": "flake-parts",
"rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -104,11 +104,11 @@
"systems": "systems_2" "systems": "systems_2"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1726560853,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -122,11 +122,11 @@
"systems": "systems_3" "systems": "systems_3"
}, },
"locked": { "locked": {
"lastModified": 1710146030, "lastModified": 1726560853,
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=",
"owner": "numtide", "owner": "numtide",
"repo": "flake-utils", "repo": "flake-utils",
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -152,11 +152,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725513492, "lastModified": 1728092656,
"narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=",
"owner": "cachix", "owner": "cachix",
"repo": "git-hooks.nix", "repo": "git-hooks.nix",
"rev": "7570de7b9b504cfe92025dd1be797bf546f66528", "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -215,11 +215,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726440980, "lastModified": 1728306985,
"narHash": "sha256-ChhIrjtdu5d83W+YDRH+Ec5g1MmM0xk6hJnkz15Ot7M=", "narHash": "sha256-l/KpcWTv2SjxCnqFs5GYhvjeVYd40WQV4/F2+w9btd4=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "a9c9cc6e50f7cbd2d58ccb1cd46a1e06e9e445ff", "rev": "3ac39b2a8b7cbfc0f96628d8a84867c885bc988b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -236,11 +236,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726357542, "lastModified": 1728041527,
"narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=", "narHash": "sha256-03liqiJtk9UP7YQHW4r8MduKCK242FQzud8iWvvlK+o=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f", "rev": "509dbf8d45606b618e9ec3bbe4e936b7c5bc6c1e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -257,11 +257,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726188813, "lastModified": 1727999297,
"narHash": "sha256-Vop/VRi6uCiScg/Ic+YlwsdIrLabWUJc57dNczp0eBc=", "narHash": "sha256-LTJuQPCsSItZ/8TieFeP30iY+uaLoD0mT0tAj1gLeyQ=",
"owner": "lnl7", "owner": "lnl7",
"repo": "nix-darwin", "repo": "nix-darwin",
"rev": "21fe31f26473c180390cfa81e3ea81aca0204c80", "rev": "8c8388ade72e58efdeae71b4cbb79e872c23a56b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -288,11 +288,11 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1726243404, "lastModified": 1728018373,
"narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", "rev": "bc947f541ae55e999ffdb4013441347d83b00feb",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -317,11 +317,11 @@
"treefmt-nix": "treefmt-nix" "treefmt-nix": "treefmt-nix"
}, },
"locked": { "locked": {
"lastModified": 1726502324, "lastModified": 1728292968,
"narHash": "sha256-I/WFSIBeIjlY3CgSJ6IRYxP2aEJ6b42Y1HAeATlBh48=", "narHash": "sha256-Jp/SQH5q2uTRBW625gFdfXLvYLjQiDNxtvQo0vVbyeA=",
"owner": "nix-community", "owner": "nix-community",
"repo": "nixvim", "repo": "nixvim",
"rev": "2e3083e42509c399b224239f6d7fa17976b18536", "rev": "d71cfaaae8353b4102169a9858422ce3738cd43b",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -339,11 +339,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1726392886, "lastModified": 1728017046,
"narHash": "sha256-9RtOuG7V8KG8IU8nZje5EQ1WSM/inr7+zb3tAgTiHDM=", "narHash": "sha256-ofWYux/uUAv8wq7sWw8XWke0sh8p4qYxSOn8d+EaJ8c=",
"owner": "NuschtOS", "owner": "NuschtOS",
"repo": "search", "repo": "search",
"rev": "97d34b70deed4878fcb2449ac89dab717d72efa1", "rev": "ba81d9c1eae20fc3a1cd066062a05ac2e799e629",
"type": "github" "type": "github"
}, },
"original": { "original": {
@ -414,11 +414,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1725271838, "lastModified": 1727984844,
"narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", "narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=",
"owner": "numtide", "owner": "numtide",
"repo": "treefmt-nix", "repo": "treefmt-nix",
"rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", "rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64",
"type": "github" "type": "github"
}, },
"original": { "original": {

View File

@ -1,4 +1,4 @@
{ config, pkgs, inputs, ... }: { config, pkgs, inputs, lib, ... }:
{ {
imports = [ imports = [
inputs.nixvim.homeManagerModules.nixvim inputs.nixvim.homeManagerModules.nixvim
@ -22,7 +22,7 @@
lsp = { lsp = {
enable = true; enable = true;
servers = { servers = {
tsserver.enable = true; # TS/JS ts-ls.enable = true; # TS/JS
biome.enable = true; # TS/JS biome.enable = true; # TS/JS
pyright.enable = true; # Python pyright.enable = true; # Python
@ -112,7 +112,37 @@
}; };
}; };
treesitter-context.enable = true; treesitter-context.enable = true;
treesitter-textobjects.enable = true; treesitter-textobjects = {
enable = true;
move = {
enable = true;
gotoNextStart = {
"]m" = { query = "@function.outer"; };
"]]" = { query = "@class.outer"; desc = "Next class start"; };
"]o" = { query = "@loop.*"; };
"]s" = { query = "@scope"; queryGroup = "locals"; desc = "Next scope"; };
"]z" = { query = "@fold"; queryGroup = "folds"; desc = "Next fold"; };
};
gotoNextEnd = {
"]M" = { query = "@function.outer"; };
"][" = { query = "@class.outer"; };
};
gotoPreviousStart = {
"[m" = { query = "@function.outer"; };
"[[" = { query = "@class.outer"; };
};
gotoPreviousEnd = {
"[M" = { query = "@function.outer"; };
"[]" = { query = "@class.outer"; };
};
gotoNext = {
"]d" = { query = "@conditional.outer"; };
};
gotoPrevious = {
"[d" = { query = "@conditional.outer"; };
};
};
};
ts-autotag.enable = true; ts-autotag.enable = true;
which-key.enable = true; which-key.enable = true;
@ -134,6 +164,7 @@
enable = true; enable = true;
enableTelescope = true; enableTelescope = true;
}; };
web-devicons.enable = true;
}; };
opts = { opts = {
@ -154,6 +185,8 @@
smarttab = true; smarttab = true;
scrolloff = 5; scrolloff = 5;
termguicolors = true; termguicolors = true;
foldmethod = lib.mkForce "expr";
foldexpr = lib.mkForce "v:lua.vim.treesitter.foldexpr()";
}; };
globals = { globals = {
mapleader = " "; mapleader = " ";
@ -178,6 +211,7 @@
{ action.__raw = "function() require('flash').treesitter() end"; key = "S"; mode = [ "n" "x" "o" ]; options.desc = "Flash Treesitter"; } { action.__raw = "function() require('flash').treesitter() end"; key = "S"; mode = [ "n" "x" "o" ]; options.desc = "Flash Treesitter"; }
{ action.__raw = "function() require('flash').remote() end"; key = "r"; mode = [ "o" ]; options.desc = "Remote Flash"; } { action.__raw = "function() require('flash').remote() end"; key = "r"; mode = [ "o" ]; options.desc = "Remote Flash"; }
{ action.__raw = "function() require('flash').treesitter_search() end"; key = "R"; mode = [ "o" ]; options.desc = "Treesitter Search"; } { action.__raw = "function() require('flash').treesitter_search() end"; key = "R"; mode = [ "o" ]; options.desc = "Treesitter Search"; }
{ action.__raw = "function() require('flash').toggle() end"; key = "<c-s>"; mode = [ "c" ]; options.desc = "Toggle Flash"; }
]; ];
}; };
} }

View File

@ -6,60 +6,60 @@ local font = wezterm.font({family = "Comic Mono"})
config.front_end = "WebGpu" config.front_end = "WebGpu"
config.color_scheme = "Gruvbox Dark (Gogh)"
config.font = font config.font = font
config.font_size = 13 config.font_size = 13
config.window_decorations = "RESIZE" config.window_decorations = "RESIZE"
config.window_frame = { config.window_frame = {
font = font, font = font,
font_size = 14, font_size = 14,
} }
config.hide_tab_bar_if_only_one_tab = true config.hide_tab_bar_if_only_one_tab = true
config.tab_bar_at_bottom = false config.tab_bar_at_bottom = false
wezterm.on('update-status', function(window) -- set theme based on system appearance
local SOLID_LEFT_ARROW = utf8.char(0xe0b2) function get_appearance()
local color_scheme = window:effective_config().resolved_palette if wezterm.gui then
local bg = color_scheme.background return wezterm.gui.get_appearance()
local fg = color_scheme.foreground end
return 'Dark'
end
window:set_right_status(wezterm.format({ function scheme_for_appearance(appearance)
{ Background = { Color = 'none' }}, if appearance:find 'Dark' then
{ Foreground = { Color = bg }}, return 'Gruvbox Dark (Gogh)'
{ Text = SOLID_LEFT_ARROW }, else
return 'Gruvbox (Gogh)'
end
end
{ Background = { Color = bg }}, config.color_scheme = scheme_for_appearance(get_appearance())
{ Foreground = { Color = fg }},
{ Text = ' ' .. wezterm.hostname() .. ' ' },
}))
end)
config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 } config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 }
function nav_pane(key, dir) function nav_pane(key, dir)
return { return {
key = key, key = key,
mods = "LEADER", mods = "LEADER",
action = wezterm.action.ActivatePaneDirection(dir), action = wezterm.action.ActivatePaneDirection(dir),
} }
end end
config.keys = { config.keys = {
{ {
key = "\\", key = "\\",
mods = "LEADER", mods = "LEADER",
action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' }
}, },
{ {
key = "-", key = "-",
mods = "LEADER", mods = "LEADER",
action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' }
}, },
nav_pane("h", "Left"), nav_pane("h", "Left"),
nav_pane("j", "Down"), nav_pane("j", "Down"),
nav_pane("k", "Up"), nav_pane("k", "Up"),
nav_pane("l", "Right"), nav_pane("l", "Right"),
} }
local function get_current_working_dir(tab) local function get_current_working_dir(tab)
@ -70,34 +70,34 @@ local function get_current_working_dir(tab)
or string.gsub(current_dir.file_path, '(.*[/\\])(.*)', '%2') or string.gsub(current_dir.file_path, '(.*[/\\])(.*)', '%2')
end end
wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width) -- wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width)
local has_unseen_output = false -- local has_unseen_output = false
if not tab.is_active then -- if not tab.is_active then
for _, pane in ipairs(tab.panes) do -- for _, pane in ipairs(tab.panes) do
if pane.has_unseen_output then -- if pane.has_unseen_output then
has_unseen_output = true -- has_unseen_output = true
break -- break
end -- end
end -- end
end -- end
--
local cwd = wezterm.format({ -- local cwd = wezterm.format({
{ Text = get_current_working_dir(tab) }, -- { Text = get_current_working_dir(tab) },
}) -- })
--
local process = get_process(tab) -- local process = get_process(tab)
local title = process and string.format(' %s (%s) ', process, cwd) or ' [?] ' -- local title = process and string.format(' %s (%s) ', process, cwd) or ' [?] '
--
if has_unseen_output then -- if has_unseen_output then
return { -- return {
{ Foreground = { Color = '#28719c' } }, -- { Foreground = { Color = '#28719c' } },
{ Text = title }, -- { Text = title },
} -- }
end -- end
--
return { -- return {
{ Text = title }, -- { Text = title },
} -- }
end) -- end)
return config return config

View File

@ -1,4 +1,4 @@
{ config, pkgs, inputs, ... }: { config, pkgs, inputs, lib, ... }:
{ {
imports = [ imports = [
@ -30,8 +30,10 @@
pkgs.entr pkgs.entr
pkgs.gh pkgs.gh
pkgs.zellij pkgs.zellij
pkgs.httpie
pkgs.emacs
pkgs.wezterm pkgs.wezterm
pkgs.arc-browser pkgs.arc-browser
pkgs.raycast pkgs.raycast
@ -109,6 +111,54 @@
}; };
}; };
programs.zellij = {
enable = true;
settings = {
theme = "gruvbox-light";
themes = {
solarized-light = {
fg = "#657b83";
bg = "#fdf6e3";
black = "#073642";
red = "#dc322f";
green = "#859900";
yellow = "#b58900";
blue = "#268bd2";
magenta = "#d33682";
cyan = "#2aa198";
white = "#eee8d5";
orange = "#cb4b16";
};
gruvbox-light = {
bg="#d5c4a1";
fg="#504945";
orange="#980005";
green="#79740e";
yellow="#d79921";
blue="#458588";
magenta="#b16286";
cyan="#689d6a";
black="#ebdbb2";
white="#3c3836";
red="#d65d0e";
};
gruvbox-dark = {
fg="#ebdbb2";
bg="#504945";
black="#3c3836";
red="#cc241d";
green="#98971a";
yellow="#d79921";
blue="#458588";
magenta="#b16286";
cyan="#689d6a";
white="#fbf1c7";
orange="#d65d0e";
};
};
};
};
programs.git.extraConfig = { programs.git.extraConfig = {
gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign";
core.excludesFile = "~/.gitignore_global"; core.excludesFile = "~/.gitignore_global";
@ -117,4 +167,5 @@
# Let Home Manager install and manage itself. # Let Home Manager install and manage itself.
programs.home-manager.enable = true; programs.home-manager.enable = true;
programs.bat.config.theme = lib.mkForce "gruvbox-light";
} }