diff --git a/flake.lock b/flake.lock index f8c2060..adf77e6 100644 --- a/flake.lock +++ b/flake.lock @@ -249,22 +249,6 @@ "type": "github" } }, - "nixpkgs-old-fish": { - "locked": { - "lastModified": 1703624527, - "narHash": "sha256-e5XNMNJ2Z61MEnXeMbGkLqWr0FfgH3y5X+9nV15pJak=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c407032be28ca2236f45c49cfb2b8b3885294f7f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "c407032be28ca2236f45c49cfb2b8b3885294f7f", - "type": "github" - } - }, "nixvim": { "inputs": { "devshell": "devshell", @@ -321,7 +305,6 @@ "home-manager": "home-manager", "nix-darwin": "nix-darwin", "nixpkgs": "nixpkgs", - "nixpkgs-old-fish": "nixpkgs-old-fish", "nixvim": "nixvim" } }, diff --git a/flake.nix b/flake.nix index f6406b6..3ad361f 100644 --- a/flake.nix +++ b/flake.nix @@ -3,7 +3,6 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixpkgs-unstable"; - nixpkgs-old-fish.url = "github:NixOS/nixpkgs/c407032be28ca2236f45c49cfb2b8b3885294f7f"; nix-darwin.url = "github:LnL7/nix-darwin/master"; nix-darwin.inputs.nixpkgs.follows = "nixpkgs"; home-manager.url = "github:nix-community/home-manager"; @@ -12,13 +11,12 @@ nixvim.inputs.nixpkgs.follows = "nixpkgs"; }; - outputs = inputs@{ self, nix-darwin, nixpkgs, nixpkgs-old-fish, home-manager, nixvim }: + outputs = inputs@{ self, nix-darwin, nixpkgs, home-manager, nixvim }: { darwinConfigurations."tid27880sperrau" = nix-darwin.lib.darwinSystem { modules = [ { system.configurationRevision = self.rev or self.dirtyRev or null; - programs.fish.package = nixpkgs-old-fish.legacyPackages.aarch64-darwin.fish; } ./nix-darwin ./nix-darwin/hosts/tid27880sperrau @@ -31,7 +29,6 @@ backupFileExtension = "before-home-manager"; extraSpecialArgs = { inherit nixvim; - inherit nixpkgs-old-fish; }; users.sperrault = import ./home-manager/users/sperrault.nix; }; diff --git a/home-manager/default.nix b/home-manager/default.nix index f492f82..6fce3cf 100644 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -13,9 +13,9 @@ }; packages = with pkgs; [ - watchman difftastic - maple-mono-NF + ripgrep + watchman ]; }; @@ -34,11 +34,8 @@ interactiveShellInit = '' fish_vi_key_bindings - # start or attach to default tmux session - if not set -q TMUX - set -g TMUX tmux new-session -d -s default - eval $TMUX - tmux attach-session -d -t default + if not set -q ZELLIJ + zellij attach --create default end ''; shellAbbrs = { @@ -59,26 +56,91 @@ enableFishIntegration = true; }; - programs.tmux = { + programs.zellij = { enable = true; - keyMode = "vi"; - mouse = true; - prefix = "C-a"; - sensibleOnTop = true; - plugins = with pkgs.tmuxPlugins; [ - prefix-highlight - vim-tmux-navigator - catppuccin - ]; - extraConfig = '' - set -g @catppuccin_flavor 'frappe' + enableFishIntegration = false; + }; - bind c new-window -c "#{pane_current_path}" - bind '"' split-window -c "#{pane_current_path}" - bind % split-window -h -c "#{pane_current_path}" + home.file.".config/zellij/config.kdl" = { + enable = true; + text = '' + pane_frames false + theme "catppuccin-mocha" - set -gu default-command - set -g default-shell "$SHELL" + ui { + pane_frames { + hide_session_name true + } + } + + keybinds clear-defaults=true { + normal { + bind "Ctrl a" { SwitchToMode "tmux"; } + } + tmux { + bind "Esc" { SwitchToMode "Normal"; } + + bind "1" { GoToTab 1; SwitchToMode "Normal"; } + bind "2" { GoToTab 2; SwitchToMode "Normal"; } + bind "3" { GoToTab 3; SwitchToMode "Normal"; } + bind "4" { GoToTab 4; SwitchToMode "Normal"; } + bind "5" { GoToTab 5; SwitchToMode "Normal"; } + bind "6" { GoToTab 6; SwitchToMode "Normal"; } + bind "7" { GoToTab 7; SwitchToMode "Normal"; } + bind "8" { GoToTab 8; SwitchToMode "Normal"; } + bind "9" { GoToTab 9; SwitchToMode "Normal"; } + + bind "c" { NewTab; SwitchToMode "Normal"; } + bind "n" { GoToNextTab; SwitchToMode "Normal"; } + bind "p" { GoToPreviousTab; SwitchToMode "Normal"; } + + bind "h" { MoveFocus "Left"; } + bind "j" { MoveFocus "Down"; } + bind "k" { MoveFocus "Up"; } + bind "l" { MoveFocus "Right"; } + + bind "z" { ToggleFocusFullscreen; SwitchToMode "Normal"; } + + bind "d" { Detach; } + + bind "\"" { NewPane "Down"; SwitchToMode "Normal"; } + bind "%" { NewPane "Right"; SwitchToMode "Normal"; } + } + + shared_except "locked" { + bind "Ctrl h" { + MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" { + name "move_focus_or_tab"; + payload "left"; + move_mod "ctrl"; + }; + } + + bind "Ctrl j" { + MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" { + name "move_focus"; + payload "down"; + move_mod "ctrl"; + }; + } + + bind "Ctrl k" { + MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" { + name "move_focus"; + payload "up"; + move_mod "ctrl"; + }; + } + + bind "Ctrl l" { + MessagePlugin "https://github.com/hiasr/vim-zellij-navigator/releases/download/0.2.1/vim-zellij-navigator.wasm" { + name "move_focus_or_tab"; + payload "right"; + move_mod "ctrl"; + }; + } + } + } ''; }; diff --git a/home-manager/nixvim/default.nix b/home-manager/nixvim/default.nix index 5203df8..8d8d41a 100644 --- a/home-manager/nixvim/default.nix +++ b/home-manager/nixvim/default.nix @@ -23,6 +23,11 @@ action = ":"; mode = ["n" "v"]; } + { + key = "q;"; + action = "q:"; + mode = ["n" "v"]; + } { key = "<leader>y"; action = ''"+y''; @@ -88,6 +93,26 @@ action = "<cmd>Telescope live_grep<cr>"; mode = ["n"]; } + { + key = "<C-h>"; + action = "<cmd>ZellijNavigateLeft<cr>"; + mode = ["n"]; + } + { + key = "<C-j>"; + action = "<cmd>ZellijNavigateDown<cr>"; + mode = ["n"]; + } + { + key = "<C-k>"; + action = "<cmd>ZellijNavigateUp<cr>"; + mode = ["n"]; + } + { + key = "<C-l>"; + action = "<cmd>ZellijNavigateRight<cr>"; + mode = ["n"]; + } ]; extraPlugins = with pkgs.vimPlugins; [ @@ -119,6 +144,7 @@ vim yaml elixir + heex javascript typescript css @@ -146,39 +172,47 @@ settings = { sources = [ { name = "nvim_lsp"; } - { name = "luasnip"; } + { name = "snippy"; } { name = "path"; } { name = "buffer"; } ]; mappings = { "<C-n>" = '' - cmp.mapping(function() + function(fallback) do if cmp.visible() then - cmp.select_next_item({behavior = 'insert'}) + cmp.select_next_item({ behavior = cmp.SelectBehavior.Insert }) else - cmp.complete() + fallback() end - end) + end ''; "<C-p>" = '' - cmp.mapping(function() + function(fallback) do if cmp.visible() then - cmp.select_prev_item({behavior = 'insert'}) + cmp.select_prev_item({ behavior = cmp.SelectBehavior.Insert }) else - cmp.complete() + fallback() end - end) + end + ''; + "<CR>" = '' + function(fallback) + if cmp.visible() then + cmp.confirm({ select = true }) + else + fallback() + end + end ''; }; snippet.expand = '' function(args) - require('luasnip').lsp_expand(args.body) + require('snippy').expand_snippet(args.body) end ''; }; }; - plugins.tmux-navigator.enable = true; + plugins.zellij-nav.enable = true; }; - } diff --git a/home-manager/users/sperrault.nix b/home-manager/users/sperrault.nix index 39cf642..569a964 100644 --- a/home-manager/users/sperrault.nix +++ b/home-manager/users/sperrault.nix @@ -1,7 +1,6 @@ -{ nixpkgs-old-fish, ... }: +{ ... }: { imports = [ ../default.nix ]; - programs.fish.package = nixpkgs-old-fish.legacyPackages.aarch64-darwin.fish; home = { username = "sperrault"; homeDirectory = "/Users/sperrault"; diff --git a/nix-darwin/default.nix b/nix-darwin/default.nix index 7695e6d..b81731d 100644 --- a/nix-darwin/default.nix +++ b/nix-darwin/default.nix @@ -53,6 +53,8 @@ brews = [ "mas" + "openssl" + "wxwidgets" ]; casks = [