NixOS configuration 🪄
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

🎨✨ updated structure of neovim ++ added anoynmous option

Signed-off-by: Xaiya Schumin <d.schumin@proton.me>

+228 -181
+4 -1
home/blmedia/default.nix
··· 15 15 direnv.enable = true; 16 16 git.enable = true; 17 17 18 - neovim.enable = true; 18 + neovim = { 19 + enable = true; 20 + anonymous = true; 21 + }; 19 22 kitty.enable = true; 20 23 }; 21 24 };
+4 -1
home/xaiya/default.nix
··· 18 18 direnv.enable = true; 19 19 git.enable = true; 20 20 21 - neovim.enable = true; 21 + neovim = { 22 + enable = true; 23 + anonymous = false; 24 + }; 22 25 kitty.enable = true; 23 26 }; 24 27 };
+14 -132
modules/home/cli/neovim/default.nix
··· 7 7 ... 8 8 }: 9 9 let 10 - inherit (self.lib.modules) mkPackageOpt; 10 + inherit (self.lib.modules) 11 + mkOpt 12 + ; 13 + 14 + inherit (lib.types) 15 + bool 16 + ; 11 17 12 18 inherit (lib) 13 19 mkIf ··· 24 30 25 31 ./lsp.nix 26 32 ./telescope.nix 33 + ./visual.nix 34 + ./sessions.nix 35 + ./social.nix 27 36 ]; 28 37 29 - options.sylveon.cli.neovim = 30 - mkPackageOpt pkgs.neovim "vim editor, only better"; 38 + options.sylveon.cli.neovim = { 39 + enable = mkOpt bool false "vim editor, only better"; 40 + anonymous = mkOpt bool false "If the file data should be anonymous to people (e.g discord rpc)"; 41 + }; 31 42 32 43 config = mkIf cfg.enable { 33 44 home.packages = [ ··· 105 116 }; 106 117 }; 107 118 108 - # External neovim plugins that will be loaded 109 119 plugins = { 110 - lualine.enable = true; # TODO: configuration? 111 - 112 - # Ghost message next to line, blaming who wrote the spaghetti 113 - gitblame = { 114 - enable = true; 115 - 116 - settings = { 117 - date_format = "%r"; 118 - message_template = " <summary> • <author> (<date>)"; 119 - }; 120 - }; 121 - 122 - # visualize currently open files 123 - bufferline = { 124 - enable = true; 125 - 126 - settings = { 127 - options = { 128 - show_close_icon = false; 129 - show_buffer_close_icons = false; 130 - show_buffer_icons = false; 131 - 132 - mode = "buffers"; 133 - modified_icon = "●"; 134 - diagnostics = "nvim_lsp"; 135 - }; 136 - }; 137 - }; 138 - 139 - nvim-tree = { 140 - enable = true; 141 - autoClose = true; 142 - 143 - settings = { 144 - diagnostics.enable = true; 145 - modified.enable = true; 146 - view.width = "20%"; 147 - 148 - actions = { 149 - open_file.quit_on_open = true; 150 - }; 151 - 152 - renderer = { 153 - full_name = true; 154 - indent_markers.enable = true; 155 - }; 156 - }; 157 - }; 158 - 159 - treesitter = { 160 - enable = true; 161 - 162 - settings = { 163 - auto_install = true; 164 - 165 - folding = true; 166 - highlight.enable = true; 167 - }; 168 - }; 169 - 170 - blink-cmp = { 171 - enable = true; 172 - 173 - settings = { 174 - keymap = { 175 - "<tab>" = [ "select_and_accept" "snippet_forward" "fallback" ]; 176 - "<C-space>" = [ "show" "show_documentation" "hide_documentation" ]; 177 - "<down>" = [ "select_next" "fallback" ]; 178 - "<up>" = [ "select_prev" "fallback" ]; 179 - }; 180 - 181 - completion = { 182 - trigger.show_on_keyboard = true; 183 - ghost_text.enabled = true; 184 - 185 - list.cycle = { 186 - from_bottom = false; 187 - from_top = false; 188 - }; 189 - 190 - menu = { 191 - scrolloff = 0; 192 - border = "none"; 193 - draw = { 194 - padding = 1; 195 - gap = 1; 196 - treesitter = [ "lsp" "buffer" ]; 197 - 198 - }; 199 - }; 200 - }; 201 - 202 - sources = { 203 - default = [ "lsp" "path" "snippets" "buffer" ]; 204 - }; 205 - }; 206 - }; 207 - 208 - cord = { 209 - enable = false; # TODO: disable for blmedia account 210 - 211 - settings = { 212 - display = { 213 - swap_fields = true; 214 - 215 - theme = "atom"; 216 - flavor = "accent"; 217 - }; 218 - 219 - editor.icon = "https://raw.githubusercontent.com/IogaMaster/neovim/main/.github/assets/nixvim-dark.webp"; 220 - text.file_browser = "Browsing through project"; 221 - 222 - }; 223 - }; 224 - 225 - /* Curently bricked TODO */ 226 - project-nvim = { 227 - enable = false; 228 - enableTelescope = true; 229 - }; 230 - 231 - colorizer.enable = true; 232 - 233 - auto-save.enable = true; 234 - auto-session.enable = true; 235 - 236 - direnv.enable = true; 237 - 238 120 web-devicons.enable = true; 239 121 lz-n.enable = true; # Lazy loading 240 122 };
+97 -47
modules/home/cli/neovim/lsp.nix
··· 1 1 { pkgs, ... }: { 2 - programs.nixvim.plugins.lsp = { 3 - enable = true; 2 + programs.nixvim.plugins = { 3 + blink-cmp = { 4 + enable = true; 4 5 5 - servers = { 6 - dockerls.enable = true; 7 - bashls.enable = true; 8 - cssls.enable = true; 6 + settings = { 7 + keymap = { 8 + "<tab>" = [ "select_and_accept" "snippet_forward" "fallback" ]; 9 + "<C-space>" = [ "show" "show_documentation" "hide_documentation" ]; 10 + "<down>" = [ "select_next" "fallback" ]; 11 + "<up>" = [ "select_prev" "fallback" ]; 12 + }; 9 13 10 - twiggy_language_server = { 11 - enable = true; 12 - package = pkgs.twig-language-server; # https://github.com/nixos/nixpkgs/issues/425846 13 - cmd = [ "${pkgs.twig-language-server}/bin/twig-language-server" ]; 14 - }; 14 + completion = { 15 + trigger.show_on_keyboard = true; 16 + ghost_text.enabled = true; 15 17 16 - emmet_language_server = { 17 - enable = true; 18 + list.cycle = { 19 + from_bottom = false; 20 + from_top = false; 21 + }; 18 22 19 - filetypes = [ 20 - "css" 21 - "html" 22 - "javascript" 23 - "javascriptreact" 24 - "less" 25 - "sass" 26 - "scss" 27 - "typescriptreact" 28 - ]; 29 - }; 23 + menu = { 24 + scrolloff = 0; 25 + border = "none"; 26 + draw = { 27 + padding = 1; 28 + gap = 1; 29 + treesitter = [ "lsp" "buffer" ]; 30 + }; 31 + }; 32 + }; 30 33 31 - ts_ls = { 32 - enable = true; 33 - filetypes = [ "ts" "js" ]; 34 + sources = { 35 + default = [ "lsp" "path" "snippets" "buffer" ]; 36 + }; 34 37 }; 38 + }; 35 39 36 - html.enable = true; 37 - 38 - intelephense = { 39 - enable = true; 40 - package = pkgs.intelephense; 41 - }; 40 + treesitter = { 41 + enable = true; 42 42 43 - jqls.enable = true; 44 - jsonls.enable = true; 45 - lua_ls.enable = true; 43 + settings = { 44 + auto_install = true; 46 45 47 - nil_ls = { 48 - enable = true; 49 - cmd = [ "${pkgs.nil}/bin/nil" ]; 50 - settings = { 51 - formatting.command = [ "nix fmt" ]; 52 - nix.maxMemoryMB = null; 53 - }; 46 + folding = true; 47 + highlight.enable = true; 54 48 }; 49 + }; 55 50 56 - vuels = { 57 - enable = true; 58 - package = pkgs.vue-language-server; 59 - cmd = [ "${pkgs.vue-language-server}/bin/vue-language-server" ]; 51 + lsp = { 52 + enable = true; 53 + 54 + servers = { 55 + dockerls.enable = true; 56 + bashls.enable = true; 57 + cssls.enable = true; 58 + 59 + twiggy_language_server = { 60 + enable = true; 61 + package = pkgs.twig-language-server; # https://github.com/nixos/nixpkgs/issues/425846 62 + cmd = [ "${pkgs.twig-language-server}/bin/twig-language-server" ]; 63 + }; 64 + 65 + emmet_language_server = { 66 + enable = true; 67 + 68 + filetypes = [ 69 + "css" 70 + "html" 71 + "javascript" 72 + "javascriptreact" 73 + "less" 74 + "sass" 75 + "scss" 76 + "typescriptreact" 77 + ]; 78 + }; 79 + 80 + ts_ls = { 81 + enable = true; 82 + filetypes = [ "ts" "js" ]; 83 + }; 84 + 85 + html.enable = true; 86 + 87 + intelephense = { 88 + enable = true; 89 + package = pkgs.intelephense; 90 + }; 91 + 92 + jqls.enable = true; 93 + jsonls.enable = true; 94 + lua_ls.enable = true; 95 + 96 + nil_ls = { 97 + enable = true; 98 + cmd = [ "${pkgs.nil}/bin/nil" ]; 99 + settings = { 100 + formatting.command = [ "nix fmt" ]; 101 + nix.maxMemoryMB = null; 102 + }; 103 + }; 104 + 105 + vuels = { 106 + enable = true; 107 + package = pkgs.vue-language-server; 108 + cmd = [ "${pkgs.vue-language-server}/bin/vue-language-server" ]; 109 + }; 60 110 }; 61 111 }; 62 112 };
+13
modules/home/cli/neovim/sessions.nix
··· 1 + { 2 + programs.nixvim.plugins = { 3 + /* Curently bricked TODO */ 4 + project-nvim = { 5 + enable = true; 6 + enableTelescope = true; 7 + }; 8 + 9 + auto-save.enable = true; 10 + auto-session.enable = true; 11 + direnv.enable = true; 12 + }; 13 + }
+40
modules/home/cli/neovim/social.nix
··· 1 + { lib, config, ... }: 2 + let 3 + inherit (lib) mkMerge mkIf; 4 + 5 + cfg = config.sylveon.cli.neovim; 6 + in 7 + { 8 + programs.nixvim.plugins = { 9 + cord = { 10 + enable = true; # TODO: disable for blmedia account 11 + 12 + settings = { 13 + display = { 14 + swap_fields = true; 15 + 16 + theme = "atom"; 17 + flavor = "accent"; 18 + }; 19 + 20 + timestamp.shared = true; 21 + 22 + editor = { 23 + tooltip = "NixOS managed VIM (sylveon flake)"; 24 + icon = "https://raw.githubusercontent.com/IogaMaster/neovim/main/.github/assets/nixvim-dark.webp"; 25 + }; 26 + 27 + text = mkMerge [ 28 + { 29 + file_browser = "Browsing through project"; 30 + } 31 + 32 + (mkIf cfg.anonymous { 33 + workspace = "In anonymised project"; 34 + editing = "Editing anonymised file"; 35 + }) 36 + ]; 37 + }; 38 + }; 39 + }; 40 + }
+56
modules/home/cli/neovim/visual.nix
··· 1 + { 2 + programs.nixvim.plugins = { 3 + lualine.enable = true; # TODO: configuration? 4 + colorizer.enable = true; 5 + 6 + # Ghost message next to line, blaming who wrote the spaghetti 7 + gitblame = { 8 + enable = true; 9 + 10 + settings = { 11 + date_format = "%r"; 12 + message_template = " <summary> • <author> (<date>)"; 13 + }; 14 + }; 15 + 16 + # visualize currently open files 17 + bufferline = { 18 + enable = true; 19 + 20 + settings = { 21 + options = { 22 + show_close_icon = false; 23 + show_buffer_close_icons = false; 24 + show_buffer_icons = false; 25 + 26 + mode = "buffers"; 27 + modified_icon = "●"; 28 + diagnostics = "nvim_lsp"; 29 + }; 30 + }; 31 + }; 32 + 33 + 34 + nvim-tree = { 35 + enable = true; 36 + autoClose = true; 37 + 38 + settings = { 39 + diagnostics.enable = true; 40 + modified.enable = true; 41 + view.width = "20%"; 42 + 43 + actions = { 44 + open_file.quit_on_open = true; 45 + }; 46 + 47 + renderer = { 48 + full_name = true; 49 + indent_markers.enable = true; 50 + }; 51 + }; 52 + }; 53 + 54 + 55 + }; 56 + }