diff --git a/home/alt.nix b/home/alt.nix index cc937d1..8b2d0c1 100644 --- a/home/alt.nix +++ b/home/alt.nix @@ -47,6 +47,7 @@ ./desktop ./firefox.nix ./foot.nix + ./tmux ]; programs.nix-index = { diff --git a/home/default.nix b/home/default.nix index 1e9ce3d..759b7d3 100644 --- a/home/default.nix +++ b/home/default.nix @@ -110,6 +110,7 @@ nodejs android-studio netlify-cli + appimage-run # secrets libsecret @@ -118,17 +119,18 @@ ]; imports = [ - ./desktop ./alias.nix - ./nvim - ./foot.nix - ./fish.nix - ./firefox.nix ./calendars.nix + ./desktop + ./firefox.nix + ./fish.nix + ./foot.nix ./mail - ./tex.nix + ./nvim ./openconnect.nix - ./R.nix + ./r.nix + ./tex.nix + ./tmux ]; programs.nix-index = { diff --git a/home/foot.nix b/home/foot.nix index e6f7c68..f7147ec 100644 --- a/home/foot.nix +++ b/home/foot.nix @@ -5,7 +5,7 @@ enable = true; settings = { main = { - shell = "${pkgs.fish}/bin/fish -c 'tmux attach || tmux'"; + shell = "${pkgs.fish}/bin/fish -c 'tmux attach'"; pad = "22x22"; font = "JetBrains Mono:size=14"; initial-window-mode = "maximized"; diff --git a/home/R.nix b/home/r.nix similarity index 100% rename from home/R.nix rename to home/r.nix diff --git a/home/tmux/default.nix b/home/tmux/default.nix new file mode 100644 index 0000000..a8d6164 --- /dev/null +++ b/home/tmux/default.nix @@ -0,0 +1,55 @@ +{ config, pkgs, ... }: + +{ + programs.tmux = { + enable = true; + escapeTime = 0; + mouse = true; + newSession = true; + shell = "${pkgs.fish}/bin/fish"; + extraConfig = '' + # Key bindings + bind C-l next-window + bind C-h previous-window + bind C-b last-window + bind n new-window + bind C-n new-window -c '#{pane_current_path}' + bind v split-window -h + bind C-v split-window -hc '#{pane_current_path}' + bind s split-window -v + bind C-s split-window -vc '#{pane_current_path}' + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" + bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" + + # Layouts + bind f source-file ~/.config/tmux/nnn.conf + bind R source-file ~/.config/tmux/rloft.conf + bind J source-file ~/.config/tmux/jekyll.conf + + # Unbind + unbind p + unbind '"' + unbind % + + # Eye candy + # set-option -g status-position top + set-option -g status-right "" + set-option -g status-left "" + set-option -g status-justify "centre" + set-option -g status-style fg=brightmagenta + set-option -g pane-border-style fg=brightwhite + set-option -g pane-active-border-style fg=magenta + set-option -g window-status-current-style fg=magenta + + # Some more specifics + set-option -g focus-events on + ''; + }; + xdg.configFile."tmux/nnn.conf".source = ./nnn.conf; + xdg.configFile."tmux/rloft.conf".source = ./rloft.conf; + xdg.configFile."tmux/jekyll.conf".source = ./jekyll.conf; +} diff --git a/home/tmux/jekyll.conf b/home/tmux/jekyll.conf new file mode 100644 index 0000000..8ecb9ee --- /dev/null +++ b/home/tmux/jekyll.conf @@ -0,0 +1,6 @@ +split-window -c '#{pane_current_path}' -h nix-shell +send-keys "jekyll serve" Enter +resize-pane -x 40% +split-pane -c '#{pane_current_path}' "git status; fish" +select-pane -L +rename-window "jekyll" diff --git a/home/tmux/nnn.conf b/home/tmux/nnn.conf new file mode 100644 index 0000000..d51a48d --- /dev/null +++ b/home/tmux/nnn.conf @@ -0,0 +1,2 @@ +new-window -c '#{pane_current_path}' nnn +rename-window 'nnn' diff --git a/home/tmux/rloft.conf b/home/tmux/rloft.conf new file mode 100644 index 0000000..400c102 --- /dev/null +++ b/home/tmux/rloft.conf @@ -0,0 +1,2 @@ +split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore +select-pane -l diff --git a/system/ishi.nix b/system/ishi.nix new file mode 100644 index 0000000..9da2166 --- /dev/null +++ b/system/ishi.nix @@ -0,0 +1,14 @@ +{ config, pkgs, ... }: + +{ + users.users.ishi = { + isNormalUser = true; + uid = 969; + group = "users"; + description = "Ishi"; + extraGroups = [ + "networkmanager" + ]; + shell = pkgs.fish; + }; +}