From f85d94533732ea04f8ac916fb90c362bcbb397cf Mon Sep 17 00:00:00 2001 From: Nico Date: Thu, 29 May 2025 14:50:58 +0200 Subject: [PATCH] cleanup, neovim optimizations and updates ig --- Shells/flutter/flake.nix | 44 --- configuration.nix | 28 +- flake.lock | 48 ++-- home-nico.nix | 3 + packages/default.nix | 3 +- packages/hyprland/keybinds.conf | 2 +- packages/nvim/default.nix | 6 +- packages/nvim/init.lua | 263 ++++++------------ packages/nvim/lua/plugins/catppuccin.lua | 19 +- packages/nvim/lua/plugins/conform.lua | 9 +- packages/nvim/lua/plugins/dioxus.lua | 9 + packages/nvim/lua/plugins/flutter.lua | 87 +++++- packages/nvim/lua/plugins/go.lua | 25 ++ packages/nvim/lua/plugins/lsp.lua | 3 +- packages/nvim/lua/plugins/neominimap.lua | 48 ++++ packages/nvim/lua/plugins/nio.lua | 1 + packages/nvim/lua/plugins/rustaceanvim.lua | 2 +- packages/nvim/lua/plugins/tabby.lua | 6 +- .../lua/plugins/tiny-inline-diagnostic.lua | 12 +- packages/nvim/nvim/plugins/autopair.lua | 7 + packages/nvim/nvim/plugins/blankline.lua | 7 + packages/nvim/nvim/plugins/blink-cmp.lua | 46 +++ packages/nvim/nvim/plugins/code-action.lua | 11 + packages/nvim/nvim/plugins/comment.lua | 8 + packages/nvim/nvim/plugins/dap.lua | 1 + packages/nvim/nvim/plugins/lazygit.lua | 21 ++ packages/nvim/nvim/plugins/love.lua | 11 + packages/nvim/nvim/plugins/mini-animate.lua | 1 + packages/nvim/nvim/plugins/nio.nvim | 1 + packages/nvim/nvim/plugins/rustaceanvim.lua | 5 + packages/nvim/nvim/plugins/tabby.lua | 8 + packages/nvim/nvim/plugins/tabout.lua | 45 +++ packages/nvim/nvim/plugins/toggleterm.lua | 6 + packages/nvim/nvim/plugins/trouble.lua | 37 +++ packages/nvim/nvim/plugins/whichkey.lua | 18 ++ .../terminal/alacritty-catppuccin-mocha.yml | 78 ++++++ packages/terminal/default.nix | 166 +++++++++++ packages/terminal/ghostty-config | 22 ++ packages/terminal/kitty.conf | 80 ++++++ packages/tmux/default.nix | 58 +++- shells/flutter/flake.nix | 101 +++++++ shells/go/flake.nix | 32 +++ shells/rust/flake.nix | 73 +++++ 43 files changed, 1186 insertions(+), 275 deletions(-) delete mode 100644 Shells/flutter/flake.nix create mode 100644 packages/nvim/lua/plugins/dioxus.lua create mode 100644 packages/nvim/lua/plugins/go.lua create mode 100644 packages/nvim/lua/plugins/neominimap.lua create mode 100644 packages/nvim/lua/plugins/nio.lua create mode 100644 packages/nvim/nvim/plugins/autopair.lua create mode 100644 packages/nvim/nvim/plugins/blankline.lua create mode 100644 packages/nvim/nvim/plugins/blink-cmp.lua create mode 100644 packages/nvim/nvim/plugins/code-action.lua create mode 100644 packages/nvim/nvim/plugins/comment.lua create mode 100644 packages/nvim/nvim/plugins/dap.lua create mode 100644 packages/nvim/nvim/plugins/lazygit.lua create mode 100644 packages/nvim/nvim/plugins/love.lua create mode 100644 packages/nvim/nvim/plugins/mini-animate.lua create mode 100644 packages/nvim/nvim/plugins/nio.nvim create mode 100644 packages/nvim/nvim/plugins/rustaceanvim.lua create mode 100644 packages/nvim/nvim/plugins/tabby.lua create mode 100644 packages/nvim/nvim/plugins/tabout.lua create mode 100644 packages/nvim/nvim/plugins/toggleterm.lua create mode 100644 packages/nvim/nvim/plugins/trouble.lua create mode 100644 packages/nvim/nvim/plugins/whichkey.lua create mode 100644 packages/terminal/alacritty-catppuccin-mocha.yml create mode 100644 packages/terminal/default.nix create mode 100644 packages/terminal/ghostty-config create mode 100644 packages/terminal/kitty.conf create mode 100644 shells/flutter/flake.nix create mode 100644 shells/go/flake.nix create mode 100644 shells/rust/flake.nix diff --git a/Shells/flutter/flake.nix b/Shells/flutter/flake.nix deleted file mode 100644 index bd30206..0000000 --- a/Shells/flutter/flake.nix +++ /dev/null @@ -1,44 +0,0 @@ -{ - description = "Flutter 3.13.x"; - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-utils.url = "github:numtide/flake-utils"; - }; - outputs = { self, nixpkgs, flake-utils }: - flake-utils.lib.eachDefaultSystem (system: - let - pkgs = import nixpkgs { - inherit system; - config = { - android_sdk.accept_license = true; - allowUnfree = true; - }; - }; - androidComposition = pkgs.androidenv.composeAndroidPackages { - buildToolsVersions = [ "28.0.3" "33.0.1" ]; - platformVersions = [ "33" "34" "28" ]; - abiVersions = [ "armeabi-v7a" "arm64-v8a" ]; - }; - androidSdk = androidComposition.androidsdk; - in - { - devShell = - with pkgs; mkShell rec { - GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/libexec/android-sdk/build-tools/33.0.1/aapt2"; - ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; - buildInputs = [ - flutter324 - androidSdk - jdk17 - - ]; - - shellHook = '' - zsh - - exit - ''; - }; - }); -} - diff --git a/configuration.nix b/configuration.nix index 14153eb..a4c461e 100644 --- a/configuration.nix +++ b/configuration.nix @@ -30,10 +30,10 @@ boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; -# fileSystems."mnt/win" = { -# device = "/dev/sdb1"; -# fsType = "ntfs"; -# }; + fileSystems."mnt/win" = { + device = "/dev/sdb1"; + fsType = "ntfs"; + }; # Flakes nix.settings.experimental-features = [ "nix-command" "flakes" ]; @@ -50,11 +50,11 @@ boot.loader.efi.canTouchEfiVariables = true; networking.networkmanager.enable = true; # VM -# virtualisation.virtualbox.host.enable = true; -# virtualisation.virtualbox.host.enableExtensionPack = true; -# virtualisation.virtualbox.host.enableKvm = true; -# virtualisation.virtualbox.host.addNetworkInterface = false; -# users.extraGroups.vboxusers.members = [ "nico" ]; + virtualisation.virtualbox.host.enable = true; + virtualisation.virtualbox.host.enableExtensionPack = true; + virtualisation.virtualbox.host.enableKvm = true; + virtualisation.virtualbox.host.addNetworkInterface = false; + users.extraGroups.vboxusers.members = [ "nico" ]; # virtualisation.virtualbox.guest.enable = true; # virtualisation.virtualbox.guest.dragAndDrop = true; # virtualisation.docker.enable = true; @@ -105,6 +105,7 @@ boot.loader.efi.canTouchEfiVariables = true; # Enable touchpad support (enabled default in most desktopManager). services.xserver.libinput.enable # = true; services.mullvad-vpn.enable = true; + services.mullvad-vpn.package = pkgs.mullvad-vpn; # Define a user account. Don't forget to set a password with ‘passwd’. users.users.nico = { isNormalUser = true; description = "nico"; extraGroups = [ "networkmanager" "wheel" "adbusers" "docker"]; packages = with pkgs; [ @@ -118,9 +119,15 @@ services.mullvad-vpn.enable = true; # Allow unfree packages nixpkgs.config.allowUnfree = true; +# services.flatpak.enable = true; + # List packages installed in system profile. To search, run: $ nix search wget environment.systemPackages = with pkgs; [ - vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed + grayjay + discord + lutris + qbittorrent + vim wget git kitty @@ -132,6 +139,7 @@ services.mullvad-vpn.enable = true; spotify #spicetify-cli sshfs + anydesk # sway networkmanager diff --git a/flake.lock b/flake.lock index 80fd674..3f78b67 100644 --- a/flake.lock +++ b/flake.lock @@ -6,11 +6,11 @@ "nixpkgs": "nixpkgs" }, "locked": { - "lastModified": 1738087375, - "narHash": "sha256-GLyNtU9A2VN22jNRHZ2OXuFfTJLh8uEVVt+ftsKUX0c=", + "lastModified": 1744557573, + "narHash": "sha256-XAyj0iDuI51BytJ1PwN53uLpzTDdznPDQFG4RwihlTQ=", "owner": "Aylur", "repo": "ags", - "rev": "a6a7a0adb17740f4c34a59902701870d46fbb6a4", + "rev": "3ed9737bdbc8fc7a7c7ceef2165c9109f336bff6", "type": "github" }, "original": { @@ -27,11 +27,11 @@ ] }, "locked": { - "lastModified": 1737670815, - "narHash": "sha256-ZCxxshGN7XooabArcoGkYSNx5yVunqjKJi2aTv6cznI=", + "lastModified": 1742571008, + "narHash": "sha256-5WgfJAeBpxiKbTR/gJvxrGYfqQRge5aUDcGKmU1YZ1Q=", "owner": "aylur", "repo": "astal", - "rev": "127e9cdcbf173846a3c40ddc0abfbb038df48042", + "rev": "dc0e5d37abe9424c53dcbd2506a4886ffee6296e", "type": "github" }, "original": { @@ -48,11 +48,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1745752599, - "narHash": "sha256-vX5uq4wv7FeNeeFtsTPXQ9n2hd92NFXI+u9sg1K8OhA=", + "lastModified": 1748491405, + "narHash": "sha256-kjHOCsU66vlEv0NIyrMYmg9DvUiLsEGkhxtPiYIdx5g=", "owner": "rycee", "repo": "nur-expressions", - "rev": "0388c30f59e860307b2ef0ba93f38d2e525a153e", + "rev": "42b96163341bdb7934cf880307f166f0238038ab", "type": "gitlab" }, "original": { @@ -69,11 +69,11 @@ ] }, "locked": { - "lastModified": 1744038920, - "narHash": "sha256-9a4V1wQXS8hXZtc7mRtz0qINkGW+C99aDrmXY6oYBFg=", + "lastModified": 1748489961, + "narHash": "sha256-uGnudxMoQi2c8rpPoHXuQSm80NBqlOiNF4xdT3hhzLM=", "owner": "nix-community", "repo": "home-manager", - "rev": "a4d8020820a85b47f842eae76ad083b0ec2a886a", + "rev": "95c988cf08e9a5a8fe7cc275d5e3f24e9e87bd51", "type": "github" }, "original": { @@ -84,11 +84,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737469691, - "narHash": "sha256-nmKOgAU48S41dTPIXAq0AHZSehWUn6ZPrUKijHAMmIk=", + "lastModified": 1743583204, + "narHash": "sha256-F7n4+KOIfWrwoQjXrL2wD9RhFYLs2/GGe/MQY1sSdlE=", "owner": "nixos", "repo": "nixpkgs", - "rev": "9e4d5190a9482a1fb9d18adf0bdb83c6e506eaab", + "rev": "2c8d3f48d33929642c1c12cd243df4cc7d2ce434", "type": "github" }, "original": { @@ -100,11 +100,11 @@ }, "nixpkgs_2": { "locked": { - "lastModified": 1743827369, - "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", + "lastModified": 1748370509, + "narHash": "sha256-QlL8slIgc16W5UaI3w7xHQEP+Qmv/6vSNTpoZrrSlbk=", "owner": "nixos", "repo": "nixpkgs", - "rev": "42a1c966be226125b48c384171c44c651c236c22", + "rev": "4faa5f5321320e49a78ae7848582f684d64783e9", "type": "github" }, "original": { @@ -116,11 +116,11 @@ }, "nixpkgs_3": { "locked": { - "lastModified": 1743827369, - "narHash": "sha256-rpqepOZ8Eo1zg+KJeWoq1HAOgoMCDloqv5r2EAa9TSA=", + "lastModified": 1748026106, + "narHash": "sha256-6m1Y3/4pVw1RWTsrkAK2VMYSzG4MMIj7sqUy7o8th1o=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "42a1c966be226125b48c384171c44c651c236c22", + "rev": "063f43f2dbdef86376cc29ad646c45c46e93234c", "type": "github" }, "original": { @@ -145,11 +145,11 @@ "systems": "systems" }, "locked": { - "lastModified": 1743946771, - "narHash": "sha256-n/LxWCGJtDi/rWMKEXWQn39v46iFZpW+V9mY4/4LJQs=", + "lastModified": 1748147548, + "narHash": "sha256-9IaAQkgyF4PFtVyui8vF6oJah0iVcO9DaOefjdTMthE=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "af24d96983faa41e79fa00312106c37a7cc2ca0a", + "rev": "f0595e3b59260457042450749eaec00a5a47db35", "type": "github" }, "original": { diff --git a/home-nico.nix b/home-nico.nix index a991f7a..473af24 100644 --- a/home-nico.nix +++ b/home-nico.nix @@ -37,6 +37,9 @@ hidePodcasts fullScreen ]; + enabledCustomApps = with spicePkgs.apps; [ + lyricsPlus + ]; }; home.stateVersion = "24.05"; diff --git a/packages/default.nix b/packages/default.nix index 644c391..8d4cc5e 100644 --- a/packages/default.nix +++ b/packages/default.nix @@ -10,9 +10,10 @@ ./wpaperd ./nvim ./emacs - ./kitty + ./terminal ./rofi ./hyprland + ./tmux # ./vscode ]; } diff --git a/packages/hyprland/keybinds.conf b/packages/hyprland/keybinds.conf index 6d8543e..49cc803 100644 --- a/packages/hyprland/keybinds.conf +++ b/packages/hyprland/keybinds.conf @@ -1,7 +1,7 @@ $mainMod = SUPER # Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more -bind = $mainMod, RETURN, exec, kitty +bind = $mainMod, RETURN, exec, ghostty bind = $mainMod, B, exec, floorp bind = SUPER, BackSpace, killactive, bind = SUPER_SHIFT, P, exec, rofi -show power-menu -modi power-menu:rofi-power-menu diff --git a/packages/nvim/default.nix b/packages/nvim/default.nix index f272d34..1abd4a7 100644 --- a/packages/nvim/default.nix +++ b/packages/nvim/default.nix @@ -8,6 +8,9 @@ lldb lazygit gcc + gopls + stylua + rustfmt ]; programs.neovim = { @@ -30,7 +33,7 @@ programs.neovim.plugins = [ ".config/nvim/lua/plugins/blink-cmp.lua".source = ./lua/plugins/blink-cmp.lua; ".config/nvim/lua/plugins/lsp.lua".source = ./lua/plugins/lsp.lua; # ".config/nvim/lua/plugins/mason.lua".source = ./lua/plugins/mason.lua; - ".config/nvim/lua/plugins/treesitter.lua".source = ./lua/plugins/treesitter.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; @@ -53,6 +56,7 @@ programs.neovim.plugins = [ ".config/nvim/lua/plugins/vim-suda.lua".source = ./lua/plugins/vim-suda.lua; ".config/nvim/lua/plugins/tiny-inline-diagnostic.lua".source = ./lua/plugins/tiny-inline-diagnostic.lua; ".config/nvim/lua/plugins/conform.lua".source = ./lua/plugins/conform.lua; + ".config/nvim/lua/plugins/go.lua".source = ./lua/plugins/go.lua; } ]; diff --git a/packages/nvim/init.lua b/packages/nvim/init.lua index 0c7da4d..05ef028 100644 --- a/packages/nvim/init.lua +++ b/packages/nvim/init.lua @@ -1,42 +1,43 @@ -- 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 +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.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 +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 +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 vim.cmd("set nowrap") -- -- 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) +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) +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) -vim.keymap.set('i', 'jk', '', opts) -vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) +vim.keymap.set("i", "jk", "", opts) +vim.keymap.set("n", "gd", vim.lsp.buf.definition, bufopts) -- jump to definition -vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts) +vim.keymap.set("n", "gd", vim.lsp.buf.definition, bufopts) + -- code actions vim.keymap.set("n", "ca", function() @@ -47,199 +48,107 @@ end, { noremap = true, silent = true }) 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 = "", - }, - } -}) +require("catppuccin").setup({}) +vim.cmd.colorscheme("catppuccin") -- css colors vim.opt.termguicolors = true -require('nvim-highlight-colors').setup({}) - -vim.cmd.colorscheme "catppuccin" - +require("nvim-highlight-colors").setup({}) -- Plugin setups -require('lualine').setup() +require("lualine").setup() require("dapui").setup() require("ibl").setup() require("telescope").load_extension("flutter") -require("toggleterm").setup{} -require("tabby").setup{} +require("toggleterm").setup({}) require("mini.animate").setup() - -require("tiny-inline-diagnostic").setup({ - preset = "ghost"; - options = { - use_icons_from_diagnostic = true, - multilines = { - enabled = true, - }, - show_all_diags_on_cursorline = false, - enable_on_insert = true, - } +vim.o.showtabline = 2 +require("tabby").setup({ + preset = "tab_only" }) +require("tiny-inline-diagnostic").setup({}) + -- conform (code formatter) -require("conform").setup({ - formatters_by_ft = { - dart = { "dart_format" }, - }, -}) +require("conform").setup({}) -- flutter -require("flutter-tools").setup { - ui = { - -- the border type to use for all floating windows, the same options/formats - -- used for ":h nvim_open_win" e.g. "single" | "shadow" | {} - border = "rounded", - -- This determines whether notifications are show with `vim.notify` or with the plugin's custom UI - -- please note that this option is eventually going to be deprecated and users will need to - -- depend on plugins like `nvim-notify` instead. - notification_style = 'plugin' - }, - decorations = { - statusline = { - -- set to true to be able use the 'flutter_tools_decorations.app_version' in your statusline - -- this will show the current version of the flutter app from the pubspec.yaml file - app_version = false, - -- set to true to be able use the 'flutter_tools_decorations.device' in your statusline - -- this will show the currently running device if an application was started with a specific - -- device - device = true, - -- set to true to be able use the 'flutter_tools_decorations.project_config' in your statusline - -- this will show the currently selected project configuration - project_config = false, - } - }, - debugger = { -- integrate with nvim dap + install dart code debugger - enabled = true, - -- if empty dap will not stop on any exceptions, otherwise it will stop on those specified - -- see |:help dap.set_exception_breakpoints()| for more info - exception_breakpoints = { "uncaught" }, - -- Whether to call toString() on objects in debug views like hovers and the - -- variables list. - -- Invoking toString() has a performance cost and may introduce side-effects, - -- although users may expected this functionality. null is treated like false. - evaluate_to_string_in_debug_views = true, - }, - flutter_lookup_cmd = nil, -- example "dirname $(which flutter)" or "asdf where flutter" - root_patterns = { ".git", "pubspec.yaml" }, -- patterns to find the root of your flutter project - fvm = false, -- takes priority over path, uses /.fvm/flutter_sdk if enabled - widget_guides = { - enabled = true, - }, - closing_tags = { - highlight = "ErrorMsg", -- highlight for the closing tag - prefix = ">", -- character to use for close tag e.g. > Widget - priority = 10, -- priority of virtual text in current line - -- consider to configure this when there is a possibility of multiple virtual text items in one line - -- see `priority` option in |:help nvim_buf_set_extmark| for more info - enabled = true -- set to false to disable - }, - dev_log = { - enabled = true, - filter = nil, -- optional callback to filter the log - -- takes a log_line as string argument; returns a boolean or nil; - -- the log_line is only added to the output if the function returns true - notify_errors = false, -- if there is an error whilst running then notify the user - open_cmd = "15split", -- command to use to open the log buffer - focus_on_open = true, -- focus on the newly opened log window - }, - dev_tools = { - autostart = false, -- autostart devtools server if not detected - auto_open_browser = false, -- Automatically opens devtools in the browser - }, - outline = { - open_cmd = "30vnew", -- command to use to open the outline buffer - auto_open = false -- if true this will open the outline automatically when it is first populated - }, - lsp = { - color = { -- show the derived colours for dart variables - enabled = true, -- whether or not to highlight color variables at all, only supported on flutter >= 2.10 - background = true, -- highlight the background - background_color = nil, -- required, when background is transparent (i.e. background_color = { r = 19, g = 17, b = 24},) - foreground = false, -- highlight the foreground - virtual_text = true, -- show the highlight using virtual text - virtual_text_str = "■", -- the virtual text character to highlight - }, - -- see the link below for details on each option: - -- https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/tool/lsp_spec/README.md#client-workspace-configuration - settings = { - showTodos = true, - completeFunctionCalls = true, - renameFilesWithClasses = "prompt", -- "always" - enableSnippets = true, - updateImportsOnRename = true, -- Whether to update imports and other directives when files are renamed. Required for `FlutterRename` command. - } - } -} +require("flutter-tools").setup({}) +-- GO +require("go").setup() ------------- -- Debugger local dap, dapui = require("dap"), require("dapui") dap.listeners.before.attach.dapui_config = function() - dapui.open() + dapui.open() end dap.listeners.before.launch.dapui_config = function() - dapui.open() + dapui.open() end dap.listeners.before.event_terminated.dapui_config = function() - dapui.close() + dapui.close() end dap.listeners.before.event_exited.dapui_config = function() - dapui.close() + dapui.close() end -- c und rust -dap.adapters.lldb = { - type = 'executable', - command = 'lldb', -- adjust as needed, must be absolute path - name = 'lldb' +-- 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 +dap.adapters.gdb = { + type = "executable", + command = "gdb", + args = { "--interpreter=dap", "--eval-command", "set print pretty on" }, } -dap.configurations.c = dap.configurations.cpp -dap.configurations.rust = dap.configurations.cpp - +dap.configurations.cpp = dap.configurations.gdb +dap.configurations.rust = dap.configurations.gdb -------------------------------------------- -local builtin = require('telescope.builtin') -local conform = require('conform') +local builtin = require("telescope.builtin") +local conform = require("conform") +-- Rust binds +vim.keymap.set("n", "rrr", ":RustRun", { desc = "Run rust program" }) +vim.keymap.set("n", "rd", ":RustLsp debug", { desc = "Debug rust program" }) +vim.keymap.set("n", "rh", ":RustLsp hover actions", { desc = "rust hover actions" }) +vim.keymap.set("n", "re", ":RustLsp explainError", { desc = "explain rust error" }) +vim.keymap.set("n", "rs", ":RustLsp openDocs", { desc = "open rust docs for symbol under cursor" }) +vim.keymap.set("n", "rrn", ":RustLsp ssr ", { desc = "rust rename" }) -- 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' }) -vim.keymap.set('n', 'fl', ": Telescope flutter commands", { desc = "Open Telescope flutter" }) -vim.keymap.set('n', 'fl', ":Telescope flutter commands", { desc = "Open Telescope flutter" }) +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" }) +vim.keymap.set("n", "fl", ": Telescope flutter commands", { desc = "Open Telescope flutter" }) +vim.keymap.set("n", "fl", ":Telescope flutter commands", { desc = "Open Telescope flutter" }) -- 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 = "Toggle breakpoint" }) -vim.keymap.set('n', '', dap.continue, { desc = "dap Continue" }) -vim.keymap.set('n', '', dap.step_over, { desc = "dap step over" }) -vim.keymap.set('n', '', dap.step_into, { desc = "dap step into" }) +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 = "Toggle breakpoint" }) +vim.keymap.set("n", "", dap.continue, { desc = "dap Continue" }) +vim.keymap.set("n", "", dap.step_over, { desc = "dap step over" }) +vim.keymap.set("n", "", dap.step_into, { desc = "dap step into" }) -- sudawrite -vim.keymap.set('n', 'sw', ":SudaWrite", { desc = "Write as sudo" }) +vim.keymap.set("n", "sw", ":SudaWrite", { desc = "Write as sudo" }) -- conform -vim.keymap.set('n', 'cf', conform.format, { desc = "format code" }) +vim.keymap.set("n", "cf", conform.format, { desc = "format code" }) -- toggleterm binds -vim.keymap.set('n', 'tf', ':ToggleTerm direction=float ', { desc = "Open floating terminal" }) -vim.keymap.set('n', 'tt', ':ToggleTerm direction=tab size=50 ', { desc = "Open terminal in new tab" }) -vim.keymap.set('n', 'tv', ':ToggleTerm direction=vertical ', { desc = "Open terminal vertical" }) -vim.keymap.set('n', 'ts', ':ToggleTerm direction=vertical ', { desc = "select open terminal" }) +vim.keymap.set("n", "tf", ":ToggleTerm direction=float ", { desc = "Open floating terminal" }) +vim.keymap.set("n", "tt", ":ToggleTerm direction=tab size=50 ", { desc = "Open terminal in new tab" }) +vim.keymap.set("n", "tv", ":ToggleTerm direction=vertical ", { desc = "Open terminal vertical" }) +vim.keymap.set("n", "ts", ":ToggleTerm direction=vertical ", { desc = "select open terminal" }) -- code actions vim.keymap.set("n", "ca", function() require("tiny-code-action").code_action() end, { desc = "Show code actions", noremap = true, silent = true }) +-- disable annoying inline type things +vim.lsp.inlay_hint.enable(false) +vim.diagnostic.config({virtual_text = false}) diff --git a/packages/nvim/lua/plugins/catppuccin.lua b/packages/nvim/lua/plugins/catppuccin.lua index 19df104..a76f8dd 100644 --- a/packages/nvim/lua/plugins/catppuccin.lua +++ b/packages/nvim/lua/plugins/catppuccin.lua @@ -1 +1,18 @@ -return { "catppuccin/nvim", name = "catppuccin", priority = 1000 } +return { + "catppuccin/nvim", + name = "catppuccin", + priority = 1000, + opts = { + integrations = { + cmp = false, + gitsigns = true, + nvimtree = true, + treesitter = true, + notify = false, + mini = { + enabled = false, + indentscope_color = "", + }, + } + } +} diff --git a/packages/nvim/lua/plugins/conform.lua b/packages/nvim/lua/plugins/conform.lua index cc9d424..13c10ea 100644 --- a/packages/nvim/lua/plugins/conform.lua +++ b/packages/nvim/lua/plugins/conform.lua @@ -1,4 +1,11 @@ return { 'stevearc/conform.nvim', - opts = {}, + opts = { + formatters_by_ft = { + dart = { "dart_format" }, + lua = { "stylua" }, + rust = { "rustfmt" }, + go = { "gofmt" }, + }, + }, } diff --git a/packages/nvim/lua/plugins/dioxus.lua b/packages/nvim/lua/plugins/dioxus.lua new file mode 100644 index 0000000..ca3efcb --- /dev/null +++ b/packages/nvim/lua/plugins/dioxus.lua @@ -0,0 +1,9 @@ +return { + "mrxiaozhuox/dioxus.nvim", + opts = { + format = { + split_line_attributes = true, + }, + }, + ft = "rust", +} diff --git a/packages/nvim/lua/plugins/flutter.lua b/packages/nvim/lua/plugins/flutter.lua index 97dac7c..96b9cde 100644 --- a/packages/nvim/lua/plugins/flutter.lua +++ b/packages/nvim/lua/plugins/flutter.lua @@ -1,5 +1,4 @@ return { - 'nvim-flutter/flutter-tools.nvim', lazy = false, dependencies = { @@ -7,4 +6,90 @@ return { 'stevearc/dressing.nvim', -- optional for vim.ui.select }, config = true, + opts = { + ui = { + -- the border type to use for all floating windows, the same options/formats + -- used for ":h nvim_open_win" e.g. "single" | "shadow" | {} + border = "rounded", + -- This determines whether notifications are show with `vim.notify` or with the plugin's custom UI + -- please note that this option is eventually going to be deprecated and users will need to + -- depend on plugins like `nvim-notify` instead. + notification_style = 'plugin' + }, + decorations = { + statusline = { + -- set to true to be able use the 'flutter_tools_decorations.app_version' in your statusline + -- this will show the current version of the flutter app from the pubspec.yaml file + app_version = false, + -- set to true to be able use the 'flutter_tools_decorations.device' in your statusline + -- this will show the currently running device if an application was started with a specific + -- device + device = true, + -- set to true to be able use the 'flutter_tools_decorations.project_config' in your statusline + -- this will show the currently selected project configuration + project_config = false, + } + }, + debugger = { -- integrate with nvim dap + install dart code debugger + enabled = true, + -- if empty dap will not stop on any exceptions, otherwise it will stop on those specified + -- see |:help dap.set_exception_breakpoints()| for more info + exception_breakpoints = { "uncaught" }, + -- Whether to call toString() on objects in debug views like hovers and the + -- variables list. + -- Invoking toString() has a performance cost and may introduce side-effects, + -- although users may expected this functionality. null is treated like false. + evaluate_to_string_in_debug_views = true, + }, + flutter_lookup_cmd = nil, -- example "dirname $(which flutter)" or "asdf where flutter" + root_patterns = { ".git", "pubspec.yaml" }, -- patterns to find the root of your flutter project + fvm = false, -- takes priority over path, uses /.fvm/flutter_sdk if enabled + widget_guides = { + enabled = true, + }, + closing_tags = { + highlight = "ErrorMsg", -- highlight for the closing tag + prefix = ">", -- character to use for close tag e.g. > Widget + priority = 10, -- priority of virtual text in current line + -- consider to configure this when there is a possibility of multiple virtual text items in one line + -- see `priority` option in |:help nvim_buf_set_extmark| for more info + enabled = true -- set to false to disable + }, + dev_log = { + enabled = true, + filter = nil, -- optional callback to filter the log + -- takes a log_line as string argument; returns a boolean or nil; + -- the log_line is only added to the output if the function returns true + notify_errors = false, -- if there is an error whilst running then notify the user + open_cmd = "15split", -- command to use to open the log buffer + focus_on_open = true, -- focus on the newly opened log window + }, + dev_tools = { + autostart = true, -- autostart devtools server if not detected + auto_open_browser = false, -- Automatically opens devtools in the browser + }, + outline = { + open_cmd = "30vnew", -- command to use to open the outline buffer + auto_open = false -- if true this will open the outline automatically when it is first populated + }, + lsp = { + color = { -- show the derived colours for dart variables + enabled = true, -- whether or not to highlight color variables at all, only supported on flutter >= 2.10 + background = true, -- highlight the background + background_color = nil, -- required, when background is transparent (i.e. background_color = { r = 19, g = 17, b = 24},) + foreground = false, -- highlight the foreground + virtual_text = true, -- show the highlight using virtual text + virtual_text_str = "■", -- the virtual text character to highlight + }, + -- see the link below for details on each option: + -- https://github.com/dart-lang/sdk/blob/master/pkg/analysis_server/tool/lsp_spec/README.md#client-workspace-configuration + settings = { + showTodos = true, + completeFunctionCalls = true, + renameFilesWithClasses = "prompt", -- "always" + enableSnippets = true, + updateImportsOnRename = true, -- Whether to update imports and other directives when files are renamed. Required for `FlutterRename` command. + } + } + } } diff --git a/packages/nvim/lua/plugins/go.lua b/packages/nvim/lua/plugins/go.lua new file mode 100644 index 0000000..bdc3360 --- /dev/null +++ b/packages/nvim/lua/plugins/go.lua @@ -0,0 +1,25 @@ +return { + "ray-x/go.nvim", + dependencies = { -- optional packages + "neovim/nvim-lspconfig", + "nvim-treesitter/nvim-treesitter", + }, + opts = { + -- lsp_keymaps = false, + -- other options + }, + config = function(lp, opts) + require("go").setup(opts) + local format_sync_grp = vim.api.nvim_create_augroup("GoFormat", {}) + vim.api.nvim_create_autocmd("BufWritePre", { + pattern = "*.go", + callback = function() + require('go.format').goimports() + end, + group = format_sync_grp, + }) + end, + event = {"CmdlineEnter"}, + ft = {"go", 'gomod'}, + build = ':lua require("go.install").update_all_sync()' -- if you need to install/update all binaries +} diff --git a/packages/nvim/lua/plugins/lsp.lua b/packages/nvim/lua/plugins/lsp.lua index 9fb572d..dd48aa0 100644 --- a/packages/nvim/lua/plugins/lsp.lua +++ b/packages/nvim/lua/plugins/lsp.lua @@ -7,7 +7,8 @@ return { servers = { lua_ls = {}, nil_ls = {}, - rust_analyzer = {} + -- rust_analyzer = {}, + gopls = {}, } }, config = function(_, opts) diff --git a/packages/nvim/lua/plugins/neominimap.lua b/packages/nvim/lua/plugins/neominimap.lua new file mode 100644 index 0000000..3962a4b --- /dev/null +++ b/packages/nvim/lua/plugins/neominimap.lua @@ -0,0 +1,48 @@ +---@module "neominimap.config.meta" +return { + "Isrothy/neominimap.nvim", + version = "v3.x.x", + lazy = false, -- NOTE: NO NEED to Lazy load + -- Optional. You can alse set your own keybindings + keys = { + -- Global Minimap Controls + { "nm", "Neominimap Toggle", desc = "Toggle global minimap" }, + { "no", "Neominimap Enable", desc = "Enable global minimap" }, + { "nc", "Neominimap Disable", desc = "Disable global minimap" }, + { "nr", "Neominimap Refresh", desc = "Refresh global minimap" }, + + -- Window-Specific Minimap Controls + { "nwt", "Neominimap WinToggle", desc = "Toggle minimap for current window" }, + { "nwr", "Neominimap WinRefresh", desc = "Refresh minimap for current window" }, + { "nwo", "Neominimap WinEnable", desc = "Enable minimap for current window" }, + { "nwc", "Neominimap WinDisable", desc = "Disable minimap for current window" }, + + -- Tab-Specific Minimap Controls + { "ntt", "Neominimap TabToggle", desc = "Toggle minimap for current tab" }, + { "ntr", "Neominimap TabRefresh", desc = "Refresh minimap for current tab" }, + { "nto", "Neominimap TabEnable", desc = "Enable minimap for current tab" }, + { "ntc", "Neominimap TabDisable", desc = "Disable minimap for current tab" }, + + -- Buffer-Specific Minimap Controls + { "nbt", "Neominimap BufToggle", desc = "Toggle minimap for current buffer" }, + { "nbr", "Neominimap BufRefresh", desc = "Refresh minimap for current buffer" }, + { "nbo", "Neominimap BufEnable", desc = "Enable minimap for current buffer" }, + { "nbc", "Neominimap BufDisable", desc = "Disable minimap for current buffer" }, + + ---Focus Controls + { "nf", "Neominimap Focus", desc = "Focus on minimap" }, + { "nu", "Neominimap Unfocus", desc = "Unfocus minimap" }, + { "ns", "Neominimap ToggleFocus", desc = "Switch focus on minimap" }, + }, + init = function() + -- The following options are recommended when layout == "float" + vim.opt.wrap = false + vim.opt.sidescrolloff = 36 -- Set a large value + + --- Put your configuration here + ---@type Neominimap.UserConfig + vim.g.neominimap = { + auto_enable = true, + } + end, +} diff --git a/packages/nvim/lua/plugins/nio.lua b/packages/nvim/lua/plugins/nio.lua new file mode 100644 index 0000000..a8f5d15 --- /dev/null +++ b/packages/nvim/lua/plugins/nio.lua @@ -0,0 +1 @@ +return { "nvim-neotest/nvim-nio" } diff --git a/packages/nvim/lua/plugins/rustaceanvim.lua b/packages/nvim/lua/plugins/rustaceanvim.lua index 46c4c82..eb83332 100644 --- a/packages/nvim/lua/plugins/rustaceanvim.lua +++ b/packages/nvim/lua/plugins/rustaceanvim.lua @@ -1,5 +1,5 @@ return { 'mrcjkb/rustaceanvim', - version = '^5', -- Recommended + version = '^6', -- Recommended lazy = false, -- This plugin is already lazy } diff --git a/packages/nvim/lua/plugins/tabby.lua b/packages/nvim/lua/plugins/tabby.lua index b3a0981..5839bf6 100644 --- a/packages/nvim/lua/plugins/tabby.lua +++ b/packages/nvim/lua/plugins/tabby.lua @@ -2,7 +2,7 @@ return { 'nanozuki/tabby.nvim', -- event = 'VimEnter', -- if you want lazy load, see below dependencies = 'nvim-tree/nvim-web-devicons', - config = function() - -- configs... - end, + opts = { + preset = "tab_only" + } } diff --git a/packages/nvim/lua/plugins/tiny-inline-diagnostic.lua b/packages/nvim/lua/plugins/tiny-inline-diagnostic.lua index f8670ae..dbedef6 100644 --- a/packages/nvim/lua/plugins/tiny-inline-diagnostic.lua +++ b/packages/nvim/lua/plugins/tiny-inline-diagnostic.lua @@ -3,7 +3,17 @@ return { event = "VeryLazy", -- Or `LspAttach` priority = 1000, -- needs to be loaded in first config = function() - require('tiny-inline-diagnostic').setup() + require('tiny-inline-diagnostic').setup({ + preset = "ghost"; + options = { + use_icons_from_diagnostic = true, + multilines = { + enabled = true, + }, + show_all_diags_on_cursorline = false, + enable_on_insert = true, + } + }) vim.diagnostic.config({ virtual_text = false }) -- Only if needed in your configuration, if you already have native LSP diagnostics end } diff --git a/packages/nvim/nvim/plugins/autopair.lua b/packages/nvim/nvim/plugins/autopair.lua new file mode 100644 index 0000000..2db00d8 --- /dev/null +++ b/packages/nvim/nvim/plugins/autopair.lua @@ -0,0 +1,7 @@ +return { + 'windwp/nvim-autopairs', + event = "InsertEnter", + config = true + -- use opts = {} for passing setup options + -- this is equivalent to setup({}) function +} diff --git a/packages/nvim/nvim/plugins/blankline.lua b/packages/nvim/nvim/plugins/blankline.lua new file mode 100644 index 0000000..a1e1bc9 --- /dev/null +++ b/packages/nvim/nvim/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/nvim/plugins/blink-cmp.lua b/packages/nvim/nvim/plugins/blink-cmp.lua new file mode 100644 index 0000000..8b44248 --- /dev/null +++ b/packages/nvim/nvim/plugins/blink-cmp.lua @@ -0,0 +1,46 @@ +return { + 'saghen/blink.cmp', + -- optional: provides snippets for the snippet source + dependencies = { 'rafamadriz/friendly-snippets' }, + + -- use a release tag to download pre-built binaries + version = '1.*', + opts = { + -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept) + -- 'super-tab' for mappings similar to vscode (tab to accept) + -- 'enter' for enter to accept + -- 'none' for no mappings + -- + -- All presets have the following mappings: + -- C-space: Open menu or open docs if already open + -- C-n/C-p or Up/Down: Select next/previous item + -- C-e: Hide menu + -- C-k: Toggle signature help (if signature.enabled = true) + -- + -- See :h blink-cmp-config-keymap for defining your own keymap + keymap = { preset = 'enter' }, + + appearance = { + -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- Adjusts spacing to ensure icons are aligned + nerd_font_variant = 'mono' + }, + + -- (Default) Only show the documentation popup when manually triggered + completion = { documentation = { auto_show = false } }, + + -- Default list of enabled providers defined so that you can extend it + -- elsewhere in your config, without redefining it, due to `opts_extend` + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + }, + + -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance + -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, + -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` + -- + -- See the fuzzy documentation for more information + fuzzy = { implementation = "prefer_rust_with_warning" } + }, + opts_extend = { "sources.default" } +} diff --git a/packages/nvim/nvim/plugins/code-action.lua b/packages/nvim/nvim/plugins/code-action.lua new file mode 100644 index 0000000..b4e3416 --- /dev/null +++ b/packages/nvim/nvim/plugins/code-action.lua @@ -0,0 +1,11 @@ +return { + "rachartier/tiny-code-action.nvim", + dependencies = { + {"nvim-lua/plenary.nvim"}, + {"nvim-telescope/telescope.nvim"}, + }, + event = "LspAttach", + config = function() + require('tiny-code-action').setup() + end +} diff --git a/packages/nvim/nvim/plugins/comment.lua b/packages/nvim/nvim/plugins/comment.lua new file mode 100644 index 0000000..51f52c9 --- /dev/null +++ b/packages/nvim/nvim/plugins/comment.lua @@ -0,0 +1,8 @@ +-- add this to your lua/plugins.lua, lua/plugins/init.lua, or the file you keep your other plugins: +return { + 'numToStr/Comment.nvim', + opts = { + -- add any options here + } +} + diff --git a/packages/nvim/nvim/plugins/dap.lua b/packages/nvim/nvim/plugins/dap.lua new file mode 100644 index 0000000..4be4d3f --- /dev/null +++ b/packages/nvim/nvim/plugins/dap.lua @@ -0,0 +1 @@ +return { "rcarriga/nvim-dap-ui", dependencies = {"mfussenegger/nvim-dap", "nvim-neotest/nvim-nio"} } diff --git a/packages/nvim/nvim/plugins/lazygit.lua b/packages/nvim/nvim/plugins/lazygit.lua new file mode 100644 index 0000000..c7cb122 --- /dev/null +++ b/packages/nvim/nvim/plugins/lazygit.lua @@ -0,0 +1,21 @@ +-- nvim v0.8.0 +return { + "kdheepak/lazygit.nvim", + lazy = true, + cmd = { + "LazyGit", + "LazyGitConfig", + "LazyGitCurrentFile", + "LazyGitFilter", + "LazyGitFilterCurrentFile", + }, + -- optional for floating window border decoration + dependencies = { + "nvim-lua/plenary.nvim", + }, + -- setting the keybinding for LazyGit with 'keys' is recommended in + -- order to load the plugin when the command is run for the first time + keys = { + { "lg", "LazyGit", desc = "LazyGit" } + } +} diff --git a/packages/nvim/nvim/plugins/love.lua b/packages/nvim/nvim/plugins/love.lua new file mode 100644 index 0000000..530b68b --- /dev/null +++ b/packages/nvim/nvim/plugins/love.lua @@ -0,0 +1,11 @@ +-- using lazy.nvim +return { + "S1M0N38/love2d.nvim", + cmd = "LoveRun", + opts = { }, + keys = { + { "v", ft = "lua", desc = "LÖVE" }, + { "vv", "LoveRun", ft = "lua", desc = "Run LÖVE" }, + { "vs", "LoveStop", ft = "lua", desc = "Stop LÖVE" }, + }, +} diff --git a/packages/nvim/nvim/plugins/mini-animate.lua b/packages/nvim/nvim/plugins/mini-animate.lua new file mode 100644 index 0000000..df709de --- /dev/null +++ b/packages/nvim/nvim/plugins/mini-animate.lua @@ -0,0 +1 @@ +return { 'echasnovski/mini.animate', version = '*' } diff --git a/packages/nvim/nvim/plugins/nio.nvim b/packages/nvim/nvim/plugins/nio.nvim new file mode 100644 index 0000000..a8f5d15 --- /dev/null +++ b/packages/nvim/nvim/plugins/nio.nvim @@ -0,0 +1 @@ +return { "nvim-neotest/nvim-nio" } diff --git a/packages/nvim/nvim/plugins/rustaceanvim.lua b/packages/nvim/nvim/plugins/rustaceanvim.lua new file mode 100644 index 0000000..eb83332 --- /dev/null +++ b/packages/nvim/nvim/plugins/rustaceanvim.lua @@ -0,0 +1,5 @@ +return { + 'mrcjkb/rustaceanvim', + version = '^6', -- Recommended + lazy = false, -- This plugin is already lazy +} diff --git a/packages/nvim/nvim/plugins/tabby.lua b/packages/nvim/nvim/plugins/tabby.lua new file mode 100644 index 0000000..b3a0981 --- /dev/null +++ b/packages/nvim/nvim/plugins/tabby.lua @@ -0,0 +1,8 @@ +return { + 'nanozuki/tabby.nvim', + -- event = 'VimEnter', -- if you want lazy load, see below + dependencies = 'nvim-tree/nvim-web-devicons', + config = function() + -- configs... + end, +} diff --git a/packages/nvim/nvim/plugins/tabout.lua b/packages/nvim/nvim/plugins/tabout.lua new file mode 100644 index 0000000..8c3fc18 --- /dev/null +++ b/packages/nvim/nvim/plugins/tabout.lua @@ -0,0 +1,45 @@ +-- Lua +return { + { + 'abecodes/tabout.nvim', + lazy = false, + config = function() + require('tabout').setup { + tabkey = '', -- key to trigger tabout, set to an empty string to disable + backwards_tabkey = '', -- key to trigger backwards tabout, set to an empty string to disable + act_as_tab = true, -- shift content if tab out is not possible + act_as_shift_tab = false, -- reverse shift content if tab out is not possible (if your keyboard/terminal supports ) + default_tab = '', -- shift default action (only at the beginning of a line, otherwise is used) + default_shift_tab = '', -- reverse shift default action, + enable_backwards = true, -- well ... + completion = false, -- if the tabkey is used in a completion pum + tabouts = { + { open = "'", close = "'" }, + { open = '"', close = '"' }, + { open = '`', close = '`' }, + { open = '(', close = ')' }, + { open = '[', close = ']' }, + { open = '{', close = '}' } + }, + ignore_beginning = true, --[[ if the cursor is at the beginning of a filled element it will rather tab out than shift the content ]] + exclude = {} -- tabout will ignore these filetypes + } + end, + dependencies = { -- These are optional + "nvim-treesitter/nvim-treesitter", + "L3MON4D3/LuaSnip", + "hrsh7th/nvim-cmp" + }, + opt = true, -- Set this to true if the plugin is optional + event = 'InsertCharPre', -- Set the event to 'InsertCharPre' for better compatibility + priority = 1000, + }, + { + "L3MON4D3/LuaSnip", + keys = function() + -- Disable default tab keybinding in LuaSnip + return {} + end, + }, +} + diff --git a/packages/nvim/nvim/plugins/toggleterm.lua b/packages/nvim/nvim/plugins/toggleterm.lua new file mode 100644 index 0000000..0b8f7ab --- /dev/null +++ b/packages/nvim/nvim/plugins/toggleterm.lua @@ -0,0 +1,6 @@ +return { + -- amongst your other plugins + {'akinsho/toggleterm.nvim', version = "*", config = true} + -- or + {'akinsho/toggleterm.nvim', version = "*", opts = {--[[ things you want to change go here]]}} +} diff --git a/packages/nvim/nvim/plugins/trouble.lua b/packages/nvim/nvim/plugins/trouble.lua new file mode 100644 index 0000000..3741f30 --- /dev/null +++ b/packages/nvim/nvim/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/nvim/plugins/whichkey.lua b/packages/nvim/nvim/plugins/whichkey.lua new file mode 100644 index 0000000..9fadb97 --- /dev/null +++ b/packages/nvim/nvim/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)", + }, + }, +} diff --git a/packages/terminal/alacritty-catppuccin-mocha.yml b/packages/terminal/alacritty-catppuccin-mocha.yml new file mode 100644 index 0000000..e787352 --- /dev/null +++ b/packages/terminal/alacritty-catppuccin-mocha.yml @@ -0,0 +1,78 @@ +colors: + primary: + background: "#1E1E2E" # base + foreground: "#CDD6F4" # text + # Bright and dim foreground colors + dim_foreground: "#CDD6F4" # text + bright_foreground: "#CDD6F4" # text + + # Cursor colors + cursor: + text: "#1E1E2E" # base + cursor: "#F5E0DC" # rosewater + vi_mode_cursor: + text: "#1E1E2E" # base + cursor: "#B4BEFE" # lavender + + # Search colors + search: + matches: + foreground: "#1E1E2E" # base + background: "#A6ADC8" # subtext0 + focused_match: + foreground: "#1E1E2E" # base + background: "#A6E3A1" # green + footer_bar: + foreground: "#1E1E2E" # base + background: "#A6ADC8" # subtext0 + + # Keyboard regex hints + hints: + start: + foreground: "#1E1E2E" # base + background: "#F9E2AF" # yellow + end: + foreground: "#1E1E2E" # base + background: "#A6ADC8" # subtext0 + + # Selection colors + selection: + text: "#1E1E2E" # base + background: "#F5E0DC" # rosewater + + # Normal colors + normal: + black: "#45475A" # surface1 + red: "#F38BA8" # red + green: "#A6E3A1" # green + yellow: "#F9E2AF" # yellow + blue: "#89B4FA" # blue + magenta: "#F5C2E7" # pink + cyan: "#94E2D5" # teal + white: "#BAC2DE" # subtext1 + + # Bright colors + bright: + black: "#585B70" # surface2 + red: "#F38BA8" # red + green: "#A6E3A1" # green + yellow: "#F9E2AF" # yellow + blue: "#89B4FA" # blue + magenta: "#F5C2E7" # pink + cyan: "#94E2D5" # teal + white: "#A6ADC8" # subtext0 + + # Dim colors + dim: + black: "#45475A" # surface1 + red: "#F38BA8" # red + green: "#A6E3A1" # green + yellow: "#F9E2AF" # yellow + blue: "#89B4FA" # blue + magenta: "#F5C2E7" # pink + cyan: "#94E2D5" # teal + white: "#BAC2DE" # subtext1 + + indexed_colors: + - { index: 16, color: "#FAB387" } + - { index: 17, color: "#F5E0DC" } diff --git a/packages/terminal/default.nix b/packages/terminal/default.nix new file mode 100644 index 0000000..aebe2ca --- /dev/null +++ b/packages/terminal/default.nix @@ -0,0 +1,166 @@ + +{ pkgs, config, lib,... }: +{ + home.packages = with pkgs; [ + + ]; + + + +programs.nushell = { + enable = false; + extraConfig = '' + $env.config = { + show_banner: false, + edit_mode: vi + } + ''; + shellAliases = { + update = "sudo nixos-rebuild switch --flake /etc/nixos/#my-nixos"; + emacs = "emacs -nw"; + femacs = "emacs -nw --load /etc/nixos/packages/emacs/flutter/init.el"; + pemacs = "emacs -nw --load /home/n/Documents/Shells//python/init.el"; + }; +}; + + +programs.carapace = { + enable = false; + enableNushellIntegration = true; +}; + +programs.thefuck.enable = true; + +programs.starship.enable = true; + +programs.zsh = { + enable = true; + enableCompletion = true; + autosuggestion.enable = true; + syntaxHighlighting.enable = true; + + shellAliases = { + update = "sudo nixos-rebuild switch"; + emacs = "emacs -nw"; + femacs = "emacs -nw --load /home/n/Documents/Shells/flutter/init.el"; + pemacs = "emacs -nw --load /home/n/Documents/Shells//python/init.el"; + }; + + initContent = '' + eval "$(starship init zsh)" + ''; + + zplug = { + enable = false; + plugins = [ + { name = "zsh-users/zsh-autosuggestions"; } # Simple plugin installation + ]; + }; + + oh-my-zsh = { + enable = true; + plugins = [ "thefuck" ]; + # theme = ""; + }; +}; + + + +programs.ghostty = { + enable = true; +}; + +home.file."/home/nico/.config/ghostty/config" = { + source = ./ghostty-config; +}; + + +programs.kitty = { + enable = true; + + extraConfig = '' + +# vim:ft=kitty + +## name: Catppuccin Kitty Mocha +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + +map ctrl+shift+w no_op + + +# The basic colors +foreground #cdd6f4 +background #1e1e2e +selection_foreground #1e1e2e +selection_background #f5e0dc + +# Cursor colors +cursor #f5e0dc +cursor_text_color #1e1e2e + +# URL underline color when hovering with mouse +url_color #f5e0dc + +# Kitty window border colors +active_border_color #b4befe +inactive_border_color #6c7086 +bell_border_color #f9e2af + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111b +active_tab_background #cba6f7 +inactive_tab_foreground #cdd6f4 +inactive_tab_background #181825 +tab_bar_background #11111b + +# Colors for marks (marked text in the terminal) +mark1_foreground #1e1e2e +mark1_background #b4befe +mark2_foreground #1e1e2e +mark2_background #cba6f7 +mark3_foreground #1e1e2e +mark3_background #74c7ec + +# The 16 terminal colors + +# black +color0 #45475a +color8 #585b70 + +# red +color1 #f38ba8 +color9 #f38ba8 + +# green +color2 #a6e3a1 +color10 #a6e3a1 + +# yellow +color3 #f9e2af +color11 #f9e2af + +# blue +color4 #89b4fa +color12 #89b4fa + +# magenta +color5 #f5c2e7 +color13 #f5c2e7 + +# cyan +color6 #94e2d5 +color14 #94e2d5 + +# white +color7 #bac2de +color15 #a6adc8 + ''; +}; +} diff --git a/packages/terminal/ghostty-config b/packages/terminal/ghostty-config new file mode 100644 index 0000000..9eb84cd --- /dev/null +++ b/packages/terminal/ghostty-config @@ -0,0 +1,22 @@ +palette = 0=#45475a +palette = 1=#f38ba8 +palette = 2=#a6e3a1 +palette = 3=#f9e2af +palette = 4=#89b4fa +palette = 5=#f5c2e7 +palette = 6=#94e2d5 +palette = 7=#bac2de +palette = 8=#585b70 +palette = 9=#f38ba8 +palette = 10=#a6e3a1 +palette = 11=#f9e2af +palette = 12=#89b4fa +palette = 13=#f5c2e7 +palette = 14=#94e2d5 +palette = 15=#a6adc8 +background = 1e1e2e +foreground = cdd6f4 +cursor-color = f5e0dc +cursor-text = 1e1e2e +selection-background = 353749 +selection-foreground = cdd6f4 diff --git a/packages/terminal/kitty.conf b/packages/terminal/kitty.conf new file mode 100644 index 0000000..f37adf9 --- /dev/null +++ b/packages/terminal/kitty.conf @@ -0,0 +1,80 @@ +# vim:ft=kitty + +## name: Catppuccin Kitty Mocha +## author: Catppuccin Org +## license: MIT +## upstream: https://github.com/catppuccin/kitty/blob/main/themes/mocha.conf +## blurb: Soothing pastel theme for the high-spirited! + + + +# The basic colors +foreground #cdd6f4 +background #1e1e2e +selection_foreground #1e1e2e +selection_background #f5e0dc + +# Cursor colors +cursor #f5e0dc +cursor_text_color #1e1e2e + +# URL underline color when hovering with mouse +url_color #f5e0dc + +# Kitty window border colors +active_border_color #b4befe +inactive_border_color #6c7086 +bell_border_color #f9e2af + +# OS Window titlebar colors +wayland_titlebar_color system +macos_titlebar_color system + +# Tab bar colors +active_tab_foreground #11111b +active_tab_background #cba6f7 +inactive_tab_foreground #cdd6f4 +inactive_tab_background #181825 +tab_bar_background #11111b + +# Colors for marks (marked text in the terminal) +mark1_foreground #1e1e2e +mark1_background #b4befe +mark2_foreground #1e1e2e +mark2_background #cba6f7 +mark3_foreground #1e1e2e +mark3_background #74c7ec + +# The 16 terminal colors + +# black +color0 #45475a +color8 #585b70 + +# red +color1 #f38ba8 +color9 #f38ba8 + +# green +color2 #a6e3a1 +color10 #a6e3a1 + +# yellow +color3 #f9e2af +color11 #f9e2af + +# blue +color4 #89b4fa +color12 #89b4fa + +# magenta +color5 #f5c2e7 +color13 #f5c2e7 + +# cyan +color6 #94e2d5 +color14 #94e2d5 + +# white +color7 #bac2de +color15 #a6adc8 diff --git a/packages/tmux/default.nix b/packages/tmux/default.nix index 430a3f2..8f8207d 100644 --- a/packages/tmux/default.nix +++ b/packages/tmux/default.nix @@ -5,10 +5,18 @@ programs.tmux = { enable = true; + terminal = "tmux-256color"; + disableConfirmationPrompt = true; extraConfig = '' -set-option -sa terminal-overrides ",xterm*:Tc" -set -g @catppuccin_flavor 'mocha' -set -g @catppuccin_window_status_style "rounded" +# set-option -sa terminal-overrides ",xterm*:Tc" +# set -g @catppuccin_flavor 'mocha' +# set -g @catppuccin_window_status_style "rounded" +# set -g default-terminal "xterm-256color" +# set -ga terminal-overrides ",*256col*:Tc" +# set -ga terminal-overrides '*:Ss=\E[%p1%d q:Se=\E[ q' +# set-environment -g COLORTERM "truecolor" +# +# run-shell ${pkgs.tmuxPlugins.catppuccin}/share/tmux-plugins/catppuccin/catppuccin.tmux set -g base-index 1 set -g pane-base-index 1 @@ -18,17 +26,51 @@ set-option -g renumber-windows on bind '"' split-window -v -c "#{pane_current_path}" bind % split-window -h -c "#{pane_current_path}" -unbind C-b -set -g prefix C-Space -bind C-Space send-prefix set -g mouse on bind -n M-H previous-window bind -n M-L next-window + + + +# Smart pane switching with awareness of Vim splits. +# See: https://github.com/christoomey/vim-tmux-navigator + +# decide whether we're in a Vim process +is_vim="ps -o state= -o comm= -t '#{pane_tty}' \ + | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" + +bind-key -n 'C-h' if-shell "$is_vim" 'send-keys C-h' 'select-pane -L' +bind-key -n 'C-j' if-shell "$is_vim" 'send-keys C-j' 'select-pane -D' +bind-key -n 'C-k' if-shell "$is_vim" 'send-keys C-k' 'select-pane -U' +bind-key -n 'C-l' if-shell "$is_vim" 'send-keys C-l' 'select-pane -R' + +tmux_version='$(tmux -V | sed -En "s/^tmux ([0-9]+(.[0-9]+)?).*/\1/p")' + +if-shell -b '[ "$(echo "$tmux_version < 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\' 'select-pane -l'" +if-shell -b '[ "$(echo "$tmux_version >= 3.0" | bc)" = 1 ]' \ + "bind-key -n 'C-\\' if-shell \"$is_vim\" 'send-keys C-\\\\' 'select-pane -l'" + +bind-key -n 'C-Space' if-shell "$is_vim" 'send-keys C-Space' 'select-pane -t:.+' + +bind-key -T copy-mode-vi 'C-h' select-pane -L +bind-key -T copy-mode-vi 'C-j' select-pane -D +bind-key -T copy-mode-vi 'C-k' select-pane -U +bind-key -T copy-mode-vi 'C-l' select-pane -R +bind-key -T copy-mode-vi 'C-\' select-pane -l +bind-key -T copy-mode-vi 'C-Space' select-pane -t:.+ ''; - plugins = [ - pkgs.tmuxPlugins.catppuccin + plugins = with pkgs.tmuxPlugins; [ + catppuccin { + plugin = catppuccin; + extraConfig = '' + set -g @plugin 'catppuccin/tmux#2.1.3' + set -g @catppuccin_window_status_style "rounded" + set -g @catppuccin_flavor 'mocha' + ''; + } # pkgs.tmuxPlugins.vim-tmux-navigator ]; }; diff --git a/shells/flutter/flake.nix b/shells/flutter/flake.nix new file mode 100644 index 0000000..9df203b --- /dev/null +++ b/shells/flutter/flake.nix @@ -0,0 +1,101 @@ +{ + inputs = { + nixpkgs.url = "nixpkgs/nixpkgs-unstable"; + + flake-parts = { + url = "github:hercules-ci/flake-parts"; + inputs.nixpkgs-lib.follows = "nixpkgs"; + }; + + android-nixpkgs.url = "github:tadfisher/android-nixpkgs"; + }; + + + outputs = { + self, + nixpkgs, + flake-parts, + ... + } @ inputs: + flake-parts.lib.mkFlake {inherit inputs;} { + systems = ["x86_64-linux" "aarch64-linux" "x86_64-darwin" "aarch64-darwin"]; + perSystem = { + pkgs, + system, + lib, + ... + }: { + devShells.default = let + pkgs = import nixpkgs { + inherit system; + config = { + allowUnfree = true; + android_sdk.accept_license = true; + }; + overlays = []; + }; + android-nixpkgs = pkgs.callPackage inputs.android-nixpkgs {}; + androidSdk = android-nixpkgs.sdk (sdkPkgs: + with sdkPkgs; [ + cmdline-tools-latest + build-tools-34-0-0 + build-tools-30-0-3 + platform-tools + platforms-android-35 + platforms-android-34 + platforms-android-33 + platforms-android-31 + platforms-android-30 + ndk-26-3-11579264 + cmake-3-22-1 + ]); + PWD = builtins.getEnv "PWD"; + patchedFlutter = pkgs.flutter.override (prev: rec { + flutter = prev.flutter.overrideAttrs (prevAttrs: { + patches = prevAttrs.patches ++ [ + # This patch is needed to avoid the Kotlin Gradle plugin writing to the store. + (pkgs.writeText "kotlin-fix.patch" '' + --- a/packages/flutter_tools/gradle/build.gradle.kts + +++ b/packages/flutter_tools/gradle/build.gradle.kts + @@ -4,6 +4,8 @@ + + import org.jetbrains.kotlin.gradle.dsl.JvmTarget + + +gradle.startParameter.projectCacheDir = layout.buildDirectory.dir("cache").get().asFile + + + plugins { + `java-gradle-plugin` + groovy + '') + ]; + passthru = prevAttrs.passthru // { + sdk = flutter; + }; + # postInstall = (prevAttrs.postInstall or "") + '' + # mkdir -p $out/bin/cache + # touch $out/bin/cache/engine.realm + # ''; + }); + }); + in + pkgs.mkShell { + ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + ANDROID_NDK_ROOT = "${androidSdk}/libexec/android-sdk/ndk-bundle"; + ANDROID_AVD_HOME = "${PWD}/.android/avd"; + ANDROID_HOME = "${androidSdk}/libexec/android-sdk"; + FLUTTER_SDK = "${patchedFlutter}"; + GRADLE_OPTS = "-Dorg.gradle.project.android.aapt2FromMavenOverride=${androidSdk}/share/android-sdk/build-tools/34.0.0/aapt2"; + buildInputs = with pkgs; [ + patchedFlutter + jdk17 + androidSdk + clang + dart + cmake + android-tools + ]; + }; + # formatter = pkgs.alejandra; + }; + }; +} diff --git a/shells/go/flake.nix b/shells/go/flake.nix new file mode 100644 index 0000000..ef98c72 --- /dev/null +++ b/shells/go/flake.nix @@ -0,0 +1,32 @@ +{ + description = "GO"; + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { + inherit system; + }; + in + { + devShell = + with pkgs; mkShell rec { + # ANDROID_SDK_ROOT = "${androidSdk}/libexec/android-sdk"; + GOPATH="${go}"; + buildInputs = [ + go + ]; + + shellHook = '' + zsh + + exit + ''; + }; + }); +} + + diff --git a/shells/rust/flake.nix b/shells/rust/flake.nix new file mode 100644 index 0000000..5611091 --- /dev/null +++ b/shells/rust/flake.nix @@ -0,0 +1,73 @@ +{ + description = "Rust development environment"; + + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + flake-utils.url = "github:numtide/flake-utils"; + }; + + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = nixpkgs.legacyPackages.${system}; + # Read the file relative to the flake's root + # overrides = (builtins.fromTOML (builtins.readFile (self + "/rust-toolchain.toml"))); + libPath = with pkgs; lib.makeLibraryPath [ + # load external libraries that you need in your rust project here + ]; + in + { + devShells.default = pkgs.mkShell rec { + nativeBuildInputs = [ pkgs.pkg-config ]; + buildInputs = with pkgs; [ + clang + llvmPackages.bintools + rustup + dioxus-cli + webkitgtk_4_1 + wasm-pack + wasm-bindgen-cli + curl + wget + file + openssl + gtk3 + librsvg + xdotool + ]; + + # RUSTC_VERSION = overrides.toolchain.channel; + + # https://github.com/rust-lang/rust-bindgen#environment-variables + LIBCLANG_PATH = pkgs.lib.makeLibraryPath [ pkgs.llvmPackages_latest.libclang.lib ]; + + shellHook = '' + export PATH=$PATH:''${CARGO_HOME:-~/.cargo}/bin + export PATH=$PATH:''${RUSTUP_HOME:-~/.rustup}/toolchains/$RUSTC_VERSION-x86_64-unknown-linux-gnu/bin/ + ''; + + # Add precompiled library to rustc search path + RUSTFLAGS = (builtins.map (a: ''-L ${a}/lib'') [ + # add libraries here (e.g. pkgs.libvmi) + ]); + + LD_LIBRARY_PATH = pkgs.lib.makeLibraryPath (buildInputs ++ nativeBuildInputs); + + + # Add glibc, clang, glib, and other headers to bindgen search path + BINDGEN_EXTRA_CLANG_ARGS = + # Includes normal include path + (builtins.map (a: ''-I"${a}/include"'') [ + # add dev libraries here (e.g. pkgs.libvmi.dev) + pkgs.glibc.dev + ]) + # Includes with special directory paths + ++ [ + ''-I"${pkgs.llvmPackages_latest.libclang.lib}/lib/clang/${pkgs.llvmPackages_latest.libclang.version}/include"'' + ''-I"${pkgs.glib.dev}/include/glib-2.0"'' + ''-I${pkgs.glib.out}/lib/glib-2.0/include/'' + ]; + }; + } + ); +}