diff --git a/home/pure_emacs/.emacs.d/.lsp-session-v1 b/home/pure_emacs/.emacs.d/.lsp-session-v1 new file mode 100644 index 0000000..5a8a701 --- /dev/null +++ b/home/pure_emacs/.emacs.d/.lsp-session-v1 @@ -0,0 +1 @@ +#s(lsp-session ("/home/horhik/code/competitive") nil #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ()) #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ()) #s(hash-table size 65 test equal rehash-size 1.5 rehash-threshold 0.8125 data ())) \ No newline at end of file diff --git a/home/pure_emacs/.emacs.d/config.org b/home/pure_emacs/.emacs.d/config.org index b3c0058..a3838fa 100755 --- a/home/pure_emacs/.emacs.d/config.org +++ b/home/pure_emacs/.emacs.d/config.org @@ -798,14 +798,23 @@ ** C/CPP #+begin_src emacs-lisp - (use-package irony - :init - (add-hook 'c++-mode-hook 'irony-mode) - (add-hook 'c-mode-hook 'irony-mode) - (add-hook 'objc-mode-hook 'irony-mode) - (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options) - - ) + (use-package irony + :init + (add-hook 'c++-mode-hook 'irony-mode) + (add-hook 'c-mode-hook 'irony-mode) + (add-hook 'objc-mode-hook 'irony-mode) + (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options) + (setq irony-additional-clang-options + (append '("-std=c++17") irony-additional-clang-options)) + ) + (add-to-list 'auto-mode-alist '("\\.cpp\\'" . cpp-hook)) + (add-to-list 'auto-mode-alist '("\\.cxx\\'" . cpp-hook)) + (add-to-list 'auto-mode-alist '("\\.c++\\'" . cpp-hook)) + (add-to-list 'auto-mode-alist '("\\.C\\'" . cpp-hook)) + (defun cpp-hook () + (c++-mode 1) + (lsp-mode 1) + ) #+end_src ** Markdown #+begin_src emacs-lisp @@ -819,8 +828,9 @@ ** Nix #+begin_src emacs-lisp -;; (use-package direnv -;; :config -;; (direnv-mode)) -;; (add-hook 'lsp-mode-hook #'direnv-update-environment) + ;; (use-package direnv + ;; :config + ;; (direnv-mode)) + ;; (add-hook 'lsp-mode-hook #'direnv-update-environment) + (use-package nix-mode) #+end_src diff --git a/home/pure_emacs/.emacs.d/init.el b/home/pure_emacs/.emacs.d/init.el index 873a533..0192a0a 100644 --- a/home/pure_emacs/.emacs.d/init.el +++ b/home/pure_emacs/.emacs.d/init.el @@ -45,7 +45,7 @@ '(jdee-db-spec-breakpoint-face-colors (cons "#0d1011" "#928374")) '(objed-cursor-color "#fb4934") '(package-selected-packages - '(neotree treemacs-persp spaceline-all-the-icons all-the-icons-ivy-rich all-the-icons-ivy treemacs-the-icons dired-icon treemacs-magit treemacs-projectile nlinum linum-mode unicode-fonts ewal-doom-themes ivy-rich which-key counsel org-roam treemacs-evil treemacs-all-the-icons treemacs use-package general gruvbox-theme flycheck-rust cargo linum-relative ac-racer lusty-explorer doom-modeline doom-themes rainbow-delimiters evil-mc rustic lsp-mode avy)) + '(ivy-posframe nix-mode neotree treemacs-persp spaceline-all-the-icons all-the-icons-ivy-rich all-the-icons-ivy treemacs-the-icons dired-icon treemacs-magit treemacs-projectile nlinum linum-mode unicode-fonts ewal-doom-themes ivy-rich which-key counsel org-roam treemacs-evil treemacs-all-the-icons treemacs use-package general gruvbox-theme flycheck-rust cargo linum-relative ac-racer lusty-explorer doom-modeline doom-themes rainbow-delimiters evil-mc rustic lsp-mode avy)) '(pdf-view-midnight-colors (cons "#ebdbb2" "#282828")) '(rustic-ansi-faces ["#282828" "#fb4934" "#b8bb26" "#fabd2f" "#83a598" "#cc241d" "#8ec07c" "#ebdbb2"]) diff --git a/home/tmux/.config/tmux/tmux.conf b/home/tmux/.config/tmux/tmux.conf index a4fc092..eed2615 100755 --- a/home/tmux/.config/tmux/tmux.conf +++ b/home/tmux/.config/tmux/tmux.conf @@ -18,7 +18,6 @@ set -g status-justify centre # set -g @plugin 'git@bitbucket.com:user/plugin' # Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf) -run '~/.config/tmux/plugins/tpm/tpm' # Activity monitoring @@ -47,3 +46,9 @@ bind -r K resize-pane -U bind -r J resize-pane -D bind -r H resize-pane -L bind -r L resize-pane -R + + +if "test ! -d ~/.tmux/plugins/tpm" \ + "run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm'" +run '~/.tmux/plugins/tpm/tpm' + diff --git a/nix/configuration.nix b/nix/configuration.nix index cfeb0d9..a9a5257 100755 --- a/nix/configuration.nix +++ b/nix/configuration.nix @@ -4,221 +4,222 @@ { config, pkgs, callPackage, ... }: { - nix = { - package = pkgs.nixUnstable; - extraOptions = '' - experimental-features = nix-command flakes - ''; - }; + nix = { + package = pkgs.nixUnstable; + extraOptions = '' + experimental-features = nix-command flakes + ''; + }; imports = [ # Include the results of the hardware scan. - ./hardware-configuration.nix - ./modules/wm.nix - ./modules/syncthing.nix - ./modules/discord.nix - ./modules/gtk.nix - ./modules/hosts.nix - #./modules/picom.nix - ./modules/sound.nix - ./modules/zsh.nix - ./fonts.nix + ./hardware-configuration.nix + ./modules/wm.nix + ./modules/syncthing.nix + ./modules/discord.nix + ./modules/gtk.nix + ./modules/hosts.nix + #./modules/picom.nix + ./modules/sound.nix + ./modules/zsh.nix + ./fonts.nix ]; - # Use the systemd-boot EFI boot loader. - boot.loader.systemd-boot.enable = true; - boot.loader.efi.canTouchEfiVariables = true; - boot.loader.grub.device = "/dev/nvme0n1"; - boot.loader.grub.useOSProber = true; - nixpkgs.config.allowUnfree = true; - nixpkgs.config.allowBroken = true; - networking.hostName = "lap"; # Define your hostname. - environment.variables = { - MAIN_DISK="/dev/nvme0n1"; - TERMINAL="alacritty"; - }; - # let inputs = { - # home-manager = { - # url = "github:rycee/home-manager/release-20.09"; - # inputs = { - # nixpkgs.follows = "nixpkgs"; - # }; - # }; - # nur.url = "github:nix-community/NUR"; - # emacs-overlay.url = "github:nix-community/emacs-overlay"; - # neovim-overlay.url = "github:nix-community/neovim-nightly-overlay"; - # - # nixpkgs.url = "github:nixos/nixpkgs/nixos-20.09"; - # unstable.url = "github:nixos/nixpkgs/nixos-unstable"; - # master.url = "github:nixos/nixpkgs/master"; - #}; - # - # nur = final: prev: { - # nur = import inputs.nur { nurpkgs = final.unstable; pkgs = final.unstable; }; - # }; - # networking.wireless.enable = true; - # enable = true; - # networks={ - # Goga = { - # hidden = true; - # pskRaw = "aaeb0f9e9709a1f25bc93d34290054849e3f8b37071801bbfa4eef5e2eac5084"; - # }; - # }; - # }; - # Set your time zone. - time.timeZone = "Europe/Moscow"; + # Use the systemd-boot EFI boot loader. + boot.loader.systemd-boot.enable = true; + boot.loader.efi.canTouchEfiVariables = true; + boot.loader.grub.device = "/dev/nvme0n1"; + boot.loader.grub.useOSProber = true; + nixpkgs.config.allowUnfree = true; + nixpkgs.config.allowBroken = true; + networking.hostName = "lap"; # Define your hostname. + environment.variables = { + MAIN_DISK="/dev/nvme0n1"; + TERMINAL="alacritty"; + }; + # let inputs = { + # home-manager = { + # url = "github:rycee/home-manager/release-20.09"; + # inputs = { + # nixpkgs.follows = "nixpkgs"; + # }; + # }; + # nur.url = "github:nix-community/NUR"; + # emacs-overlay.url = "github:nix-community/emacs-overlay"; + # neovim-overlay.url = "github:nix-community/neovim-nightly-overlay"; + # + # nixpkgs.url = "github:nixos/nixpkgs/nixos-20.09"; + # unstable.url = "github:nixos/nixpkgs/nixos-unstable"; + # master.url = "github:nixos/nixpkgs/master"; + #}; + # + # nur = final: prev: { + # nur = import inputs.nur { nurpkgs = final.unstable; pkgs = final.unstable; }; + # }; + # networking.wireless.enable = true; + # enable = true; + # networks={ + # Goga = { + # hidden = true; + # pskRaw = "aaeb0f9e9709a1f25bc93d34290054849e3f8b37071801bbfa4eef5e2eac5084"; + # }; + # }; + # }; + # Set your time zone. + time.timeZone = "Europe/Moscow"; - # The global useDHCP flag is deprecated, therefore explicitly set to false here. - # Per-interface useDHCP will be mandatory in the future, so this generated config - # replicates the default behaviour. - networking.useDHCP = false; - networking.interfaces.wlp2s0.useDHCP = true; + # The global useDHCP flag is deprecated, therefore explicitly set to false here. + # Per-interface useDHCP will be mandatory in the future, so this generated config + # replicates the default behaviour. + networking.useDHCP = false; + networking.interfaces.wlp2s0.useDHCP = true; - # Configure network proxy if necessary - # networking.proxy.default = "http://user:password@proxy:port/"; - # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; + # Configure network proxy if necessary + # networking.proxy.default = "http://user:password@proxy:port/"; + # networking.proxy.noProxy = "127.0.0.1,localhost,internal.domain"; - # Select internationalisation properties. - i18n.defaultLocale = "en_US.UTF-8"; - console = { - font = "Lat2-Terminus16"; - keyMap = "us"; - }; + # Select internationalisation properties. + i18n.defaultLocale = "en_US.UTF-8"; + console = { + font = "Lat2-Terminus16"; + keyMap = "us"; + }; - - # Configure keymap in X11 - # Enable CUPS to print documents. - services.printing.enable = true; - services.blueman.enable = true; - hardware.bluetooth.enable = true; - # Enable sound. - # Enable touchpad support (enabled default in most desktopManager). - services.xserver.libinput.enable = true; - services.xserver.libinput.touchpad.tapping = true; - services.xserver.libinput.touchpad.disableWhileTyping = true; - # TODO create touchpad.nix - # Define a user account. Don't forget to set a password with ‘passwd’. - users.defaultUserShell = pkgs.zsh; - users.users.horhik = { - isNormalUser = true; - extraGroups = [ "wheel" "networkmanager" "audio" "docker" "light" "adbusers" ]; # Enable ‘sudo’ for the user. - }; - system.autoUpgrade.enable = true; - system.autoUpgrade.channel = https://nixos.org/channels/nixos-unstable; - # List packages installed in system profile. To search, run: - # $ nix search wget + # Configure keymap in X11 + # Enable CUPS to print documents. + services.printing.enable = true; + services.blueman.enable = true; + hardware.bluetooth.enable = true; + # Enable sound. - environment.systemPackages = with pkgs; [ - papirus-icon-theme pop-gtk-theme - wget git vim neovim emacs alacritty xterm zsh tmux stow dunst - # haskellPackages.xmonad haskellPackages.xmonad-contrib haskellPackages.xmonad-utils - haskellPackages.xmobar - tabbed - i3 surf dmenu st qutebrowser - lightdm rofi nitrogen rofi-emoji - mononoki fontmatrix - firefox - connman - wpa_supplicant python3 xkblayout-state acpi yaru-theme - pipewire pulsemixer nerdfonts - feh compton ninja meson cmake - anki clang_12 zathura redshift rustup neofetch tree - killall audacity thefuck - polkit etcher gsettings-qt appimage-run pamixer unzip qjackctl gnome3.nautilus bluez pkgconfig pavucontrol bpytop - #nur.repos.reedrw.picom-next-ibhagwan - spotify obsidian discord - ]; + # Enable touchpad support (enabled default in most desktopManager). + services.xserver.libinput.enable = true; + services.xserver.libinput.touchpad.tapping = true; + services.xserver.libinput.touchpad.disableWhileTyping = true; + # TODO create touchpad.nix + # Define a user account. Don't forget to set a password with ‘passwd’. + users.defaultUserShell = pkgs.zsh; + users.users.horhik = { + isNormalUser = true; + extraGroups = [ "wheel" "networkmanager" "audio" "docker" "light" "adbusers" ]; # Enable ‘sudo’ for the user. + }; + system.autoUpgrade.enable = true; + system.autoUpgrade.channel = https://nixos.org/channels/nixos-unstable; + # List packages installed in system profile. To search, run: + # $ nix search wget - # Some programs need SUID wrappers, can be configured further or are - # started in user sessions. - # programs.mtr.enable = true; - # programs.gnupg.agent = { - # enable = true; - # enableSSHSupport = true; - # }; + environment.systemPackages = with pkgs; [ + papirus-icon-theme pop-gtk-theme + wget git vim neovim emacs alacritty xterm zsh tmux stow dunst + # haskellPackages.xmonad haskellPackages.xmonad-contrib haskellPackages.xmonad-utils + haskellPackages.xmobar + tabbed + i3 surf dmenu st qutebrowser + lightdm rofi nitrogen rofi-emoji + mononoki fontmatrix + firefox + connman + wpa_supplicant python3 xkblayout-state acpi yaru-theme + pipewire pulsemixer nerdfonts + feh compton ninja meson cmake + anki clang_12 llvmPackages_12.libcxxabi + zathura redshift rustup neofetch tree + killall audacity thefuck + polkit etcher gsettings-qt appimage-run pamixer unzip qjackctl gnome3.nautilus bluez pkgconfig pavucontrol bpytop + #nur.repos.reedrw.picom-next-ibhagwan + spotify obsidian discord + ]; - # List services that you want to enable: + # Some programs need SUID wrappers, can be configured further or are + # started in user sessions. + # programs.mtr.enable = true; + # programs.gnupg.agent = { + # enable = true; + # enableSSHSupport = true; + # }; - # Enable the OpenSSH daemon. - # services.openssh.enable = true; + # List services that you want to enable: - # Open ports in the firewall. - # networking.firewall.allowedTCPPorts = [ ... ]; - # networking.firewall.allowedUDPPorts = [ ... ]; - # Or disable the firewall altogether. - # networking.firewall.enable = false; + # Enable the OpenSSH daemon. + # services.openssh.enable = true; - # This value determines the NixOS release from which the default - # settings for stateful data, like file locations and database versions - # on your system were taken. It‘s perfectly fine and recommended to leave - # this value at the release version of the first install of this system. - # Before changing this value read the documentation for this option - # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). - # system.stateVersion = "20.09"; # Did you read the comment? - ### OH MY ZSH ### - - #programs.zsh.interactiveShellInit = '' - # export ZSH=${pkgs.oh-my-zsh}/share/oh-my-zsh/ - # export CC=/usr/bin/clang - # export CXX=/usr/bin/clang++ - # export _JAVA_AWT_WM_NONREPARENTING=1 - # export ANDROID_SDK_ROOT=/home/horhik/Android/Sdk/ - # export NDK_HOME=/home/horhik/Android/Sdk/ndk/22.0.7026061/ - # ZSH_THEME="cloud" - # plugins=(git colorize colored-man-pages emoji rustup sudo zsh-syntax-highlighting zsh-autosuggestions zsh-completions) - # autoload -U compinit && compinit - # source $ZSH/oh-my-zsh.sh - # export PATH=$HOME/.local/bin:$PATH - # export PATH=/usr/local/bin:$PATH - # export PATH=$HOME/.cargo/bin:$PATH - # export PATH=$HOME/.emacs.d/bin:$PATH - # export PATH=$HOME/Desktop:$PATH - # export PATH=/home/horhik/code/projects/potato-notify:$PATH - # export PATH="/root/.deno/bin:$PATH" - # alias vim=nvim - # alias vi=vim - # alias libvirtdaemon="sudo start-stop-daemon --start libvirtd" - # alias virtm="sudo start-stop-daemon --start virtlogd &; sudo start-stop-daemon --start libvirtd &; virt-manager &" - # alias clip=xclip -selection clipboard - # alias suspend="loginctl suspend" - # if [ -f '/home/horhik/yandex-cloud/path.bash.inc' ]; then source '/home/horhik/yandex-cloud/path.bash.inc'; fi - # if [ -f '/home/horhik/yandex-cloud/completion.zsh.inc' ]; then source '/home/horhik/yandex-cloud/completion.zsh.inc'; fi - # alias rd='rustc -g --emit="obj,link"' - # - # - # alias rdr=compile_and_run - # alias aia=ankiaudio - # alias picom="killall picom; picom --experimental-backends &;" - # alias cc="cargo check" - # alias ct="cargo test" - # alias gc="git clone" - # alias gs="git status" - # alias vim="nvim" - # - # neofetch - # - # eval $(thefuck --alias) - # source $ZSH/oh-my-zsh.sh - #''; - # - # + # Open ports in the firewall. + # networking.firewall.allowedTCPPorts = [ ... ]; + # networking.firewall.allowedUDPPorts = [ ... ]; + # Or disable the firewall altogether. + # networking.firewall.enable = false; - - ### FONTS ### + # This value determines the NixOS release from which the default + # settings for stateful data, like file locations and database versions + # on your system were taken. It‘s perfectly fine and recommended to leave + # this value at the release version of the first install of this system. + # Before changing this value read the documentation for this option + # (e.g. man configuration.nix or on https://nixos.org/nixos/options.html). + # system.stateVersion = "20.09"; # Did you read the comment? + ### OH MY ZSH ### - - + #programs.zsh.interactiveShellInit = '' + # export ZSH=${pkgs.oh-my-zsh}/share/oh-my-zsh/ + # export CC=/usr/bin/clang + # export CXX=/usr/bin/clang++ + # export _JAVA_AWT_WM_NONREPARENTING=1 + # export ANDROID_SDK_ROOT=/home/horhik/Android/Sdk/ + # export NDK_HOME=/home/horhik/Android/Sdk/ndk/22.0.7026061/ + # ZSH_THEME="cloud" + # plugins=(git colorize colored-man-pages emoji rustup sudo zsh-syntax-highlighting zsh-autosuggestions zsh-completions) + # autoload -U compinit && compinit + # source $ZSH/oh-my-zsh.sh + # export PATH=$HOME/.local/bin:$PATH + # export PATH=/usr/local/bin:$PATH + # export PATH=$HOME/.cargo/bin:$PATH + # export PATH=$HOME/.emacs.d/bin:$PATH + # export PATH=$HOME/Desktop:$PATH + # export PATH=/home/horhik/code/projects/potato-notify:$PATH + # export PATH="/root/.deno/bin:$PATH" + # alias vim=nvim + # alias vi=vim + # alias libvirtdaemon="sudo start-stop-daemon --start libvirtd" + # alias virtm="sudo start-stop-daemon --start virtlogd &; sudo start-stop-daemon --start libvirtd &; virt-manager &" + # alias clip=xclip -selection clipboard + # alias suspend="loginctl suspend" + # if [ -f '/home/horhik/yandex-cloud/path.bash.inc' ]; then source '/home/horhik/yandex-cloud/path.bash.inc'; fi + # if [ -f '/home/horhik/yandex-cloud/completion.zsh.inc' ]; then source '/home/horhik/yandex-cloud/completion.zsh.inc'; fi + # alias rd='rustc -g --emit="obj,link"' + # + # + # alias rdr=compile_and_run + # alias aia=ankiaudio + # alias picom="killall picom; picom --experimental-backends &;" + # alias cc="cargo check" + # alias ct="cargo test" + # alias gc="git clone" + # alias gs="git status" + # alias vim="nvim" + # + # neofetch + # + # eval $(thefuck --alias) + # source $ZSH/oh-my-zsh.sh + #''; + # + # - programs.adb.enable = true; - services.emacs.package = pkgs.emacsUnstable; + + ### FONTS ### - nixpkgs.overlays = [ - (import (builtins.fetchTarball { - url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz; - sha256 = "0c2p2ycx6c50rzfd5k56cc411cb0ilhc3zyhhxlwcjnz1ysn5laj"; - })) - ]; + + + + programs.adb.enable = true; + services.emacs.package = pkgs.emacsUnstable; + + nixpkgs.overlays = [ + (import (builtins.fetchTarball { + url = https://github.com/nix-community/emacs-overlay/archive/master.tar.gz; + sha256 = "0c2p2ycx6c50rzfd5k56cc411cb0ilhc3zyhhxlwcjnz1ysn5laj"; + })) + ]; } diff --git a/nix/flake.nix b/nix/flake.nix index 1f7d825..95865de 100755 --- a/nix/flake.nix +++ b/nix/flake.nix @@ -9,75 +9,76 @@ }; nur.url = "github:nix-community/NUR"; emacs-overlay.url = "github:nix-community/emacs-overlay"; - + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; unstable.url = "github:nixos/nixpkgs/nixos-unstable"; master.url = "github:nixos/nixpkgs/master"; }; outputs = inputs@{ self, home-manager, nur, nixpkgs, ... }: - let - inherit (builtins) listToAttrs attrValues attrNames readDir; - inherit (nixpkgs) lib; - inherit (lib) removeSuffix; - pkgs = (import nixpkgs) { - system = "x86_64-linux"; - config = { - allowUnfree = true; - }; - overlays = attrValues self.overlays; + let + inherit (builtins) listToAttrs attrValues attrNames readDir; + inherit (nixpkgs) lib; + inherit (lib) removeSuffix; + pkgs = (import nixpkgs) { + system = "x86_64-linux"; + config = { + allowUnfree = true; }; + overlays = attrValues self.overlays; + }; - in - { - overlays = - let - overlayFiles = listToAttrs (map - (name: { - name = removeSuffix ".nix" name; - value = import (./overlays + "/${name}"); - }) - (attrNames (readDir ./overlays))); - in - overlayFiles // { - nur = final: prev: { - nur = import inputs.nur { nurpkgs = final.unstable; pkgs = final.unstable; }; - }; - emacs-overlay = inputs.emacs-overlay.overlay; - unstable = final: prev: { - unstable = import inputs.unstable { - system = final.system; - config = { - allowUnfree = true; - }; - }; - }; - master = final: prev: { - master = import inputs.master { - system = final.system; - config = { - allowUnfree = true; - }; - }; - }; + in + { + overlays = + let + overlayFiles = listToAttrs (map + (name: { + name = removeSuffix ".nix" name; + value = import (./overlays + "/${name}"); + }) + (attrNames (readDir ./overlays))); + in + overlayFiles // { + nur = final: prev: { + nur = import inputs.nur { nurpkgs = final.unstable; pkgs = final.unstable; }; + }; + emacs-overlay = inputs.emacs-overlay.overlay; + unstable = final: prev: { + unstable = import inputs.unstable { + system = final.system; + config = { + allowUnfree = true; }; - nixosConfigurations.lap = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ - ./configuration.nix - ./hardware-configuration.nix - home-manager.nixosModules.home-manager - ({ - home-manager.useGlobalPkgs = true; - home-manager.useUserPackages = true; - home-manager.users.horhik = { - imports = [ - ./modules/picom.nix - ]; - }; - }) - ]; - inherit pkgs; + }; + }; + master = final: prev: { + master = import inputs.master { + system = final.system; + config = { + allowUnfree = true; + }; + }; }; }; + nixosConfigurations.lap = nixpkgs.lib.nixosSystem { + system = "x86_64-linux"; + modules = [ + ./configuration.nix + ./hardware-configuration.nix + home-manager.nixosModules.home-manager + ({ + home-manager.useGlobalPkgs = true; + home-manager.useUserPackages = true; + home-manager.users.horhik = { + imports = [ + ./modules/picom.nix + ./modules/tmux.nix + ]; + }; + }) + ]; + inherit pkgs; + }; + }; } diff --git a/nix/modules/tmux.nix b/nix/modules/tmux.nix new file mode 100644 index 0000000..a5642cd --- /dev/null +++ b/nix/modules/tmux.nix @@ -0,0 +1,50 @@ +{config, pkgs, ...}: +programs.tmux = { + enable = true; + clock24 = true; + extraPackages = tmuxPlugins : [tmux-gruvbox.gruvbox ]; + extraTmuxConf = '' + set -g @plugin 'egel/tmux-gruvbox' + set -g @tmux-gruvbox 'dark' # or 'light' + # List of plugins + set -g @plugin 'tmux-plugins/tpm' + set -g @plugin 'tmux-plugins/tmux-sensible' + set -g mouse on + + set -g history-limit 500000 + + setw -g monitor-activity on + set -g visual-activity on + + set -g status-justify centre + #run '~/.config/tmux/plugins/tpm/tpm' + + + # Activity monitoring + set-option -g prefix C-space + setw -g monitor-activity on + set -g visual-activity on + + # Vi copypaste mode + set-window-option -g mode-keys vi + bind-key -T copy-mode-vi v send-keys -X begin-selection + bind-key -T copy-mode-vi y send-keys -X copy-selection + # enable by r + v + bind-key -T copy-mode-vi r send-keys -X rectangle-toggle + + # word seperators for automatic word selection + setw -g word-separators ' ' + + # hjkl pane traversal + bind h select-pane -L + bind j select-pane -D + bind k select-pane -U + bind l select-pane -R + + # HJKL resize pane + bind -r K resize-pane -U + bind -r J resize-pane -D + bind -r H resize-pane -L + bind -r L resize-pane -R + ''; +}