From 21ed795cfda115dfc3433ddc737da4f35cea0c30 Mon Sep 17 00:00:00 2001 From: Filippo Berto Date: Wed, 12 May 2021 18:06:15 +0200 Subject: [PATCH] Better modules --- .gitignore | 1 + config.nix | 1 - configs/rofi/nord.rasi | 89 ++++++++++++ configs/terminator/config | 40 ++++++ home.nix | 59 ++++---- modules/alacritty.nix | 140 +++++++++---------- modules/bat.nix | 3 + modules/broot.nix | 7 + modules/dircolors.nix | 7 + modules/direnv.nix | 7 + modules/git.nix | 36 ++--- modules/kakoune.nix | 284 +++++++++++++++++++------------------- modules/qogir_theme.nix | 67 +++++++++ modules/rofi.nix | 15 +- modules/sxhkd.nix | 72 +++++----- modules/terminator.nix | 8 ++ 16 files changed, 534 insertions(+), 302 deletions(-) create mode 100644 .gitignore delete mode 100644 config.nix create mode 100644 configs/rofi/nord.rasi create mode 100644 configs/terminator/config create mode 100644 modules/bat.nix create mode 100644 modules/broot.nix create mode 100644 modules/dircolors.nix create mode 100644 modules/direnv.nix create mode 100644 modules/qogir_theme.nix create mode 100644 modules/terminator.nix diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3b728ce --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +config.nix diff --git a/config.nix b/config.nix deleted file mode 100644 index 69baf10..0000000 --- a/config.nix +++ /dev/null @@ -1 +0,0 @@ -{ allowUnfree = true; } diff --git a/configs/rofi/nord.rasi b/configs/rofi/nord.rasi new file mode 100644 index 0000000..45b3413 --- /dev/null +++ b/configs/rofi/nord.rasi @@ -0,0 +1,89 @@ +* { + nord0: #2e3440; + nord1: #3b4252; + nord2: #434c5e; + nord3: #4c566a; + nord4: #d8dee9; + nord5: #e5e9f0; + nord6: #eceff4; + nord7: #8fbcbb; + nord8: #88c0d0; + nord9: #81a1c1; + nord10: #5e81ac; + nord11: #bf616a; + nord12: #d08770; + nord13: #ebcb8b; + nord14: #a3be8c; + nord15: #b48ead; + + background-color: @nord1; + border: 0px; + margin: 0px; + padding: 0px; + spacing: 0px; + text-color: @nord4; +} +#inputbar { + text-color: @nord3; + padding: 6px; + margin: 0px 0px 2px; + children: [ entry ]; +} +#entry { + background-color: @nord3; + text-color: @nord4; + padding: 5px; +} +#message { + border: 0px 0px 1px; + border-color: @nord3; + padding: 0px 0px 6px 7px; +} +#listview { + lines: 10; + padding: 2px 0px 0px; + scrollbar: true; +} +#element { + padding: 0px 0px 0px 7px; + margin: 0px 0px 5px 0px; + text-color: @nord4; +} +#element.normal.normal { + text-color: @nord4; +} +#element.normal.urgent { + text-color: @nord11; +} +#element.normal.active { + text-color: @nord10; +} +#element.alternate.normal { + text-color: @nord4; +} +#element.alternate.urgent { + text-color: @nord11; +} +#element.alternate.active { + text-color: @nord10; +} +#element.selected.normal { + background-color: @nord8; + text-color: @nord1; +} +#element.selected.urgent { + background-color: @nord11; + text-color: @nord4; +} +#element.selected.active { + background-color: @nord10; + text-color: @nord4; +} +#scrollbar { + handle-color: @nord3; + handle-width: 0.50em; +} +#button.selected { + background-color: @nord8; + text-color: @nord4; +} diff --git a/configs/terminator/config b/configs/terminator/config new file mode 100644 index 0000000..0aa5ae0 --- /dev/null +++ b/configs/terminator/config @@ -0,0 +1,40 @@ +[global_config] + scroll_tabbar = True + enabled_plugins = ActivityWatch, LaunchpadCodeURLHandler, APTURLHandler, LaunchpadBugURLHandler + suppress_multiple_term_dialog = True + always_split_with_profile = True +[keybindings] + help = None +[profiles] + [[default]] + visible_bell = True + background_color = "#2e3440" + background_darkness = 0.95 + background_type = transparent + cursor_color = "#d8dee9" + font = FuraCode Nerd Font Mono weight=450 10 + foreground_color = "#d8dee9" + show_titlebar = False + scrollbar_position = hidden + scrollback_lines = 10000 + palette = "#3b4252:#bf616a:#a3be8c:#ebcb8b:#81a1c1:#b48ead:#88c0d0:#e5e9f0:#4c566a:#bf616a:#a3be8c:#ebcb8b:#81a1c1:#b48ead:#8fbcbb:#eceff4" + use_system_font = False + [[presentation]] + visible_bell = True + background_color = "#fdf6e3" + cursor_color = "#aaaaaa" + font = FuraCode Nerd Font Mono weight=450 20 + foreground_color = "#2e3436" + show_titlebar = False + palette = "#073642:#dc322f:#859900:#b58900:#268bd2:#d33682:#2aa198:#eee8d5:#002b36:#cb4b16:#586e75:#657b83:#839496:#6c71c4:#93a1a1:#fdf6e3" + use_system_font = False +[layouts] + [[default]] + [[[child1]]] + parent = window0 + type = Terminal + profile = default + [[[window0]]] + parent = "" + type = Window +[plugins] diff --git a/home.nix b/home.nix index bf83a91..eeaabc2 100644 --- a/home.nix +++ b/home.nix @@ -8,6 +8,9 @@ in { enable = true; }; + nixpkgs.config = import ./modules/config.nix; + xdg.configFile."nixpkgs/config.nix".source = ./modules/config.nix; + home = { language.base = "it_IT.UTF-8"; keyboard.layout = "it"; @@ -18,46 +21,34 @@ in { gnome3.nautilus procps-ng mmv-go + terminator + bottom ]; }; + imports = [ + ./modules/alacritty.nix + ./modules/bat.nix + ./modules/broot.nix + ./modules/dircolors.nix + ./modules/git.nix + ./modules/kakoune.nix + ./modules/qogir_theme.nix + ./modules/rofi.nix + ./modules/sxhkd.nix + ./modules/terminator.nix + ]; + programs = { - # alacritty = import ./modules/alacritty.nix pkgs; - - bat = { enable = true; config.theme = "Nord"; }; - - command-not-found.enable = true; - - broot = { enable = true; enableBashIntegration = true; enableZshIntegration = true; }; - - dircolors = { enable = true; enableBashIntegration = true; enableZshIntegration = true; }; - - direnv = { enable = true; enableBashIntegration = true; enableZshIntegration = true; enableNixDirenvIntegration = true; }; - - git = import ./modules/git.nix pkgs; - + # command-not-found.enable = true; home-manager.enable = true; - - info.enable = true; - - kakoune = import ./modules/kakoune.nix pkgs; - - rofi = import ./modules/rofi.nix pkgs; - - zsh = { - enableVteIntegration = true; - }; + # info.enable = true; + # kakoune = import ./modules/kakoune.nix pkgs; + # zsh = { + # enableVteIntegration = true; + # }; }; - qt = { - enable = true; - platformTheme = "gtk"; - }; - - services = { - # sxhkd = import ./modules/sxhkd.nix pkgs; - }; - - xsession.numlock.enable = true; + xsession.numlock.enable = true; } diff --git a/modules/alacritty.nix b/modules/alacritty.nix index 4a17484..cd109fc 100644 --- a/modules/alacritty.nix +++ b/modules/alacritty.nix @@ -1,77 +1,77 @@ -{ config, pkgs, lib, ... }: - { - enable = true; - settings = { - scrolling.history = 3000; - font = { - normal.family = "FuraCode Nerd Font"; - size = 9.0; - }; - background_opacity = 0.95; - mouse = { - hide_when_typing = true; - url.modifiers = "Control"; - }; + programs.alacritty = { + enable = true; + settings = { + scrolling.history = 3000; + font = { + normal.family = "FuraCode Nerd Font"; + size = 9.0; + }; + background_opacity = 0.95; + mouse = { + hide_when_typing = true; + url.modifiers = "Control"; + }; - # NORD Theme: https://github.com/arcticicestudio/nord-alacritty - colors = { - primary = { - background = "#2e3440"; - foreground = "#d8dee9"; - dim_foreground = "#a5abb6"; - }; - cursor = { - text = "#2e3440"; - cursor = "#d8dee9"; - }; - vi_mode_cursor = { - text = "#2e3440"; - cursor = "#d8dee9"; - }; - selection = { - text = "CellForeground"; - background = "#4c566a"; - }; - search = { - matches = { - foreground = "CellForeground"; - background = "#88c0d0"; - }; - bar = { - background = "#434c5e"; + # NORD Theme: https://github.com/arcticicestudio/nord-alacritty + colors = { + primary = { + background = "#2e3440"; foreground = "#d8dee9"; + dim_foreground = "#a5abb6"; + }; + cursor = { + text = "#2e3440"; + cursor = "#d8dee9"; + }; + vi_mode_cursor = { + text = "#2e3440"; + cursor = "#d8dee9"; + }; + selection = { + text = "CellForeground"; + background = "#4c566a"; + }; + search = { + matches = { + foreground = "CellForeground"; + background = "#88c0d0"; + }; + bar = { + background = "#434c5e"; + foreground = "#d8dee9"; + }; + }; + normal = { + black = "#3b4252"; + red = "#bf616a"; + green = "#a3be8c"; + yellow = "#ebcb8b"; + blue = "#81a1c1"; + magenta = "#b48ead"; + cyan = "#88c0d0"; + white = "#e5e9f0"; + }; + bright = { + black = "#4c566a"; + red = "#bf616a"; + green = "#a3be8c"; + yellow = "#ebcb8b"; + blue = "#81a1c1"; + magenta = "#b48ead"; + cyan = "#8fbcbb"; + white = "#eceff4"; + }; + dim = { + black = "#373e4d"; + red = "#94545d"; + green = "#809575"; + yellow = "#b29e75"; + blue = "#68809a"; + magenta = "#8c738c"; + cyan = "#6d96a5"; + white = "#aeb3bb"; }; - }; - normal = { - black = "#3b4252"; - red = "#bf616a"; - green = "#a3be8c"; - yellow = "#ebcb8b"; - blue = "#81a1c1"; - magenta = "#b48ead"; - cyan = "#88c0d0"; - white = "#e5e9f0"; - }; - bright = { - black = "#4c566a"; - red = "#bf616a"; - green = "#a3be8c"; - yellow = "#ebcb8b"; - blue = "#81a1c1"; - magenta = "#b48ead"; - cyan = "#8fbcbb"; - white = "#eceff4"; - }; - dim = { - black = "#373e4d"; - red = "#94545d"; - green = "#809575"; - yellow = "#b29e75"; - blue = "#68809a"; - magenta = "#8c738c"; - cyan = "#6d96a5"; - white = "#aeb3bb"; }; }; }; diff --git a/modules/bat.nix b/modules/bat.nix new file mode 100644 index 0000000..67b047b --- /dev/null +++ b/modules/bat.nix @@ -0,0 +1,3 @@ +{ + programs.bat = { enable = true; config.theme = "Nord"; }; +} diff --git a/modules/broot.nix b/modules/broot.nix new file mode 100644 index 0000000..fed74a5 --- /dev/null +++ b/modules/broot.nix @@ -0,0 +1,7 @@ +{ + programs.broot = { + enable = true; + enableBashIntegration = true; + enableZshIntegration = true; + }; +} diff --git a/modules/dircolors.nix b/modules/dircolors.nix new file mode 100644 index 0000000..8467404 --- /dev/null +++ b/modules/dircolors.nix @@ -0,0 +1,7 @@ +{ + programs.dircolors = { + enable = true; + enableBashIntegration = true; + enableZshIntegration = true; + }; +} diff --git a/modules/direnv.nix b/modules/direnv.nix new file mode 100644 index 0000000..593881d --- /dev/null +++ b/modules/direnv.nix @@ -0,0 +1,7 @@ +{ + programs.direnv = { + enable = true; + enableBashIntegration = true; + enableZshIntegration = true; + }; +} diff --git a/modules/git.nix b/modules/git.nix index ff92f4a..5a0c890 100644 --- a/modules/git.nix +++ b/modules/git.nix @@ -3,22 +3,24 @@ let kakouneCommand = "${pkgs.kakoune}/bin/kak"; meldCommand = "${pkgs.meld}/bin/meld"; in { - enable = true; - userName = "Filippo Berto"; - userEmail = "berto.f@protonmail.com"; - signing = { - key = "berto.f@protonmail.com"; - signByDefault = true; + programs.git = { + enable = true; + userName = "Filippo Berto"; + userEmail = "berto.f@protonmail.com"; + signing = { + key = "berto.f@protonmail.com"; + signByDefault = true; + }; + extraConfig = { + core.editor = kakouneCommand; + credential.helper = "cache --timeout=3600"; + diff.guitool = meldCommand; + merge.guitool = meldCommand; + pull.rebase = true; + rebase.autostash = true; + init.defaultBranch = "master"; + }; + lfs.enable = true; + delta.enable = true; }; - extraConfig = { - core.editor = kakouneCommand; - credential.helper = "cache --timeout=3600"; - diff.guitool = meldCommand; - merge.guitool = meldCommand; - pull.rebase = true; - rebase.autostash = true; - init.defaultBranch = "master"; - }; - lfs.enable = true; - delta.enable = true; } diff --git a/modules/kakoune.nix b/modules/kakoune.nix index 4f7913a..a8dcd86 100644 --- a/modules/kakoune.nix +++ b/modules/kakoune.nix @@ -2,147 +2,149 @@ let unstable = import {}; in { - enable = true; - config = { - colorScheme = "nord"; - tabStop = 2; - indentWidth = 2; - scrollOff = { - lines = 5; - columns = 3; + programs.kakoune = { + enable = true; + config = { + colorScheme = "nord"; + tabStop = 2; + indentWidth = 2; + scrollOff = { + lines = 5; + columns = 3; + }; + ui = { + setTitle = true; + changeColors = true; + enableMouse = true; + }; + wrapLines = { + enable = true; + word = true; + }; + numberLines = { + enable = true; + highlightCursor = true; + }; + keyMappings = [{ + mode = "normal"; + docstring = "Open file"; + key = ""; + effect = ":edit"; + } { + mode = "user"; + docstring = "Comment block"; + key = "b"; + effect = ":comment-block"; + } { + mode = "user"; + docstring = "Comment line"; + key = "l"; + effect = ":comment-line"; + } { + mode = "user"; + docstring = "Show hover info"; + key = "q"; + effect = ":lsp-hover"; + } { + mode = "user"; + docstring = "Jump to definition"; + key = "d"; + effect = ":lsp-definition"; + } { + mode = "user"; + docstring = "List project diagnostics"; + key = "i"; + effect = ":lsp-diagnostics"; + } { + mode = "user"; + docstring = "Jump to type definition"; + key = "t"; + effect = ":lsp-type-definition"; + } { + mode = "user"; + docstring = "Code actions"; + key = "a"; + effect = ":lsp-code-actions"; + } { + mode = "user"; + docstring = "Format code"; + key = "F"; + effect = ":lsp-formatting-sync"; + } { + mode = "user"; + docstring = "Spellcheck"; + key = "s"; + effect = ":spell "; + } { + mode = "user"; + docstring = "Spellcheck English"; + key = "S"; + effect = ":spell en"; + } { + mode = "user"; + docstring = "Copy to clipboard"; + key = "y"; + effect = "${pkgs.xclip}/bin/xclip -i -selection clipboard"; + } { + mode = "user"; + docstring = "Paste from clipboard (before)"; + key = "p"; + effect = "!${pkgs.xclip}/bin/xclip -selection clipboard -o"; + } { + mode = "user"; + docstring = "Paste from clipboard (after)"; + key = "P"; + effect = "${pkgs.xclip}/bin/xclip -selection clipboard -o"; + }]; + hooks = [{ + name = "WinSetOption"; + option = "filetype=(rust|python|c|cpp|latex|javascript|go)"; + commands = builtins.concatStringsSep "\n" [ + "lsp-enable-window" + ]; + } { + name = "BufCreate"; + option = ".*"; + commands = "editorconfig-load"; + } { + name = "ModuleLoaded"; + option = "powerline"; + commands = builtins.concatStringsSep "\n" [ + # "powerline-theme default" + "powerline-enable" + ]; + } { + name = "ModuleLoaded"; + option = "auto-pairs"; + commands = "auto-pairs-enable"; + } { + name = "InsertCompletionShow"; + option = ".*"; + commands = builtins.concatStringsSep "\n" [ + "map window insert " + "map window insert " + ]; + } { + name = "InsertCompletionHide"; + option = ".*"; + commands = builtins.concatStringsSep "\n" [ + "unmap window insert " + "unmap window insert " + ]; + }]; }; - ui = { - setTitle = true; - changeColors = true; - enableMouse = true; - }; - wrapLines = { - enable = true; - word = true; - }; - numberLines = { - enable = true; - highlightCursor = true; - }; - keyMappings = [{ - mode = "normal"; - docstring = "Open file"; - key = ""; - effect = ":edit"; - } { - mode = "user"; - docstring = "Comment block"; - key = "b"; - effect = ":comment-block"; - } { - mode = "user"; - docstring = "Comment line"; - key = "l"; - effect = ":comment-line"; - } { - mode = "user"; - docstring = "Show hover info"; - key = "q"; - effect = ":lsp-hover"; - } { - mode = "user"; - docstring = "Jump to definition"; - key = "d"; - effect = ":lsp-definition"; - } { - mode = "user"; - docstring = "List project diagnostics"; - key = "i"; - effect = ":lsp-diagnostics"; - } { - mode = "user"; - docstring = "Jump to type definition"; - key = "t"; - effect = ":lsp-type-definition"; - } { - mode = "user"; - docstring = "Code actions"; - key = "a"; - effect = ":lsp-code-actions"; - } { - mode = "user"; - docstring = "Format code"; - key = "F"; - effect = ":lsp-formatting-sync"; - } { - mode = "user"; - docstring = "Spellcheck"; - key = "s"; - effect = ":spell "; - } { - mode = "user"; - docstring = "Spellcheck English"; - key = "S"; - effect = ":spell en"; - } { - mode = "user"; - docstring = "Copy to clipboard"; - key = "y"; - effect = "${pkgs.xclip}/bin/xclip -i -selection clipboard"; - } { - mode = "user"; - docstring = "Paste from clipboard (before)"; - key = "p"; - effect = "!${pkgs.xclip}/bin/xclip -selection clipboard -o"; - } { - mode = "user"; - docstring = "Paste from clipboard (after)"; - key = "P"; - effect = "${pkgs.xclip}/bin/xclip -selection clipboard -o"; - }]; - hooks = [{ - name = "WinSetOption"; - option = "filetype=(rust|python|c|cpp|latex|javascript|go)"; - commands = builtins.concatStringsSep "\n" [ - "lsp-enable-window" - ]; - } { - name = "BufCreate"; - option = ".*"; - commands = "editorconfig-load"; - } { - name = "ModuleLoaded"; - option = "powerline"; - commands = builtins.concatStringsSep "\n" [ - # "powerline-theme default" - "powerline-enable" - ]; - } { - name = "ModuleLoaded"; - option = "auto-pairs"; - commands = "auto-pairs-enable"; - } { - name = "InsertCompletionShow"; - option = ".*"; - commands = builtins.concatStringsSep "\n" [ - "map window insert " - "map window insert " - ]; - } { - name = "InsertCompletionHide"; - option = ".*"; - commands = builtins.concatStringsSep "\n" [ - "unmap window insert " - "unmap window insert " - ]; - }]; + extraConfig = builtins.concatStringsSep "\n" [ + "# Extra" + "define-command -docstring 'save and quit' x 'write-all; quit'" + "add-highlighter global/ regex \\h+$ 0:Error" + "eval %sh{kak-lsp --kakoune -s \$kak_session}" + "require-module auto-pairs" + "require-module powerline" + ]; + plugins = with pkgs; [ + kakounePlugins.kak-auto-pairs + unstable.kakounePlugins.powerline-kak + unstable.kakounePlugins.prelude-kak + ]; }; - extraConfig = builtins.concatStringsSep "\n" [ - "# Extra" - "define-command -docstring 'save and quit' x 'write-all; quit'" - "add-highlighter global/ regex \\h+$ 0:Error" - "eval %sh{kak-lsp --kakoune -s \$kak_session}" - "require-module auto-pairs" - "require-module powerline" - ]; - plugins = with pkgs; [ - kakounePlugins.kak-auto-pairs - unstable.kakounePlugins.powerline-kak - unstable.kakounePlugins.prelude-kak - ]; } diff --git a/modules/qogir_theme.nix b/modules/qogir_theme.nix new file mode 100644 index 0000000..c11ddc7 --- /dev/null +++ b/modules/qogir_theme.nix @@ -0,0 +1,67 @@ +{ pkgs, ... }: +{ + gtk = { + enable = true; + font = { + package = pkgs.cantarell-fonts; + name = "Cantarell"; + size = 9; + }; + iconTheme = { + package = pkgs.qogir-icon-theme; + name = "Qogir-dark"; + }; + theme = { + package = pkgs.qogir-theme; + name = "Qogir-dark"; + }; + # gtk3.extraConfig = { + # gtk-theme-name=Drakula + # gtk-icon-theme-name=Qogir-dark + # gtk-font-name=Cantarell 9 + # gtk-cursor-theme-name=capitaine-cursors + # gtk-cursor-theme-size=0 + # gtk-toolbar-style=GTK_TOOLBAR_ICONS + # gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR + # gtk-button-images=1 + # gtk-menu-images=1 + # gtk-enable-event-sounds=1 + # gtk-enable-input-feedback-sounds=1 + # gtk-xft-antialias=1 + # gtk-xft-hinting=1 + # gtk-xft-hintstyle=hintfull + # gtk-xft-rgba=none + # }; + # gtk2.extraConfig = { + # gtk-theme-name="Arc-Dark" + # gtk-icon-theme-name="Qogir-dark" + # gtk-font-name="Cantarell 9" + # gtk-cursor-theme-name="capitaine-cursors" + # gtk-cursor-theme-size=0 + # gtk-toolbar-style=GTK_TOOLBAR_ICONS + # gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR + # gtk-button-images=1 + # gtk-menu-images=1 + # gtk-enable-event-sounds=1 + # gtk-enable-input-feedback-sounds=1 + # gtk-xft-antialias=1 + # gtk-xft-hinting=1 + # gtk-xft-hintstyle="hintfull" + # gtk-xft-rgba="none" + # }; + }; + + qt = { + enable = true; + platformTheme = "gtk"; + }; + + xsession = { + numlock.enable = true; + pointerCursor = { + package = pkgs.qogir-icon-theme; + name = "Qogir"; + size = 24; + }; + }; +} diff --git a/modules/rofi.nix b/modules/rofi.nix index 9b263da..a79c40a 100644 --- a/modules/rofi.nix +++ b/modules/rofi.nix @@ -1,8 +1,11 @@ -{ config, pkgs, lib, ... }: - { - enable = true; - extraConfig = { - modi = "drun,run,ssh,window"; - }; + programs.rofi = { + enable = true; + extraConfig = { + modi = "drun,run,ssh,window"; + theme = "nord"; + }; + }; + + xdg.configFile."rofi/nord.rasi".source = ../configs/rofi/nord.rasi; } diff --git a/modules/sxhkd.nix b/modules/sxhkd.nix index e2bebc7..787d3be 100644 --- a/modules/sxhkd.nix +++ b/modules/sxhkd.nix @@ -7,41 +7,47 @@ let pulseaudioCtl = "${pkgs.pulseaudio-ctl}/bin/pulseaudio-ctl"; playerctl = "${pkgs.playerctl}/bin/playerctl"; alacritty = "${pkgs.alacritty}/bin/alacritty"; + terminator= "${pkgs.terminator}/bin/terminator"; rofi = "${pkgs.rofi}/bin/rofi"; bash = "${pkgs.bash}/bin/bash"; -in { - enable = true; - keybindings = { - "super + Return" = "${bash} ${alacritty}"; - "super + @space" = "${rofi} -show drun"; - "super + e" = "${nautilus} -w"; - "super + Escape" = "pkill -USR1 -x sxhkd"; - "super + {_,shift + }w" = "${bspc} node -{c,k}"; - "super + m" = "${bspc} desktop -l next"; - "super + y" = "${bspc} node newest.marked.local -n newest.!automatic.local"; - "super + g" = "${bspc} node -s biggest"; - "super + {t,shift + t,s,f}" = "${bspc} node -t {tiled,pseudo_tiled,floating,fullscreen}"; - "super + ctrl + {m,x,y,z}" = "${bspc} node -g {marked,locked,sticky,private}"; - "super + {_,shift + }{h,j,k,l}" = "${bspc} node -{f,s} {west,south,north,east}"; - "super + {p,b,comma,period}" = "${bspc} node -f @{parent,brother,first,second}"; - "super + {_,shift + }c" = "${bspc} node -f {next,prev}.local"; - "super + bracket{left,right}" = "${bspc} desktop -f {prev,next}.local"; - "super + {grave,Tab}" = "${bspc} {node,desktop} -f last"; - "super + {o,i}" = "${bspc} wm -h off;${bspc} node {older,newer} -f;${bspc} wm -h on"; - "super + {_,shift + }{1-9,0}" = "${bspc} {desktop -f,node -d} 'focused:^{1-9,10}'"; - "super + ctrl + {h,j,k,l}" = "${bspc} node -p {west,south,north,east}"; - "super + ctrl + {1-9}" = "${bspc} node -o 0.{1-9}"; - "super + ctrl + space" = "${bspc} node -p cancel"; - "super + ctrl + shift + space" = "${bspc} query -N -d | xargs -I id -n 1 ${bspc} node id -p cancel"; - "super + alt + {h,j,k,l}" = "${bspc} node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}"; - "super + alt + shift + {h,j,k,l}" = "${bspc} node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}"; - "super + {Left,Down,Up,Right}" = "${bspc} node -v {-20 0,0 20,0 -20,20 0}"; - "XF86AudioRaiseVolume" = "${pulseaudioCtl} up"; - "XF86AudioLowerVolume" = "${pulseaudioCtl} down"; - "XF86AudioMute" = "${pulseaudioCtl} mute"; - "XF86AudioPlay" = "${playerctl} play-pause"; - "XF86AudioNext" = "${playerctl} next"; - "XF86AudioPrev" = "${playerctl} previous"; +in + +{ + services.sxhkd = { + enable = true; + keybindings = { + "super + Return" = "${bash} -c ${alacritty} || ${terminator}"; + "super + @space" = "${rofi} -show drun"; + "super + e" = "${nautilus} -w"; + "super + Escape" = "pkill -USR1 -x sxhkd"; + "super + alt + {q,r}" = "${bspc} {quit,wm -r}"; + "super + {_,shift + }w" = "${bspc} node -{c,k}"; + "super + m" = "${bspc} desktop -l next"; + "super + y" = "${bspc} node newest.marked.local -n newest.!automatic.local"; + "super + g" = "${bspc} node -s biggest"; + "super + {t,shift + t,s,f}" = "${bspc} node -t {tiled,pseudo_tiled,floating,fullscreen}"; + "super + ctrl + {m,x,y,z}" = "${bspc} node -g {marked,locked,sticky,private}"; + "super + {_,shift + }{h,j,k,l}" = "${bspc} node -{f,s} {west,south,north,east}"; + "super + {p,b,comma,period}" = "${bspc} node -f @{parent,brother,first,second}"; + "super + {_,shift + }c" = "${bspc} node -f {next,prev}.local"; + "super + bracket{left,right}" = "${bspc} desktop -f {prev,next}.local"; + "super + {grave,Tab}" = "${bspc} {node,desktop} -f last"; + "super + {o,i}" = "${bspc} wm -h off;${bspc} node {older,newer} -f;${bspc} wm -h on"; + "super + {_,shift + }{1-9,0}" = "${bspc} {desktop -f,node -d} 'focused:^{1-9,10}'"; + "super + ctrl + {h,j,k,l}" = "${bspc} node -p {west,south,north,east}"; + "super + ctrl + {1-9}" = "${bspc} node -o 0.{1-9}"; + "super + ctrl + space" = "${bspc} node -p cancel"; + "super + ctrl + shift + space" = "${bspc} query -N -d | xargs -I id -n 1 ${bspc} node id -p cancel"; + "super + alt + {h,j,k,l}" = "${bspc} node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}"; + "super + alt + shift + {h,j,k,l}" = "${bspc} node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}"; + "super + {Left,Down,Up,Right}" = "${bspc} node -v {-20 0,0 20,0 -20,20 0}"; + "XF86AudioRaiseVolume" = "${pulseaudioCtl} up"; + "XF86AudioLowerVolume" = "${pulseaudioCtl} down"; + "XF86AudioMute" = "${pulseaudioCtl} mute"; + "XF86AudioPlay" = "${playerctl} play-pause"; + "XF86AudioNext" = "${playerctl} next"; + "XF86AudioPrev" = "${playerctl} previous"; + }; }; } diff --git a/modules/terminator.nix b/modules/terminator.nix new file mode 100644 index 0000000..4e5d540 --- /dev/null +++ b/modules/terminator.nix @@ -0,0 +1,8 @@ +{ pkgs, ... }: +{ + home.packages = with pkgs; [ + terminator + ]; + + xdg.configFile."terminator/config".source = ../configs/terminator/config; +}