diff --git a/.gitignore b/.gitignore index 188d061..4a0c619 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ hosts.nix -hardware-configuration.nix diff --git a/configuration.nix b/configuration.nix index a937af7..212ed28 100644 --- a/configuration.nix +++ b/configuration.nix @@ -3,12 +3,13 @@ # and in the NixOS manual (accessible by running ‘nixos-help’). # flake-overlays: -{ config, pkgs, ... }: +{ config, pkgs, lib, inputs, ... }: { imports = [ # Include the results of the hardware scan. - /etc/nixos/hardware-configuration.nix + ./hardware-configuration.nix + inputs.home-manager.nixosModules.default ]; # Enable Bluetooth @@ -33,7 +34,7 @@ # Bootloader. boot.loader.systemd-boot.enable = true; boot.loader.efi.canTouchEfiVariables = true; - boot.loader.efi.efiSysMountPoint = "/boot/efi"; + boot.loader.efi.efiSysMountPoint = "/boot"; boot.supportedFilesystems = [ "ntfs" ]; # Kernel modules @@ -45,17 +46,19 @@ boot.kernelParams = [ "allow-discards" ]; # Setup keyfile - boot.initrd.secrets = { - "/crypto_keyfile.bin" = null; - }; + # boot.initrd.secrets = { + # "/crypto_keyfile.bin" = null; + # }; + fileSystems."/".options = [ "noatime" "nodiratime" "discard" ]; # Enable swap on luks - boot.initrd.luks.devices."luks-c0ef1093-a74e-4491-8c73-0009d3377c19".device = "/dev/disk/by-uuid/c0ef1093-a74e-4491-8c73-0009d3377c19"; - boot.initrd.luks.devices."luks-c0ef1093-a74e-4491-8c73-0009d3377c19".keyFile = "/crypto_keyfile.bin"; - boot.initrd.luks.devices."luks-c0ef1093-a74e-4491-8c73-0009d3377c19".allowDiscards = true; + boot.initrd.luks.devices."luks-3b571a97-616b-4dd7-9abb-d1e0491d178a".device = "/dev/disk/by-uuid/3b571a97-616b-4dd7-9abb-d1e0491d178a"; + # boot.initrd.luks.devices."luks-c0ef1093-a74e-4491-8c73-0009d3377c19".keyFile = "/crypto_keyfile.bin"; + boot.initrd.luks.devices."luks-3b571a97-616b-4dd7-9abb-d1e0491d178a".allowDiscards = true; # Allow discard on / - boot.initrd.luks.devices."luks-8c3d3196-26a2-4c79-8e1e-11160951ba8c".allowDiscards = true; + boot.initrd.luks.devices."a09877ce-f520-429a-9f3b-57b073e4d662".device = "/dev/disk/by-uuid/a09877ce-f520-429a-9f3b-57b073e4d662"; + boot.initrd.luks.devices."a09877ce-f520-429a-9f3b-57b073e4d662".allowDiscards = true; networking.hostName = "bridge"; # Define your hostname. # networking.wireless.enable = true; # Enables wireless support via wpa_supplicant. @@ -176,6 +179,14 @@ networking = { dnsmasq ]; }; + + home-manager = { + extraSpecialArgs = { inherit inputs; }; + users = { + "user" = import ./home.nix; + }; + }; + environment = { homeBinInPath = true; # Include ~/bin/ in $PATH localBinInPath = true; # Include ~/.local/bin in $PATH diff --git a/flake-nixos.nix b/flake-nixos.nix deleted file mode 100644 index 99740c5..0000000 --- a/flake-nixos.nix +++ /dev/null @@ -1,10 +0,0 @@ -{ - inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - - outputs = { self, nixpkgs }: { - nixosConfigurations.bridge = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; - modules = [ ./configuration.nix ]; - }; - }; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..7b137c5 --- /dev/null +++ b/flake.lock @@ -0,0 +1,251 @@ +{ + "nodes": { + "flake-compat": { + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "revCount": 57, + "type": "tarball", + "url": "https://api.flakehub.com/f/pinned/edolstra/flake-compat/1.0.1/018afb31-abd1-7bff-a5e4-cff7e18efb7a/source.tar.gz" + }, + "original": { + "type": "tarball", + "url": "https://flakehub.com/f/edolstra/flake-compat/1.tar.gz" + } + }, + "flake-compat_2": { + "flake": false, + "locked": { + "lastModified": 1696426674, + "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "owner": "edolstra", + "repo": "flake-compat", + "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "type": "github" + }, + "original": { + "owner": "edolstra", + "repo": "flake-compat", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1706830856, + "narHash": "sha256-a0NYyp+h9hlb7ddVz4LUn1vT/PLwqfrWYcHMvFB1xYg=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "b253292d9c0a5ead9bc98c4e9a26c6312e27d69f", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1701680307, + "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "gitignore": { + "inputs": { + "nixpkgs": [ + "nixvim", + "pre-commit-hooks", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1703887061, + "narHash": "sha256-gGPa9qWNc6eCXT/+Z5/zMkyYOuRZqeFZBDbopNZQkuY=", + "owner": "hercules-ci", + "repo": "gitignore.nix", + "rev": "43e1aa1308018f37118e34d3a9cb4f5e75dc11d5", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "gitignore.nix", + "type": "github" + } + }, + "home-manager": { + "inputs": { + "nixpkgs": [ + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1708031129, + "narHash": "sha256-EH20hJfNnc1/ODdDVat9B7aKm0B95L3YtkIRwKLvQG8=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "3d6791b3897b526c82920a2ab5f61d71985b3cf8", + "type": "github" + }, + "original": { + "owner": "nix-community", + "ref": "master", + "repo": "home-manager", + "type": "github" + } + }, + "home-manager_2": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1707919853, + "narHash": "sha256-qxmBGDzutuJ/tsX4gp+Mr7fjxOZBbeT9ixhS5o4iFOw=", + "owner": "nix-community", + "repo": "home-manager", + "rev": "043ba285c6dc20f36441d48525402bcb9743c498", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "home-manager", + "type": "github" + } + }, + "nix-darwin": { + "inputs": { + "nixpkgs": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1707707289, + "narHash": "sha256-YuDt/eSTXMEHv8jS8BEZJgqCcG8Tr3cyqaZjJFXZHsw=", + "owner": "lnl7", + "repo": "nix-darwin", + "rev": "44f50a5ecaab72a61d5fd8e5c5717bc4bf9c25dd", + "type": "github" + }, + "original": { + "owner": "lnl7", + "repo": "nix-darwin", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1707956935, + "narHash": "sha256-ZL2TrjVsiFNKOYwYQozpbvQSwvtV/3Me7Zwhmdsfyu4=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "a4d4fe8c5002202493e87ec8dbc91335ff55552c", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixvim": { + "inputs": { + "flake-compat": "flake-compat", + "flake-parts": "flake-parts", + "home-manager": "home-manager_2", + "nix-darwin": "nix-darwin", + "nixpkgs": [ + "nixpkgs" + ], + "pre-commit-hooks": "pre-commit-hooks" + }, + "locked": { + "lastModified": 1708092675, + "narHash": "sha256-v989FEEnL74uHxb5e2BNInJFbnVO5xmO3o/sX8+JwUU=", + "owner": "nix-community", + "repo": "nixvim", + "rev": "ca6240ddc2f507742f52650b3ea6a74d477afe30", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "nixvim", + "type": "github" + } + }, + "pre-commit-hooks": { + "inputs": { + "flake-compat": "flake-compat_2", + "flake-utils": "flake-utils", + "gitignore": "gitignore", + "nixpkgs": [ + "nixvim", + "nixpkgs" + ], + "nixpkgs-stable": [ + "nixvim", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1707297608, + "narHash": "sha256-ADjo/5VySGlvtCW3qR+vdFF4xM9kJFlRDqcC9ZGI8EA=", + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "rev": "0db2e67ee49910adfa13010e7f012149660af7f0", + "type": "github" + }, + "original": { + "owner": "cachix", + "repo": "pre-commit-hooks.nix", + "type": "github" + } + }, + "root": { + "inputs": { + "home-manager": "home-manager", + "nixpkgs": "nixpkgs", + "nixvim": "nixvim" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..3691401 --- /dev/null +++ b/flake.nix @@ -0,0 +1,28 @@ +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + home-manager = { + url = "github:nix-community/home-manager/master"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + nixvim = { + url = "github:nix-community/nixvim"; + inputs.nixpkgs.follows = "nixpkgs"; + }; + }; + + outputs = { self, nixpkgs, ... }@inputs: + let + system = "x86_64-linux"; + pkgs = nixpkgs.legacyPackages.${system}; + in + { + nixosConfigurations.bridge = nixpkgs.lib.nixosSystem { + specialArgs = {inherit inputs;}; + modules = [ + ./configuration.nix + inputs.home-manager.nixosModules.default + ]; + }; + }; +} diff --git a/hardware-configuration.nix b/hardware-configuration.nix new file mode 100644 index 0000000..ba2a597 --- /dev/null +++ b/hardware-configuration.nix @@ -0,0 +1,46 @@ +# Do not modify this file! It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations. Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, modulesPath, ... }: + +{ + imports = + [ (modulesPath + "/installer/scan/not-detected.nix") + ]; + + boot.initrd.availableKernelModules = [ "xhci_pci" "vmd" "ahci" "nvme" "usbhid" ]; + boot.initrd.kernelModules = [ ]; + boot.kernelModules = [ "kvm-intel" ]; + boot.extraModulePackages = [ ]; + + fileSystems."/" = + { device = "/dev/disk/by-uuid/e45731e0-2052-4bfa-a0e8-8cc8f688ad89"; + fsType = "ext4"; + }; + + boot.initrd.luks.devices."luks-a09877ce-f520-429a-9f3b-57b073e4d662".device = "/dev/disk/by-uuid/a09877ce-f520-429a-9f3b-57b073e4d662"; + + fileSystems."/boot" = + { device = "/dev/disk/by-uuid/5E03-9FED"; + fsType = "vfat"; + }; + + swapDevices = + [ { device = "/dev/disk/by-uuid/29f26db6-b544-4744-b6d8-74ed071b2baf"; } + ]; + + # Enables DHCP on each ethernet and wireless interface. In case of scripted networking + # (the default) this is the recommended approach. When using systemd-networkd it's + # still possible to use this option, but it's recommended to use it in conjunction + # with explicit per-interface declarations with `networking.interfaces..useDHCP`. + networking.useDHCP = lib.mkDefault true; + # networking.interfaces.br-07ff78b90602.useDHCP = lib.mkDefault true; + # networking.interfaces.docker0.useDHCP = lib.mkDefault true; + # networking.interfaces.veth8ab8363.useDHCP = lib.mkDefault true; + # networking.interfaces.vetha05d8b1.useDHCP = lib.mkDefault true; + # networking.interfaces.virbr0.useDHCP = lib.mkDefault true; + # networking.interfaces.wlp1s0.useDHCP = lib.mkDefault true; + + nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; +} diff --git a/home.nix b/home.nix index e2f86d1..8c90312 100644 --- a/home.nix +++ b/home.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ config, pkgs, inputs, ... }: { # Home Manager needs a bit of information about you and the @@ -7,6 +7,10 @@ home.homeDirectory = "/home/user"; programs.home-manager.enable = true; + imports = [ + inputs.nixvim.homeManagerModules.nixvim + ]; + # This value determines the Home Manager release that your # configuration is compatible with. This helps avoid breakage # when a new Home Manager release introduces backwards @@ -108,49 +112,50 @@ "; }; + programs.nixvim = import ./nixvim.nix pkgs; programs.neovim = { - enable = true; + enable = false; defaultEditor = true; - coc.enable = true; - extraLuaConfig = '' - for _, source in ipairs { - "astronvim.bootstrap", - "astronvim.options", - "astronvim.lazy", - "astronvim.autocmds", - "astronvim.mappings", - } do - local status_ok, fault = pcall(require, source) - if not status_ok then vim.api.nvim_err_writeln("Failed to load " .. source .. "\n\n" .. fault - ) end - end - - if astronvim.default_colorscheme then - if not pcall(vim.cmd.colorscheme, astronvim.default_colorscheme) then - requrie("astronvim.utils").notify( - "Error setting up colorscheme: " .. astronvim.default_colorscheme, - vim.log.levels.ERROR - ) - end - end - - require("astronvim.utils").conditional_func(astronvim.user_opts("polish", nil, false), true) - ''; - - plugins = (with pkgs.vimPlugins; [ - rust-vim - rust-tools-nvim - coc-rust-analyzer - nvim-treesitter-parsers.rust - nvim-treesitter-parsers.cpp - nvim-treesitter-parsers.c - nvim-treesitter-parsers.latex - coc-rls - coc-clangd - clangd_extensions-nvim - vim-clang-format - ]); + # coc.enable = true; + # extraLuaConfig = '' + # for _, source in ipairs { + # "astronvim.bootstrap", + # "astronvim.options", + # "astronvim.lazy", + # "astronvim.autocmds", + # "astronvim.mappings", + # } do + # local status_ok, fault = pcall(require, source) + # if not status_ok then vim.api.nvim_err_writeln("Failed to load " .. source .. "\n\n" .. fault + # ) end + # end + # + # if astronvim.default_colorscheme then + # if not pcall(vim.cmd.colorscheme, astronvim.default_colorscheme) then + # requrie("astronvim.utils").notify( + # "Error setting up colorscheme: " .. astronvim.default_colorscheme, + # vim.log.levels.ERROR + # ) + # end + # end + # + # require("astronvim.utils").conditional_func(astronvim.user_opts("polish", nil, false), true) + # ''; + # + # plugins = (with pkgs.vimPlugins; [ + # rust-vim + # rust-tools-nvim + # coc-rust-analyzer + # nvim-treesitter-parsers.rust + # nvim-treesitter-parsers.cpp + # nvim-treesitter-parsers.c + # nvim-treesitter-parsers.latex + # coc-rls + # coc-clangd + # clangd_extensions-nvim + # vim-clang-format + # ]); }; programs.vscode = { diff --git a/nixvim.nix b/nixvim.nix new file mode 100644 index 0000000..17a5f69 --- /dev/null +++ b/nixvim.nix @@ -0,0 +1,641 @@ +{ pkgs, ... }: +{ + enable = true; + colorschemes.gruvbox.enable = true; + options = { + number = true; + relativenumber = true; + shiftwidth = 2; + expandtab = true; + }; + + globals.mapleader = " "; + keymaps = [ + { + mode = "n"; + key = "w"; + action = "w"; + options.desc = "Save"; + } + { + mode = "n"; + key = "q"; + action = "confirm q"; + options.desc = "Quit"; + } + { + mode = "n"; + key = "Q"; + action = "qall"; + options.desc = "Quit all"; + } + { + mode = "n"; + key = "n"; + action = "enew"; + options.desc = "New File"; + } + { + mode = "n"; + key = ""; + action = "w!"; + options.desc = "Force write"; + } + { + mode = "n"; + key = ""; + action = "qa!"; + options.desc = "Force quit"; + } + { + mode = "n"; + key = "|"; + action = "vsplit"; + options.desc = "Vertical Split"; + } + { + mode = "n"; + key = "\\"; + action = "split"; + options.desc = "Horizontal split"; + } + { + mode = "n"; + key = "c"; + action = "bd"; + options.desc = "Close buffer"; + } + { + mode = "n"; + key = "["; + action = "bp"; + options.desc = "Switch to previous buffer"; + } + { + mode = "n"; + key = "]"; + action = "bn"; + options.desc = "Switch to next buffer"; + } + { + mode = "n"; + key = "g]"; + action = "GitGutterNextHunk"; + options.desc = "Next Git hunk"; + } + { + mode = "n"; + key = "g["; + action = "GitGutterPrevHunk"; + options.desc = "Previous Git hunk"; + } + { + mode = "n"; + key = "gp"; + action = "GitGutterPreviewHunk"; + options.desc = "Preview Git hunk"; + } + { + mode = "n"; + key = "gSs"; + action = "GitGutterStageHunk"; + options.desc = "Stage Git hunk"; + } + { + mode = "n"; + key = "gSs"; + action = "GitGutterStageHunk"; + options.desc = "Stage Git hunk"; + } + { + mode = "n"; + key = "gSu"; + action = "GitGutterUndoHunk"; + options.desc = "Undo Git hunk"; + } + { + key = "gd"; + action = "GitGutterDiffOrig"; + options.desc = "View Git diff"; + } + { + mode = "n"; + key = "e"; + action = "Neotree toggle"; + options.desc = "Toggle Neotree"; + } + { + key = "oe"; + action = ":Ollama Explain_Code"; + options.desc = "Explain Code Snippet"; + } + { + key = "oo"; + action = ":Ollama Raw"; + options.desc = "Ask LLM"; + } + { + key = "os"; + action = ":Ollama Simplify_Code"; + options.desc = "Simplify code snippet"; + } + ]; + plugins = { + alpha = { + enable = true; + theme = "dashboard"; + }; + auto-save = { + enable = false; + enableAutoSave = true; + }; + barbar = { + enable = true; + animation = true; + clickable = true; + }; + barbecue = { + enable = true; + }; + bufferline = { + enable = true; + }; + chadtree = { + enable = false; + }; + clangd-extensions = { + enable = true; + }; + cmp-buffer = { + enable = true; + }; + cmp-cmdline = { + enable = true; + }; + cmp-cmdline-history = { + enable = true; + }; + cmp-dap = { + enable = true; + }; + cmp-dictionary = { + enable = true; + }; + cmp-digraphs = { + enable = true; + }; + cmp-emoji = { + enable = true; + }; + cmp-fuzzy-buffer = { + enable = true; + }; + cmp-fuzzy-path = { + enable = true; + }; + cmp-latex-symbols = { + enable = true; + }; + cmp-git = { + enable = true; + }; + cmp-look = { + enable = true; + }; + cmp-nvim-lsp = { + enable = true; + }; + cmp-nvim-lsp-document-symbol = { + enable = true; + }; + cmp-nvim-lsp-signature-help = { + enable = true; + }; + cmp-nvim-lua = { + enable = true; + }; + cmp-nvim-ultisnips = { + enable = true; + }; + cmp-omni = { + enable = true; + }; + cmp-path = { + enable = true; + }; + cmp-rg = { + enable = true; + }; + cmp-spell = { + enable = true; + }; + cmp-treesitter = { + enable = true; + }; + cmp-vim-lsp = { + enable = true; + }; + cmp-zsh = { + enable = true; + }; + cmp_luasnip = { + enable = true; + }; + comment-nvim = { + enable = true; + }; + coq-nvim = { + enable = true; + alwaysComplete = true; + autoStart = true; + installArtifacts = true; + recommendedKeymaps = true; + }; + crates-nvim = { + enable = true; + }; + cursorline = { + enable = true; + cursorline.number = true; + cursorline.timeout = 0; + }; + dap = { + enable = true; + extensions = { + dap-python = { + enable = true; + }; + dap-ui = { + enable = true; + }; + }; + }; + dashboard = { + enable = true; + footer = [ "Footer text" ]; + header = [ "Header text" ]; + }; + diffview = { + enable = true; + }; + efmls-configs = { + setup = { + all.linter = [ "codespell" ]; + bash.formatter = [ "beautysh" ]; + c = { + formatter = [ "clang_tidy" ]; + linter = [ "clang_tidy" ]; + }; + "c++" = { + formatter = [ "clang_tidy" ]; + linter = [ "clang_tidy" ]; + }; + cmake = { + formatter = [ "gersemi" ]; + linter = [ "cmake_lint" ]; + }; + css = { + formatter = [ "prettier" ]; + linter = [ "proselint" ]; + }; + gitcommit.linter = [ "gitlint" ]; + html = { + formatter = [ "prettier" ]; + linter = [ "proselint" ]; + }; + lua = { + formatter = [ "lua_format" ]; + linter = [ "luacheck" ]; + }; + markdown = { + formatter = [ "mdformat" ]; + linter = [ "proselint" ]; + }; + nix = { + formatter = [ "nixfmt" ]; + linter = [ "statix" ]; + }; + python = { + formatter = [ "black" ]; + linter = [ "ruff" ]; + }; + rust.formatter = [ "rustfmt" ]; + sh = { + formatter = [ "beautysh" ]; + linter = [ "shellcheck" ]; + }; + tex = { + formatter = [ "latexindent" ]; + linter = [ "chktex" ]; + }; + vim.linter = [ "vint" ]; + zsh.formatter = [ "beautysh" ]; + }; + }; + endwise = { + enable = true; + }; + fidget = { + enable = true; + integration.nvim-tree.enable = true; + }; + flash = { + enable = true; + }; + floaterm = { + enable = true; + }; + git-worktree = { + enable = true; + enableTelescope = false; + }; + gitblame = { + enable = true; + }; + gitgutter = { + enable = true; + }; + hmts = { + enable = true; + }; + illuminate = { + enable = true; + }; + image = { + enable = true; + backend = "ueberzug"; + }; + inc-rename = { + enable = true; + }; + indent-blankline = { + enable = true; + }; + intellitab = { + enable = true; + }; + leap = { + enable = true; + }; + lightline = { + enable = true; + }; + lint = { + enable = true; + }; + lsp = { + enable = true; + servers = { + bashls = { + enable = true; + autostart = true; + }; + clangd = { + enable = true; + autostart = true; + cmd = [ "clangd" "--offset-encoding=utf-16" ]; + extraOptions = { }; + }; + cmake = { + enable = true; + autostart = true; + }; + cssls = { + enable = true; + autostart = true; + }; + dockerls = { + enable = true; + autostart = true; + }; + efm = { + enable = true; + autostart = true; + }; + html = { + enable = true; + autostart = true; + }; + ltex = { + enable = false; + autostart = true; + }; + lua-ls = { + enable = true; + autostart = true; + }; + marksman = { + enable = true; + autostart = true; + }; + nil_ls = { + enable = true; + autostart = true; + }; + pyright = { + enable = true; + autostart = true; + }; + rust-analyzer = { + enable = true; + autostart = true; + installCargo = true; + installRustc = true; + }; + texlab = { + enable = true; + autostart = true; + }; + }; + }; + lsp-format = { + enable = true; + }; + lsp-lines = { + enable = true; + }; + lspkind = { + enable = true; + cmp = { + enable = true; + }; + }; + lspsaga = { + enable = true; + beacon = { + enable = true; + }; + }; + luasnip = { + enable = true; + }; + magma-nvim = { + enable = true; + automaticallyOpenOutput = true; + imageProvider = "ueberzug"; + wrapOutput = true; + }; + markdown-preview = { + enable = true; + autoStart = true; + }; + navbuddy = { + enable = true; + lsp.autoAttach = true; + }; + neo-tree = { + enable = true; + enableGitStatus = true; + enableModifiedMarkers = true; + enableRefreshOnWrite = true; + }; + neorg = { + enable = true; + lazyLoading = true; + }; + nix = { + enable = true; + }; + nix-develop = { + enable = true; + }; + none-ls = { + enable = true; + enableLspFormat = true; + }; + nvim-autopairs = { + enable = true; + }; + nvim-bqf = { + enable = true; + autoEnable = true; + preview = { + autoPreview = true; + bufLabel = true; + }; + }; + nvim-cmp = { + enable = true; + autoEnableSources = true; + formatting.expandableIndicator = true; + }; + nvim-colorizer = { + enable = true; + }; + nvim-tree = { + enable = true; + }; + nvim-ufo = { + enable = false; + }; + obsidian = { + enable = true; + }; + ollama = { + enable = true; + model = "tinyllama"; + url = "http://127.0.0.1:11435"; + }; + packer = { + enable = true; + }; + project-nvim = { + enable = true; + }; + quickmath = { + enable = true; + }; + rainbow-delimiters = { + enable = true; + }; + refactoring = { + enable = true; + }; + rust-tools = { + enable = true; + }; + rustaceanvim = { + enable = true; + }; + sniprun = { + enable = true; + }; + spider = { + enable = true; + }; + surround = { + enable = true; + }; + tagbar = { + enable = true; + }; + telescope = { + enable = true; + keymaps = { }; + extensions = { + file_browser.enable = true; + frecency.enable = true; + fzf-native = { + enable = true; + caseMode = "ignore_case"; + fuzzy = true; + }; + fzy-native.enable = true; + media_files.enable = true; + project-nvim.enable = true; + undo.enable = true; + }; + }; + toggleterm = { + enable = true; + }; + treesitter = { + enable = true; + }; + treesitter-context = { + enable = true; + }; + treesitter-refactor = { + enable = true; + }; + trouble = { + enable = true; + }; + ts-autotag = { + enable = true; + }; + undotree = { + enable = true; + }; + which-key = { + enable = true; + }; + wilder = { + enable = true; + }; + }; + extraPlugins = with pkgs.vimPlugins; [ + # Rust + rust-vim + rust-tools-nvim + coc-rust-analyzer + # Treesitter + nvim-treesitter-parsers.rust + nvim-treesitter-parsers.cpp + nvim-treesitter-parsers.c + nvim-treesitter-parsers.latex + # Coc + coc-rls + coc-clangd + clangd_extensions-nvim + vim-clang-format + # Mason + mason-nvim + mason-tool-installer-nvim + mason-lspconfig-nvim + # Telescope + telescope-nvim + ]; + clipboard.providers.xsel.enable = true; + } +