From fe54e220e44e5fce1edd0ef32c287ca264ea02b2 Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Tue, 13 Jun 2023 02:05:57 +0800 Subject: [PATCH] feat: update configs for tmux --- home/base/bash.nix | 1 - home/base/core.nix | 5 --- home/base/default.nix | 3 +- home/base/development.nix | 11 +++++- home/base/nushell/default.nix | 1 - home/base/tmux/custom-plugins.nix | 16 ++++++++ home/base/tmux/default.nix | 64 +++++++++++++++++++++++++++++++ home/linux/base/development.nix | 16 -------- home/linux/i3/x11-apps.nix | 1 + 9 files changed, 93 insertions(+), 25 deletions(-) create mode 100644 home/base/tmux/custom-plugins.nix create mode 100644 home/base/tmux/default.nix diff --git a/home/base/bash.nix b/home/base/bash.nix index b4b1ee75..e510a3e5 100644 --- a/home/base/bash.nix +++ b/home/base/bash.nix @@ -8,7 +8,6 @@ shellAliases = { k = "kubectl"; - vim = "nvim"; urldecode = "python3 -c 'import sys, urllib.parse as ul; print(ul.unquote_plus(sys.stdin.read()))'"; urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'"; diff --git a/home/base/core.nix b/home/base/core.nix index 0dc4856a..c7e8eca0 100644 --- a/home/base/core.nix +++ b/home/base/core.nix @@ -50,11 +50,6 @@ ]; programs = { - # A terminal multiplexer - tmux = { - enable = true; - }; - # a cat(1) clone with syntax highlighting and Git integration. bat = { enable = true; diff --git a/home/base/default.nix b/home/base/default.nix index b838c2db..7f724372 100644 --- a/home/base/default.nix +++ b/home/base/default.nix @@ -2,8 +2,9 @@ { imports = [ ./nushell - ./bash.nix + ./tmux + ./bash.nix ./core.nix ./development.nix ./git.nix diff --git a/home/base/development.nix b/home/base/development.nix index 55a9b0a0..93b55fe3 100644 --- a/home/base/development.nix +++ b/home/base/development.nix @@ -98,15 +98,24 @@ # modern vim neovim = { enable = true; + defaultEditor = true; + viAlias = false; + vimAlias = true; + + # enable line number, disable mouse visual mode extraConfig = '' - set number relativenumber + set number relativenumber mouse-=a ''; + }; direnv = { enable = true; nix-direnv.enable = true; + enableZshIntegration = true; + enableBashIntegration = true; + enableNushellIntegration = true; }; }; diff --git a/home/base/nushell/default.nix b/home/base/nushell/default.nix index a2d7fd76..2b8f609c 100644 --- a/home/base/nushell/default.nix +++ b/home/base/nushell/default.nix @@ -11,7 +11,6 @@ shellAliases = { k = "kubectl"; - vim = "nvim"; urldecode = "python3 -c 'import sys, urllib.parse as ul; print(ul.unquote_plus(sys.stdin.read()))'"; urlencode = "python3 -c 'import sys, urllib.parse as ul; print(ul.quote_plus(sys.stdin.read()))'"; diff --git a/home/base/tmux/custom-plugins.nix b/home/base/tmux/custom-plugins.nix new file mode 100644 index 00000000..e8c58dec --- /dev/null +++ b/home/base/tmux/custom-plugins.nix @@ -0,0 +1,16 @@ +{ pkgs, ... }: + +let + buildTmuxPlugin = pkgs.tmuxPlugins.mkTmuxPlugin; +in +{ + draculaTheme = buildTmuxPlugin { + pluginName = "dracula"; + version = "v2.2.0"; + src = builtins.fetchTarball { + name = "dracula-tmux-v2.2.0"; + url = "https://github.com/dracula/tmux/archive/refs/tags/v2.2.0.tar.gz"; + sha256 = "sha256:0v2k994yy4xx2iw8qxg7qphw46gq2qmg496i3a3h9b6jgwxqm7zn"; + }; + }; +} \ No newline at end of file diff --git a/home/base/tmux/default.nix b/home/base/tmux/default.nix new file mode 100644 index 00000000..9c20f990 --- /dev/null +++ b/home/base/tmux/default.nix @@ -0,0 +1,64 @@ +{ config, pkgs, ... }: + +let + plugins = pkgs.tmuxPlugins // pkgs.callPackage ./custom-plugins.nix {}; +in +{ + programs.tmux = { + enable = true; + + # Resize the window to the size of the smallest session for which it is the current window. + # + aggressiveResize = true; + + # https://github.com/tmux-plugins/tmux-sensible + # tmux-sensible overwrites default tmux shortcuts, makes them more sane. + sensibleOnTop = true; + + # extraConfig = builtins.readFile ./tmux.conf; + # keyMode = "vi"; # default is emacs + + baseIndex = 1; # start index from 1 + escapeTime = 0; # do not wait for escape key + terminal = "xterm-256color"; + + plugins = with plugins; [ + draculaTheme # theme + { + # https://github.com/tmux-plugins/tmux-continuum + # Continuous saving of tmux environment. Automatic restore when tmux is started. + # Automatic tmux start when computer is turned on. + plugin = continuum; + extraConfig = '' + set -g @continuum-boot 'on' + set -g @continuum-save-interval '15' + + # Option to display current status of tmux continuum in tmux status line. + set -g status-right 'Continuum status: #{continuum_status}' + ''; + } + { + # https://github.com/tmux-plugins/tmux-resurrect + # Manually persists tmux environment across system restarts. + # prefix + Ctrl-s - save + # prefix + Ctrl-r - restore + # + plugin = resurrect; + # Restore Neovim sessions + extraConfig = "set -g @resurrect-strategy-nvim 'session'"; + } + { + # https://github.com/tmux-plugins/tmux-yank + # Enables copying to system clipboard. + plugin = yank; + } + # set -g @plugin 'tmux-plugins/tmux-cpu' + { + plugin = cpu; + extraConfig = '' + set -g status-right '#{cpu_bg_color} CPU: #{cpu_icon} #{cpu_percentage} | %a %h-%d %H:%M ' + ''; + } + ]; + }; +} \ No newline at end of file diff --git a/home/linux/base/development.nix b/home/linux/base/development.nix index 7d3f6a08..23e3d935 100644 --- a/home/linux/base/development.nix +++ b/home/linux/base/development.nix @@ -13,22 +13,6 @@ conda ]; - programs = { - # modern vim - neovim = { - enable = true; - extraConfig = '' - set number relativenumber - ''; - }; - - direnv = { - enable = true; - nix-direnv.enable = true; - enableZshIntegration = true; - }; - }; - # GitHub CLI tool programs.gh = { enable = true; diff --git a/home/linux/i3/x11-apps.nix b/home/linux/i3/x11-apps.nix index 0e298829..4a487a8e 100644 --- a/home/linux/i3/x11-apps.nix +++ b/home/linux/i3/x11-apps.nix @@ -3,6 +3,7 @@ }: { home.packages = with pkgs; [ firefox + xsel # for clipboard support in x11, required by tmux's clipboard support ];