diff --git a/flake.lock b/flake.lock index 365ed6a..5984259 100644 --- a/flake.lock +++ b/flake.lock @@ -86,11 +86,11 @@ ] }, "locked": { - "lastModified": 1726153070, - "narHash": "sha256-HO4zgY0ekfwO5bX0QH/3kJ/h4KvUDFZg8YpkNwIbg1U=", + "lastModified": 1727826117, + "narHash": "sha256-K5ZLCyfO/Zj9mPFldf3iwS6oZStJcU4tSpiXTMYaaL0=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "bcef6817a8b2aa20a5a6dbb19b43e63c5bf8619a", + "rev": "3d04084d54bedc3d6b8b736c70ef449225c361b1", "type": "github" }, "original": { @@ -104,11 +104,11 @@ "systems": "systems_2" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -122,11 +122,11 @@ "systems": "systems_3" }, "locked": { - "lastModified": 1710146030, - "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", + "lastModified": 1726560853, + "narHash": "sha256-X6rJYSESBVr3hBoH0WbKE5KvhPU5bloyZ2L4K60/fPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", + "rev": "c1dfcf08411b08f6b8615f7d8971a2bfa81d5e8a", "type": "github" }, "original": { @@ -152,11 +152,11 @@ ] }, "locked": { - "lastModified": 1725513492, - "narHash": "sha256-tyMUA6NgJSvvQuzB7A1Sf8+0XCHyfSPRx/b00o6K0uo=", + "lastModified": 1728092656, + "narHash": "sha256-eMeCTJZ5xBeQ0f9Os7K8DThNVSo9gy4umZLDfF5q6OM=", "owner": "cachix", "repo": "git-hooks.nix", - "rev": "7570de7b9b504cfe92025dd1be797bf546f66528", + "rev": "1211305a5b237771e13fcca0c51e60ad47326a9a", "type": "github" }, "original": { @@ -215,11 +215,11 @@ ] }, "locked": { - "lastModified": 1726440980, - "narHash": "sha256-ChhIrjtdu5d83W+YDRH+Ec5g1MmM0xk6hJnkz15Ot7M=", + "lastModified": 1728306985, + "narHash": "sha256-l/KpcWTv2SjxCnqFs5GYhvjeVYd40WQV4/F2+w9btd4=", "owner": "nix-community", "repo": "home-manager", - "rev": "a9c9cc6e50f7cbd2d58ccb1cd46a1e06e9e445ff", + "rev": "3ac39b2a8b7cbfc0f96628d8a84867c885bc988b", "type": "github" }, "original": { @@ -236,11 +236,11 @@ ] }, "locked": { - "lastModified": 1726357542, - "narHash": "sha256-p4OrJL2weh0TRtaeu1fmNYP6+TOp/W2qdaIJxxQay4c=", + "lastModified": 1728041527, + "narHash": "sha256-03liqiJtk9UP7YQHW4r8MduKCK242FQzud8iWvvlK+o=", "owner": "nix-community", "repo": "home-manager", - "rev": "e524c57b1fa55d6ca9d8354c6ce1e538d2a1f47f", + "rev": "509dbf8d45606b618e9ec3bbe4e936b7c5bc6c1e", "type": "github" }, "original": { @@ -257,11 +257,11 @@ ] }, "locked": { - "lastModified": 1726188813, - "narHash": "sha256-Vop/VRi6uCiScg/Ic+YlwsdIrLabWUJc57dNczp0eBc=", + "lastModified": 1727999297, + "narHash": "sha256-LTJuQPCsSItZ/8TieFeP30iY+uaLoD0mT0tAj1gLeyQ=", "owner": "lnl7", "repo": "nix-darwin", - "rev": "21fe31f26473c180390cfa81e3ea81aca0204c80", + "rev": "8c8388ade72e58efdeae71b4cbb79e872c23a56b", "type": "github" }, "original": { @@ -288,11 +288,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1726243404, - "narHash": "sha256-sjiGsMh+1cWXb53Tecsm4skyFNag33GPbVgCdfj3n9I=", + "lastModified": 1728018373, + "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", "owner": "nixos", "repo": "nixpkgs", - "rev": "345c263f2f53a3710abe117f28a5cb86d0ba4059", + "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", "type": "github" }, "original": { @@ -317,11 +317,11 @@ "treefmt-nix": "treefmt-nix" }, "locked": { - "lastModified": 1726502324, - "narHash": "sha256-I/WFSIBeIjlY3CgSJ6IRYxP2aEJ6b42Y1HAeATlBh48=", + "lastModified": 1728292968, + "narHash": "sha256-Jp/SQH5q2uTRBW625gFdfXLvYLjQiDNxtvQo0vVbyeA=", "owner": "nix-community", "repo": "nixvim", - "rev": "2e3083e42509c399b224239f6d7fa17976b18536", + "rev": "d71cfaaae8353b4102169a9858422ce3738cd43b", "type": "github" }, "original": { @@ -339,11 +339,11 @@ ] }, "locked": { - "lastModified": 1726392886, - "narHash": "sha256-9RtOuG7V8KG8IU8nZje5EQ1WSM/inr7+zb3tAgTiHDM=", + "lastModified": 1728017046, + "narHash": "sha256-ofWYux/uUAv8wq7sWw8XWke0sh8p4qYxSOn8d+EaJ8c=", "owner": "NuschtOS", "repo": "search", - "rev": "97d34b70deed4878fcb2449ac89dab717d72efa1", + "rev": "ba81d9c1eae20fc3a1cd066062a05ac2e799e629", "type": "github" }, "original": { @@ -414,11 +414,11 @@ ] }, "locked": { - "lastModified": 1725271838, - "narHash": "sha256-VcqxWT0O/gMaeWTTjf1r4MOyG49NaNxW4GHTO3xuThE=", + "lastModified": 1727984844, + "narHash": "sha256-xpRqITAoD8rHlXQafYZOLvUXCF6cnZkPfoq67ThN0Hc=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "9fb342d14b69aefdf46187f6bb80a4a0d97007cd", + "rev": "4446c7a6fc0775df028c5a3f6727945ba8400e64", "type": "github" }, "original": { diff --git a/modules/neovim.nix b/modules/neovim.nix index eb1602b..259d5ea 100644 --- a/modules/neovim.nix +++ b/modules/neovim.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, ... }: +{ config, pkgs, inputs, lib, ... }: { imports = [ inputs.nixvim.homeManagerModules.nixvim @@ -22,7 +22,7 @@ lsp = { enable = true; servers = { - tsserver.enable = true; # TS/JS + ts-ls.enable = true; # TS/JS biome.enable = true; # TS/JS pyright.enable = true; # Python @@ -112,7 +112,37 @@ }; }; 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; which-key.enable = true; @@ -134,6 +164,7 @@ enable = true; enableTelescope = true; }; + web-devicons.enable = true; }; opts = { @@ -154,6 +185,8 @@ smarttab = true; scrolloff = 5; termguicolors = true; + foldmethod = lib.mkForce "expr"; + foldexpr = lib.mkForce "v:lua.vim.treesitter.foldexpr()"; }; globals = { 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').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').toggle() end"; key = ""; mode = [ "c" ]; options.desc = "Toggle Flash"; } ]; }; } diff --git a/modules/wezterm/wezterm.lua b/modules/wezterm/wezterm.lua index bd7e71d..34e5bfe 100644 --- a/modules/wezterm/wezterm.lua +++ b/modules/wezterm/wezterm.lua @@ -6,60 +6,60 @@ local font = wezterm.font({family = "Comic Mono"}) config.front_end = "WebGpu" -config.color_scheme = "Gruvbox Dark (Gogh)" config.font = font config.font_size = 13 config.window_decorations = "RESIZE" config.window_frame = { - font = font, - font_size = 14, + font = font, + font_size = 14, } config.hide_tab_bar_if_only_one_tab = true config.tab_bar_at_bottom = false -wezterm.on('update-status', function(window) - local SOLID_LEFT_ARROW = utf8.char(0xe0b2) - local color_scheme = window:effective_config().resolved_palette - local bg = color_scheme.background - local fg = color_scheme.foreground +-- set theme based on system appearance +function get_appearance() + if wezterm.gui then + return wezterm.gui.get_appearance() + end + return 'Dark' +end - window:set_right_status(wezterm.format({ - { Background = { Color = 'none' }}, - { Foreground = { Color = bg }}, - { Text = SOLID_LEFT_ARROW }, +function scheme_for_appearance(appearance) + if appearance:find 'Dark' then + return 'Gruvbox Dark (Gogh)' + else + return 'Gruvbox (Gogh)' + end +end - { Background = { Color = bg }}, - { Foreground = { Color = fg }}, - { Text = ' ' .. wezterm.hostname() .. ' ' }, - })) -end) +config.color_scheme = scheme_for_appearance(get_appearance()) config.leader = { key = 'a', mods = 'CTRL', timeout_milliseconds = 1000 } function nav_pane(key, dir) - return { - key = key, - mods = "LEADER", - action = wezterm.action.ActivatePaneDirection(dir), - } + return { + key = key, + mods = "LEADER", + action = wezterm.action.ActivatePaneDirection(dir), + } end config.keys = { - { - key = "\\", - mods = "LEADER", - action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } - }, - { - key = "-", - mods = "LEADER", - action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } - }, - nav_pane("h", "Left"), - nav_pane("j", "Down"), - nav_pane("k", "Up"), - nav_pane("l", "Right"), + { + key = "\\", + mods = "LEADER", + action = wezterm.action.SplitHorizontal { domain = 'CurrentPaneDomain' } + }, + { + key = "-", + mods = "LEADER", + action = wezterm.action.SplitVertical { domain = 'CurrentPaneDomain' } + }, + nav_pane("h", "Left"), + nav_pane("j", "Down"), + nav_pane("k", "Up"), + nav_pane("l", "Right"), } 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') end -wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width) - local has_unseen_output = false - if not tab.is_active then - for _, pane in ipairs(tab.panes) do - if pane.has_unseen_output then - has_unseen_output = true - break - end - end - end - - local cwd = wezterm.format({ - { Text = get_current_working_dir(tab) }, - }) - - local process = get_process(tab) - local title = process and string.format(' %s (%s) ', process, cwd) or ' [?] ' - - if has_unseen_output then - return { - { Foreground = { Color = '#28719c' } }, - { Text = title }, - } - end - - return { - { Text = title }, - } -end) +-- wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width) +-- local has_unseen_output = false +-- if not tab.is_active then +-- for _, pane in ipairs(tab.panes) do +-- if pane.has_unseen_output then +-- has_unseen_output = true +-- break +-- end +-- end +-- end +-- +-- local cwd = wezterm.format({ +-- { Text = get_current_working_dir(tab) }, +-- }) +-- +-- local process = get_process(tab) +-- local title = process and string.format(' %s (%s) ', process, cwd) or ' [?] ' +-- +-- if has_unseen_output then +-- return { +-- { Foreground = { Color = '#28719c' } }, +-- { Text = title }, +-- } +-- end +-- +-- return { +-- { Text = title }, +-- } +-- end) return config diff --git a/yadunut-mba/home.nix b/yadunut-mba/home.nix index ae1eb4d..c5e01cc 100644 --- a/yadunut-mba/home.nix +++ b/yadunut-mba/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, ... }: +{ config, pkgs, inputs, lib, ... }: { imports = [ @@ -30,8 +30,10 @@ pkgs.entr pkgs.gh pkgs.zellij + pkgs.httpie + pkgs.emacs pkgs.wezterm pkgs.arc-browser 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 = { gpg.ssh.program = "/Applications/1Password.app/Contents/MacOS/op-ssh-sign"; core.excludesFile = "~/.gitignore_global"; @@ -117,4 +167,5 @@ # Let Home Manager install and manage itself. programs.home-manager.enable = true; + programs.bat.config.theme = lib.mkForce "gruvbox-light"; }