Skip to content

nix-enabled tmux configuration for a terminal-oriented OS

Notifications You must be signed in to change notification settings

komar007/dot-tmux

Repository files navigation

Personal tmux configuration

Features

Among the most notable features there are:

  • a nice status bar,
  • per-window CPU usage measurement,
  • per-session shell (configure your shells in ~/shell.sh),
  • lots of key bindings for session, window and pane management,
  • fuzzy session selector with session's active window preview,
  • buffer/clipboard manager with fuzzy search,
  • scrollback scraper (fuzzy-find and paste or open URLs and words from scrollback),
  • multi-window scratch session in a popup,
  • battery status with a nice icon, remaining percentage and charging status,
  • neovim windows integration.

Installation

If you want to try this configuration, you can install it either manually or through Home Manager.

Home Manager

Modules for Home Manager are provided as a flake:

module default description
homeManagerModules.${system}.tmux ✔️ enables tmux and populates ~/.tmux.conf and ~/.tmux
homeManagerModules.${system}.alacrittyKeyBinds enables alacritty keybinds required by the config
New to home-manager? Expand installtion instructions

... or better, read the guide first.

Installation

  1. add the flake input:

    {
      inputs = {
        home-manager = {
          url = "github:nix-community/home-manager/release-24.11";
          inputs.nixpkgs.follows = "nixpkgs";
        };
        # ...
        komar007-dot-tmux = {
          url = "github:komar007/dot-tmux";
          inputs.flake-utils.follows = "flake-utils";
        };
        # ...
      };
    }
  2. import the Home Manager modules:

    {
      inputs = # ...
      outputs = { self, home-manager, ... } @ inputs:
      let
        system = "x86_64-linux";
      in
      {
        home-manager.lib.homeManagerConfiguration {
          pkgs = # ...
          modules = [
            # ...
            (inputs.komar007-dot-tmux.homeManagerModules.${system}.default)
            (inputs.komar007-dot-tmux.homeManagerModules.${system}.alacrittyKeyBinds) # optional
          ];
        }
      }
    }
  3. switch configuration:

    $ home-manager switch --flake .

Manual installation

Clone the repository and from the cloned directory, run (after backing up your ~/.tmux.conf):

ln -s "$(pwd)/tmux.conf" ~/.tmux.conf
ln -s "$(pwd)/tmux" ~/.tmux

This configuration has some dependencies, which need to be installed and either available in $PATH or in a directory which can be configured using the DEP_PREFIX variable at the top of tmux.conf (see description in the file for details).

The list of dependencies is maintained in hm-module.nix under config.home.file. Most are either already available in your distribution or can be installed via cargo install.