diff --git a/home-nico.nix b/home-nico.nix index 18345d1..2b66987 100644 --- a/home-nico.nix +++ b/home-nico.nix @@ -16,7 +16,7 @@ }; home.packages = with pkgs; [ - brave + floorp ]; home.stateVersion = "24.05"; diff --git a/packages/default.nix b/packages/default.nix index 2af188b..8d4a8c4 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -11,7 +11,7 @@ ./kitty ./rofi ./tmux -# ./hyprland + ./hyprland # ./vscode ]; } diff --git a/packages/hyprland/colors.conf b/packages/hyprland/colors.conf index b435106..8ccb56a 100644 --- a/packages/hyprland/colors.conf +++ b/packages/hyprland/colors.conf @@ -1,2 +1,78 @@ -$borderActive = 0xffb072d1 -$borderInactive = 0xff292a37 + +$rosewater = rgb(f5e0dc) +$rosewaterAlpha = f5e0dc + +$flamingo = rgb(f2cdcd) +$flamingoAlpha = f2cdcd + +$pink = rgb(f5c2e7) +$pinkAlpha = f5c2e7 + +$mauve = rgb(cba6f7) +$mauveAlpha = cba6f7 + +$red = rgb(f38ba8) +$redAlpha = f38ba8 + +$maroon = rgb(eba0ac) +$maroonAlpha = eba0ac + +$peach = rgb(fab387) +$peachAlpha = fab387 + +$yellow = rgb(f9e2af) +$yellowAlpha = f9e2af + +$green = rgb(a6e3a1) +$greenAlpha = a6e3a1 + +$teal = rgb(94e2d5) +$tealAlpha = 94e2d5 + +$sky = rgb(89dceb) +$skyAlpha = 89dceb + +$sapphire = rgb(74c7ec) +$sapphireAlpha = 74c7ec + +$blue = rgb(89b4fa) +$blueAlpha = 89b4fa + +$lavender = rgb(b4befe) +$lavenderAlpha = b4befe + +$text = rgb(cdd6f4) +$textAlpha = cdd6f4 + +$subtext1 = rgb(bac2de) +$subtext1Alpha = bac2de + +$subtext0 = rgb(a6adc8) +$subtext0Alpha = a6adc8 + +$overlay2 = rgb(9399b2) +$overlay2Alpha = 9399b2 + +$overlay1 = rgb(7f849c) +$overlay1Alpha = 7f849c + +$overlay0 = rgb(6c7086) +$overlay0Alpha = 6c7086 + +$surface2 = rgb(585b70) +$surface2Alpha = 585b70 + +$surface1 = rgb(45475a) +$surface1Alpha = 45475a + +$surface0 = rgb(313244) +$surface0Alpha = 313244 + +$base = rgb(1e1e2e) +$baseAlpha = 1e1e2e + +$mantle = rgb(181825) +$mantleAlpha = 181825 + +$crust = rgb(11111b) +$crustAlpha = 11111b diff --git a/packages/hyprland/hyprland.conf b/packages/hyprland/hyprland.conf index fffc7ac..a51f8c4 100644 --- a/packages/hyprland/hyprland.conf +++ b/packages/hyprland/hyprland.conf @@ -3,10 +3,10 @@ monitor=eDP-1,preferred,0x0,1 -source = ~/.config/hypr/startup.conf +source = ~/.config/hypr/colors.conf source = ~/.config/hypr/setup.conf source = ~/.config/hypr/rules.conf source = ~/.config/hypr/keybinds.conf -source = ~/.config/hypr/colors.conf source = ~/.config/hypr/theme.conf +source = ~/.config/hypr/startup.conf diff --git a/packages/hyprland/keybinds.conf b/packages/hyprland/keybinds.conf index 9d1fbe5..85effbe 100644 --- a/packages/hyprland/keybinds.conf +++ b/packages/hyprland/keybinds.conf @@ -2,24 +2,26 @@ $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $mainMod, RETURN, exec, kitty -bind = $mainMod, Q, exec, brave +bind = $mainMod, B, exec, floorp bind = SUPER, BackSpace, killactive, -bind = SUPER_SHIFT, P, exec, sudo shutdown now -bind = SUPER_SHIFT, R, exec, sudo reboot now -bind = $mainMod, M, exec, hyprctl dispatch exit +bind = SUPER_SHIFT, P, exec, rofi -show power-menu -modi power-menu:rofi-power-menu +bind = $mainMod, M, exec, rofi -show drun +bind = $mainMod, M, exec, rofi -show power-menu -modi power-menu:rofi-power-menurofi -show drun #bind = $mainMod, E, exec, dolphin -bind = $mainMod, V, togglefloating, +bind = $mainMod, Space, togglefloating, +bind = $mainMod, S, exec, rofi-screenshot, + # bind = $mainMod, R, exec, rofi -show drun #bind = $mainMod, P, pseudo, # dwindle -bind = $mainMod, J, togglesplit, # dwindle +#bind = $mainMod, J, togglesplit, # dwindle bind = $mainMod, F, fullscreen,1 bind = SUPER_SHIFT, F, fullscreen,0 # Move focus with mainMod + arrow keys -bind = $mainMod, left, movefocus, l -bind = $mainMod, right, movefocus, r -bind = $mainMod, up, movefocus, u -bind = $mainMod, down, movefocus, d +bind = $mainMod, H, movefocus, l +bind = $mainMod, L, movefocus, r +bind = $mainMod, K, movefocus, u +bind = $mainMod, J, movefocus, d # Switch workspaces with mainMod + [0-9] bind = $mainMod, 1, workspace, 1 diff --git a/packages/hyprland/rules.conf b/packages/hyprland/rules.conf index a3f2fa5..291575c 100644 --- a/packages/hyprland/rules.conf +++ b/packages/hyprland/rules.conf @@ -1,78 +1,106 @@ -# ######## Window rules ######## -windowrule = noblur,.* -# windowrule = opacity 0.89 override 0.89 override, .* # Applies transparency to EVERY WINDOW -windowrule = float, ^(blueberry.py)$ -windowrule = float, ^(steam)$ -windowrule = float, ^(guifetch)$ # FlafyDev/guifetch -windowrulev2 = tile, class:(dev.warp.Warp) -windowrulev2 = float, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$ -windowrule = center, title:^(Open File)(.*)$ -windowrule = center, title:^(Select a File)(.*)$ -windowrule = center, title:^(Choose wallpaper)(.*)$ -windowrule = center, title:^(Open Folder)(.*)$ -windowrule = center, title:^(Save As)(.*)$ -windowrule = center, title:^(Library)(.*)$ -windowrule = center, title:^(File Upload)(.*)$ -# Dialogs -windowrule=float,title:^(Open File)(.*)$ -windowrule=float,title:^(Select a File)(.*)$ -windowrule=float,title:^(Choose wallpaper)(.*)$ -windowrule=float,title:^(Open Folder)(.*)$ -windowrule=float,title:^(Save As)(.*)$ -windowrule=float,title:^(Library)(.*)$ -windowrule=float,title:^(File Upload)(.*)$ +# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀ +# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█ -# Tearing -windowrule=immediate,.*\.exe -windowrulev2=immediate,class:(steam_app) +# See https://wiki.hyprland.org/Configuring/Window-Rules/ -# No shadow for tiled windows -windowrulev2 = noshadow,floating:0 +windowrulev2 = opacity 0.90 0.90,class:^(firefox)$ +windowrulev2 = opacity 0.90 0.90,class:^(Google-chrome)$ +windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-oss)$ +windowrulev2 = opacity 0.80 0.80,class:^([Cc]ode)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-url-handler)$ +windowrulev2 = opacity 0.80 0.80,class:^(code-insiders-url-handler)$ +windowrulev2 = opacity 0.80 0.80,class:^(kitty)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.kde.dolphin)$ +windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$ +windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(qt6ct)$ +windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.pulseaudio.pavucontrol)$ +windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$ +windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.70,class:^(polkit-gnome-authentication-agent-1)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.gtk)$ +windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.hyprland)$ +windowrulev2 = opacity 0.70 0.70,class:^([Ss]team)$ +windowrulev2 = opacity 0.70 0.70,class:^(steamwebhelper)$ +windowrulev2 = opacity 0.70 0.70,class:^([Ss]potify)$ +windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Free)$ +windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Premium)$ -# ######## Layer rules ######## -layerrule = xray 1, .* -# layerrule = noanim, .* -layerrule = noanim, walker -layerrule = noanim, selection -layerrule = noanim, overview -layerrule = noanim, anyrun -layerrule = noanim, indicator.* -layerrule = noanim, osk -layerrule = noanim, hyprpicker -layerrule = blur, shell:* -layerrule = ignorealpha 0.6, shell:* +windowrulev2 = opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt +windowrulev2 = opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(vesktop)$ # Vesktop +windowrulev2 = opacity 0.80 0.80,class:^(discord)$ # Discord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ # WebCord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron +windowrulev2 = opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt +windowrulev2 = opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(Signal)$ # Signal-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk +windowrulev2 = opacity 0.80 0.80,class:^(io.github.flattool.Warehouse)$ # Warehouse-Gtk -layerrule = noanim, noanim -layerrule = blur, gtk-layer-shell -layerrule = ignorezero, gtk-layer-shell -layerrule = blur, launcher -layerrule = ignorealpha 0.5, launcher -layerrule = blur, notifications -layerrule = ignorealpha 0.69, notifications +windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$ +windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$ +windowrulev2 = float,title:^(About Mozilla Firefox)$ +windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$ +windowrulev2 = float,class:^(firefox)$,title:^(Library)$ +windowrulev2 = float,class:^(kitty)$,title:^(top)$ +windowrulev2 = float,class:^(kitty)$,title:^(btop)$ +windowrulev2 = float,class:^(kitty)$,title:^(htop)$ +windowrulev2 = float,class:^(vlc)$ +windowrulev2 = float,class:^(kvantummanager)$ +windowrulev2 = float,class:^(qt5ct)$ +windowrulev2 = float,class:^(qt6ct)$ +windowrulev2 = float,class:^(nwg-look)$ +windowrulev2 = float,class:^(org.kde.ark)$ +windowrulev2 = float,class:^(org.pulseaudio.pavucontrol)$ +windowrulev2 = float,class:^(blueman-manager)$ +windowrulev2 = float,class:^(nm-applet)$ +windowrulev2 = float,class:^(nm-connection-editor)$ +windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$ -# ags -layerrule = animation slide top, sideleft.* -layerrule = animation slide top, sideright.* -layerrule = blur, session +windowrulev2 = float,class:^(Signal)$ # Signal-Gtk +windowrulev2 = float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk +windowrulev2 = float,class:^(app.drey.Warp)$ # Warp-Gtk +windowrulev2 = float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt +windowrulev2 = float,class:^(yad)$ # Protontricks-Gtk +windowrulev2 = float,class:^(eog)$ # Imageviewer-Gtk +windowrulev2 = float,class:^(io.github.alainm23.planify)$ # planify-Gtk +windowrulev2 = float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk +windowrulev2 = float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk +windowrulev2 = float,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk +windowrulev2 = float,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk -layerrule = blur, bar -layerrule = ignorealpha 0.6, bar -layerrule = blur, corner.* -layerrule = ignorealpha 0.6, corner.* -layerrule = blur, dock -layerrule = ignorealpha 0.6, dock -layerrule = blur, indicator.* -layerrule = ignorealpha 0.6, indicator.* -layerrule = blur, overview -layerrule = ignorealpha 0.6, overview -layerrule = blur, cheatsheet -layerrule = ignorealpha 0.6, cheatsheet -layerrule = blur, sideright -layerrule = ignorealpha 0.6, sideright -layerrule = blur, sideleft -layerrule = ignorealpha 0.6, sideleft -layerrule = blur, indicator* -layerrule = ignorealpha 0.6, indicator* -layerrule = blur, osk -layerrule = ignorealpha 0.6, osk +# common modals +windowrule = float,title:^(Open)$ +windowrule = float,title:^(Choose Files)$ +windowrule = float,title:^(Save As)$ +windowrule = float,title:^(Confirm to replace files)$ +windowrule = float,title:^(File Operation Progress)$ +windowrulev2 = float,class:^(xdg-desktop-portal-gtk)$ + +# █░░ ▄▀█ █▄█ █▀▀ █▀█   █▀█ █░█ █░░ █▀▀ █▀ +# █▄▄ █▀█ ░█░ ██▄ █▀▄   █▀▄ █▄█ █▄▄ ██▄ ▄█ + +layerrule = blur,rofi +layerrule = ignorezero,rofi +layerrule = blur,notifications +layerrule = ignorezero,notifications +layerrule = blur,swaync-notification-window +layerrule = ignorezero,swaync-notification-window +layerrule = blur,swaync-control-center +layerrule = ignorezero,swaync-control-center +layerrule = blur,logout_dialog diff --git a/packages/hyprland/setup.conf b/packages/hyprland/setup.conf index 56bf83f..9f73932 100644 --- a/packages/hyprland/setup.conf +++ b/packages/hyprland/setup.conf @@ -1,9 +1,10 @@ input { - kb_layout = de + kb_layout = us,de kb_variant = kb_model = kb_options = kb_rules = + kb_options=alt_space_toggle follow_mouse = 1 @@ -18,8 +19,8 @@ general { gaps_in=6 gaps_out=12 border_size=4 - col.active_border=$borderActive - col.inactive_border=$borderInactive + col.active_border=$mauve + col.inactive_border=$base } misc { @@ -36,9 +37,9 @@ decoration { enabled = true xray = true } - drop_shadow=true - shadow_range=4 - col.shadow=0x66000000 +# drop_shadow=true +# shadow_range=4 +# col.shadow=0x66000000 } animations { diff --git a/packages/hyprland/startup.conf b/packages/hyprland/startup.conf index fd9927e..269bd23 100644 --- a/packages/hyprland/startup.conf +++ b/packages/hyprland/startup.conf @@ -1 +1 @@ -exec-once=asztal +exec-once=waybar diff --git a/packages/hyprland/theme.conf b/packages/hyprland/theme.conf index 147413f..0b00215 100644 --- a/packages/hyprland/theme.conf +++ b/packages/hyprland/theme.conf @@ -22,7 +22,7 @@ group { decoration { rounding = 10 - drop_shadow = false +# drop_shadow = false blur { enabled = yes diff --git a/packages/nvim/default.nix b/packages/nvim/default.nix index 8ff19b7..6cf851a 100644 --- a/packages/nvim/default.nix +++ b/packages/nvim/default.nix @@ -2,7 +2,10 @@ { home.packages = with pkgs; [ - + lua-language-server + nil + ripgrep + lldb ]; programs.neovim = { @@ -13,19 +16,28 @@ programs.neovim = { programs.neovim.plugins = [ pkgs.vimPlugins.lazy-nvim + pkgs.vimPlugins.nvim-lspconfig ]; home.file = lib.mkMerge [ { - ".config/nvim/init.lua".source = ./init.lua; + ".config/nvim/init.lua".source = ./init.lua; ".config/nvim/lua/config/lazy.lua".source = ./lua/config/lazy.lua; - ".config/nvim/lua/plugins/flutter.lua".source = ./lua/plugins/flutter.lua; +# ".config/nvim/lua/plugins/flutter.lua".source = ./lua/plugins/flutter.lua; ".config/nvim/lua/plugins/coq.lua".source = ./lua/plugins/coq.lua; ".config/nvim/lua/plugins/treesitter.lua".source = ./lua/plugins/treesitter.lua; ".config/nvim/lua/plugins/catppuccin.lua".source = ./lua/plugins/catppuccin.lua; ".config/nvim/lua/plugins/telescope.lua".source = ./lua/plugins/telescope.lua; ".config/nvim/lua/plugins/highlight-colors.lua".source = ./lua/plugins/highlight-colors.lua; + ".config/nvim/lua/plugins/comment.lua".source = ./lua/plugins/comment.lua; +# ".config/nvim/lua/plugins/lazydev.lua".source = ./lua/plugins/lazydev.lua; + ".config/nvim/lua/plugins/lualine.lua".source = ./lua/plugins/lualine.lua; + ".config/nvim/lua/plugins/whichkey.lua".source = ./lua/plugins/whichkey.lua; + ".config/nvim/lua/plugins/trouble.lua".source = ./lua/plugins/trouble.lua; + ".config/nvim/lua/plugins/dap.lua".source = ./lua/plugins/dap.lua; + ".config/nvim/lua/plugins/blankline.lua".source = ./lua/plugins/blankline.lua; + ".config/nvim/lua/plugins/rustaceanvim.lua".source = ./lua/plugins/rustaceanvim.lua; } ]; } diff --git a/packages/nvim/default.nix.backup b/packages/nvim/default.nix.backup new file mode 100644 index 0000000..34a3cbc --- /dev/null +++ b/packages/nvim/default.nix.backup @@ -0,0 +1,36 @@ +{ inputs, pkgs, lib, config, ...}: +{ + imports = [ inputs.nvf.homeManagerModules.default ]; + + programs.nvf = { + enable = true; + # your settings need to go into the settings attribute set + # most settings are documented in the appendix + settings = { + vim.viAlias = false; + vim.vimAlias = true; + + vim.theme = { + enable = true; + name = "catppuccin"; + style = "mocha"; + }; + + vim.statusline.lualine.enable = true; + vim.binds.cheatsheet.enable = true; + vim.binds.whichKey.enable = true; + vim.projects.project-nvim.setupOpts.show_hidden = true; + vim.telescope.enable = true; + vim.autocomplete.blink-cmp.enable = true; + + + vim.lsp = { + enable = false; + }; + vim.languages.clang.enable = true; + vim.languages.rust.enable = true; + + + }; + }; +} diff --git a/packages/nvim/default.nix~ b/packages/nvim/default.nix~ new file mode 100644 index 0000000..8ff19b7 --- /dev/null +++ b/packages/nvim/default.nix~ @@ -0,0 +1,31 @@ +{ pkgs, config, lib,... }: +{ + + home.packages = with pkgs; [ + + ]; + +programs.neovim = { + enable = true; + vimAlias = true; +}; + + +programs.neovim.plugins = [ + pkgs.vimPlugins.lazy-nvim +]; + + home.file = + lib.mkMerge [ + { + ".config/nvim/init.lua".source = ./init.lua; + ".config/nvim/lua/config/lazy.lua".source = ./lua/config/lazy.lua; + ".config/nvim/lua/plugins/flutter.lua".source = ./lua/plugins/flutter.lua; + ".config/nvim/lua/plugins/coq.lua".source = ./lua/plugins/coq.lua; + ".config/nvim/lua/plugins/treesitter.lua".source = ./lua/plugins/treesitter.lua; + ".config/nvim/lua/plugins/catppuccin.lua".source = ./lua/plugins/catppuccin.lua; + ".config/nvim/lua/plugins/telescope.lua".source = ./lua/plugins/telescope.lua; + ".config/nvim/lua/plugins/highlight-colors.lua".source = ./lua/plugins/highlight-colors.lua; + } + ]; +} diff --git a/packages/nvim/init.lua b/packages/nvim/init.lua index c720801..1a05e1c 100644 --- a/packages/nvim/init.lua +++ b/packages/nvim/init.lua @@ -31,15 +31,12 @@ vim.keymap.set('n', '', ':resize +2', opts) vim.keymap.set('n', '', ':vertical resize -2', opts) vim.keymap.set('n', '', ':vertical resize +2', opts) --- Telescope binds -vim.keymap.set("n", "fb", ":Telescope file_browser") - vim.keymap.set('i', 'jk', '', opts) -- Lazy require("config.lazy") -require("flutter-tools").setup {} -- use defaults +-- require("flutter-tools").setup {} -- use defaults require("catppuccin").setup({ integrations = { cmp = false, @@ -54,8 +51,117 @@ require("catppuccin").setup({ } }) + -- css colors vim.opt.termguicolors = true require('nvim-highlight-colors').setup({}) vim.cmd.colorscheme "catppuccin" + + + +-- lsp +local on_attach = function(_, bufnr) + + local bufmap = function(keys, func) + vim.keymap.set('n', keys, func, { buffer = bufnr }) + end + + bufmap('r', vim.lsp.buf.rename) + bufmap('a', vim.lsp.buf.code_action) + + bufmap('gd', vim.lsp.buf.definition) + bufmap('gD', vim.lsp.buf.declaration) + bufmap('gI', vim.lsp.buf.implementation) + bufmap('D', vim.lsp.buf.type_definition) + + bufmap('gr', require('telescope.builtin').lsp_references) + bufmap('s', require('telescope.builtin').lsp_document_symbols) + bufmap('S', require('telescope.builtin').lsp_dynamic_workspace_symbols) + + bufmap('K', vim.lsp.buf.hover) + + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, {}) +end + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('coq').lsp_ensure_capabilities(capabilities) + +require('lspconfig').lua_ls.setup { + on_attach = on_attach, + capabilities = capabilities, + root_dir = function() + return vim.loop.cwd() + end, + cmd = { "lua-language-server" }, + settings = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + } +} + +require('lspconfig').nil_ls.setup { + on_attach = on_attach, + capabilities = capabilities, +} + +--[[ require('lspconfig').rust_analyzer.setup { + on_attach = on_attach, + capabilities = capabilities, +} ]] + + + +-- Plugin setups +require('lualine').setup() +require("dapui").setup() +require("ibl").setup() + +-- -- Debugger +local dap, dapui = require("dap"), require("dapui") +dap.listeners.before.attach.dapui_config = function() + dapui.open() +end +dap.listeners.before.launch.dapui_config = function() + dapui.open() +end +dap.listeners.before.event_terminated.dapui_config = function() + dapui.close() +end +dap.listeners.before.event_exited.dapui_config = function() + dapui.close() +end + +-- c und rust +dap.adapters.lldb = { + type = 'executable', + command = 'lldb', -- adjust as needed, must be absolute path + name = 'lldb' +} +dap.configurations.c = dap.configurations.cpp +dap.configurations.rust = dap.configurations.cpp + +-------------------------------------------- +local builtin = require('telescope.builtin') +-- Telescope binds +vim.keymap.set('n', 'ff', builtin.find_files, { desc = 'Telescope find files' }) +vim.keymap.set('n', 'fg', builtin.live_grep, { desc = 'Telescope live grep' }) +vim.keymap.set('n', 'fb', ":Telescope file_browser", { desc = 'Telescope file_browser' }) +vim.keymap.set('n', 'fh', builtin.help_tags, { desc = 'Telescope help tags' }) + +-- Dap binds +vim.keymap.set('n', 'do', dapui.open, { desc = "Open debug overlay" }) +vim.keymap.set('n', 'dc', dapui.close, { desc = "Close debug overlay" }) +vim.keymap.set('n', '', dap.toggle_breakpoint, { desc = "Close debug overlay" }) +vim.keymap.set('n', '', dap.continue, { desc = "Close debug overlay" }) +vim.keymap.set('n', '', dap.step_over, { desc = "Close debug overlay" }) +vim.keymap.set('n', '', dap.step_into, { desc = "Close debug overlay" }) + + + + + diff --git a/packages/nvim/init.lua~ b/packages/nvim/init.lua~ new file mode 100644 index 0000000..6c68a37 --- /dev/null +++ b/packages/nvim/init.lua~ @@ -0,0 +1,113 @@ +-- Tab +vim.opt.tabstop = 2 -- number of visual spaces per TAB +vim.opt.softtabstop = 2 -- number of spacesin tab when editing +vim.opt.shiftwidth = 2 -- insert 4 spaces on a tab +vim.opt.expandtab = true -- tabs are spaces, mainly because of python + +-- UI config +vim.opt.number = true -- show absolute number +vim.opt.relativenumber = true -- add numbers to each line on the left side +vim.opt.splitbelow = true -- open new vertical split bottom +vim.opt.splitright = true -- open new horizontal splits right +-- vim.opt.termguicolors = true -- enabl 24-bit RGB color in the TUI +vim.opt.showmode = false -- we are experienced, wo don't need the "-- INSERT --" mode hint + +-- Searching +vim.opt.incsearch = true -- search as characters are entered +vim.opt.hlsearch = false -- do not highlight matches +vim.opt.ignorecase = true -- ignore case in searches by default +vim.opt.smartcase = true -- but make it case sensitive if an uppercase is entered + +-- -- Keybinds +vim.keymap.set('n', '', 'h', opts) +vim.keymap.set('n', '', 'j', opts) +vim.keymap.set('n', '', 'k', opts) +vim.keymap.set('n', '', 'l', opts) + +-- Resize with arrows +-- delta: 2 lines +vim.keymap.set('n', '', ':resize -2', opts) +vim.keymap.set('n', '', ':resize +2', opts) +vim.keymap.set('n', '', ':vertical resize -2', opts) +vim.keymap.set('n', '', ':vertical resize +2', opts) + +-- Telescope binds +vim.keymap.set("n", "fb", ":Telescope file_browser") + + +vim.keymap.set('i', 'jk', '', opts) + +-- Lazy +require("config.lazy") +-- require("flutter-tools").setup {} -- use defaults +require("catppuccin").setup({ + integrations = { + cmp = false, + gitsigns = true, + nvimtree = true, + treesitter = true, + notify = false, + mini = { + enabled = false, + indentscope_color = "", + }, + } +}) + +-- css colors +vim.opt.termguicolors = true +require('nvim-highlight-colors').setup({}) + +vim.cmd.colorscheme "catppuccin" + + + + +-- lsp +local on_attach = function(_, bufnr) + + local bufmap = function(keys, func) + vim.keymap.set('n', keys, func, { buffer = bufnr }) + end + + bufmap('r', vim.lsp.buf.rename) + bufmap('a', vim.lsp.buf.code_action) + + bufmap('gd', vim.lsp.buf.definition) + bufmap('gD', vim.lsp.buf.declaration) + bufmap('gI', vim.lsp.buf.implementation) + bufmap('D', vim.lsp.buf.type_definition) + + bufmap('gr', require('telescope.builtin').lsp_references) + bufmap('s', require('telescope.builtin').lsp_document_symbols) + bufmap('S', require('telescope.builtin').lsp_dynamic_workspace_symbols) + + bufmap('K', vim.lsp.buf.hover) + + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, {}) +end + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('coq').lsp_ensure_capabilities(capabilities) + +require('lspconfig').lua_ls.setup { + on_attach = on_attach, + capabilities = capabilities, + root_dir = function() + return vim.loop.cwd() + end, + cmd = { "lua-lsp" }, + settings = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + } +} + +require('lspconfig').nil_ls.setup { + on_attach = on_attach, + capabilities = capabilities, +} diff --git a/packages/nvim/lua/plugins/blankline.lua b/packages/nvim/lua/plugins/blankline.lua new file mode 100644 index 0000000..a1e1bc9 --- /dev/null +++ b/packages/nvim/lua/plugins/blankline.lua @@ -0,0 +1,7 @@ +return { + "lukas-reineke/indent-blankline.nvim", + main = "ibl", + ---@module "ibl" + ---@type ibl.config + opts = {}, +} diff --git a/packages/nvim/lua/plugins/comment.lua b/packages/nvim/lua/plugins/comment.lua new file mode 100644 index 0000000..1871cef --- /dev/null +++ b/packages/nvim/lua/plugins/comment.lua @@ -0,0 +1,6 @@ +return { + 'numToStr/Comment.nvim', + opts = { + -- add any options here + } +} diff --git a/packages/nvim/lua/plugins/comment.lua~ b/packages/nvim/lua/plugins/comment.lua~ new file mode 100644 index 0000000..e69de29 diff --git a/packages/nvim/lua/plugins/dap.lua b/packages/nvim/lua/plugins/dap.lua new file mode 100644 index 0000000..4be4d3f --- /dev/null +++ b/packages/nvim/lua/plugins/dap.lua @@ -0,0 +1 @@ +return { "rcarriga/nvim-dap-ui", dependencies = {"mfussenegger/nvim-dap", "nvim-neotest/nvim-nio"} } diff --git a/packages/nvim/lua/plugins/lazydev.lua b/packages/nvim/lua/plugins/lazydev.lua new file mode 100644 index 0000000..efa06f2 --- /dev/null +++ b/packages/nvim/lua/plugins/lazydev.lua @@ -0,0 +1,33 @@ +return { + { + "folke/lazydev.nvim", + ft = "lua", -- only load on lua files + opts = { + library = { + -- See the configuration section for more details + -- Load luvit types when the `vim.uv` word is found + { path = "${3rd}/luv/library", words = { "vim%.uv" } }, + }, + }, + }, + { -- optional blink completion source for require statements and module annotations + "saghen/blink.cmp", + build = 'cargo +nightly build --release', + + opts = { + sources = { + -- add lazydev to your completion providers + default = { "lazydev", "lsp", "path", "snippets", "buffer" }, + providers = { + lazydev = { + name = "LazyDev", + module = "lazydev.integrations.blink", + -- make lazydev completions top priority (see `:h blink.cmp`) + score_offset = 100, + }, + }, + }, + }, + } + -- { "folke/neodev.nvim", enabled = false }, -- make sure to uninstall or disable neodev.nvim +} \ No newline at end of file diff --git a/packages/nvim/lua/plugins/lazydev.lua~ b/packages/nvim/lua/plugins/lazydev.lua~ new file mode 100644 index 0000000..e69de29 diff --git a/packages/nvim/lua/plugins/lsp.lua b/packages/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..dfeed66 --- /dev/null +++ b/packages/nvim/lua/plugins/lsp.lua @@ -0,0 +1,53 @@ +local on_attach = function(_, bufnr) + + local bufmap = function(keys, func) + vim.keymap.set('n', keys, func, { buffer = bufnr }) + end + + bufmap('r', vim.lsp.buf.rename) + bufmap('a', vim.lsp.buf.code_action) + + bufmap('gd', vim.lsp.buf.definition) + bufmap('gD', vim.lsp.buf.declaration) + bufmap('gI', vim.lsp.buf.implementation) + bufmap('D', vim.lsp.buf.type_definition) + + bufmap('gr', require('telescope.builtin').lsp_references) + bufmap('s', require('telescope.builtin').lsp_document_symbols) + bufmap('S', require('telescope.builtin').lsp_dynamic_workspace_symbols) + + bufmap('K', vim.lsp.buf.hover) + + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, {}) +end + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('coq').lsp_capabilities(capabilities) -- COQ spezifische Fähigkeiten + +require('neodev').setup() +require('lspconfig').lua_ls.setup { + on_attach = on_attach, + capabilities = capabilities, + root_dir = function() + return vim.loop.cwd() + end, + cmd = { "lua-language-server" }, + settings = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + } +} + +require('lspconfig').nil_ls.setup { + on_attach = on_attach, + capabilities = capabilities, +} + +require('lspconfig').rust_analyzer.setup { +on_attach = on_attach, +capabilities = capabilities, +} \ No newline at end of file diff --git a/packages/nvim/lua/plugins/lsp.lua~ b/packages/nvim/lua/plugins/lsp.lua~ new file mode 100644 index 0000000..287bf50 --- /dev/null +++ b/packages/nvim/lua/plugins/lsp.lua~ @@ -0,0 +1,13 @@ +return +{ + "neovim/nvim-lspconfig", + opts = function() + local keys = require("lazyvim.plugins.lsp.keymaps").get() + -- change a keymap + keys[#keys + 1] = { "K", "echo 'hello'" } + -- disable a keymap + keys[#keys + 1] = { "K", false } + -- add a keymap + keys[#keys + 1] = { "H", "echo 'hello'" } + end, +} \ No newline at end of file diff --git a/packages/nvim/lua/plugins/lualine.lua b/packages/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..58ecd08 --- /dev/null +++ b/packages/nvim/lua/plugins/lualine.lua @@ -0,0 +1,5 @@ +return { + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' } + +} diff --git a/packages/nvim/lua/plugins/lualine.lua~ b/packages/nvim/lua/plugins/lualine.lua~ new file mode 100644 index 0000000..e69de29 diff --git a/packages/nvim/lua/plugins/rustaceanvim.lua b/packages/nvim/lua/plugins/rustaceanvim.lua new file mode 100644 index 0000000..46c4c82 --- /dev/null +++ b/packages/nvim/lua/plugins/rustaceanvim.lua @@ -0,0 +1,5 @@ +return { + 'mrcjkb/rustaceanvim', + version = '^5', -- Recommended + lazy = false, -- This plugin is already lazy +} diff --git a/packages/nvim/lua/plugins/trouble.lua b/packages/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..3741f30 --- /dev/null +++ b/packages/nvim/lua/plugins/trouble.lua @@ -0,0 +1,37 @@ +return { + "folke/trouble.nvim", + opts = {}, -- for default options, refer to the configuration section for custom setup. + cmd = "Trouble", + keys = { + { + "xx", + "Trouble diagnostics toggle", + desc = "Diagnostics (Trouble)", + }, + { + "xX", + "Trouble diagnostics toggle filter.buf=0", + desc = "Buffer Diagnostics (Trouble)", + }, + { + "cs", + "Trouble symbols toggle focus=false", + desc = "Symbols (Trouble)", + }, + { + "cl", + "Trouble lsp toggle focus=false win.position=right", + desc = "LSP Definitions / references / ... (Trouble)", + }, + { + "xL", + "Trouble loclist toggle", + desc = "Location List (Trouble)", + }, + { + "xQ", + "Trouble qflist toggle", + desc = "Quickfix List (Trouble)", + }, + }, +} diff --git a/packages/nvim/lua/plugins/whichkey.lua b/packages/nvim/lua/plugins/whichkey.lua new file mode 100644 index 0000000..d62b7b7 --- /dev/null +++ b/packages/nvim/lua/plugins/whichkey.lua @@ -0,0 +1,18 @@ +return { + "folke/which-key.nvim", + event = "VeryLazy", + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + }, + keys = { + { + "?", + function() + require("which-key").show({ global = false }) + end, + desc = "Buffer Local Keymaps (which-key)", + }, + }, +} \ No newline at end of file diff --git a/packages/nvim/lua/plugins/whichkey.lua~ b/packages/nvim/lua/plugins/whichkey.lua~ new file mode 100644 index 0000000..e69de29 diff --git a/packages/nvim/nvim/config/lazy.lua b/packages/nvim/nvim/config/lazy.lua new file mode 100644 index 0000000..f5ee74c --- /dev/null +++ b/packages/nvim/nvim/config/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/packages/nvim/nvim/options.lua b/packages/nvim/nvim/options.lua new file mode 100644 index 0000000..bac8963 --- /dev/null +++ b/packages/nvim/nvim/options.lua @@ -0,0 +1,18 @@ +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +vim.o.clipboard = 'unnamedplus' + +vim.o.number = true +-- vim.o.relativenumber = true + +vim.o.signcolumn = 'yes' + +vim.o.tabstop = 4 +vim.o.shiftwidth = 4 + +vim.o.updatetime = 300 + +vim.o.termguicolors = true + +vim.o.mouse = 'a' \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/#treesitter.lua# b/packages/nvim/nvim/plugins/#treesitter.lua# new file mode 100644 index 0000000..ca6416f --- /dev/null +++ b/packages/nvim/nvim/plugins/#treesitter.lua# @@ -0,0 +1,15 @@ + +return { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config= function () + local configs = require("nvim-treesitter.configs") + + configs.setup({ + ensure_installed = { "c", "lua", "html", "dart" }, + sync_install = false, + highlight = { enable = true }, + indent = { enable = true }, + }) + end + } diff --git a/packages/nvim/nvim/plugins/catppuccin.lua b/packages/nvim/nvim/plugins/catppuccin.lua new file mode 100644 index 0000000..19df104 --- /dev/null +++ b/packages/nvim/nvim/plugins/catppuccin.lua @@ -0,0 +1 @@ +return { "catppuccin/nvim", name = "catppuccin", priority = 1000 } diff --git a/packages/nvim/nvim/plugins/cmp.lua b/packages/nvim/nvim/plugins/cmp.lua new file mode 100644 index 0000000..f316c1d --- /dev/null +++ b/packages/nvim/nvim/plugins/cmp.lua @@ -0,0 +1,46 @@ +local cmp = require('cmp') +local luasnip = require('luasnip') + +require('luasnip.loaders.from_vscode').lazy_load() +luasnip.config.setup {} + +cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert { + [''] = cmp.mapping.select_next_item(), + [''] = cmp.mapping.select_prev_item(), + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete {}, + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_locally_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { 'i', 's' }), + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.locally_jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { 'i', 's' }), + }, + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, +} \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/coq.lua b/packages/nvim/nvim/plugins/coq.lua new file mode 100644 index 0000000..0ec3a3e --- /dev/null +++ b/packages/nvim/nvim/plugins/coq.lua @@ -0,0 +1,30 @@ + + return { + "neovim/nvim-lspconfig", -- REQUIRED: for native Neovim LSP integration + lazy = false, -- REQUIRED: tell lazy.nvim to start this plugin at startup + dependencies = { + -- main one + { "ms-jpq/coq_nvim", branch = "coq" }, + + -- 9000+ Snippets + { "ms-jpq/coq.artifacts", branch = "artifacts" }, + + -- lua & third party sources -- See https://github.com/ms-jpq/coq.thirdparty + -- Need to **configure separately** + { 'ms-jpq/coq.thirdparty', branch = "3p" } + -- - shell repl + -- - nvim lua api + -- - scientific calculator + -- - comment banner + -- - etc + }, + init = function() + vim.g.coq_settings = { + auto_start = true, -- if you want to start COQ at startup + -- Your COQ settings here + } + end, + config = function() + -- Your LSP settings here + end, +} diff --git a/packages/nvim/nvim/plugins/flutter.lua b/packages/nvim/nvim/plugins/flutter.lua new file mode 100644 index 0000000..97dac7c --- /dev/null +++ b/packages/nvim/nvim/plugins/flutter.lua @@ -0,0 +1,10 @@ +return { + + 'nvim-flutter/flutter-tools.nvim', + lazy = false, + dependencies = { + 'nvim-lua/plenary.nvim', + 'stevearc/dressing.nvim', -- optional for vim.ui.select + }, + config = true, +} diff --git a/packages/nvim/nvim/plugins/highlight-colors.lua b/packages/nvim/nvim/plugins/highlight-colors.lua new file mode 100644 index 0000000..9bf29ee --- /dev/null +++ b/packages/nvim/nvim/plugins/highlight-colors.lua @@ -0,0 +1 @@ +return { "brenoprata10/nvim-highlight-colors", name = "highlight-colotrs" } diff --git a/packages/nvim/nvim/plugins/lazy.lua b/packages/nvim/nvim/plugins/lazy.lua new file mode 100644 index 0000000..978ba09 --- /dev/null +++ b/packages/nvim/nvim/plugins/lazy.lua @@ -0,0 +1,60 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- add your plugins here + +{ + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' } +}, + +{ + "folke/which-key.nvim", + event = "VeryLazy", + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + }, + keys = { + { + "?", + function() + require("which-key").show({ global = false }) + end, + desc = "Buffer Local Keymaps (which-key)", + }, + }, +} + + + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "catppuccin" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/packages/nvim/nvim/plugins/lazy.lua~ b/packages/nvim/nvim/plugins/lazy.lua~ new file mode 100644 index 0000000..b16265d --- /dev/null +++ b/packages/nvim/nvim/plugins/lazy.lua~ @@ -0,0 +1,34 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- add your plugins here + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. +-- install = { colorscheme = { "habamax" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/packages/nvim/nvim/plugins/lsp.lua b/packages/nvim/nvim/plugins/lsp.lua new file mode 100644 index 0000000..733b6d5 --- /dev/null +++ b/packages/nvim/nvim/plugins/lsp.lua @@ -0,0 +1,48 @@ +local on_attach = function(_, bufnr) + + local bufmap = function(keys, func) + vim.keymap.set('n', keys, func, { buffer = bufnr }) + end + + bufmap('r', vim.lsp.buf.rename) + bufmap('a', vim.lsp.buf.code_action) + + bufmap('gd', vim.lsp.buf.definition) + bufmap('gD', vim.lsp.buf.declaration) + bufmap('gI', vim.lsp.buf.implementation) + bufmap('D', vim.lsp.buf.type_definition) + + bufmap('gr', require('telescope.builtin').lsp_references) + bufmap('s', require('telescope.builtin').lsp_document_symbols) + bufmap('S', require('telescope.builtin').lsp_dynamic_workspace_symbols) + + bufmap('K', vim.lsp.buf.hover) + + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, {}) +end + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) + +require('neodev').setup() +require('lspconfig').lua_ls.setup { + on_attach = on_attach, + capabilities = capabilities, + root_dir = function() + return vim.loop.cwd() + end, + cmd = { "lua-language-server" }, + settings = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + } +} + +require('lspconfig').nil_ls.setup { + on_attach = on_attach, + capabilities = capabilities, +} \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/lsp.lua~ b/packages/nvim/nvim/plugins/lsp.lua~ new file mode 100644 index 0000000..bcd32db --- /dev/null +++ b/packages/nvim/nvim/plugins/lsp.lua~ @@ -0,0 +1,48 @@ +local on_attach = function(_, bufnr) + + local bufmap = function(keys, func) + vim.keymap.set('n', keys, func, { buffer = bufnr }) + end + + bufmap('r', vim.lsp.buf.rename) + bufmap('a', vim.lsp.buf.code_action) + + bufmap('gd', vim.lsp.buf.definition) + bufmap('gD', vim.lsp.buf.declaration) + bufmap('gI', vim.lsp.buf.implementation) + bufmap('D', vim.lsp.buf.type_definition) + + bufmap('gr', require('telescope.builtin').lsp_references) + bufmap('s', require('telescope.builtin').lsp_document_symbols) + bufmap('S', require('telescope.builtin').lsp_dynamic_workspace_symbols) + + bufmap('K', vim.lsp.buf.hover) + + vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_) + vim.lsp.buf.format() + end, {}) +end + +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities) + +require('neodev').setup() +require('lspconfig').lua_ls.setup { + on_attach = on_attach, + capabilities = capabilities, + root_dir = function() + return vim.loop.cwd() + end, + cmd = { "lua-language-server" }, + settings = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + } +} + +require('lspconfig').rnix.setup { + on_attach = on_attach, + capabilities = capabilities, +} \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/lualine.lua b/packages/nvim/nvim/plugins/lualine.lua new file mode 100644 index 0000000..40eb8a6 --- /dev/null +++ b/packages/nvim/nvim/plugins/lualine.lua @@ -0,0 +1,41 @@ +require('lualine').setup { + options = { + icons_enabled = true, + theme = 'catppuccin', + component_separators = { left = '', right = ''}, + section_separators = { left = '', right = ''}, + disabled_filetypes = { + statusline = {}, + winbar = {}, + }, + ignore_focus = {}, + always_divide_middle = true, + always_show_tabline = true, + globalstatus = false, + refresh = { + statusline = 100, + tabline = 100, + winbar = 100, + } + }, + sections = { + lualine_a = {'mode'}, + lualine_b = {'branch', 'diff', 'diagnostics'}, + lualine_c = {'filename'}, + lualine_x = {'encoding', 'fileformat', 'filetype'}, + lualine_y = {'progress'}, + lualine_z = {'location'} + }, + inactive_sections = { + lualine_a = {}, + lualine_b = {}, + lualine_c = {'filename'}, + lualine_x = {'location'}, + lualine_y = {}, + lualine_z = {} + }, + tabline = {}, + winbar = {}, + inactive_winbar = {}, + extensions = {} +} \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/lualine.lua~ b/packages/nvim/nvim/plugins/lualine.lua~ new file mode 100644 index 0000000..bd5f988 --- /dev/null +++ b/packages/nvim/nvim/plugins/lualine.lua~ @@ -0,0 +1,5 @@ +return { +{ + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' } +}} \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/other.lua b/packages/nvim/nvim/plugins/other.lua new file mode 100644 index 0000000..457d106 --- /dev/null +++ b/packages/nvim/nvim/plugins/other.lua @@ -0,0 +1,8 @@ +-- Lualine +require("lualine").setup({ + icons_enabled = true, + theme = 'catppuccin', +}) + +-- Comment +require("Comment").setup() \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/other.lua~ b/packages/nvim/nvim/plugins/other.lua~ new file mode 100644 index 0000000..7a0bab6 --- /dev/null +++ b/packages/nvim/nvim/plugins/other.lua~ @@ -0,0 +1,7 @@ +-- Lualine +require("lualine").setup({ + icons_enabled = true, +}) + +-- Comment +require("Comment").setup() \ No newline at end of file diff --git a/packages/nvim/nvim/plugins/telescope.lua b/packages/nvim/nvim/plugins/telescope.lua new file mode 100644 index 0000000..cf06b27 --- /dev/null +++ b/packages/nvim/nvim/plugins/telescope.lua @@ -0,0 +1,13 @@ +require('telescope').setup({ + extensions = { + fzf = { + fuzzy = true, -- false will only do exact matching + override_generic_sorter = true, -- override the generic sorter + override_file_sorter = true, -- override the file sorter + case_mode = "smart_case", -- or "ignore_case" or "respect_case" + -- the default case_mode is "smart_case" + } + } +}) + +require('telescope').load_extension('fzf') diff --git a/packages/nvim/nvim/plugins/telescope.lua~ b/packages/nvim/nvim/plugins/telescope.lua~ new file mode 100644 index 0000000..ed8cc88 --- /dev/null +++ b/packages/nvim/nvim/plugins/telescope.lua~ @@ -0,0 +1,4 @@ +return { + "nvim-telescope/telescope-file-browser.nvim", + dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" } +} diff --git a/packages/nvim/nvim/plugins/treesitter.lua b/packages/nvim/nvim/plugins/treesitter.lua new file mode 100644 index 0000000..a2f9998 --- /dev/null +++ b/packages/nvim/nvim/plugins/treesitter.lua @@ -0,0 +1,15 @@ + +return { + "nvim-treesitter/nvim-treesitter", + build = ":TSUpdate", + config = function () + local configs = require("nvim-treesitter.configs") + + configs.setup({ + ensure_installed = { "c", "lua", "html", "dart" }, + sync_install = false, + highlight = { enable = true }, + indent = { enable = true }, + }) + end + } diff --git a/packages/waybar/config b/packages/waybar/config index e01aaf1..7edf4e4 100644 --- a/packages/waybar/config +++ b/packages/waybar/config @@ -3,13 +3,13 @@ "position": "top", "height": 35, "spacing": 0, - "modules-left": ["clock", "sway/workspaces","sway/mode"], - "modules-center": ["sway/window"], + "modules-left": ["clock", "hyprland/workspaces"], + "modules-center": [ ], "modules-right": ["network", "cpu", "memory", "custom/keyboard-layout", "pulseaudio", "tray"], "custom/keyboard-layout": { "interval": 1, - "exec": "swaymsg -t get_inputs | jq -r '.[] | select(.type == \"keyboard\") | .xkb_active_layout_name'" + "exec": "hyprctl devices -j | jq -r '.keyboards[] | .active_keymap' | head -n1 | cut -c1-2 | tr 'a-z' 'A-Z" },