diff --git a/config/hypr/hyprland.conf b/config/hypr/hyprland.conf index 1e0f6a2b..698bd245 100644 --- a/config/hypr/hyprland.conf +++ b/config/hypr/hyprland.conf @@ -30,7 +30,6 @@ env = QT_QPA_PLATFORM,wayland # exec-once = waybar & hyprpaper & firefox exec-once = swayosd exec-once = swww init; swww img ~/.local/share/dotfiles/images/wallpaper.jpg -exec-once = swaync exec-once = ironbar exec-once = nextcloud --background exec-once = /usr/lib/polkit-kde-authentication-agent-1 diff --git a/config/nix/home.nix b/config/nix/home.nix index 32caa5bf..b9af2cd7 100644 --- a/config/nix/home.nix +++ b/config/nix/home.nix @@ -12,6 +12,7 @@ # Include the results of the hardware scan. ./tmux.nix ./wezterm.nix + ./hyprland.nix ]; programs = { @@ -87,10 +88,10 @@ main = { shell = "${pkgs.fish.outPath}/bin/fish"; font = "Hasklug Nerd Font Mono:size=13"; + initial-window-size-pixels="1440x800"; }; colors = { foreground = "f8f8f2"; - initial-window-size-pixels="1440x800"; background=000000; alpha=0.8; @@ -122,6 +123,7 @@ home.packages = [ pkgs.macchina + pkgs.nixpkgs-fmt # # Adds the 'hello' command to your environment. It prints a friendly # # "Hello, world!" when run. # pkgs.hello @@ -157,7 +159,13 @@ EDITOR = "nvim"; SHELL = "${pkgs.fish.outPath}/bin/fish"; }; + home.sessionPath = [ + "${config.home.homeDirectory}/.local/bin" + "${config.home.homeDirectory}/.nix-profile/bin" + ]; # Let Home Manager install and manage itself. - programs.home-manager.enable = true; + programs.home-manager = { + enable = true; + }; } diff --git a/config/nix/hyprland.nix b/config/nix/hyprland.nix new file mode 100644 index 00000000..699e5040 --- /dev/null +++ b/config/nix/hyprland.nix @@ -0,0 +1,227 @@ +{ pkgs, ... }: { + wayland.windowManager.hyprland = { + enable = true; + settings = { + monitor = [ + ",preferred,auto,auto" + "DP-1, 2560x1440@170, 0x0, 1, transform, 0" + "HDMI-A-2, 2560x1440@144, -1440x-800,1, transform, 1" + ",highrr,auto,1" + ]; + + input = { + kb_layout = "us"; + # kb_variant = ""; + # kb_model = ""; + kb_options = "ctrl:nocaps"; + # kb_rules = ""; + + follow_mouse = 1; + + touchpad = { + natural_scroll = true; + tap-to-click = true; + disable_while_typing = true; + }; + }; + + general = { + gaps_in = 5; + gaps_out = 20; + border_size = 2; + "col.active_border" = "rgba(33ccffee) rgba(00ff99ee) 45deg"; + "col.inactive_border" = "rgba(595959aa)"; + }; + + decoration = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 10; + + + drop_shadow = true; + shadow_range = 4; + shadow_render_power = 3; + # col.shadow = "rgba(1a1a1aee)"; + + blur = { + enabled = true; + size = 3; + passes = 1; + }; + }; + + animations = { + enabled = true; + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = "myBezier, 0.05, 0.9, 0.1, 1.05"; + + animation = [ + "windows, 1, 7, myBezier" + "windowsOut, 1, 7, default, popin 80%" + "border, 1, 10, default" + "borderangle, 1, 8, default" + "fade, 1, 7, default" + "workspaces, 1, 6, default" + ]; + }; + + dwindle = { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = true; # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = true; # you probably want this + }; + + master = { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true; + }; + + gestures = { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + workspace_swipe = false; + }; + + # Example per-device config + # See https://wiki.hyprland.org/Configuring/Keywords/#executing for more + "device:epic-mouse-v1" = { + sensitivity = -0.5; + }; + + # Example windowrule v1 + # windowrule = float, ^(kitty)$ + # Example windowrule v2 + # windowrulev2 = float,class:^(kitty)$,title:^(kitty)$ + # See https://wiki.hyprland.org/Configuring/Window-Rules/ for more + + windowrule = [ + "float, title:^(Steam)$" + "float, title:^(Archetype.*)$" + ]; + + "misc:vfr" = true; + + env = [ + "XCURSOR_SIZE,24" + "XDG_SESSION_TYPE,wayland" + "MOZ_ENABLE_WAYLAND,1" + "QT_QPA_PLATFORM,wayland" + ]; + exec-once = [ + "swayosd" + "swww init; swww img ~/.local/share/dotfiles/images/wallpaper.jpg" + "ironbar" + "nextcloud --background" + "/usr/lib/polkit-kde-authentication-agent-1" + "/usr/local/bin/discord --enable-features=UseOzonePlatform --ozone-platform=wayland --start-minimized" + "/usr/lib/kdeconnectd" + "aa-notify -p -s 1 -w 60 -f /var/log/audit/audit.log" + ]; + + "$mainMod" = "SUPER"; + "$mainModShift" = "SUPER_SHIFT"; + + bind = [ + # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more + "$mainMod, Return, exec, foot" + "$mainModShift, Return, exec, wezterm" + "$mainModShift, Q, killactive," + # "$mainMod, M, exit," + "$mainMod, t, togglefloating," + "$mainMod, f, fullscreen," + "$mainMod, d, exec, anyrun" + "$mainMod, Space, exec, anyrun" + "$mainMod, p, pseudo, # dwindle" + "$mainMod, v, togglesplit, # dwindle" + "$mainMod, a, exec, swaync-client -t" + "$mainMod, Tab, cyclenext" + # Audio + ",xf86audioraisevolume, exec, swayosd --output-volume raise" + ",xf86audiolowervolume, exec, swayosd --output-volume lower" + ",xf86audiomute, exec, swayosd --output-volume mute-toggle" + ",xf86audioprev, exec, /home/fs0c131y/.cargo/bin/mctl prev" + ",xf86audionext, exec, /home/fs0c131y/.cargo/bin/mctl next" + ",xf86audioplay, exec, /home/fs0c131y/.cargo/bin/mctl toggle" + + # Screenshot + # "$mainMod,Print, exec, grim" + # "$mainModShift,Print, exec, grim -g "$(slurp)"" + "$mainModShift,s, exec, watershot" + + + # Move focus with mainMod + arrow keys + "$mainMod, left, movefocus, l" + "$mainMod, right, movefocus, r" + "$mainMod, up, movefocus, u" + "$mainMod, down, movefocus, d" + + "$mainMod, h, movefocus, l" + "$mainMod, j, movefocus, d" + "$mainMod, k, movefocus, u" + "$mainMod, l, movefocus, r" + + "$mainModShift, h, movewindow, l" + "$mainModShift, j, movewindow, d" + "$mainModShift, k, movewindow, u" + "$mainModShift, l, movewindow, r" + + # Switch workspaces with mainMod + [0-9] + "$mainMod, 1, workspace, 1" + "$mainMod, 2, workspace, 2" + "$mainMod, 3, workspace, 3" + "$mainMod, 4, workspace, 4" + "$mainMod, 5, workspace, 5" + "$mainMod, 6, workspace, 6" + "$mainMod, 7, workspace, 7" + "$mainMod, 8, workspace, 8" + "$mainMod, 9, workspace, 9" + "$mainMod, 0, workspace, 10" + + # Move active window to a workspace with mainMod + SHIFT + [0-9] + "$mainMod SHIFT, 1, movetoworkspace, 1" + "$mainMod SHIFT, 2, movetoworkspace, 2" + "$mainMod SHIFT, 3, movetoworkspace, 3" + "$mainMod SHIFT, 4, movetoworkspace, 4" + "$mainMod SHIFT, 5, movetoworkspace, 5" + "$mainMod SHIFT, 6, movetoworkspace, 6" + "$mainMod SHIFT, 7, movetoworkspace, 7" + "$mainMod SHIFT, 8, movetoworkspace, 8" + "$mainMod SHIFT, 9, movetoworkspace, 9" + "$mainMod SHIFT, 0, movetoworkspace, 10" + + + # Scroll through existing workspaces with mainMod + scroll + "$mainMod, mouse_down, workspace, e+1" + "$mainMod, mouse_up, workspace, e-1" + + + + "$mainMod, Tab, cyclenext, bind = ALT, Tab, bringactivetotop," + ]; + + # Move/resize windows with mainMod + LMB/RMB and dragging + + bindm = [ + "$mainMod, mouse:272, movewindow" + "$mainMod, mouse:273, resizewindow" + ]; + + workspace = [ + "1, monitor:DP-1" + "2, monitor:DP-1" + "3, monitor:DP-1" + "4, monitor:DP-1" + "5, monitor:DP-1" + "6, monitor:DP-1" + "7, monitor:DP-1" + "8, monitor:HDMI-A-2" + "9, monitor:HDMI-A-2" + "10, monitor:HDMI-A-2" + ]; + + }; + }; +} + diff --git a/config/nix/tmux.nix b/config/nix/tmux.nix index 9e86078f..6910ab76 100644 --- a/config/nix/tmux.nix +++ b/config/nix/tmux.nix @@ -19,6 +19,7 @@ in terminal = "tmux-256color"; prefix = "C-q"; historyLimit = 100000; + keyMode = "vi"; plugins = with pkgs; [ tmuxPlugins.better-mouse-mode @@ -45,13 +46,19 @@ in extraConfig = '' set -gw mode-keys vi set -g status-keys vi + set -g allow-passthrough on + set -ga update-environment TERM + set -ga update-environment TERM_PROGRAM + bind h select-pane -L bind j select-pane -D bind k select-pane -U bind l select-pane -R - set -g allow-passthrough on - set -ga update-environment TERM - set -ga update-environment TERM_PROGRAM + + bind C-n next-window + bind C-p previous-window + bind C-q last-window + if-shell 'uname | grep -q "Darwin"' { set -s copy-command "pbcopy" } if-shell 'uname | grep -q "Linux"' { set -s copy-command "wl-copy" } ''; diff --git a/config/nvim/lazy-lock.json b/config/nvim/lazy-lock.json index eaeecea1..6f2fda36 100644 --- a/config/nvim/lazy-lock.json +++ b/config/nvim/lazy-lock.json @@ -1,5 +1,5 @@ { - "LuaSnip": { "branch": "master", "commit": "2dbef19461198630b3d7c39f414d09fb07d1fdd2" }, + "LuaSnip": { "branch": "master", "commit": "04266a90ff213367c4159d78f3a60aa03d23ef8a" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" }, "cmp-git": { "branch": "main", "commit": "8d8993680d627c8f13bd85094eba84604107dbdd" }, @@ -8,53 +8,53 @@ "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, "comfortable-motion.vim": { "branch": "master", "commit": "e20aeafb07c6184727b29f7674530150f7ab2036" }, "copilot-cmp": { "branch": "master", "commit": "72fbaa03695779f8349be3ac54fa8bd77eed3ee3" }, - "copilot.lua": { "branch": "master", "commit": "71382c2efec76647287d46a4fbe0ec8c9809e2ee" }, + "copilot.lua": { "branch": "master", "commit": "03f825956ec49e550d07875d867ea6e7c4dc8c00" }, "d2-vim": { "branch": "master", "commit": "981c87dccb63df2887cc41b96e84bf550f736c57" }, "diffview.nvim": { "branch": "main", "commit": "3dc498c9777fe79156f3d32dddd483b8b3dbd95f" }, - "fidget.nvim": { "branch": "main", "commit": "1d1042d418ee8cb70d68f1e38db639844331c093" }, + "fidget.nvim": { "branch": "main", "commit": "ad8873c16faa123fe3f9fd6539c41dfb0f97a9e9" }, "formatter.nvim": { "branch": "master", "commit": "cb4778b8432f1ae86dae4634c0b611cb269a4c2f" }, "galaxyline.nvim": { "branch": "main", "commit": "4d4f5fc8e20a10824117e5beea7ec6e445466a8f" }, "git-conflict.nvim": { "branch": "main", "commit": "4c8e252b87d54d944c1e56bfb477f78b6fdaf661" }, "glow.nvim": { "branch": "main", "commit": "238070a686c1da3bccccf1079700eb4b5e19aea4" }, - "indent-blankline.nvim": { "branch": "master", "commit": "12e92044d313c54c438bd786d11684c88f6f78cd" }, + "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" }, "lazy.nvim": { "branch": "main", "commit": "aedcd79811d491b60d0a6577a9c1701063c2a609" }, "lazygit.nvim": { "branch": "main", "commit": "1e08e3f5ac1152339690140e61a4a32b3bdc7de5" }, "lsp-status.nvim": { "branch": "master", "commit": "54f48eb5017632d81d0fd40112065f1d062d0629" }, "lspsaga.nvim": { "branch": "main", "commit": "2198c07124bef27ef81335be511c8abfd75db933" }, - "mason-lspconfig.nvim": { "branch": "main", "commit": "2b3d247fce06f53934174f5dfe0362c42d65c00c" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "fe4cce44dec93c69be17dad79b21de867dde118a" }, "mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" }, "mini.nvim": { "branch": "main", "commit": "b5645ac6eefce8e7af9d7dd4e5e296a81cba8a10" }, - "neorg": { "branch": "main", "commit": "e6d89d333aff65a771a98955fac9fc178345c01c" }, - "no-neck-pain.nvim": { "branch": "main", "commit": "fc3cc9012d9720aca3203702447caa59bd93f1a6" }, + "neorg": { "branch": "main", "commit": "bd12dacc9cf561cbffc8d6f8f4b76aa9d734665b" }, + "no-neck-pain.nvim": { "branch": "main", "commit": "7ab539aaa083e92ef438d4cdc0261d8661916f1d" }, "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, "nvim-colorizer.lua": { "branch": "master", "commit": "36c610a9717cc9ec426a07c8e6bf3b3abcb139d6" }, - "nvim-dap": { "branch": "master", "commit": "9adbfdca13afbe646d09a8d7a86d5d031fb9c5a5" }, + "nvim-dap": { "branch": "master", "commit": "3b4bdea2c0e9ed356d8cffbf974f3d0af891bbea" }, "nvim-dap-ui": { "branch": "master", "commit": "d845ebd798ad1cf30aa4abd4c4eff795cdcfdd4f" }, - "nvim-lspconfig": { "branch": "master", "commit": "ac530dfb97e51d82e3b0a7cddbf7a4a7c4c10ff8" }, + "nvim-lspconfig": { "branch": "master", "commit": "c656fe5a58b9eae474f61d294648a897d53639cc" }, "nvim-nu": { "branch": "main", "commit": "f45f36a97fb0ea6e39f08cc2fac7a2fb3dc3999b" }, - "nvim-treesitter": { "branch": "master", "commit": "95125827758ee49a398cce05750dc9563ee3a23d" }, - "nvim-treesitter-context": { "branch": "master", "commit": "9c06b115abc57c99cf0aa81dc29490f5001f57a1" }, - "nvim-web-devicons": { "branch": "master", "commit": "aaec87dbdaa776bfa0a13c8694bec9bcb7454719" }, - "octo.nvim": { "branch": "master", "commit": "f8db415529f0a28f62484e49e3518b48e2b76644" }, + "nvim-treesitter": { "branch": "master", "commit": "5a5cabd712b8bd14768c72034479fb9cd176beb6" }, + "nvim-treesitter-context": { "branch": "master", "commit": "f33905bf5aec67e59a14d2cc0e67d80ac5aa5bd8" }, + "nvim-web-devicons": { "branch": "master", "commit": "7f30f2da3c3641841ceb0e2c150281f624445e8f" }, + "octo.nvim": { "branch": "master", "commit": "0d0abffed42b0e77aff286279fb7c958f1f79ce6" }, "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" }, "presence.nvim": { "branch": "main", "commit": "87c857a56b7703f976d3a5ef15967d80508df6e6" }, - "rest.nvim": { "branch": "main", "commit": "2d7bd3d398940ce2692941e6cd052c072207b9f9" }, + "rest.nvim": { "branch": "main", "commit": "9741f827bd88b588e5136d67c7963e1904f8f1f7" }, "ron.vim": { "branch": "master", "commit": "f749e543975a82e8dd9a6e7df9600a1c098ae800" }, "rustaceanvim": { "branch": "master", "commit": "bc8c4b8f7606d5b7c067cd8369e25c1a7ff77bd0" }, - "sonokai": { "branch": "master", "commit": "42822f8f9b3a5088f05cf72a0aa1477598ad1a40" }, + "sonokai": { "branch": "master", "commit": "a62656a798043f3c6b603efa98d4de2da89c72b2" }, "ssr.nvim": { "branch": "main", "commit": "bb323ba621ac647b4ac5638b47666e3ef3c279e1" }, "suda.vim": { "branch": "master", "commit": "8b0fc3711760195aba104e2d190cff9af8267052" }, "symbols-outline.nvim": { "branch": "master", "commit": "564ee65dfc9024bdde73a6621820866987cbb256" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "master", "commit": "7b5c5f56a21e82fdcfe5b250278b8dfc4b1cbab4" }, + "telescope.nvim": { "branch": "master", "commit": "eb88dc6434194bd8eebfcc6ade5dd36e850849ce" }, "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" }, - "toggleterm.nvim": { "branch": "main", "commit": "b49df5cdce67a8964d1b027dae94bde212092b51" }, + "toggleterm.nvim": { "branch": "main", "commit": "193786e0371e3286d3bc9aa0079da1cd41beaa62" }, "tree-sitter-just": { "branch": "main", "commit": "4f5d53b52a65771f9695df3f1a294d5c80b916fb" }, "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" }, "vim-abolish": { "branch": "master", "commit": "dcbfe065297d31823561ba787f51056c147aa682" }, "vim-commentary": { "branch": "master", "commit": "f67e3e67ea516755005e6cccb178bc8439c6d402" }, - "vim-fugitive": { "branch": "master", "commit": "f116dcc8e21021e6fbfb6b0a9f8f7b9566d933f4" }, + "vim-fugitive": { "branch": "master", "commit": "011cf4fcb93a9649ffc6dcdff56ef948f5d0f7cc" }, "vim-mergetool": { "branch": "master", "commit": "0275a85256ad173e3cde586d54f66566c01b607f" }, "vim-repeat": { "branch": "master", "commit": "24afe922e6a05891756ecf331f39a1f6743d3d5a" }, "vim-speeddating": { "branch": "master", "commit": "5a36fd29df63ea3f65562bd2bb837be48a5ec90b" }, diff --git a/config/nvim/lua/lsp.lua b/config/nvim/lua/lsp.lua index dcab70af..6849ac27 100644 --- a/config/nvim/lua/lsp.lua +++ b/config/nvim/lua/lsp.lua @@ -34,5 +34,17 @@ require("mason-lspconfig").setup_handlers { root_dir = lspconfig.util.root_pattern("compile_commands.json", "compile_flags.txt", ".git"), single_file_support = true, } + end, + ['nil_ls'] = function() + lspconfig.nil_ls.setup { + capabilities = capabilities, + settings = { + ['nil'] = { + formatting = { + command = { "nixpkgs-fmt" }, + } + } + } + }; end } diff --git a/config/nvim/lua/plugins.lua b/config/nvim/lua/plugins.lua index 78ae602f..a9d93cb7 100644 --- a/config/nvim/lua/plugins.lua +++ b/config/nvim/lua/plugins.lua @@ -26,7 +26,11 @@ return require('lazy').setup({ "Glow" }, 'samoshkin/vim-mergetool', - 'mhartington/formatter.nvim', + { + cmd = { "Format", "FormatWrite" }, + 'mhartington/formatter.nvim' + + }, -- 'christianrondeau/vim-base64', { 'tpope/vim-commentary', lazy = false },