mirror of
				https://github.com/bartvdbraak/dotfiles.git
				synced 2025-10-30 23:29:10 +00:00 
			
		
		
		
	Compare commits
	
		
			No commits in common. "9e754a026e5542874e6b7dbccc20a26e88df4051" and "5ac124b38998e16322cada319e888ff556a6c7f4" have entirely different histories.
		
	
	
		
			9e754a026e
			...
			5ac124b389
		
	
		
					 87 changed files with 3315 additions and 2218 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,3 @@ | ||||||
|  | [submodule "tongfang/.config/nvim"] | ||||||
|  | 	path = tongfang/.config/nvim | ||||||
|  | 	url = git@github.com:bartvdbraak/nbim.git | ||||||
|  | @ -1,10 +1,3 @@ | ||||||
| This repository is personal and currently doesn't come with any documentation or community-centric promises. | This repository is personal and currently doesn't come with any documentation or community-centric promises. | ||||||
| 
 | 
 | ||||||
| You're allowed to use it in whatever way you see fit but **on your own risk**, see our GLWTS license. | You're allowed to use it in whatever way you see fit, see [LICENSE](./LICENSE). | ||||||
| 
 |  | ||||||
| - install nixos |  | ||||||
| - open terminal and run `nix-shell -p git` |  | ||||||
| - run `git clone https://github.com/bartvdbraak/nixos-dotfiles.git` |  | ||||||
| - run `./nixos-dotfiles/dotfiles/symlink.sh` if you want to get all dotfiles in your home |  | ||||||
| - run `sudo ./nixos-dotfiles/nixos/symlink.sh` if you want get nixos configs in your /etc (it backs up your current) |  | ||||||
| - run one of the configs to switch to it, e.g. `nixos-rebuild switch --flake .#tongfang`, reboot is recommended |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| alias ll='ls -la' |  | ||||||
| alias nrs='sudo nixos-rebuild --use-remote-sudo switch' |  | ||||||
| alias nrb='sudo nixos-rebuild --use-remote-sudo boot' |  | ||||||
| alias ngc='sudo nix-collect-garbage --delete-older-than 14d' |  | ||||||
| alias code='codium' |  | ||||||
| alias rgf='rg --files | rg' |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| font-size = 12 |  | ||||||
| font-family = JetBrainsMono Nerd Font |  | ||||||
| background-opacity = 0.95 |  | ||||||
| background-blur-radius = 20 |  | ||||||
| mouse-hide-while-typing = true |  | ||||||
|  | @ -1,2 +0,0 @@ | ||||||
| [user] |  | ||||||
| 	email = bart@blender.org |  | ||||||
							
								
								
									
										6
									
								
								dotfiles/.config/nvim/.gitignore
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								dotfiles/.config/nvim/.gitignore
									
										
									
									
										vendored
									
									
								
							|  | @ -1,6 +0,0 @@ | ||||||
| tags |  | ||||||
| test.sh |  | ||||||
| .luarc.json |  | ||||||
| nvim |  | ||||||
| 
 |  | ||||||
| spell/ |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| column_width = 160 |  | ||||||
| line_endings = "Unix" |  | ||||||
| indent_type = "Spaces" |  | ||||||
| indent_width = 2 |  | ||||||
| quote_style = "AutoPreferSingle" |  | ||||||
| call_parentheses = "None" |  | ||||||
|  | @ -1,888 +0,0 @@ | ||||||
| -- Set <space> as the leader key |  | ||||||
| -- See `:help mapleader` |  | ||||||
| --  NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used) |  | ||||||
| vim.g.mapleader = ' ' |  | ||||||
| vim.g.maplocalleader = ' ' |  | ||||||
| 
 |  | ||||||
| -- Set to true if you have a Nerd Font installed and selected in the terminal |  | ||||||
| vim.g.have_nerd_font = true |  | ||||||
| 
 |  | ||||||
| -- [[ Setting options ]] |  | ||||||
| -- See `:help vim.opt` |  | ||||||
| -- NOTE: You can change these options as you wish! |  | ||||||
| --  For more options, you can see `:help option-list` |  | ||||||
| 
 |  | ||||||
| -- Make line numbers default |  | ||||||
| vim.opt.number = true |  | ||||||
| -- You can also add relative line numbers, to help with jumping. |  | ||||||
| --  Experiment for yourself to see if you like it! |  | ||||||
| -- vim.opt.relativenumber = true |  | ||||||
| 
 |  | ||||||
| -- Enable mouse mode, can be useful for resizing splits for example! |  | ||||||
| vim.opt.mouse = 'a' |  | ||||||
| 
 |  | ||||||
| -- Don't show the mode, since it's already in the status line |  | ||||||
| vim.opt.showmode = false |  | ||||||
| 
 |  | ||||||
| -- Sync clipboard between OS and Neovim. |  | ||||||
| --  Schedule the setting after `UiEnter` because it can increase startup-time. |  | ||||||
| --  Remove this option if you want your OS clipboard to remain independent. |  | ||||||
| --  See `:help 'clipboard'` |  | ||||||
| vim.schedule(function() |  | ||||||
|   vim.opt.clipboard = 'unnamedplus' |  | ||||||
| end) |  | ||||||
| 
 |  | ||||||
| -- Enable break indent |  | ||||||
| vim.opt.breakindent = true |  | ||||||
| 
 |  | ||||||
| -- Save undo history |  | ||||||
| vim.opt.undofile = true |  | ||||||
| 
 |  | ||||||
| -- Case-insensitive searching UNLESS \C or one or more capital letters in the search term |  | ||||||
| vim.opt.ignorecase = true |  | ||||||
| vim.opt.smartcase = true |  | ||||||
| 
 |  | ||||||
| -- Keep signcolumn on by default |  | ||||||
| vim.opt.signcolumn = 'yes' |  | ||||||
| 
 |  | ||||||
| -- Decrease update time |  | ||||||
| vim.opt.updatetime = 250 |  | ||||||
| 
 |  | ||||||
| -- Decrease mapped sequence wait time |  | ||||||
| vim.opt.timeoutlen = 300 |  | ||||||
| 
 |  | ||||||
| -- Configure how new splits should be opened |  | ||||||
| vim.opt.splitright = true |  | ||||||
| vim.opt.splitbelow = true |  | ||||||
| 
 |  | ||||||
| -- Sets how neovim will display certain whitespace characters in the editor. |  | ||||||
| --  See `:help 'list'` |  | ||||||
| --  and `:help 'listchars'` |  | ||||||
| vim.opt.list = true |  | ||||||
| vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' } |  | ||||||
| 
 |  | ||||||
| -- Preview substitutions live, as you type! |  | ||||||
| vim.opt.inccommand = 'split' |  | ||||||
| 
 |  | ||||||
| -- Show which line your cursor is on |  | ||||||
| vim.opt.cursorline = true |  | ||||||
| 
 |  | ||||||
| -- Minimal number of screen lines to keep above and below the cursor. |  | ||||||
| vim.opt.scrolloff = 10 |  | ||||||
| 
 |  | ||||||
| -- [[ Basic Keymaps ]] |  | ||||||
| --  See `:help vim.keymap.set()` |  | ||||||
| 
 |  | ||||||
| -- Clear highlights on search when pressing <Esc> in normal mode |  | ||||||
| --  See `:help hlsearch` |  | ||||||
| vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>') |  | ||||||
| 
 |  | ||||||
| -- Diagnostic keymaps |  | ||||||
| vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' }) |  | ||||||
| 
 |  | ||||||
| -- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier |  | ||||||
| -- for people to discover. Otherwise, you normally need to press <C-\><C-n>, which |  | ||||||
| -- is not what someone will guess without a bit more experience. |  | ||||||
| -- |  | ||||||
| -- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping |  | ||||||
| -- or just use <C-\><C-n> to exit terminal mode |  | ||||||
| vim.keymap.set('t', '<Esc><Esc>', '<C-\\><C-n>', { desc = 'Exit terminal mode' }) |  | ||||||
| 
 |  | ||||||
| -- TIP: Disable arrow keys in normal mode |  | ||||||
| -- vim.keymap.set('n', '<left>', '<cmd>echo "Use h to move!!"<CR>') |  | ||||||
| -- vim.keymap.set('n', '<right>', '<cmd>echo "Use l to move!!"<CR>') |  | ||||||
| -- vim.keymap.set('n', '<up>', '<cmd>echo "Use k to move!!"<CR>') |  | ||||||
| -- vim.keymap.set('n', '<down>', '<cmd>echo "Use j to move!!"<CR>') |  | ||||||
| 
 |  | ||||||
| -- Keybinds to make split navigation easier. |  | ||||||
| --  Use CTRL+<hjkl> to switch between windows |  | ||||||
| -- |  | ||||||
| --  See `:help wincmd` for a list of all window commands |  | ||||||
| vim.keymap.set('n', '<C-h>', '<C-w><C-h>', { desc = 'Move focus to the left window' }) |  | ||||||
| vim.keymap.set('n', '<C-l>', '<C-w><C-l>', { desc = 'Move focus to the right window' }) |  | ||||||
| vim.keymap.set('n', '<C-j>', '<C-w><C-j>', { desc = 'Move focus to the lower window' }) |  | ||||||
| vim.keymap.set('n', '<C-k>', '<C-w><C-k>', { desc = 'Move focus to the upper window' }) |  | ||||||
| 
 |  | ||||||
| -- [[ Basic Autocommands ]] |  | ||||||
| --  See `:help lua-guide-autocommands` |  | ||||||
| 
 |  | ||||||
| -- Highlight when yanking (copying) text |  | ||||||
| --  Try it with `yap` in normal mode |  | ||||||
| --  See `:help vim.highlight.on_yank()` |  | ||||||
| vim.api.nvim_create_autocmd('TextYankPost', { |  | ||||||
|   desc = 'Highlight when yanking (copying) text', |  | ||||||
|   group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), |  | ||||||
|   callback = function() |  | ||||||
|     vim.highlight.on_yank() |  | ||||||
|   end, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| -- [[ Install `lazy.nvim` plugin manager ]] |  | ||||||
| --    See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info |  | ||||||
| local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' |  | ||||||
| if not (vim.uv or vim.loop).fs_stat(lazypath) then |  | ||||||
|   local lazyrepo = 'https://github.com/folke/lazy.nvim.git' |  | ||||||
|   local out = vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath } |  | ||||||
|   if vim.v.shell_error ~= 0 then |  | ||||||
|     error('Error cloning lazy.nvim:\n' .. out) |  | ||||||
|   end |  | ||||||
| end ---@diagnostic disable-next-line: undefined-field |  | ||||||
| vim.opt.rtp:prepend(lazypath) |  | ||||||
| 
 |  | ||||||
| -- [[ Configure and install plugins ]] |  | ||||||
| -- |  | ||||||
| --  To check the current status of your plugins, run |  | ||||||
| --    :Lazy |  | ||||||
| -- |  | ||||||
| --  You can press `?` in this menu for help. Use `:q` to close the window |  | ||||||
| -- |  | ||||||
| --  To update plugins you can run |  | ||||||
| --    :Lazy update |  | ||||||
| -- |  | ||||||
| -- NOTE: Here is where you install your plugins. |  | ||||||
| require('lazy').setup({ |  | ||||||
|   -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link). |  | ||||||
|   'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically |  | ||||||
| 
 |  | ||||||
|   -- NOTE: Plugins can also be added by using a table, |  | ||||||
|   -- with the first argument being the link and the following |  | ||||||
|   -- keys can be used to configure plugin behavior/loading/etc. |  | ||||||
|   -- |  | ||||||
|   -- Use `opts = {}` to force a plugin to be loaded. |  | ||||||
|   -- |  | ||||||
| 
 |  | ||||||
|   -- Here is a more advanced example where we pass configuration |  | ||||||
|   -- options to `gitsigns.nvim`. This is equivalent to the following Lua: |  | ||||||
|   --    require('gitsigns').setup({ ... }) |  | ||||||
|   -- |  | ||||||
|   -- See `:help gitsigns` to understand what the configuration keys do |  | ||||||
|   { -- Adds git related signs to the gutter, as well as utilities for managing changes |  | ||||||
|     'lewis6991/gitsigns.nvim', |  | ||||||
|     opts = { |  | ||||||
|       signs = { |  | ||||||
|         add = { text = '+' }, |  | ||||||
|         change = { text = '~' }, |  | ||||||
|         delete = { text = '_' }, |  | ||||||
|         topdelete = { text = '‾' }, |  | ||||||
|         changedelete = { text = '~' }, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- NOTE: Plugins can also be configured to run Lua code when they are loaded. |  | ||||||
|   -- |  | ||||||
|   -- This is often very useful to both group configuration, as well as handle |  | ||||||
|   -- lazy loading plugins that don't need to be loaded immediately at startup. |  | ||||||
|   -- |  | ||||||
|   -- For example, in the following configuration, we use: |  | ||||||
|   --  event = 'VimEnter' |  | ||||||
|   -- |  | ||||||
|   -- which loads which-key before all the UI elements are loaded. Events can be |  | ||||||
|   -- normal autocommands events (`:help autocmd-events`). |  | ||||||
|   -- |  | ||||||
|   -- Then, because we use the `opts` key (recommended), the configuration runs |  | ||||||
|   -- after the plugin has been loaded as `require(MODULE).setup(opts)`. |  | ||||||
| 
 |  | ||||||
|   { -- Useful plugin to show you pending keybinds. |  | ||||||
|     'folke/which-key.nvim', |  | ||||||
|     event = 'VimEnter', -- Sets the loading event to 'VimEnter' |  | ||||||
|     opts = { |  | ||||||
|       -- delay between pressing a key and opening which-key (milliseconds) |  | ||||||
|       -- this setting is independent of vim.opt.timeoutlen |  | ||||||
|       delay = 0, |  | ||||||
|       icons = { |  | ||||||
|         -- set icon mappings to true if you have a Nerd Font |  | ||||||
|         mappings = vim.g.have_nerd_font, |  | ||||||
|         -- If you are using a Nerd Font: set icons.keys to an empty table which will use the |  | ||||||
|         -- default which-key.nvim defined Nerd Font icons, otherwise define a string table |  | ||||||
|         keys = vim.g.have_nerd_font and {} or { |  | ||||||
|           Up = '<Up> ', |  | ||||||
|           Down = '<Down> ', |  | ||||||
|           Left = '<Left> ', |  | ||||||
|           Right = '<Right> ', |  | ||||||
|           C = '<C-…> ', |  | ||||||
|           M = '<M-…> ', |  | ||||||
|           D = '<D-…> ', |  | ||||||
|           S = '<S-…> ', |  | ||||||
|           CR = '<CR> ', |  | ||||||
|           Esc = '<Esc> ', |  | ||||||
|           ScrollWheelDown = '<ScrollWheelDown> ', |  | ||||||
|           ScrollWheelUp = '<ScrollWheelUp> ', |  | ||||||
|           NL = '<NL> ', |  | ||||||
|           BS = '<BS> ', |  | ||||||
|           Space = '<Space> ', |  | ||||||
|           Tab = '<Tab> ', |  | ||||||
|           F1 = '<F1>', |  | ||||||
|           F2 = '<F2>', |  | ||||||
|           F3 = '<F3>', |  | ||||||
|           F4 = '<F4>', |  | ||||||
|           F5 = '<F5>', |  | ||||||
|           F6 = '<F6>', |  | ||||||
|           F7 = '<F7>', |  | ||||||
|           F8 = '<F8>', |  | ||||||
|           F9 = '<F9>', |  | ||||||
|           F10 = '<F10>', |  | ||||||
|           F11 = '<F11>', |  | ||||||
|           F12 = '<F12>', |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
| 
 |  | ||||||
|       -- Document existing key chains |  | ||||||
|       spec = { |  | ||||||
|         { '<leader>c', group = '[C]ode', mode = { 'n', 'x' } }, |  | ||||||
|         { '<leader>d', group = '[D]ocument' }, |  | ||||||
|         { '<leader>r', group = '[R]ename' }, |  | ||||||
|         { '<leader>s', group = '[S]earch' }, |  | ||||||
|         { '<leader>w', group = '[W]orkspace' }, |  | ||||||
|         { '<leader>t', group = '[T]oggle' }, |  | ||||||
|         { '<leader>h', group = 'Git [H]unk', mode = { 'n', 'v' } }, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- NOTE: Plugins can specify dependencies. |  | ||||||
|   -- |  | ||||||
|   -- The dependencies are proper plugin specifications as well - anything |  | ||||||
|   -- you do for a plugin at the top level, you can do for a dependency. |  | ||||||
|   -- |  | ||||||
|   -- Use the `dependencies` key to specify the dependencies of a particular plugin |  | ||||||
| 
 |  | ||||||
|   { -- Fuzzy Finder (files, lsp, etc) |  | ||||||
|     'nvim-telescope/telescope.nvim', |  | ||||||
|     event = 'VimEnter', |  | ||||||
|     branch = '0.1.x', |  | ||||||
|     dependencies = { |  | ||||||
|       'nvim-lua/plenary.nvim', |  | ||||||
|       { -- If encountering errors, see telescope-fzf-native README for installation instructions |  | ||||||
|         'nvim-telescope/telescope-fzf-native.nvim', |  | ||||||
| 
 |  | ||||||
|         -- `build` is used to run some command when the plugin is installed/updated. |  | ||||||
|         -- This is only run then, not every time Neovim starts up. |  | ||||||
|         build = 'make', |  | ||||||
| 
 |  | ||||||
|         -- `cond` is a condition used to determine whether this plugin should be |  | ||||||
|         -- installed and loaded. |  | ||||||
|         cond = function() |  | ||||||
|           return vim.fn.executable 'make' == 1 |  | ||||||
|         end, |  | ||||||
|       }, |  | ||||||
|       { 'nvim-telescope/telescope-ui-select.nvim' }, |  | ||||||
| 
 |  | ||||||
|       -- Useful for getting pretty icons, but requires a Nerd Font. |  | ||||||
|       { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, |  | ||||||
|     }, |  | ||||||
|     config = function() |  | ||||||
|       -- Telescope is a fuzzy finder that comes with a lot of different things that |  | ||||||
|       -- it can fuzzy find! It's more than just a "file finder", it can search |  | ||||||
|       -- many different aspects of Neovim, your workspace, LSP, and more! |  | ||||||
|       -- |  | ||||||
|       -- The easiest way to use Telescope, is to start by doing something like: |  | ||||||
|       --  :Telescope help_tags |  | ||||||
|       -- |  | ||||||
|       -- After running this command, a window will open up and you're able to |  | ||||||
|       -- type in the prompt window. You'll see a list of `help_tags` options and |  | ||||||
|       -- a corresponding preview of the help. |  | ||||||
|       -- |  | ||||||
|       -- Two important keymaps to use while in Telescope are: |  | ||||||
|       --  - Insert mode: <c-/> |  | ||||||
|       --  - Normal mode: ? |  | ||||||
|       -- |  | ||||||
|       -- This opens a window that shows you all of the keymaps for the current |  | ||||||
|       -- Telescope picker. This is really useful to discover what Telescope can |  | ||||||
|       -- do as well as how to actually do it! |  | ||||||
| 
 |  | ||||||
|       -- [[ Configure Telescope ]] |  | ||||||
|       -- See `:help telescope` and `:help telescope.setup()` |  | ||||||
|       require('telescope').setup { |  | ||||||
|         -- You can put your default mappings / updates / etc. in here |  | ||||||
|         --  All the info you're looking for is in `:help telescope.setup()` |  | ||||||
|         -- |  | ||||||
|         -- defaults = { |  | ||||||
|         --   mappings = { |  | ||||||
|         --     i = { ['<c-enter>'] = 'to_fuzzy_refine' }, |  | ||||||
|         --   }, |  | ||||||
|         -- }, |  | ||||||
|         -- pickers = {} |  | ||||||
|         extensions = { |  | ||||||
|           ['ui-select'] = { |  | ||||||
|             require('telescope.themes').get_dropdown(), |  | ||||||
|           }, |  | ||||||
|         }, |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       -- Enable Telescope extensions if they are installed |  | ||||||
|       pcall(require('telescope').load_extension, 'fzf') |  | ||||||
|       pcall(require('telescope').load_extension, 'ui-select') |  | ||||||
| 
 |  | ||||||
|       -- See `:help telescope.builtin` |  | ||||||
|       local builtin = require 'telescope.builtin' |  | ||||||
|       vim.keymap.set('n', '<leader>sh', builtin.help_tags, { desc = '[S]earch [H]elp' }) |  | ||||||
|       vim.keymap.set('n', '<leader>sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' }) |  | ||||||
|       vim.keymap.set('n', '<leader>sf', builtin.find_files, { desc = '[S]earch [F]iles' }) |  | ||||||
|       vim.keymap.set('n', '<leader>ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' }) |  | ||||||
|       vim.keymap.set('n', '<leader>sw', builtin.grep_string, { desc = '[S]earch current [W]ord' }) |  | ||||||
|       vim.keymap.set('n', '<leader>sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) |  | ||||||
|       vim.keymap.set('n', '<leader>sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) |  | ||||||
|       vim.keymap.set('n', '<leader>sr', builtin.resume, { desc = '[S]earch [R]esume' }) |  | ||||||
|       vim.keymap.set('n', '<leader>s.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) |  | ||||||
|       vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' }) |  | ||||||
| 
 |  | ||||||
|       -- Slightly advanced example of overriding default behavior and theme |  | ||||||
|       vim.keymap.set('n', '<leader>/', function() |  | ||||||
|         -- You can pass additional configuration to Telescope to change the theme, layout, etc. |  | ||||||
|         builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown { |  | ||||||
|           winblend = 10, |  | ||||||
|           previewer = false, |  | ||||||
|         }) |  | ||||||
|       end, { desc = '[/] Fuzzily search in current buffer' }) |  | ||||||
| 
 |  | ||||||
|       -- It's also possible to pass additional configuration options. |  | ||||||
|       --  See `:help telescope.builtin.live_grep()` for information about particular keys |  | ||||||
|       vim.keymap.set('n', '<leader>s/', function() |  | ||||||
|         builtin.live_grep { |  | ||||||
|           grep_open_files = true, |  | ||||||
|           prompt_title = 'Live Grep in Open Files', |  | ||||||
|         } |  | ||||||
|       end, { desc = '[S]earch [/] in Open Files' }) |  | ||||||
| 
 |  | ||||||
|       -- Shortcut for searching your Neovim configuration files |  | ||||||
|       vim.keymap.set('n', '<leader>sn', function() |  | ||||||
|         builtin.find_files { cwd = vim.fn.stdpath 'config' } |  | ||||||
|       end, { desc = '[S]earch [N]eovim files' }) |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- LSP Plugins |  | ||||||
|   { |  | ||||||
|     -- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins |  | ||||||
|     -- used for completion, annotations and signatures of Neovim apis |  | ||||||
|     'folke/lazydev.nvim', |  | ||||||
|     ft = 'lua', |  | ||||||
|     opts = { |  | ||||||
|       library = { |  | ||||||
|         -- Load luvit types when the `vim.uv` word is found |  | ||||||
|         { path = '${3rd}/luv/library', words = { 'vim%.uv' } }, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   { |  | ||||||
|     -- Main LSP Configuration |  | ||||||
|     'neovim/nvim-lspconfig', |  | ||||||
|     dependencies = { |  | ||||||
|       -- Automatically install LSPs and related tools to stdpath for Neovim |  | ||||||
|       -- Mason must be loaded before its dependents so we need to set it up here. |  | ||||||
|       -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` |  | ||||||
|       { 'williamboman/mason.nvim', opts = {} }, |  | ||||||
|       'williamboman/mason-lspconfig.nvim', |  | ||||||
|       'WhoIsSethDaniel/mason-tool-installer.nvim', |  | ||||||
| 
 |  | ||||||
|       -- Useful status updates for LSP. |  | ||||||
|       { 'j-hui/fidget.nvim', opts = {} }, |  | ||||||
| 
 |  | ||||||
|       -- Allows extra capabilities provided by nvim-cmp |  | ||||||
|       'hrsh7th/cmp-nvim-lsp', |  | ||||||
|     }, |  | ||||||
|     config = function() |  | ||||||
|       -- Brief aside: **What is LSP?** |  | ||||||
|       -- |  | ||||||
|       -- LSP is an initialism you've probably heard, but might not understand what it is. |  | ||||||
|       -- |  | ||||||
|       -- LSP stands for Language Server Protocol. It's a protocol that helps editors |  | ||||||
|       -- and language tooling communicate in a standardized fashion. |  | ||||||
|       -- |  | ||||||
|       -- In general, you have a "server" which is some tool built to understand a particular |  | ||||||
|       -- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc.). These Language Servers |  | ||||||
|       -- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone |  | ||||||
|       -- processes that communicate with some "client" - in this case, Neovim! |  | ||||||
|       -- |  | ||||||
|       -- LSP provides Neovim with features like: |  | ||||||
|       --  - Go to definition |  | ||||||
|       --  - Find references |  | ||||||
|       --  - Autocompletion |  | ||||||
|       --  - Symbol Search |  | ||||||
|       --  - and more! |  | ||||||
|       -- |  | ||||||
|       -- Thus, Language Servers are external tools that must be installed separately from |  | ||||||
|       -- Neovim. This is where `mason` and related plugins come into play. |  | ||||||
|       -- |  | ||||||
|       -- If you're wondering about lsp vs treesitter, you can check out the wonderfully |  | ||||||
|       -- and elegantly composed help section, `:help lsp-vs-treesitter` |  | ||||||
| 
 |  | ||||||
|       --  This function gets run when an LSP attaches to a particular buffer. |  | ||||||
|       --    That is to say, every time a new file is opened that is associated with |  | ||||||
|       --    an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this |  | ||||||
|       --    function will be executed to configure the current buffer |  | ||||||
|       vim.api.nvim_create_autocmd('LspAttach', { |  | ||||||
|         group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }), |  | ||||||
|         callback = function(event) |  | ||||||
|           -- NOTE: Remember that Lua is a real programming language, and as such it is possible |  | ||||||
|           -- to define small helper and utility functions so you don't have to repeat yourself. |  | ||||||
|           -- |  | ||||||
|           -- In this case, we create a function that lets us more easily define mappings specific |  | ||||||
|           -- for LSP related items. It sets the mode, buffer and description for us each time. |  | ||||||
|           local map = function(keys, func, desc, mode) |  | ||||||
|             mode = mode or 'n' |  | ||||||
|             vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc }) |  | ||||||
|           end |  | ||||||
| 
 |  | ||||||
|           -- Jump to the definition of the word under your cursor. |  | ||||||
|           --  This is where a variable was first declared, or where a function is defined, etc. |  | ||||||
|           --  To jump back, press <C-t>. |  | ||||||
|           map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') |  | ||||||
| 
 |  | ||||||
|           -- Find references for the word under your cursor. |  | ||||||
|           map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences') |  | ||||||
| 
 |  | ||||||
|           -- Jump to the implementation of the word under your cursor. |  | ||||||
|           --  Useful when your language has ways of declaring types without an actual implementation. |  | ||||||
|           map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation') |  | ||||||
| 
 |  | ||||||
|           -- Jump to the type of the word under your cursor. |  | ||||||
|           --  Useful when you're not sure what type a variable is and you want to see |  | ||||||
|           --  the definition of its *type*, not where it was *defined*. |  | ||||||
|           map('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition') |  | ||||||
| 
 |  | ||||||
|           -- Fuzzy find all the symbols in your current document. |  | ||||||
|           --  Symbols are things like variables, functions, types, etc. |  | ||||||
|           map('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols') |  | ||||||
| 
 |  | ||||||
|           -- Fuzzy find all the symbols in your current workspace. |  | ||||||
|           --  Similar to document symbols, except searches over your entire project. |  | ||||||
|           map('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols') |  | ||||||
| 
 |  | ||||||
|           -- Rename the variable under your cursor. |  | ||||||
|           --  Most Language Servers support renaming across files, etc. |  | ||||||
|           map('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame') |  | ||||||
| 
 |  | ||||||
|           -- Execute a code action, usually your cursor needs to be on top of an error |  | ||||||
|           -- or a suggestion from your LSP for this to activate. |  | ||||||
|           map('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' }) |  | ||||||
| 
 |  | ||||||
|           -- WARN: This is not Goto Definition, this is Goto Declaration. |  | ||||||
|           --  For example, in C this would take you to the header. |  | ||||||
|           map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration') |  | ||||||
| 
 |  | ||||||
|           -- The following two autocommands are used to highlight references of the |  | ||||||
|           -- word under your cursor when your cursor rests there for a little while. |  | ||||||
|           --    See `:help CursorHold` for information about when this is executed |  | ||||||
|           -- |  | ||||||
|           -- When you move your cursor, the highlights will be cleared (the second autocommand). |  | ||||||
|           local client = vim.lsp.get_client_by_id(event.data.client_id) |  | ||||||
|           if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_documentHighlight) then |  | ||||||
|             local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false }) |  | ||||||
|             vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, { |  | ||||||
|               buffer = event.buf, |  | ||||||
|               group = highlight_augroup, |  | ||||||
|               callback = vim.lsp.buf.document_highlight, |  | ||||||
|             }) |  | ||||||
| 
 |  | ||||||
|             vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, { |  | ||||||
|               buffer = event.buf, |  | ||||||
|               group = highlight_augroup, |  | ||||||
|               callback = vim.lsp.buf.clear_references, |  | ||||||
|             }) |  | ||||||
| 
 |  | ||||||
|             vim.api.nvim_create_autocmd('LspDetach', { |  | ||||||
|               group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }), |  | ||||||
|               callback = function(event2) |  | ||||||
|                 vim.lsp.buf.clear_references() |  | ||||||
|                 vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf } |  | ||||||
|               end, |  | ||||||
|             }) |  | ||||||
|           end |  | ||||||
| 
 |  | ||||||
|           -- The following code creates a keymap to toggle inlay hints in your |  | ||||||
|           -- code, if the language server you are using supports them |  | ||||||
|           -- |  | ||||||
|           -- This may be unwanted, since they displace some of your code |  | ||||||
|           if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then |  | ||||||
|             map('<leader>th', function() |  | ||||||
|               vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled { bufnr = event.buf }) |  | ||||||
|             end, '[T]oggle Inlay [H]ints') |  | ||||||
|           end |  | ||||||
|         end, |  | ||||||
|       }) |  | ||||||
| 
 |  | ||||||
|       -- Change diagnostic symbols in the sign column (gutter) |  | ||||||
|       -- if vim.g.have_nerd_font then |  | ||||||
|       --   local signs = { ERROR = '', WARN = '', INFO = '', HINT = '' } |  | ||||||
|       --   local diagnostic_signs = {} |  | ||||||
|       --   for type, icon in pairs(signs) do |  | ||||||
|       --     diagnostic_signs[vim.diagnostic.severity[type]] = icon |  | ||||||
|       --   end |  | ||||||
|       --   vim.diagnostic.config { signs = { text = diagnostic_signs } } |  | ||||||
|       -- end |  | ||||||
| 
 |  | ||||||
|       -- LSP servers and clients are able to communicate to each other what features they support. |  | ||||||
|       --  By default, Neovim doesn't support everything that is in the LSP specification. |  | ||||||
|       --  When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities. |  | ||||||
|       --  So, we create new capabilities with nvim cmp, and then broadcast that to the servers. |  | ||||||
|       local capabilities = vim.lsp.protocol.make_client_capabilities() |  | ||||||
|       capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities()) |  | ||||||
| 
 |  | ||||||
|       -- Enable the following language servers |  | ||||||
|       --  Feel free to add/remove any LSPs that you want here. They will automatically be installed. |  | ||||||
|       -- |  | ||||||
|       --  Add any additional override configuration in the following tables. Available keys are: |  | ||||||
|       --  - cmd (table): Override the default command used to start the server |  | ||||||
|       --  - filetypes (table): Override the default list of associated filetypes for the server |  | ||||||
|       --  - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features. |  | ||||||
|       --  - settings (table): Override the default settings passed when initializing the server. |  | ||||||
|       --        For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/ |  | ||||||
|       local servers = { |  | ||||||
|         -- clangd = {}, |  | ||||||
|         -- gopls = {}, |  | ||||||
|         -- pyright = {}, |  | ||||||
|         -- rust_analyzer = {}, |  | ||||||
|         -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs |  | ||||||
|         -- |  | ||||||
|         -- Some languages (like typescript) have entire language plugins that can be useful: |  | ||||||
|         --    https://github.com/pmizio/typescript-tools.nvim |  | ||||||
|         -- |  | ||||||
|         -- But for many setups, the LSP (`ts_ls`) will work just fine |  | ||||||
|         -- ts_ls = {}, |  | ||||||
|         -- |  | ||||||
| 
 |  | ||||||
|         lua_ls = { |  | ||||||
|           -- cmd = { ... }, |  | ||||||
|           -- filetypes = { ... }, |  | ||||||
|           -- capabilities = {}, |  | ||||||
|           settings = { |  | ||||||
|             Lua = { |  | ||||||
|               completion = { |  | ||||||
|                 callSnippet = 'Replace', |  | ||||||
|               }, |  | ||||||
|               -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings |  | ||||||
|               -- diagnostics = { disable = { 'missing-fields' } }, |  | ||||||
|             }, |  | ||||||
|           }, |  | ||||||
|         }, |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       -- Ensure the servers and tools above are installed |  | ||||||
|       -- |  | ||||||
|       -- To check the current status of installed tools and/or manually install |  | ||||||
|       -- other tools, you can run |  | ||||||
|       --    :Mason |  | ||||||
|       -- |  | ||||||
|       -- You can press `g?` for help in this menu. |  | ||||||
|       -- |  | ||||||
|       -- `mason` had to be setup earlier: to configure its options see the |  | ||||||
|       -- `dependencies` table for `nvim-lspconfig` above. |  | ||||||
|       -- |  | ||||||
|       -- You can add other tools here that you want Mason to install |  | ||||||
|       -- for you, so that they are available from within Neovim. |  | ||||||
|       local ensure_installed = vim.tbl_keys(servers or {}) |  | ||||||
|       vim.list_extend(ensure_installed, { |  | ||||||
|         'stylua', -- Used to format Lua code |  | ||||||
|       }) |  | ||||||
|       require('mason-tool-installer').setup { ensure_installed = ensure_installed } |  | ||||||
| 
 |  | ||||||
|       require('mason-lspconfig').setup { |  | ||||||
|         handlers = { |  | ||||||
|           function(server_name) |  | ||||||
|             local server = servers[server_name] or {} |  | ||||||
|             -- This handles overriding only values explicitly passed |  | ||||||
|             -- by the server configuration above. Useful when disabling |  | ||||||
|             -- certain features of an LSP (for example, turning off formatting for ts_ls) |  | ||||||
|             server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {}) |  | ||||||
|             require('lspconfig')[server_name].setup(server) |  | ||||||
|           end, |  | ||||||
|         }, |  | ||||||
|       } |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { -- Autoformat |  | ||||||
|     'stevearc/conform.nvim', |  | ||||||
|     event = { 'BufWritePre' }, |  | ||||||
|     cmd = { 'ConformInfo' }, |  | ||||||
|     keys = { |  | ||||||
|       { |  | ||||||
|         '<leader>f', |  | ||||||
|         function() |  | ||||||
|           require('conform').format { async = true, lsp_format = 'fallback' } |  | ||||||
|         end, |  | ||||||
|         mode = '', |  | ||||||
|         desc = '[F]ormat buffer', |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|     opts = { |  | ||||||
|       notify_on_error = false, |  | ||||||
|       format_on_save = function(bufnr) |  | ||||||
|         -- Disable "format_on_save lsp_fallback" for languages that don't |  | ||||||
|         -- have a well standardized coding style. You can add additional |  | ||||||
|         -- languages here or re-enable it for the disabled ones. |  | ||||||
|         local disable_filetypes = { c = true, cpp = true } |  | ||||||
|         local lsp_format_opt |  | ||||||
|         if disable_filetypes[vim.bo[bufnr].filetype] then |  | ||||||
|           lsp_format_opt = 'never' |  | ||||||
|         else |  | ||||||
|           lsp_format_opt = 'fallback' |  | ||||||
|         end |  | ||||||
|         return { |  | ||||||
|           timeout_ms = 500, |  | ||||||
|           lsp_format = lsp_format_opt, |  | ||||||
|         } |  | ||||||
|       end, |  | ||||||
|       formatters_by_ft = { |  | ||||||
|         lua = { 'stylua' }, |  | ||||||
|         -- Conform can also run multiple formatters sequentially |  | ||||||
|         -- python = { "isort", "black" }, |  | ||||||
|         -- |  | ||||||
|         -- You can use 'stop_after_first' to run the first available formatter from the list |  | ||||||
|         -- javascript = { "prettierd", "prettier", stop_after_first = true }, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { -- Autocompletion |  | ||||||
|     'hrsh7th/nvim-cmp', |  | ||||||
|     event = 'InsertEnter', |  | ||||||
|     dependencies = { |  | ||||||
|       -- Snippet Engine & its associated nvim-cmp source |  | ||||||
|       { |  | ||||||
|         'L3MON4D3/LuaSnip', |  | ||||||
|         build = (function() |  | ||||||
|           -- Build Step is needed for regex support in snippets. |  | ||||||
|           -- This step is not supported in many windows environments. |  | ||||||
|           -- Remove the below condition to re-enable on windows. |  | ||||||
|           if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then |  | ||||||
|             return |  | ||||||
|           end |  | ||||||
|           return 'make install_jsregexp' |  | ||||||
|         end)(), |  | ||||||
|         dependencies = { |  | ||||||
|           -- `friendly-snippets` contains a variety of premade snippets. |  | ||||||
|           --    See the README about individual language/framework/plugin snippets: |  | ||||||
|           --    https://github.com/rafamadriz/friendly-snippets |  | ||||||
|           -- { |  | ||||||
|           --   'rafamadriz/friendly-snippets', |  | ||||||
|           --   config = function() |  | ||||||
|           --     require('luasnip.loaders.from_vscode').lazy_load() |  | ||||||
|           --   end, |  | ||||||
|           -- }, |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|       'saadparwaiz1/cmp_luasnip', |  | ||||||
| 
 |  | ||||||
|       -- Adds other completion capabilities. |  | ||||||
|       --  nvim-cmp does not ship with all sources by default. They are split |  | ||||||
|       --  into multiple repos for maintenance purposes. |  | ||||||
|       'hrsh7th/cmp-nvim-lsp', |  | ||||||
|       'hrsh7th/cmp-path', |  | ||||||
|     }, |  | ||||||
|     config = function() |  | ||||||
|       -- See `:help cmp` |  | ||||||
|       local cmp = require 'cmp' |  | ||||||
|       local luasnip = require 'luasnip' |  | ||||||
|       luasnip.config.setup {} |  | ||||||
| 
 |  | ||||||
|       cmp.setup { |  | ||||||
|         snippet = { |  | ||||||
|           expand = function(args) |  | ||||||
|             luasnip.lsp_expand(args.body) |  | ||||||
|           end, |  | ||||||
|         }, |  | ||||||
|         completion = { completeopt = 'menu,menuone,noinsert' }, |  | ||||||
| 
 |  | ||||||
|         -- For an understanding of why these mappings were |  | ||||||
|         -- chosen, you will need to read `:help ins-completion` |  | ||||||
|         -- |  | ||||||
|         -- No, but seriously. Please read `:help ins-completion`, it is really good! |  | ||||||
|         mapping = cmp.mapping.preset.insert { |  | ||||||
|           -- Select the [n]ext item |  | ||||||
|           ['<C-n>'] = cmp.mapping.select_next_item(), |  | ||||||
|           -- Select the [p]revious item |  | ||||||
|           ['<C-p>'] = cmp.mapping.select_prev_item(), |  | ||||||
| 
 |  | ||||||
|           -- Scroll the documentation window [b]ack / [f]orward |  | ||||||
|           ['<C-b>'] = cmp.mapping.scroll_docs(-4), |  | ||||||
|           ['<C-f>'] = cmp.mapping.scroll_docs(4), |  | ||||||
| 
 |  | ||||||
|           -- Accept ([y]es) the completion. |  | ||||||
|           --  This will auto-import if your LSP supports it. |  | ||||||
|           --  This will expand snippets if the LSP sent a snippet. |  | ||||||
|           ['<C-y>'] = cmp.mapping.confirm { select = true }, |  | ||||||
| 
 |  | ||||||
|           -- If you prefer more traditional completion keymaps, |  | ||||||
|           -- you can uncomment the following lines |  | ||||||
|           --['<CR>'] = cmp.mapping.confirm { select = true }, |  | ||||||
|           --['<Tab>'] = cmp.mapping.select_next_item(), |  | ||||||
|           --['<S-Tab>'] = cmp.mapping.select_prev_item(), |  | ||||||
| 
 |  | ||||||
|           -- Manually trigger a completion from nvim-cmp. |  | ||||||
|           --  Generally you don't need this, because nvim-cmp will display |  | ||||||
|           --  completions whenever it has completion options available. |  | ||||||
|           ['<C-Space>'] = cmp.mapping.complete {}, |  | ||||||
| 
 |  | ||||||
|           -- Think of <c-l> as moving to the right of your snippet expansion. |  | ||||||
|           --  So if you have a snippet that's like: |  | ||||||
|           --  function $name($args) |  | ||||||
|           --    $body |  | ||||||
|           --  end |  | ||||||
|           -- |  | ||||||
|           -- <c-l> will move you to the right of each of the expansion locations. |  | ||||||
|           -- <c-h> is similar, except moving you backwards. |  | ||||||
|           ['<C-l>'] = cmp.mapping(function() |  | ||||||
|             if luasnip.expand_or_locally_jumpable() then |  | ||||||
|               luasnip.expand_or_jump() |  | ||||||
|             end |  | ||||||
|           end, { 'i', 's' }), |  | ||||||
|           ['<C-h>'] = cmp.mapping(function() |  | ||||||
|             if luasnip.locally_jumpable(-1) then |  | ||||||
|               luasnip.jump(-1) |  | ||||||
|             end |  | ||||||
|           end, { 'i', 's' }), |  | ||||||
| 
 |  | ||||||
|           -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: |  | ||||||
|           --    https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps |  | ||||||
|         }, |  | ||||||
|         sources = { |  | ||||||
|           { |  | ||||||
|             name = 'lazydev', |  | ||||||
|             -- set group index to 0 to skip loading LuaLS completions as lazydev recommends it |  | ||||||
|             group_index = 0, |  | ||||||
|           }, |  | ||||||
|           { name = 'nvim_lsp' }, |  | ||||||
|           { name = 'luasnip' }, |  | ||||||
|           { name = 'path' }, |  | ||||||
|         }, |  | ||||||
|       } |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   { -- You can easily change to a different colorscheme. |  | ||||||
|     -- Change the name of the colorscheme plugin below, and then |  | ||||||
|     -- change the command in the config to whatever the name of that colorscheme is. |  | ||||||
|     -- |  | ||||||
|     -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`. |  | ||||||
|     'folke/tokyonight.nvim', |  | ||||||
|     priority = 1000, -- Make sure to load this before all the other start plugins. |  | ||||||
|     init = function() |  | ||||||
|       -- Load the colorscheme here. |  | ||||||
|       -- Like many other themes, this one has different styles, and you could load |  | ||||||
|       -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. |  | ||||||
|       vim.cmd.colorscheme 'tokyonight-night' |  | ||||||
| 
 |  | ||||||
|       -- You can configure highlights by doing something like: |  | ||||||
|       vim.cmd.hi 'Comment gui=none' |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- Highlight todo, notes, etc in comments |  | ||||||
|   { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, |  | ||||||
| 
 |  | ||||||
|   { -- Collection of various small independent plugins/modules |  | ||||||
|     'echasnovski/mini.nvim', |  | ||||||
|     config = function() |  | ||||||
|       -- Better Around/Inside textobjects |  | ||||||
|       -- |  | ||||||
|       -- Examples: |  | ||||||
|       --  - va)  - [V]isually select [A]round [)]paren |  | ||||||
|       --  - yinq - [Y]ank [I]nside [N]ext [Q]uote |  | ||||||
|       --  - ci'  - [C]hange [I]nside [']quote |  | ||||||
|       require('mini.ai').setup { n_lines = 500 } |  | ||||||
| 
 |  | ||||||
|       -- Add/delete/replace surroundings (brackets, quotes, etc.) |  | ||||||
|       -- |  | ||||||
|       -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren |  | ||||||
|       -- - sd'   - [S]urround [D]elete [']quotes |  | ||||||
|       -- - sr)'  - [S]urround [R]eplace [)] ['] |  | ||||||
|       require('mini.surround').setup() |  | ||||||
| 
 |  | ||||||
|       -- Simple and easy statusline. |  | ||||||
|       --  You could remove this setup call if you don't like it, |  | ||||||
|       --  and try some other statusline plugin |  | ||||||
|       local statusline = require 'mini.statusline' |  | ||||||
|       -- set use_icons to true if you have a Nerd Font |  | ||||||
|       statusline.setup { use_icons = vim.g.have_nerd_font } |  | ||||||
| 
 |  | ||||||
|       -- You can configure sections in the statusline by overriding their |  | ||||||
|       -- default behavior. For example, here we set the section for |  | ||||||
|       -- cursor location to LINE:COLUMN |  | ||||||
|       ---@diagnostic disable-next-line: duplicate-set-field |  | ||||||
|       statusline.section_location = function() |  | ||||||
|         return '%2l:%-2v' |  | ||||||
|       end |  | ||||||
| 
 |  | ||||||
|       -- ... and there is more! |  | ||||||
|       --  Check out: https://github.com/echasnovski/mini.nvim |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
|   { -- Highlight, edit, and navigate code |  | ||||||
|     'nvim-treesitter/nvim-treesitter', |  | ||||||
|     build = ':TSUpdate', |  | ||||||
|     main = 'nvim-treesitter.configs', -- Sets main module to use for opts |  | ||||||
|     -- [[ Configure Treesitter ]] See `:help nvim-treesitter` |  | ||||||
|     opts = { |  | ||||||
|       ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, |  | ||||||
|       -- Autoinstall languages that are not installed |  | ||||||
|       auto_install = true, |  | ||||||
|       highlight = { |  | ||||||
|         enable = true, |  | ||||||
|         -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. |  | ||||||
|         --  If you are experiencing weird indenting issues, add the language to |  | ||||||
|         --  the list of additional_vim_regex_highlighting and disabled languages for indent. |  | ||||||
|         additional_vim_regex_highlighting = { 'ruby' }, |  | ||||||
|       }, |  | ||||||
|       indent = { enable = true, disable = { 'ruby' } }, |  | ||||||
|     }, |  | ||||||
|     -- There are additional nvim-treesitter modules that you can use to interact |  | ||||||
|     -- with nvim-treesitter. You should go explore a few and see what interests you: |  | ||||||
|     -- |  | ||||||
|     --    - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod` |  | ||||||
|     --    - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context |  | ||||||
|     --    - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects |  | ||||||
|   }, |  | ||||||
| 
 |  | ||||||
|   -- The following comments only work if you have downloaded the kickstart repo, not just copy pasted the |  | ||||||
|   -- init.lua. If you want these files, they are in the repository, so you can just download them and |  | ||||||
|   -- place them in the correct locations. |  | ||||||
| 
 |  | ||||||
|   -- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for Kickstart |  | ||||||
|   -- |  | ||||||
|   --  Here are some example plugins that I've included in the Kickstart repository. |  | ||||||
|   --  Uncomment any of the lines below to enable them (you will need to restart nvim). |  | ||||||
|   -- |  | ||||||
|   -- require 'kickstart.plugins.debug', |  | ||||||
|   -- require 'kickstart.plugins.indent_line', |  | ||||||
|   -- require 'kickstart.plugins.lint', |  | ||||||
|   -- require 'kickstart.plugins.autopairs', |  | ||||||
|   -- require 'kickstart.plugins.neo-tree', |  | ||||||
|   -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps |  | ||||||
| 
 |  | ||||||
|   -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` |  | ||||||
|   --    This is the easiest way to modularize your config. |  | ||||||
|   -- |  | ||||||
|   --  Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. |  | ||||||
|   -- { import = 'custom.plugins' }, |  | ||||||
|   -- |  | ||||||
|   -- For additional information with loading, sourcing and examples see `:help lazy.nvim-🔌-plugin-spec` |  | ||||||
|   -- Or use telescope! |  | ||||||
|   -- In normal mode type `<space>sh` then write `lazy.nvim-plugin` |  | ||||||
|   -- you can continue same window with `<space>sr` which resumes last telescope search |  | ||||||
| }, { |  | ||||||
|   ui = { |  | ||||||
|     -- If you are using a Nerd Font: set icons to an empty table which will use the |  | ||||||
|     -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table |  | ||||||
|     icons = vim.g.have_nerd_font and {} or { |  | ||||||
|       cmd = '⌘', |  | ||||||
|       config = '🛠', |  | ||||||
|       event = '📅', |  | ||||||
|       ft = '📂', |  | ||||||
|       init = '⚙', |  | ||||||
|       keys = '🗝', |  | ||||||
|       plugin = '🔌', |  | ||||||
|       runtime = '💻', |  | ||||||
|       require = '🌙', |  | ||||||
|       source = '📄', |  | ||||||
|       start = '🚀', |  | ||||||
|       task = '📌', |  | ||||||
|       lazy = '💤 ', |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| }) |  | ||||||
| 
 |  | ||||||
| -- The line beneath this is called `modeline`. See `:help modeline` |  | ||||||
| -- vim: ts=2 sts=2 sw=2 et |  | ||||||
|  | @ -1,5 +0,0 @@ | ||||||
| -- You can add your own plugins here or in other files in this directory! |  | ||||||
| --  I promise not to create any merge conflicts in this directory :) |  | ||||||
| -- |  | ||||||
| -- See the kickstart.nvim README for more information |  | ||||||
| return {} |  | ||||||
|  | @ -1,52 +0,0 @@ | ||||||
| --[[ |  | ||||||
| -- |  | ||||||
| -- This file is not required for your own configuration, |  | ||||||
| -- but helps people determine if their system is setup correctly. |  | ||||||
| -- |  | ||||||
| --]] |  | ||||||
| 
 |  | ||||||
| local check_version = function() |  | ||||||
|   local verstr = tostring(vim.version()) |  | ||||||
|   if not vim.version.ge then |  | ||||||
|     vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) |  | ||||||
|     return |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   if vim.version.ge(vim.version(), '0.10-dev') then |  | ||||||
|     vim.health.ok(string.format("Neovim version is: '%s'", verstr)) |  | ||||||
|   else |  | ||||||
|     vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) |  | ||||||
|   end |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| local check_external_reqs = function() |  | ||||||
|   -- Basic utils: `git`, `make`, `unzip` |  | ||||||
|   for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do |  | ||||||
|     local is_executable = vim.fn.executable(exe) == 1 |  | ||||||
|     if is_executable then |  | ||||||
|       vim.health.ok(string.format("Found executable: '%s'", exe)) |  | ||||||
|     else |  | ||||||
|       vim.health.warn(string.format("Could not find executable: '%s'", exe)) |  | ||||||
|     end |  | ||||||
|   end |  | ||||||
| 
 |  | ||||||
|   return true |  | ||||||
| end |  | ||||||
| 
 |  | ||||||
| return { |  | ||||||
|   check = function() |  | ||||||
|     vim.health.start 'kickstart.nvim' |  | ||||||
| 
 |  | ||||||
|     vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth` |  | ||||||
| 
 |  | ||||||
|   Fix only warnings for plugins and languages you intend to use. |  | ||||||
|     Mason will give warnings for languages that are not installed. |  | ||||||
|     You do not need to install, unless you want to use those languages!]] |  | ||||||
| 
 |  | ||||||
|     local uv = vim.uv or vim.loop |  | ||||||
|     vim.health.info('System Information: ' .. vim.inspect(uv.os_uname())) |  | ||||||
| 
 |  | ||||||
|     check_version() |  | ||||||
|     check_external_reqs() |  | ||||||
|   end, |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| -- autopairs |  | ||||||
| -- https://github.com/windwp/nvim-autopairs |  | ||||||
| 
 |  | ||||||
| return { |  | ||||||
|   'windwp/nvim-autopairs', |  | ||||||
|   event = 'InsertEnter', |  | ||||||
|   -- Optional dependency |  | ||||||
|   dependencies = { 'hrsh7th/nvim-cmp' }, |  | ||||||
|   config = function() |  | ||||||
|     require('nvim-autopairs').setup {} |  | ||||||
|     -- If you want to automatically add `(` after selecting a function or method |  | ||||||
|     local cmp_autopairs = require 'nvim-autopairs.completion.cmp' |  | ||||||
|     local cmp = require 'cmp' |  | ||||||
|     cmp.event:on('confirm_done', cmp_autopairs.on_confirm_done()) |  | ||||||
|   end, |  | ||||||
| } |  | ||||||
|  | @ -1,148 +0,0 @@ | ||||||
| -- debug.lua |  | ||||||
| -- |  | ||||||
| -- Shows how to use the DAP plugin to debug your code. |  | ||||||
| -- |  | ||||||
| -- Primarily focused on configuring the debugger for Go, but can |  | ||||||
| -- be extended to other languages as well. That's why it's called |  | ||||||
| -- kickstart.nvim and not kitchen-sink.nvim ;) |  | ||||||
| 
 |  | ||||||
| return { |  | ||||||
|   -- NOTE: Yes, you can install new plugins here! |  | ||||||
|   'mfussenegger/nvim-dap', |  | ||||||
|   -- NOTE: And you can specify dependencies as well |  | ||||||
|   dependencies = { |  | ||||||
|     -- Creates a beautiful debugger UI |  | ||||||
|     'rcarriga/nvim-dap-ui', |  | ||||||
| 
 |  | ||||||
|     -- Required dependency for nvim-dap-ui |  | ||||||
|     'nvim-neotest/nvim-nio', |  | ||||||
| 
 |  | ||||||
|     -- Installs the debug adapters for you |  | ||||||
|     'williamboman/mason.nvim', |  | ||||||
|     'jay-babu/mason-nvim-dap.nvim', |  | ||||||
| 
 |  | ||||||
|     -- Add your own debuggers here |  | ||||||
|     'leoluz/nvim-dap-go', |  | ||||||
|   }, |  | ||||||
|   keys = { |  | ||||||
|     -- Basic debugging keymaps, feel free to change to your liking! |  | ||||||
|     { |  | ||||||
|       '<F5>', |  | ||||||
|       function() |  | ||||||
|         require('dap').continue() |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: Start/Continue', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       '<F1>', |  | ||||||
|       function() |  | ||||||
|         require('dap').step_into() |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: Step Into', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       '<F2>', |  | ||||||
|       function() |  | ||||||
|         require('dap').step_over() |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: Step Over', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       '<F3>', |  | ||||||
|       function() |  | ||||||
|         require('dap').step_out() |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: Step Out', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       '<leader>b', |  | ||||||
|       function() |  | ||||||
|         require('dap').toggle_breakpoint() |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: Toggle Breakpoint', |  | ||||||
|     }, |  | ||||||
|     { |  | ||||||
|       '<leader>B', |  | ||||||
|       function() |  | ||||||
|         require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: Set Breakpoint', |  | ||||||
|     }, |  | ||||||
|     -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception. |  | ||||||
|     { |  | ||||||
|       '<F7>', |  | ||||||
|       function() |  | ||||||
|         require('dapui').toggle() |  | ||||||
|       end, |  | ||||||
|       desc = 'Debug: See last session result.', |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
|   config = function() |  | ||||||
|     local dap = require 'dap' |  | ||||||
|     local dapui = require 'dapui' |  | ||||||
| 
 |  | ||||||
|     require('mason-nvim-dap').setup { |  | ||||||
|       -- Makes a best effort to setup the various debuggers with |  | ||||||
|       -- reasonable debug configurations |  | ||||||
|       automatic_installation = true, |  | ||||||
| 
 |  | ||||||
|       -- You can provide additional configuration to the handlers, |  | ||||||
|       -- see mason-nvim-dap README for more information |  | ||||||
|       handlers = {}, |  | ||||||
| 
 |  | ||||||
|       -- You'll need to check that you have the required things installed |  | ||||||
|       -- online, please don't ask me how to install them :) |  | ||||||
|       ensure_installed = { |  | ||||||
|         -- Update this to ensure that you have the debuggers for the langs you want |  | ||||||
|         'delve', |  | ||||||
|       }, |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     -- Dap UI setup |  | ||||||
|     -- For more information, see |:help nvim-dap-ui| |  | ||||||
|     dapui.setup { |  | ||||||
|       -- Set icons to characters that are more likely to work in every terminal. |  | ||||||
|       --    Feel free to remove or use ones that you like more! :) |  | ||||||
|       --    Don't feel like these are good choices. |  | ||||||
|       icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, |  | ||||||
|       controls = { |  | ||||||
|         icons = { |  | ||||||
|           pause = '⏸', |  | ||||||
|           play = '▶', |  | ||||||
|           step_into = '⏎', |  | ||||||
|           step_over = '⏭', |  | ||||||
|           step_out = '⏮', |  | ||||||
|           step_back = 'b', |  | ||||||
|           run_last = '▶▶', |  | ||||||
|           terminate = '⏹', |  | ||||||
|           disconnect = '⏏', |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     -- Change breakpoint icons |  | ||||||
|     -- vim.api.nvim_set_hl(0, 'DapBreak', { fg = '#e51400' }) |  | ||||||
|     -- vim.api.nvim_set_hl(0, 'DapStop', { fg = '#ffcc00' }) |  | ||||||
|     -- local breakpoint_icons = vim.g.have_nerd_font |  | ||||||
|     --     and { Breakpoint = '', BreakpointCondition = '', BreakpointRejected = '', LogPoint = '', Stopped = '' } |  | ||||||
|     --   or { Breakpoint = '●', BreakpointCondition = '⊜', BreakpointRejected = '⊘', LogPoint = '◆', Stopped = '⭔' } |  | ||||||
|     -- for type, icon in pairs(breakpoint_icons) do |  | ||||||
|     --   local tp = 'Dap' .. type |  | ||||||
|     --   local hl = (type == 'Stopped') and 'DapStop' or 'DapBreak' |  | ||||||
|     --   vim.fn.sign_define(tp, { text = icon, texthl = hl, numhl = hl }) |  | ||||||
|     -- end |  | ||||||
| 
 |  | ||||||
|     dap.listeners.after.event_initialized['dapui_config'] = dapui.open |  | ||||||
|     dap.listeners.before.event_terminated['dapui_config'] = dapui.close |  | ||||||
|     dap.listeners.before.event_exited['dapui_config'] = dapui.close |  | ||||||
| 
 |  | ||||||
|     -- Install golang specific config |  | ||||||
|     require('dap-go').setup { |  | ||||||
|       delve = { |  | ||||||
|         -- On Windows delve must be run attached or it crashes. |  | ||||||
|         -- See https://github.com/leoluz/nvim-dap-go/blob/main/README.md#configuring |  | ||||||
|         detached = vim.fn.has 'win32' == 0, |  | ||||||
|       }, |  | ||||||
|     } |  | ||||||
|   end, |  | ||||||
| } |  | ||||||
|  | @ -1,61 +0,0 @@ | ||||||
| -- Adds git related signs to the gutter, as well as utilities for managing changes |  | ||||||
| -- NOTE: gitsigns is already included in init.lua but contains only the base |  | ||||||
| -- config. This will add also the recommended keymaps. |  | ||||||
| 
 |  | ||||||
| return { |  | ||||||
|   { |  | ||||||
|     'lewis6991/gitsigns.nvim', |  | ||||||
|     opts = { |  | ||||||
|       on_attach = function(bufnr) |  | ||||||
|         local gitsigns = require 'gitsigns' |  | ||||||
| 
 |  | ||||||
|         local function map(mode, l, r, opts) |  | ||||||
|           opts = opts or {} |  | ||||||
|           opts.buffer = bufnr |  | ||||||
|           vim.keymap.set(mode, l, r, opts) |  | ||||||
|         end |  | ||||||
| 
 |  | ||||||
|         -- Navigation |  | ||||||
|         map('n', ']c', function() |  | ||||||
|           if vim.wo.diff then |  | ||||||
|             vim.cmd.normal { ']c', bang = true } |  | ||||||
|           else |  | ||||||
|             gitsigns.nav_hunk 'next' |  | ||||||
|           end |  | ||||||
|         end, { desc = 'Jump to next git [c]hange' }) |  | ||||||
| 
 |  | ||||||
|         map('n', '[c', function() |  | ||||||
|           if vim.wo.diff then |  | ||||||
|             vim.cmd.normal { '[c', bang = true } |  | ||||||
|           else |  | ||||||
|             gitsigns.nav_hunk 'prev' |  | ||||||
|           end |  | ||||||
|         end, { desc = 'Jump to previous git [c]hange' }) |  | ||||||
| 
 |  | ||||||
|         -- Actions |  | ||||||
|         -- visual mode |  | ||||||
|         map('v', '<leader>hs', function() |  | ||||||
|           gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } |  | ||||||
|         end, { desc = 'git [s]tage hunk' }) |  | ||||||
|         map('v', '<leader>hr', function() |  | ||||||
|           gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } |  | ||||||
|         end, { desc = 'git [r]eset hunk' }) |  | ||||||
|         -- normal mode |  | ||||||
|         map('n', '<leader>hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' }) |  | ||||||
|         map('n', '<leader>hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' }) |  | ||||||
|         map('n', '<leader>hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' }) |  | ||||||
|         map('n', '<leader>hu', gitsigns.undo_stage_hunk, { desc = 'git [u]ndo stage hunk' }) |  | ||||||
|         map('n', '<leader>hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' }) |  | ||||||
|         map('n', '<leader>hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' }) |  | ||||||
|         map('n', '<leader>hb', gitsigns.blame_line, { desc = 'git [b]lame line' }) |  | ||||||
|         map('n', '<leader>hd', gitsigns.diffthis, { desc = 'git [d]iff against index' }) |  | ||||||
|         map('n', '<leader>hD', function() |  | ||||||
|           gitsigns.diffthis '@' |  | ||||||
|         end, { desc = 'git [D]iff against last commit' }) |  | ||||||
|         -- Toggles |  | ||||||
|         map('n', '<leader>tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' }) |  | ||||||
|         map('n', '<leader>tD', gitsigns.toggle_deleted, { desc = '[T]oggle git show [D]eleted' }) |  | ||||||
|       end, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
|  | @ -1,9 +0,0 @@ | ||||||
| return { |  | ||||||
|   { -- Add indentation guides even on blank lines |  | ||||||
|     'lukas-reineke/indent-blankline.nvim', |  | ||||||
|     -- Enable `lukas-reineke/indent-blankline.nvim` |  | ||||||
|     -- See `:help ibl` |  | ||||||
|     main = 'ibl', |  | ||||||
|     opts = {}, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
|  | @ -1,60 +0,0 @@ | ||||||
| return { |  | ||||||
| 
 |  | ||||||
|   { -- Linting |  | ||||||
|     'mfussenegger/nvim-lint', |  | ||||||
|     event = { 'BufReadPre', 'BufNewFile' }, |  | ||||||
|     config = function() |  | ||||||
|       local lint = require 'lint' |  | ||||||
|       lint.linters_by_ft = { |  | ||||||
|         markdown = { 'markdownlint' }, |  | ||||||
|       } |  | ||||||
| 
 |  | ||||||
|       -- To allow other plugins to add linters to require('lint').linters_by_ft, |  | ||||||
|       -- instead set linters_by_ft like this: |  | ||||||
|       -- lint.linters_by_ft = lint.linters_by_ft or {} |  | ||||||
|       -- lint.linters_by_ft['markdown'] = { 'markdownlint' } |  | ||||||
|       -- |  | ||||||
|       -- However, note that this will enable a set of default linters, |  | ||||||
|       -- which will cause errors unless these tools are available: |  | ||||||
|       -- { |  | ||||||
|       --   clojure = { "clj-kondo" }, |  | ||||||
|       --   dockerfile = { "hadolint" }, |  | ||||||
|       --   inko = { "inko" }, |  | ||||||
|       --   janet = { "janet" }, |  | ||||||
|       --   json = { "jsonlint" }, |  | ||||||
|       --   markdown = { "vale" }, |  | ||||||
|       --   rst = { "vale" }, |  | ||||||
|       --   ruby = { "ruby" }, |  | ||||||
|       --   terraform = { "tflint" }, |  | ||||||
|       --   text = { "vale" } |  | ||||||
|       -- } |  | ||||||
|       -- |  | ||||||
|       -- You can disable the default linters by setting their filetypes to nil: |  | ||||||
|       -- lint.linters_by_ft['clojure'] = nil |  | ||||||
|       -- lint.linters_by_ft['dockerfile'] = nil |  | ||||||
|       -- lint.linters_by_ft['inko'] = nil |  | ||||||
|       -- lint.linters_by_ft['janet'] = nil |  | ||||||
|       -- lint.linters_by_ft['json'] = nil |  | ||||||
|       -- lint.linters_by_ft['markdown'] = nil |  | ||||||
|       -- lint.linters_by_ft['rst'] = nil |  | ||||||
|       -- lint.linters_by_ft['ruby'] = nil |  | ||||||
|       -- lint.linters_by_ft['terraform'] = nil |  | ||||||
|       -- lint.linters_by_ft['text'] = nil |  | ||||||
| 
 |  | ||||||
|       -- Create autocommand which carries out the actual linting |  | ||||||
|       -- on the specified events. |  | ||||||
|       local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true }) |  | ||||||
|       vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, { |  | ||||||
|         group = lint_augroup, |  | ||||||
|         callback = function() |  | ||||||
|           -- Only run the linter in buffers that you can modify in order to |  | ||||||
|           -- avoid superfluous noise, notably within the handy LSP pop-ups that |  | ||||||
|           -- describe the hovered symbol using Markdown. |  | ||||||
|           if vim.opt_local.modifiable:get() then |  | ||||||
|             lint.try_lint() |  | ||||||
|           end |  | ||||||
|         end, |  | ||||||
|       }) |  | ||||||
|     end, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| -- Neo-tree is a Neovim plugin to browse the file system |  | ||||||
| -- https://github.com/nvim-neo-tree/neo-tree.nvim |  | ||||||
| 
 |  | ||||||
| return { |  | ||||||
|   'nvim-neo-tree/neo-tree.nvim', |  | ||||||
|   version = '*', |  | ||||||
|   dependencies = { |  | ||||||
|     'nvim-lua/plenary.nvim', |  | ||||||
|     'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended |  | ||||||
|     'MunifTanjim/nui.nvim', |  | ||||||
|   }, |  | ||||||
|   cmd = 'Neotree', |  | ||||||
|   keys = { |  | ||||||
|     { '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true }, |  | ||||||
|   }, |  | ||||||
|   opts = { |  | ||||||
|     filesystem = { |  | ||||||
|       window = { |  | ||||||
|         mappings = { |  | ||||||
|           ['\\'] = 'close_window', |  | ||||||
|         }, |  | ||||||
|       }, |  | ||||||
|     }, |  | ||||||
|   }, |  | ||||||
| } |  | ||||||
|  | @ -1 +0,0 @@ | ||||||
| https://nixos.org/channels/nixos-unstable nixos |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| #!/usr/bin/env bash |  | ||||||
| 
 |  | ||||||
| dotfiles_home="${1:-$(dirname "$(realpath "$0")")}" |  | ||||||
| cp -rsf "$dotfiles_home" $HOME |  | ||||||
| 
 |  | ||||||
| echo "Dotfiles have been recursively copied and symlinked from $dotfiles_home to $HOME." |  | ||||||
							
								
								
									
										24
									
								
								macbook/.gitconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								macbook/.gitconfig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,24 @@ | ||||||
|  | [user] | ||||||
|  | 	name = Bart van der Braak | ||||||
|  | 	email = bartvdbraak@gmail.com | ||||||
|  | [alias] | ||||||
|  | 	p = push | ||||||
|  | 	st = status | ||||||
|  | 	ll = log --oneline | ||||||
|  | 	last = log -1 HEAD --stat | ||||||
|  | 	cm = commit -m | ||||||
|  | 	d = diff | ||||||
|  | 	gl = config --global -l | ||||||
|  | 	aa = add . | ||||||
|  | 	pushfwl = push --force-with-lease | ||||||
|  | [core] | ||||||
|  | 	excludesfile = /Users/bart.vanderbraak/.gitignore_global | ||||||
|  | [init] | ||||||
|  | 	defaultBranch = master | ||||||
|  | [push] | ||||||
|  | 	autoSetupRemote = true | ||||||
|  | [filter "lfs"] | ||||||
|  | 	clean = git-lfs clean -- %f | ||||||
|  | 	smudge = git-lfs smudge -- %f | ||||||
|  | 	process = git-lfs filter-process | ||||||
|  | 	required = true | ||||||
							
								
								
									
										1
									
								
								macbook/.gitignore_global
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								macbook/.gitignore_global
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | .DS_Store | ||||||
							
								
								
									
										96
									
								
								macbook/.zshrc
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										96
									
								
								macbook/.zshrc
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,96 @@ | ||||||
|  | ## Initialize completion | ||||||
|  | 
 | ||||||
|  | autoload -Uz compinit | ||||||
|  | compinit | ||||||
|  | 
 | ||||||
|  | ## Paths | ||||||
|  | 
 | ||||||
|  | PATH=$PATH:/usr/local/sbin | ||||||
|  | export PATH="$HOME/.yarn/bin:$HOME/.config/yarn/global/node_modules/.bin:$PATH" | ||||||
|  | 
 | ||||||
|  | ### Added by Zinit's installer | ||||||
|  | if [[ ! -f $HOME/.local/share/zinit/zinit.git/zinit.zsh ]]; then | ||||||
|  |     print -P "%F{33} %F{220}Installing %F{33}ZDHARMA-CONTINUUM%F{220} Initiative Plugin Manager (%F{33}zdharma-continuum/zinit%F{220})…%f" | ||||||
|  |     command mkdir -p "$HOME/.local/share/zinit" && command chmod g-rwX "$HOME/.local/share/zinit" | ||||||
|  |     command git clone https://github.com/zdharma-continuum/zinit "$HOME/.local/share/zinit/zinit.git" && \ | ||||||
|  |         print -P "%F{33} %F{34}Installation successful.%f%b" || \ | ||||||
|  |         print -P "%F{160} The clone has failed.%f%b" | ||||||
|  | fi | ||||||
|  | 
 | ||||||
|  | source "$HOME/.local/share/zinit/zinit.git/zinit.zsh" | ||||||
|  | autoload -Uz _zinit | ||||||
|  | (( ${+_comps} )) && _comps[zinit]=_zinit | ||||||
|  | 
 | ||||||
|  | ## Zinit Plugins | ||||||
|  | 
 | ||||||
|  | zinit light zdharma-continuum/fast-syntax-highlighting | ||||||
|  | zinit load zdharma-continuum/history-search-multi-word | ||||||
|  | zinit light zsh-users/zsh-history-substring-search | ||||||
|  | zinit light sindresorhus/pure | ||||||
|  | 
 | ||||||
|  | ### Autosuggestions | ||||||
|  | 
 | ||||||
|  | ZSH_AUTOSUGGEST_BUFFER_MAX_SIZE=150 | ||||||
|  | zinit ice wait"0a" lucid atload"_zsh_autosuggest_start" | ||||||
|  | zinit light zsh-users/zsh-autosuggestions | ||||||
|  | 
 | ||||||
|  | ### Enhancd | ||||||
|  | 
 | ||||||
|  | zinit ice wait"0b" lucid | ||||||
|  | # zinit light b4b4r07/enhancd | ||||||
|  | 
 | ||||||
|  | ## Tab Completion | ||||||
|  | 
 | ||||||
|  | zinit ice wait"0b" lucid blockf | ||||||
|  | zinit light zsh-users/zsh-completions | ||||||
|  | zstyle ':completion:*' completer _expand _complete _ignored _approximate | ||||||
|  | zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' | ||||||
|  | zstyle ':completion:*' menu select=2 | ||||||
|  | zstyle ':completion:*' select-prompt '%SScrolling active: current selection at %p%s' | ||||||
|  | zstyle ':completion:*:descriptions' format '-- %d --' | ||||||
|  | zstyle ':completion:*:processes' command 'ps -au$USER' | ||||||
|  | zstyle ':completion:complete:*:options' sort false | ||||||
|  | zstyle ':fzf-tab:complete:_zlua:*' query-string input | ||||||
|  | zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm,cmd -w -w" | ||||||
|  | zstyle ':fzf-tab:complete:kill:argument-rest' extra-opts --preview=$extract'ps --pid=$in[(w)1] -o cmd --no-headers -w -w' --preview-window=down:3:wrap | ||||||
|  | zstyle ":completion:*:git-checkout:*" sort false | ||||||
|  | zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} | ||||||
|  | 
 | ||||||
|  | ### Neovim | ||||||
|  | 
 | ||||||
|  | zinit ice from"gh-r" as"program" bpick"*appimage*" ver"nightly" mv"nvim* -> nvim" pick"nvim" | ||||||
|  | zinit light neovim/neovim | ||||||
|  | 
 | ||||||
|  | ### Prettytyping | ||||||
|  | 
 | ||||||
|  | zinit ice lucid wait'' as"program" pick"prettyping" atload'alias ping=prettyping' | ||||||
|  | zinit load "denilsonsa/prettyping" | ||||||
|  | 
 | ||||||
|  | # Personal Aliases | ||||||
|  | 
 | ||||||
|  | alias pub='cat ~/.ssh/id_rsa.pub | pbcopy' | ||||||
|  | alias l='ls -CF' | ||||||
|  | alias ll='ls -alhF' | ||||||
|  | alias la='ls -A' | ||||||
|  | alias ls='ls -G' | ||||||
|  | alias grep='grep --colour=auto' | ||||||
|  | alias gcp='git add . && git commit && git push' | ||||||
|  | alias digs='dig +short' | ||||||
|  | alias k='kubectl' | ||||||
|  | alias kc='kubectl config use-context' | ||||||
|  | alias cp='cp -iv'                           # Preferred 'cp' implementation | ||||||
|  | alias mv='mv -iv'                           # Preferred 'mv' implementation | ||||||
|  | alias openssl3='/usr/local/opt/openssl@3' | ||||||
|  | compdef __start_kubectl k | ||||||
|  | 
 | ||||||
|  | # Terminal History | ||||||
|  | 
 | ||||||
|  | HISTSIZE=15000 | ||||||
|  | 
 | ||||||
|  | # Kubernetes Autocompletions | ||||||
|  | 
 | ||||||
|  | source <(kubectl completion zsh) | ||||||
|  | 
 | ||||||
|  | # Python virtual environments | ||||||
|  | 
 | ||||||
|  | eval "$(pyenv init -)" | ||||||
							
								
								
									
										89
									
								
								macbook/alacritty/alacritty.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										89
									
								
								macbook/alacritty/alacritty.toml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,89 @@ | ||||||
|  | live_config_reload = true | ||||||
|  | 
 | ||||||
|  | [shell] | ||||||
|  | program = "/bin/zsh" | ||||||
|  | 
 | ||||||
|  | [window] | ||||||
|  | opacity = 0.99 | ||||||
|  | 
 | ||||||
|  | decorations = "full" | ||||||
|  | dynamic_title = true | ||||||
|  | startup_mode = "Maximized" | ||||||
|  | 
 | ||||||
|  | [window.dimensions] | ||||||
|  | columns = 160 | ||||||
|  | lines = 80 | ||||||
|  | 
 | ||||||
|  | [window.padding] | ||||||
|  | x = 6 | ||||||
|  | y = 6 | ||||||
|  | 
 | ||||||
|  | [font] | ||||||
|  | size = 20.0 | ||||||
|  | 
 | ||||||
|  | [font.glyph_offset] | ||||||
|  | x = 0 | ||||||
|  | y = 0 | ||||||
|  | 
 | ||||||
|  | [font.normal] | ||||||
|  | family = "UbuntuMono Nerd Font Mono" | ||||||
|  | 
 | ||||||
|  | [font.bold] | ||||||
|  | family = "UbuntuMono Nerd Font Mono" | ||||||
|  | style = "Bold" | ||||||
|  | 
 | ||||||
|  | [font.italic] | ||||||
|  | family = "UbuntuMono Nerd Font Mono" | ||||||
|  | style = "Italic" | ||||||
|  | 
 | ||||||
|  | [font.bold_italic] | ||||||
|  | family = "UbuntuMono Nerd Font Mono" | ||||||
|  | style = "Bold Italic" | ||||||
|  | 
 | ||||||
|  | [bell] | ||||||
|  | animation = "EaseOutExpo" | ||||||
|  | duration = 0 | ||||||
|  | 
 | ||||||
|  | [mouse] | ||||||
|  | hide_when_typing = true | ||||||
|  | 
 | ||||||
|  | [[mouse.bindings]] | ||||||
|  | action = "PasteSelection" | ||||||
|  | mouse = "Middle" | ||||||
|  | 
 | ||||||
|  | [[keyboard.bindings]] | ||||||
|  | key = "Left" | ||||||
|  | mods = "Alt" | ||||||
|  | chars = "\u001BB" | ||||||
|  | # Skip word left | ||||||
|  | 
 | ||||||
|  | [[keyboard.bindings]] | ||||||
|  | key = "Right" | ||||||
|  | mods = "Alt" | ||||||
|  | chars = "\u001BF" | ||||||
|  | # Skip word right | ||||||
|  | 
 | ||||||
|  | [[keyboard.bindings]] | ||||||
|  | key = "Left" | ||||||
|  | mods = "Command" | ||||||
|  | chars = "\u001bOH" | ||||||
|  | # Home | ||||||
|  | 
 | ||||||
|  | [[keyboard.bindings]] | ||||||
|  | key = "Right" | ||||||
|  | mods = "Command" | ||||||
|  | chars = "\u001bOF" | ||||||
|  | # End | ||||||
|  | 
 | ||||||
|  | [[keyboard.bindings]] | ||||||
|  | key = "Back" | ||||||
|  | mods = "Command" | ||||||
|  | chars = "\u0015" | ||||||
|  | # Delete line | ||||||
|  | 
 | ||||||
|  | [[keyboard.bindings]] | ||||||
|  | key = "Back" | ||||||
|  | mods = "Alt" | ||||||
|  | chars = "\u001b\u007f" | ||||||
|  | # Delete word | ||||||
|  | 
 | ||||||
							
								
								
									
										278
									
								
								macbook/karabiner/karabiner.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										278
									
								
								macbook/karabiner/karabiner.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,278 @@ | ||||||
|  | { | ||||||
|  |     "global": { | ||||||
|  |         "ask_for_confirmation_before_quitting": true, | ||||||
|  |         "check_for_updates_on_startup": true, | ||||||
|  |         "show_in_menu_bar": false, | ||||||
|  |         "show_profile_name_in_menu_bar": false, | ||||||
|  |         "unsafe_ui": false | ||||||
|  |     }, | ||||||
|  |     "profiles": [ | ||||||
|  |         { | ||||||
|  |             "complex_modifications": { | ||||||
|  |                 "parameters": { | ||||||
|  |                     "basic.simultaneous_threshold_milliseconds": 50, | ||||||
|  |                     "basic.to_delayed_action_delay_milliseconds": 500, | ||||||
|  |                     "basic.to_if_alone_timeout_milliseconds": 1000, | ||||||
|  |                     "basic.to_if_held_down_threshold_milliseconds": 500, | ||||||
|  |                     "mouse_motion_to_scroll.speed": 100 | ||||||
|  |                 }, | ||||||
|  |                 "rules": [ | ||||||
|  |                     { | ||||||
|  |                         "description": "FN + Space to F20", | ||||||
|  |                         "manipulators": [ | ||||||
|  |                             { | ||||||
|  |                                 "from": { | ||||||
|  |                                     "key_code": "spacebar", | ||||||
|  |                                     "modifiers": { | ||||||
|  |                                         "mandatory": [ | ||||||
|  |                                             "fn" | ||||||
|  |                                         ] | ||||||
|  |                                     } | ||||||
|  |                                 }, | ||||||
|  |                                 "to": [ | ||||||
|  |                                     { | ||||||
|  |                                         "key_code": "f20" | ||||||
|  |                                     } | ||||||
|  |                                 ], | ||||||
|  |                                 "type": "basic" | ||||||
|  |                             } | ||||||
|  |                         ] | ||||||
|  |                     } | ||||||
|  |                 ] | ||||||
|  |             }, | ||||||
|  |             "devices": [ | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": true, | ||||||
|  |                         "is_pointing_device": false, | ||||||
|  |                         "product_id": 832, | ||||||
|  |                         "vendor_id": 1452 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": false, | ||||||
|  |                     "manipulate_caps_lock_led": true, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": false, | ||||||
|  |                         "is_pointing_device": true, | ||||||
|  |                         "product_id": 832, | ||||||
|  |                         "vendor_id": 1452 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": true, | ||||||
|  |                     "manipulate_caps_lock_led": false, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": true, | ||||||
|  |                         "is_pointing_device": true, | ||||||
|  |                         "product_id": 640, | ||||||
|  |                         "vendor_id": 13364 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": true, | ||||||
|  |                     "manipulate_caps_lock_led": true, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": false, | ||||||
|  |                         "is_pointing_device": true, | ||||||
|  |                         "product_id": 45088, | ||||||
|  |                         "vendor_id": 1133 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": true, | ||||||
|  |                     "manipulate_caps_lock_led": false, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": true, | ||||||
|  |                         "is_pointing_device": false, | ||||||
|  |                         "product_id": 34304, | ||||||
|  |                         "vendor_id": 1452 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": false, | ||||||
|  |                     "manipulate_caps_lock_led": true, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": true, | ||||||
|  |                         "is_pointing_device": true, | ||||||
|  |                         "product_id": 1552, | ||||||
|  |                         "vendor_id": 13364 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": true, | ||||||
|  |                     "manipulate_caps_lock_led": true, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "disable_built_in_keyboard_if_exists": false, | ||||||
|  |                     "fn_function_keys": [], | ||||||
|  |                     "identifiers": { | ||||||
|  |                         "is_keyboard": true, | ||||||
|  |                         "is_pointing_device": false, | ||||||
|  |                         "product_id": 1552, | ||||||
|  |                         "vendor_id": 13364 | ||||||
|  |                     }, | ||||||
|  |                     "ignore": false, | ||||||
|  |                     "manipulate_caps_lock_led": true, | ||||||
|  |                     "simple_modifications": [], | ||||||
|  |                     "treat_as_built_in_keyboard": false | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "fn_function_keys": [ | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f1" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "display_brightness_decrement" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f2" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "display_brightness_increment" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f3" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "apple_vendor_keyboard_key_code": "mission_control" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f4" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "apple_vendor_keyboard_key_code": "spotlight" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f5" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "dictation" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f6" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "key_code": "f6" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f7" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "rewind" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f8" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "play_or_pause" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f9" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "fast_forward" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f10" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "mute" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f11" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "volume_decrement" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 }, | ||||||
|  |                 { | ||||||
|  |                     "from": { | ||||||
|  |                         "key_code": "f12" | ||||||
|  |                     }, | ||||||
|  |                     "to": [ | ||||||
|  |                         { | ||||||
|  |                             "consumer_key_code": "volume_increment" | ||||||
|  |                         } | ||||||
|  |                     ] | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "name": "Default profile", | ||||||
|  |             "parameters": { | ||||||
|  |                 "delay_milliseconds_before_open_device": 1000 | ||||||
|  |             }, | ||||||
|  |             "selected": true, | ||||||
|  |             "simple_modifications": [], | ||||||
|  |             "virtual_hid_keyboard": { | ||||||
|  |                 "country_code": 0, | ||||||
|  |                 "indicate_sticky_modifier_keys_state": true, | ||||||
|  |                 "mouse_key_xy_scale": 100 | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     ] | ||||||
|  | } | ||||||
							
								
								
									
										21
									
								
								macbook/kitty/kitty-themes/themes/Argonaut.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								macbook/kitty/kitty-themes/themes/Argonaut.conf
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | ||||||
|  | background            #0d0f18 | ||||||
|  | foreground            #fffaf3 | ||||||
|  | cursor                #ff0017 | ||||||
|  | selection_background  #002a3a | ||||||
|  | color0                #222222 | ||||||
|  | color8                #444444 | ||||||
|  | color1                #ff000f | ||||||
|  | color9                #ff273f | ||||||
|  | color2                #8ce00a | ||||||
|  | color10               #abe05a | ||||||
|  | color3                #ffb900 | ||||||
|  | color11               #ffd141 | ||||||
|  | color4                #008df8 | ||||||
|  | color12               #0092ff | ||||||
|  | color5                #6c43a5 | ||||||
|  | color13               #9a5feb | ||||||
|  | color6                #00d7eb | ||||||
|  | color14               #67ffef | ||||||
|  | color7                #ffffff | ||||||
|  | color15               #ffffff | ||||||
|  | selection_foreground #0d0f18 | ||||||
							
								
								
									
										2509
									
								
								macbook/kitty/kitty.conf
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2509
									
								
								macbook/kitty/kitty.conf
									
										
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							
							
								
								
									
										71
									
								
								macbook/oh-my-posh/theme.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								macbook/oh-my-posh/theme.json
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,71 @@ | ||||||
|  | { | ||||||
|  |   "$schema": "https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json", | ||||||
|  |   "blocks": [ | ||||||
|  |     { | ||||||
|  |       "alignment": "left", | ||||||
|  |       "segments": [ | ||||||
|  |         { | ||||||
|  |           "foreground": "#ffffff", | ||||||
|  |           "style": "plain", | ||||||
|  |           "template": "<#C591E8>\u276f</><#69FF94>\u276f</> ", | ||||||
|  |           "type": "text" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "foreground": "#56B6C2", | ||||||
|  |           "properties": { | ||||||
|  |             "style": "folder" | ||||||
|  |           }, | ||||||
|  |           "style": "plain", | ||||||
|  |           "template": "{{ .Path }} ", | ||||||
|  |           "type": "path" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "foreground": "#D0666F", | ||||||
|  |           "properties": { | ||||||
|  |             "branch_icon": "" | ||||||
|  |           }, | ||||||
|  |           "style": "plain", | ||||||
|  |           "template": "<#5FAAE8>git:(</>{{ .HEAD }}<#5FAAE8>)</>", | ||||||
|  |           "type": "git" | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |           "foreground": "#DCB977", | ||||||
|  |           "style": "plain", | ||||||
|  |           "template": " \uf119 ", | ||||||
|  |           "type": "status" | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       "type": "prompt" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "alignment": "right", | ||||||
|  |       "segments": [ | ||||||
|  |         { | ||||||
|  |           "foreground": "#ffffff", | ||||||
|  |           "properties": { | ||||||
|  |             "command": "git log --pretty=format:%cr -1 || date +%H:%M:%S", | ||||||
|  |             "shell": "bash" | ||||||
|  |           }, | ||||||
|  |           "style": "plain", | ||||||
|  |           "template": " {{ .Output }} ", | ||||||
|  |           "type": "command" | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       "type": "prompt" | ||||||
|  |     }, | ||||||
|  |     { | ||||||
|  |       "alignment": "left", | ||||||
|  |       "newline": true, | ||||||
|  |       "segments": [ | ||||||
|  |         { | ||||||
|  |           "foreground": "#ffffff", | ||||||
|  |           "style": "plain", | ||||||
|  |           "template": "\uf441 ", | ||||||
|  |           "type": "text" | ||||||
|  |         } | ||||||
|  |       ], | ||||||
|  |       "type": "prompt" | ||||||
|  |     } | ||||||
|  |   ], | ||||||
|  |   "version": 2 | ||||||
|  | } | ||||||
							
								
								
									
										86
									
								
								macbook/oh-my-posh/theme.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										86
									
								
								macbook/oh-my-posh/theme.toml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,86 @@ | ||||||
|  | #:schema https://raw.githubusercontent.com/JanDeDobbeleer/oh-my-posh/main/themes/schema.json | ||||||
|  | 
 | ||||||
|  | version = 2 | ||||||
|  | 
 | ||||||
|  | [[blocks]] | ||||||
|  |   type = 'prompt' | ||||||
|  |   alignment = 'left' | ||||||
|  | 
 | ||||||
|  |   [[blocks.segments]] | ||||||
|  |     type = 'text' | ||||||
|  |     style = 'plain' | ||||||
|  |     template = '<#C591E8>❯</><#69FF94>❯</> ' | ||||||
|  |     background = '' | ||||||
|  |     foreground = '#ffffff' | ||||||
|  |     Text = '' | ||||||
|  |     Duration = 0 | ||||||
|  |     NameLength = 0 | ||||||
|  | 
 | ||||||
|  |   [[blocks.segments]] | ||||||
|  |     type = 'path' | ||||||
|  |     style = 'plain' | ||||||
|  |     template = '{{ .Path }} ' | ||||||
|  |     background = '' | ||||||
|  |     foreground = '#56B6C2' | ||||||
|  |     Text = '' | ||||||
|  |     Duration = 0 | ||||||
|  |     NameLength = 0 | ||||||
|  | 
 | ||||||
|  |     [blocks.segments.properties] | ||||||
|  |       style = 'folder' | ||||||
|  | 
 | ||||||
|  |   [[blocks.segments]] | ||||||
|  |     type = 'git' | ||||||
|  |     style = 'plain' | ||||||
|  |     template = '<#5FAAE8>git:(</>{{ .HEAD }}<#5FAAE8>)</>' | ||||||
|  |     background = '' | ||||||
|  |     foreground = '#D0666F' | ||||||
|  |     Text = '' | ||||||
|  |     Duration = 0 | ||||||
|  |     NameLength = 0 | ||||||
|  | 
 | ||||||
|  |     [blocks.segments.properties] | ||||||
|  |       branch_icon = '' | ||||||
|  | 
 | ||||||
|  |   [[blocks.segments]] | ||||||
|  |     type = 'status' | ||||||
|  |     style = 'plain' | ||||||
|  |     template = '  ' | ||||||
|  |     background = '' | ||||||
|  |     foreground = '#DCB977' | ||||||
|  |     Text = '' | ||||||
|  |     Duration = 0 | ||||||
|  |     NameLength = 0 | ||||||
|  | 
 | ||||||
|  | [[blocks]] | ||||||
|  |   type = 'prompt' | ||||||
|  |   alignment = 'right' | ||||||
|  | 
 | ||||||
|  |   [[blocks.segments]] | ||||||
|  |     type = 'command' | ||||||
|  |     style = 'plain' | ||||||
|  |     template = ' {{ .Output }} ' | ||||||
|  |     background = '' | ||||||
|  |     foreground = '#ffffff' | ||||||
|  |     Text = '' | ||||||
|  |     Duration = 0 | ||||||
|  |     NameLength = 0 | ||||||
|  | 
 | ||||||
|  |     [blocks.segments.properties] | ||||||
|  |       command = 'git log --pretty=format:%cr -1 || date +%H:%M:%S' | ||||||
|  |       shell = 'bash' | ||||||
|  | 
 | ||||||
|  | [[blocks]] | ||||||
|  |   type = 'prompt' | ||||||
|  |   alignment = 'left' | ||||||
|  |   newline = true | ||||||
|  | 
 | ||||||
|  |   [[blocks.segments]] | ||||||
|  |     type = 'text' | ||||||
|  |     style = 'plain' | ||||||
|  |     template = ' ' | ||||||
|  |     background = '' | ||||||
|  |     foreground = '#ffffff' | ||||||
|  |     Text = '' | ||||||
|  |     Duration = 0 | ||||||
|  |     NameLength = 0 | ||||||
							
								
								
									
										111
									
								
								nixos/flake.nix
									
										
									
									
									
								
							
							
						
						
									
										111
									
								
								nixos/flake.nix
									
										
									
									
									
								
							|  | @ -1,111 +0,0 @@ | ||||||
| { |  | ||||||
|   description = "Bart's NixOS Configuration"; |  | ||||||
| 
 |  | ||||||
|   inputs = { |  | ||||||
|     zen-browser.url = "github:0xc000022070/zen-browser-flake"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   outputs = { nixpkgs, ... } @ inputs: |  | ||||||
|   { |  | ||||||
|     nixosConfigurations = { |  | ||||||
|       tongfang = nixpkgs.lib.nixosSystem { |  | ||||||
|         specialArgs = { inherit inputs; }; |  | ||||||
|         modules = [ |  | ||||||
|           ./hardware/tongfang.nix |  | ||||||
|           ./configuration.nix |  | ||||||
|           ./users.nix |  | ||||||
|           ./packages.nix |  | ||||||
|           ./services.nix |  | ||||||
|         ]; |  | ||||||
|       }; |  | ||||||
| 
 |  | ||||||
|       # tongfang = nixpkgs.lib.nixosSystem { |  | ||||||
|       #   specialArgs = { inherit inputs; }; |  | ||||||
|       #   modules = [ |  | ||||||
|       #     ./hardware/tongfang.nix |  | ||||||
| 
 |  | ||||||
|       #     ./modules/kde.nix |  | ||||||
|       #     ./modules/battery.nix |  | ||||||
|       #     ./modules/bluetooth.nix |  | ||||||
|       #     ./modules/bootloader.nix |  | ||||||
|       #     ./modules/configuration.nix |  | ||||||
|       #     ./modules/creative-tools.nix |  | ||||||
|       #     ./modules/devops-tools.nix |  | ||||||
|       #     ./modules/display-manager.nix |  | ||||||
|       #     ./modules/environment-variables.nix |  | ||||||
|       #     ./modules/firewall.nix |  | ||||||
|       #     ./modules/fonts.nix |  | ||||||
|       #     ./modules/gc.nix |  | ||||||
|       #     ./modules/greeter.nix |  | ||||||
|       #     ./modules/info-fetchers.nix |  | ||||||
|       #     ./modules/internationalisation.nix |  | ||||||
|       #     ./modules/keyboard.nix |  | ||||||
|       #     ./modules/linux-kernel.nix |  | ||||||
|       #     ./modules/lsp.nix |  | ||||||
|       #     ./modules/networking.nix |  | ||||||
|       #     ./modules/nix-settings.nix |  | ||||||
|       #     ./modules/nixpkgs.nix |  | ||||||
|       #     ./modules/open-ssh.nix |  | ||||||
|       #     ./modules/printing.nix |  | ||||||
|       #     ./modules/programming-languages.nix |  | ||||||
|       #     ./modules/screen.nix |  | ||||||
|       #     ./modules/services.nix |  | ||||||
|       #     ./modules/sound.nix |  | ||||||
|       #     ./modules/terminal-utils.nix |  | ||||||
|       #     ./modules/theme.nix |  | ||||||
|       #     ./modules/time.nix |  | ||||||
|       #     ./modules/usb.nix |  | ||||||
|       #     ./modules/users.nix |  | ||||||
|       #     ./modules/utils.nix |  | ||||||
|       #     ./modules/virtualisation.nix |  | ||||||
|       #     ./modules/vpn.nix |  | ||||||
|       #     ./modules/work.nix |  | ||||||
|       #   ]; |  | ||||||
|       # }; |  | ||||||
| 
 |  | ||||||
|       # qemu = nixpkgs.lib.nixosSystem { |  | ||||||
|       #   specialArgs = { inherit inputs; }; |  | ||||||
|       #   modules = [ |  | ||||||
|       #     ./hardware/qemu.nix |  | ||||||
| 
 |  | ||||||
|       #     ./modules/kde.nix |  | ||||||
|       #     # ./modules/battery.nix |  | ||||||
|       #     # ./modules/bluetooth.nix |  | ||||||
|       #     # ./modules/bootloader.nix |  | ||||||
|       #     ./modules/configuration.nix |  | ||||||
|       #     # ./modules/creative-tools.nix |  | ||||||
|       #     # ./modules/devops-tools.nix |  | ||||||
|       #     ./modules/display-manager.nix |  | ||||||
|       #     # ./modules/environment-variables.nix |  | ||||||
|       #     # ./modules/firewall.nix |  | ||||||
|       #     # ./modules/fonts.nix |  | ||||||
|       #     # ./modules/gc.nix |  | ||||||
|       #     ./modules/greeter.nix |  | ||||||
|       #     # ./modules/info-fetchers.nix |  | ||||||
|       #     # ./modules/internationalisation.nix |  | ||||||
|       #     # ./modules/keyboard.nix |  | ||||||
|       #     # ./modules/linux-kernel.nix |  | ||||||
|       #     # ./modules/lsp.nix |  | ||||||
|       #     ./modules/networking.nix |  | ||||||
|       #     ./modules/nix-settings.nix |  | ||||||
|       #     # ./modules/nixpkgs.nix |  | ||||||
|       #     # ./modules/open-ssh.nix |  | ||||||
|       #     # ./modules/printing.nix |  | ||||||
|       #     # ./modules/programming-languages.nix |  | ||||||
|       #     # ./modules/screen.nix |  | ||||||
|       #     # ./modules/services.nix |  | ||||||
|       #     # ./modules/sound.nix |  | ||||||
|       #     # ./modules/terminal-utils.nix |  | ||||||
|       #     # ./modules/theme.nix |  | ||||||
|       #     # ./modules/time.nix |  | ||||||
|       #     # ./modules/usb.nix |  | ||||||
|       #     ./modules/users.nix |  | ||||||
|       #     # ./modules/utils.nix |  | ||||||
|       #     # ./modules/virtualisation.nix |  | ||||||
|       #     # ./modules/vpn.nix |  | ||||||
|       #     # ./modules/work.nix |  | ||||||
|       #   ]; |  | ||||||
|       # }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,35 +0,0 @@ | ||||||
| # 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 + "/profiles/qemu-guest.nix") |  | ||||||
|     ]; |  | ||||||
| 
 |  | ||||||
|   boot.initrd.availableKernelModules = [ "ahci" "xhci_pci" "virtio_pci" "sr_mod" "virtio_blk" ]; |  | ||||||
|   boot.initrd.kernelModules = [ ]; |  | ||||||
|   boot.kernelModules = [ "kvm-amd" ]; |  | ||||||
|   boot.extraModulePackages = [ ]; |  | ||||||
| 
 |  | ||||||
|   fileSystems."/" = |  | ||||||
|     { device = "/dev/disk/by-uuid/d6b08f23-97da-4e41-b70c-90fcc35db534"; |  | ||||||
|       fsType = "ext4"; |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|   swapDevices = [ ]; |  | ||||||
| 
 |  | ||||||
|   # 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.<interface>.useDHCP`. |  | ||||||
|   networking.useDHCP = lib.mkDefault true; |  | ||||||
|   # networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true; |  | ||||||
| 
 |  | ||||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; |  | ||||||
| 
 |  | ||||||
|   boot.loader.grub.enable = true; |  | ||||||
|   boot.loader.grub.device = "/dev/vda"; |  | ||||||
|   boot.loader.grub.useOSProber = true; |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   services.power-profiles-daemon.enable = false; |  | ||||||
|   services.thermald.enable = true; |  | ||||||
| 
 |  | ||||||
|   services.tlp = { |  | ||||||
|     enable = true; |  | ||||||
|     settings = { |  | ||||||
|       CPU_BOOST_ON_AC = 1; |  | ||||||
|       CPU_BOOST_ON_BAT = 0; |  | ||||||
|       CPU_SCALING_GOVERNOR_ON_AC = "performance"; |  | ||||||
|       CPU_SCALING_GOVERNOR_ON_BAT = "powersave"; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Only power the Bluetooth controller after logon |  | ||||||
|   hardware.bluetooth.enable = true; |  | ||||||
|   hardware.bluetooth.powerOnBoot = false; |  | ||||||
| 
 |  | ||||||
|   # Use Overskride bluetooth client |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     overskride |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,17 +0,0 @@ | ||||||
| { pkgs,  ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Bootloader options |  | ||||||
|   boot.loader.systemd-boot.enable = true; |  | ||||||
|   boot.loader.efi.canTouchEfiVariables = true; |  | ||||||
|   boot.loader.timeout = 2; |  | ||||||
|   boot.initrd.enable = true; |  | ||||||
|   boot.initrd.systemd.enable = true; |  | ||||||
|   boot.consoleLogLevel = 3; |  | ||||||
|   boot.plymouth = { |  | ||||||
|     enable = true; |  | ||||||
|     font = "${pkgs.jetbrains-mono}/share/fonts/truetype/JetBrainsMono-Regular.ttf"; |  | ||||||
|     themePackages = [ pkgs.nixos-bgrt-plymouth ]; |  | ||||||
|     theme = "nixos-bgrt"; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,13 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     mold |  | ||||||
|     gcc |  | ||||||
|     ninja |  | ||||||
|     clang |  | ||||||
|     lld |  | ||||||
|     lldb |  | ||||||
|     musl |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,9 +0,0 @@ | ||||||
| # Edit trueconfiguration file to define what should be installed on |  | ||||||
| # your system.  Help is available in the configuration.nix(5) man page |  | ||||||
| # and in the NixOS manual (accessible by running ‘nixos-help’). |  | ||||||
| 
 |  | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   system.stateVersion = "24.11"; |  | ||||||
| } |  | ||||||
|  | @ -1,9 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     blender |  | ||||||
|     inkscape |  | ||||||
|     gimp |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,11 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     azure-cli |  | ||||||
|     opentofu |  | ||||||
|     curl |  | ||||||
|     go-task |  | ||||||
|     sops |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Display Manager |  | ||||||
|   services.greetd = { |  | ||||||
|     enable = true; |  | ||||||
|     settings = { |  | ||||||
|       default_session = { |  | ||||||
|         command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%I:%M %p | %a • %h | %F' --cmd Hyprland"; |  | ||||||
|         user = "greeter"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     greetd.tuigreet |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Setup Env Variables |  | ||||||
|   environment.variables.SPOTIFY_PATH = "${pkgs.spotify}/"; |  | ||||||
|   environment.variables.JDK_PATH = "${pkgs.jdk11}/"; |  | ||||||
|   environment.variables.NODEJS_PATH = "${pkgs.nodePackages_latest.nodejs}/"; |  | ||||||
| } |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Open ports in the firewall. |  | ||||||
|   networking.firewall.enable = true; |  | ||||||
|   networking.firewall.allowedTCPPorts = [ ]; |  | ||||||
|   networking.firewall.allowedUDPPorts = [  |  | ||||||
|     5353 # Spotify Connect |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Fonts |  | ||||||
|   fonts.packages = with pkgs; [ |  | ||||||
|     jetbrains-mono |  | ||||||
|     nerd-font-patcher |  | ||||||
|     noto-fonts-color-emoji |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Steam |  | ||||||
|   programs.steam.enable = true; |  | ||||||
| } |  | ||||||
|  | @ -1,16 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Optimize storage and automatic scheduled GC running |  | ||||||
|   # If you want to run GC manually, use commands: |  | ||||||
|   # `nix-store --optimize` for finding and eliminating redundant copies of identical store paths |  | ||||||
|   # `nix-store --gc` for optimizing the nix store and removing unreferenced and obsolete store paths |  | ||||||
|   # `nix-collect-garbage -d` for deleting old generations of user profiles |  | ||||||
|   nix.settings.auto-optimise-store = true; |  | ||||||
|   nix.optimise.automatic = true; |  | ||||||
|   nix.gc = { |  | ||||||
|     automatic = true; |  | ||||||
|     dates = "weekly"; |  | ||||||
|     options = "--delete-older-than 14d"; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   services.xserver = { |  | ||||||
|     enable = true; |  | ||||||
|     xkb.layout = "us"; |  | ||||||
|     desktopManager.gnome.enable = true; |  | ||||||
|     displayManager.gdm.enable = true; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,18 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Display Manager |  | ||||||
|   services.greetd = { |  | ||||||
|     enable = true; |  | ||||||
|     settings = { |  | ||||||
|       default_session = { |  | ||||||
|         command = "${pkgs.greetd.tuigreet}/bin/tuigreet --time --time-format '%I:%M %p | %a • %h | %F' --cmd Hyprland"; |  | ||||||
|         user = "greeter"; |  | ||||||
|       }; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     greetd.tuigreet |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| { inputs, pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Hyprland |  | ||||||
|   programs.hyprland.enable = true; |  | ||||||
|   environment.sessionVariables.NIXOS_OZONE_WL = "1"; |  | ||||||
|   environment.sessionVariables.WLR_NO_HARDWARE_CURSORS = "1"; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     pyprland # plugin system |  | ||||||
|     hyprpicker # color picker |  | ||||||
|     hyprcursor # cursor format |  | ||||||
|     hyprlock # lock screen |  | ||||||
|     hypridle # idle daemon |  | ||||||
|     hyprpaper # wallpaper util |  | ||||||
| 
 |  | ||||||
|     inputs.ghostty.packages.${pkgs.system}.default # terminal emulator |  | ||||||
|     starship # prompt |  | ||||||
|     helix # txt editor |  | ||||||
|     inputs.zen-browser.packages.${pkgs.system}.default # browser |  | ||||||
|     zathura # pdf viewer |  | ||||||
|     mpv # media player |  | ||||||
|     imv # image viewer |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,28 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     neofetch |  | ||||||
|     onefetch |  | ||||||
|     ipfetch |  | ||||||
|     cpufetch |  | ||||||
|     ramfetch |  | ||||||
|     starfetch |  | ||||||
|     octofetch |  | ||||||
|     htop |  | ||||||
|     bottom |  | ||||||
|     btop |  | ||||||
|     zfxtop |  | ||||||
|     kmon |  | ||||||
| 
 |  | ||||||
|     vulkan-tools |  | ||||||
|     # opencl-info |  | ||||||
|     # clinfo |  | ||||||
|     # vdpauinfo |  | ||||||
|     # libva-utils |  | ||||||
|     wlr-randr |  | ||||||
|     gpu-viewer |  | ||||||
|     dig |  | ||||||
|     speedtest-rs |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,30 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   i18n.supportedLocales = [ |  | ||||||
|     "en_US.UTF-8/UTF-8" |  | ||||||
|     "nl_NL.UTF-8/UTF-8" |  | ||||||
|   ]; |  | ||||||
|    |  | ||||||
|   i18n.defaultLocale = "en_US.UTF-8"; |  | ||||||
| 
 |  | ||||||
|   i18n.extraLocaleSettings = { |  | ||||||
|     LC_ADDRESS = "en_US.UTF-8"; |  | ||||||
|     LC_IDENTIFICATION = "en_US.UTF-8"; |  | ||||||
|     LC_MEASUREMENT = "en_US.UTF-8"; |  | ||||||
|     LC_MONETARY = "en_US.UTF-8"; |  | ||||||
|     LC_NAME = "en_US.UTF-8"; |  | ||||||
|     LC_NUMERIC = "en_US.UTF-8"; |  | ||||||
|     LC_PAPER = "en_US.UTF-8"; |  | ||||||
|     LC_TELEPHONE = "en_US.UTF-8"; |  | ||||||
|     LC_TIME = "en_US.UTF-8"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     nuspell |  | ||||||
|     hyphen |  | ||||||
|     hunspell |  | ||||||
|     hunspellDicts.en_US |  | ||||||
|     hunspellDicts.nl_NL |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,11 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable KDE Plasma 6 |  | ||||||
|   services.xserver.enable = true; |  | ||||||
|   services.displayManager.sddm = { |  | ||||||
|     enable = true; |  | ||||||
|     wayland.enable = true; |  | ||||||
|   }; |  | ||||||
|   services.desktopManager.plasma6.enable = true; |  | ||||||
| } |  | ||||||
|  | @ -1,14 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   services.xserver = { |  | ||||||
|     xkb.layout = "us"; |  | ||||||
|     xkb.options = "grp:alt_shift_toggle"; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     klavaro # typing tutor |  | ||||||
|     gtypist # typing tutor |  | ||||||
|     via # keyboard configurator |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,21 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Linux Kernel |  | ||||||
|   boot.kernelPackages = pkgs.linuxKernel.packages.linux_zen; |  | ||||||
|   boot.kernelParams = [  |  | ||||||
|     "splash" |  | ||||||
|     "quiet" |  | ||||||
|     "fbcon=nodefer" |  | ||||||
|     "vt.global_cursor_default=0" |  | ||||||
|     "kernel.modules_disabled=1" |  | ||||||
|     "lsm=landlock,lockdown,yama,integrity,bpf,tomoyo" |  | ||||||
|     "usbcore.autosuspend=-1" |  | ||||||
|     "video4linux" |  | ||||||
|     "acpi_rev_override=5" |  | ||||||
|   ]; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     policycoreutils |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,31 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     python311Packages.python-lsp-server |  | ||||||
|     nodePackages_latest.nodemon |  | ||||||
|     nodePackages_latest.typescript |  | ||||||
|     nodePackages_latest.typescript-language-server |  | ||||||
|     nodePackages_latest.vscode-langservers-extracted |  | ||||||
|     nodePackages_latest.yaml-language-server |  | ||||||
|     nodePackages_latest.dockerfile-language-server-nodejs |  | ||||||
|     nodePackages_latest.bash-language-server |  | ||||||
|     nodePackages_latest.graphql-language-service-cli |  | ||||||
|     sumneko-lua-language-server |  | ||||||
|     marksman |  | ||||||
|     markdown-oxide |  | ||||||
|     nil |  | ||||||
|     zls |  | ||||||
|     gopls |  | ||||||
|     delve |  | ||||||
|     emmet-language-server |  | ||||||
|     buf |  | ||||||
|     cmake-language-server |  | ||||||
|     docker-compose-language-service |  | ||||||
|     vscode-extensions.vadimcn.vscode-lldb |  | ||||||
|     slint-lsp |  | ||||||
|     terraform-ls |  | ||||||
|     ansible-language-server |  | ||||||
|     hyprls |  | ||||||
|   ];   |  | ||||||
| } |  | ||||||
|  | @ -1,13 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable networking |  | ||||||
|   networking.hostName = "tongfang"; |  | ||||||
|   networking.networkmanager.enable = true; |  | ||||||
|   users.extraGroups.networkmanager.members = [ "bart" ]; |  | ||||||
|    |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     iwgtk |  | ||||||
|     impala |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Nix Configuration |  | ||||||
|   nix.settings = { |  | ||||||
|     experimental-features = [ "nix-command" "flakes" ];     |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,6 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Allow unfree packages |  | ||||||
|   nixpkgs.config.allowUnfree = true; |  | ||||||
| } |  | ||||||
|  | @ -1,14 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable the OpenSSH daemon. |  | ||||||
|   services.openssh = { |  | ||||||
|     enable = true; |  | ||||||
|     settings = { |  | ||||||
|       PasswordAuthentication = false; |  | ||||||
|       KbdInteractiveAuthentication = false; |  | ||||||
|       PermitRootLogin = "no"; |  | ||||||
|       AllowUsers = [ "bart" ]; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| } |  | ||||||
|  | @ -1,8 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable CUPS to print documents. |  | ||||||
|   services.printing.enable = true; |  | ||||||
|   # Disable browsed: https://discourse.nixos.org/t/newly-announced-vulnerabilities-in-cups |  | ||||||
|   services.printing.browsed.enable = false; |  | ||||||
| } |  | ||||||
|  | @ -1,13 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     go |  | ||||||
|     (python312Full.withPackages(ps: with ps; [ pygobject3 gobject-introspection pyqt6-sip])) |  | ||||||
|     nodePackages_latest.nodejs |  | ||||||
|     nodePackages_latest.pnpm |  | ||||||
|     bun |  | ||||||
|     lua |  | ||||||
|     zig |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   programs.light.enable = true; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     wlsunset |  | ||||||
|     brightnessctl |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,56 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Systemd services setup |  | ||||||
|   systemd.packages = with pkgs; [ |  | ||||||
|     auto-cpufreq |  | ||||||
|   ]; |  | ||||||
|    |  | ||||||
|   # Enable Services |  | ||||||
|   programs.direnv.enable = true; |  | ||||||
|   services.upower.enable = true; |  | ||||||
|   programs.dconf.enable = true; |  | ||||||
|   services.dbus = { |  | ||||||
|     enable = true; |  | ||||||
|     implementation = "broker"; |  | ||||||
|     packages = with pkgs; [ |  | ||||||
|       xfce.xfconf |  | ||||||
|       gnome2.GConf |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
|   services.mpd.enable = true; |  | ||||||
|   programs.thunar.enable = true; |  | ||||||
|   programs.xfconf.enable = true; |  | ||||||
|   services.tumbler.enable = true;  |  | ||||||
|   services.fwupd.enable = true; |  | ||||||
|   services.auto-cpufreq.enable = true; |  | ||||||
|   # services.gnome.core-shell.enable = true; |  | ||||||
|   # services.udev.packages = with pkgs; [ gnome.gnome-settings-daemon ]; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     at-spi2-atk |  | ||||||
|     qt6.qtwayland |  | ||||||
|     psi-notify |  | ||||||
|     poweralertd |  | ||||||
|     playerctl |  | ||||||
|     psmisc |  | ||||||
|     grim |  | ||||||
|     slurp |  | ||||||
|     imagemagick |  | ||||||
|     swappy |  | ||||||
|     ffmpeg_6-full |  | ||||||
|     wl-screenrec |  | ||||||
|     wl-clipboard |  | ||||||
|     wl-clip-persist |  | ||||||
|     cliphist |  | ||||||
|     xdg-utils |  | ||||||
|     wtype |  | ||||||
|     wlrctl |  | ||||||
|     waybar |  | ||||||
|     rofi-wayland |  | ||||||
|     dunst |  | ||||||
|     avizo |  | ||||||
|     wlogout |  | ||||||
|     gifsicle |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable sound with pipewire. |  | ||||||
|   services.pulseaudio.enable = false; |  | ||||||
|   security.rtkit.enable = true; |  | ||||||
|   services.pipewire = { |  | ||||||
|     enable = true; |  | ||||||
|     alsa.enable = true; |  | ||||||
|     alsa.support32Bit = true; |  | ||||||
|     pulse.enable = true; |  | ||||||
|     wireplumber.enable = true; |  | ||||||
|     # If you want to use JACK applications, uncomment this |  | ||||||
|     # jack.enable = true; |  | ||||||
| 
 |  | ||||||
|     # use the example session manager (no others are packaged yet so this is enabled by default, |  | ||||||
|     # no need to redefine it in your config for now) |  | ||||||
|     # media-session.enable = true; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     pamixer |  | ||||||
|     pavucontrol |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,59 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     file |  | ||||||
|     upx |  | ||||||
|     git |  | ||||||
|     lazygit |  | ||||||
|     delta |  | ||||||
|     license-generator |  | ||||||
|     git-ignore |  | ||||||
|     gitleaks |  | ||||||
|     git-secrets |  | ||||||
|     pass-git-helper |  | ||||||
|     just |  | ||||||
|     xh |  | ||||||
|     process-compose |  | ||||||
|     # mcfly # terminal history |  | ||||||
|     zellij |  | ||||||
|     progress |  | ||||||
|     noti |  | ||||||
|     topgrade |  | ||||||
|     ripgrep |  | ||||||
|     rewrk |  | ||||||
|     wrk2 |  | ||||||
|     procs |  | ||||||
|     tealdeer |  | ||||||
|     monolith |  | ||||||
|     aria |  | ||||||
|     sd |  | ||||||
|     ouch |  | ||||||
|     duf |  | ||||||
|     du-dust |  | ||||||
|     fd |  | ||||||
|     jq |  | ||||||
|     gh |  | ||||||
|     trash-cli |  | ||||||
|     zoxide |  | ||||||
|     tokei |  | ||||||
|     fzf |  | ||||||
|     bat |  | ||||||
|     hexyl |  | ||||||
|     mdcat |  | ||||||
|     pandoc |  | ||||||
|     lsd |  | ||||||
|     lsof |  | ||||||
|     gping |  | ||||||
|     viu |  | ||||||
|     tre-command |  | ||||||
|     yazi |  | ||||||
|     chafa |  | ||||||
| 
 |  | ||||||
|     cmatrix |  | ||||||
|     pipes-rs |  | ||||||
|     rsclock |  | ||||||
|     cava |  | ||||||
|     figlet |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,62 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Theme |  | ||||||
|   environment.variables.GTK_THEME = "catppuccin-macchiato-teal-standard"; |  | ||||||
|   environment.variables.XCURSOR_THEME = "Catppuccin-Macchiato-Teal"; |  | ||||||
|   environment.variables.XCURSOR_SIZE = "24"; |  | ||||||
|   environment.variables.HYPRCURSOR_THEME = "Catppuccin-Macchiato-Teal"; |  | ||||||
|   environment.variables.HYPRCURSOR_SIZE = "24"; |  | ||||||
|   qt.enable = true; |  | ||||||
|   qt.platformTheme = "gtk2"; |  | ||||||
|   qt.style = "gtk2"; |  | ||||||
|   console = { |  | ||||||
|     earlySetup = true; |  | ||||||
|     colors = [ |  | ||||||
|       "24273a" |  | ||||||
|       "ed8796" |  | ||||||
|       "a6da95" |  | ||||||
|       "eed49f" |  | ||||||
|       "8aadf4" |  | ||||||
|       "f5bde6" |  | ||||||
|       "8bd5ca" |  | ||||||
|       "cad3f5" |  | ||||||
|       "5b6078" |  | ||||||
|       "ed8796" |  | ||||||
|       "a6da95" |  | ||||||
|       "eed49f" |  | ||||||
|       "8aadf4" |  | ||||||
|       "f5bde6" |  | ||||||
|       "8bd5ca" |  | ||||||
|       "a5adcb" |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Override packages |  | ||||||
|   nixpkgs.config.packageOverrides = pkgs: { |  | ||||||
|     colloid-icon-theme = pkgs.colloid-icon-theme.override { colorVariants = ["teal"]; }; |  | ||||||
|     catppuccin-gtk = pkgs.catppuccin-gtk.override { |  | ||||||
|       accents = [ "teal" ]; # You can specify multiple accents here to output multiple themes  |  | ||||||
|       size = "standard"; |  | ||||||
|       variant = "macchiato"; |  | ||||||
|     }; |  | ||||||
|     discord = pkgs.discord.override { |  | ||||||
|       withOpenASAR = true; |  | ||||||
|       withTTS = true; |  | ||||||
|     }; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     numix-icon-theme-circle |  | ||||||
|     colloid-icon-theme |  | ||||||
|     catppuccin-gtk |  | ||||||
|     catppuccin-kvantum |  | ||||||
|     catppuccin-cursors.macchiatoTeal |  | ||||||
| 
 |  | ||||||
|     # gnome.gnome-tweaks |  | ||||||
|     # gnome.gnome-shell |  | ||||||
|     # gnome.gnome-shell-extensions |  | ||||||
|     # xsettingsd |  | ||||||
|     # themechanger |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,7 +0,0 @@ | ||||||
| { ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Set your time zone. |  | ||||||
|   time.hardwareClockInLocalTime = true; |  | ||||||
|   time.timeZone = "Europe/Amsterdam"; |  | ||||||
| } |  | ||||||
|  | @ -1,25 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # USB Automounting |  | ||||||
|   services.gvfs.enable = true; |  | ||||||
|   # services.udisks2.enable = true; |  | ||||||
|   # services.devmon.enable = true; |  | ||||||
| 
 |  | ||||||
|   # Enable USB Guard |  | ||||||
|   # services.usbguard = { |  | ||||||
|   #   enable = true; |  | ||||||
|   #   dbus.enable = true; |  | ||||||
|   #   implicitPolicyTarget = "block"; |  | ||||||
|   #   # FIXME: set yours pref USB devices (change {id} to your trusted USB device), use `lsusb` command (from usbutils package) to get list of all connected USB devices including integrated devices like camera, bluetooth, wifi, etc. with their IDs or just disable `usbguard` |  | ||||||
|   #   rules = '' |  | ||||||
|   #     allow id {id} # device 1 |  | ||||||
|   #     allow id {id} # device 2 |  | ||||||
|   #   ''; |  | ||||||
|   # }; |  | ||||||
| 
 |  | ||||||
|   # Enable USB-specific packages |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     usbutils |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,19 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Define a user account. |  | ||||||
|   users.users.bart = { |  | ||||||
|     isNormalUser = true; |  | ||||||
|     description = "Bart van der Braak"; |  | ||||||
|     extraGroups = [ "networkmanager" "input" "wheel" "video" "audio" "tss" ]; |  | ||||||
|     shell = pkgs.bash; |  | ||||||
|     packages = with pkgs; [ |  | ||||||
|       spotify |  | ||||||
|       discord |  | ||||||
|       vscodium |  | ||||||
|     ]; |  | ||||||
|   }; |  | ||||||
| 
 |  | ||||||
|   # Change runtime directory size |  | ||||||
|   services.logind.extraConfig = "RuntimeDirectorySize=8G"; |  | ||||||
| } |  | ||||||
|  | @ -1,23 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Docker |  | ||||||
|   virtualisation.docker.enable = true; |  | ||||||
|   virtualisation.docker.rootless = { |  | ||||||
|     enable = true; |  | ||||||
|     setSocketVariable = true; |  | ||||||
|   }; |  | ||||||
|   users.extraGroups.docker.members = [ "bart" ]; |  | ||||||
| 
 |  | ||||||
|   # Add KVM support |  | ||||||
|   virtualisation.libvirtd.enable = true; |  | ||||||
|   programs.virt-manager.enable = true; |  | ||||||
|   users.extraGroups.libvirtd.members = [ "bart" ]; |  | ||||||
| 
 |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     qemu |  | ||||||
|     docker-compose |  | ||||||
|     lazydocker |  | ||||||
|     docker-credential-helpers |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,12 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   # Enable Mullvad VPN, OpenVPN via Network Manager and Tailscale |  | ||||||
|   services.mullvad-vpn.enable = true; |  | ||||||
|   services.mullvad-vpn.package = pkgs.mullvad; |  | ||||||
|   services.tailscale.enable = true; |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     networkmanager-openvpn |  | ||||||
|     mullvad-closest |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,10 +0,0 @@ | ||||||
| { pkgs, ... }: |  | ||||||
| 
 |  | ||||||
| { |  | ||||||
|   environment.systemPackages = with pkgs; [ |  | ||||||
|     thunderbird |  | ||||||
|     element-desktop |  | ||||||
|     gnumake |  | ||||||
|     cmake |  | ||||||
|   ]; |  | ||||||
| } |  | ||||||
|  | @ -1,19 +0,0 @@ | ||||||
| #!/usr/bin/env bash |  | ||||||
| 
 |  | ||||||
| nixos_home="${1:-$(dirname "$(realpath "$0")")}" |  | ||||||
| 
 |  | ||||||
| # Check if the symlink exists and is valid |  | ||||||
| if [ -L /etc/nixos ] && [ -e /etc/nixos ]; then |  | ||||||
|     echo "The symlink /etc/nixos already exists and is valid. Exiting." |  | ||||||
|     exit 0 |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| # Backup current /etc/nixos if it exists |  | ||||||
| if [ -e /etc/nixos ]; then |  | ||||||
|     mv /etc/nixos /etc/nixos.bak |  | ||||||
|     echo "Created backup of current /etc/nixos" |  | ||||||
| fi |  | ||||||
| 
 |  | ||||||
| # Create symlink |  | ||||||
| ln -s "$nixos_home" /etc/nixos |  | ||||||
| echo "Symlinked /etc/nixos to $nixos_home" |  | ||||||
							
								
								
									
										7
									
								
								tongfang/.bash_aliases
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tongfang/.bash_aliases
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | ||||||
|  | alias ll='ls -la' | ||||||
|  | alias lt='ls --human-readable --size -1 -S --classify' | ||||||
|  | alias nrebuild='sudo nixos-rebuild --use-remote-sudo switch' | ||||||
|  | alias code='codium' | ||||||
|  | alias ssh='ensure_ssh_key; ssh' | ||||||
|  | alias rgf='rg --files | rg' | ||||||
|  | alias rcd='ranger' | ||||||
|  | @ -20,11 +20,6 @@ function ensure_ssh_key { | ||||||
|     fi |     fi | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function ngc { |  | ||||||
|     local days=${1:-14} |  | ||||||
|     sudo nix-collect-garbage --delete-older-than "${days}d" |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| # Map up/down arrow to search for history entries matching what is currently type in the command line. | # Map up/down arrow to search for history entries matching what is currently type in the command line. | ||||||
| bind '"\e[A": history-search-backward' | bind '"\e[A": history-search-backward' | ||||||
| bind '"\e[B": history-search-forward' | bind '"\e[B": history-search-forward' | ||||||
							
								
								
									
										1
									
								
								tongfang/.config/Logseq/config.edn
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								tongfang/.config/Logseq/config.edn
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | {:window/native-titlebar? true} | ||||||
							
								
								
									
										2
									
								
								tongfang/.config/git/blender.gitconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								tongfang/.config/git/blender.gitconfig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | ||||||
|  | [user] | ||||||
|  | 	email = bart@blender.org | ||||||
							
								
								
									
										1
									
								
								tongfang/.config/nvim
									
										
									
									
									
										Submodule
									
								
							
							
						
						
									
										1
									
								
								tongfang/.config/nvim
									
										
									
									
									
										Submodule
									
								
							|  | @ -0,0 +1 @@ | ||||||
|  | Subproject commit 4120893b8a1f31a0957f2f891f7fbef73ddfb9b1 | ||||||
							
								
								
									
										67
									
								
								tongfang/.config/wezterm/wezterm.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								tongfang/.config/wezterm/wezterm.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,67 @@ | ||||||
|  | local wezterm = require 'wezterm'; | ||||||
|  | 
 | ||||||
|  | return { | ||||||
|  |   -- Set the default program | ||||||
|  |   default_prog = { '/usr/bin/env', 'bash' }, | ||||||
|  | 
 | ||||||
|  |   -- Set the font and font size | ||||||
|  |   font = wezterm.font("Jetbrains Mono"), | ||||||
|  |   font_size = 13.0, | ||||||
|  | 
 | ||||||
|  |   -- Set color scheme | ||||||
|  |   color_scheme = "OneHalfDark", | ||||||
|  | 
 | ||||||
|  |   -- Set window transparency | ||||||
|  |   window_background_opacity = 0.95, | ||||||
|  | 
 | ||||||
|  |   -- Hide tab bar if there's only one tab | ||||||
|  |   hide_tab_bar_if_only_one_tab = true, | ||||||
|  | 
 | ||||||
|  |   -- Window padding | ||||||
|  |   window_padding = { | ||||||
|  |     left = 5, | ||||||
|  |     right = 5, | ||||||
|  |     top = 5, | ||||||
|  |     bottom = 25, | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   -- Use a steady block cursor | ||||||
|  |   default_cursor_style = "BlinkingBlock", | ||||||
|  |   cursor_blink_rate = 600, | ||||||
|  |   animation_fps = 144, | ||||||
|  | 
 | ||||||
|  |   -- Set scrollback lines to a large number for history | ||||||
|  |   scrollback_lines = 10000, | ||||||
|  | 
 | ||||||
|  |   -- Key bindings | ||||||
|  |   keys = { | ||||||
|  |     -- CTRL+T to open a new tab | ||||||
|  |     {key="t", mods="CTRL", action=wezterm.action{SpawnTab="DefaultDomain"}}, | ||||||
|  | 
 | ||||||
|  |     -- CTRL+W to close the current tab | ||||||
|  |     {key="w", mods="CTRL", action=wezterm.action{CloseCurrentTab={confirm=true}}}, | ||||||
|  | 
 | ||||||
|  |     -- CTRL+ALT+D to split pane horizontally | ||||||
|  |     {key="d", mods="CTRL|ALT", action=wezterm.action{SplitHorizontal={domain="CurrentPaneDomain"}}}, | ||||||
|  | 
 | ||||||
|  |     -- CTRL+SHIFT+D to split pane vertically | ||||||
|  |     {key="d", mods="CTRL|SHIFT", action=wezterm.action{SplitVertical={domain="CurrentPaneDomain"}}}, | ||||||
|  | 
 | ||||||
|  |     -- CTRL+Left/Right Arrow to move between tabs | ||||||
|  |     {key="LeftArrow", mods="CTRL", action=wezterm.action{ActivateTabRelative=-1}}, | ||||||
|  |     {key="RightArrow", mods="CTRL", action=wezterm.action{ActivateTabRelative=1}}, | ||||||
|  | 
 | ||||||
|  |     -- CTRL+Enter to toggle full screen | ||||||
|  |     {key="Enter", mods="CTRL", action="ToggleFullScreen"}, | ||||||
|  |   }, | ||||||
|  | 
 | ||||||
|  |   -- Enable native macOS-style key repeat | ||||||
|  |   enable_csi_u_key_encoding = true, | ||||||
|  | 
 | ||||||
|  |   -- Set the default window size to something familiar | ||||||
|  |   initial_cols = 120, | ||||||
|  |   initial_rows = 30, | ||||||
|  | 
 | ||||||
|  |   -- Enable Scrollbar | ||||||
|  |   enable_scroll_bar = true, | ||||||
|  | } | ||||||
|  | @ -2,7 +2,6 @@ | ||||||
| 	name = Bart van der Braak | 	name = Bart van der Braak | ||||||
| 	email = bart@vanderbraak.nl | 	email = bart@vanderbraak.nl | ||||||
| 	# signingkey = 26ED0D75D89D9B61 | 	# signingkey = 26ED0D75D89D9B61 | ||||||
| 
 |  | ||||||
| [alias] | [alias] | ||||||
| 	p = push | 	p = push | ||||||
| 	st = status | 	st = status | ||||||
|  | @ -13,28 +12,22 @@ | ||||||
| 	gl = config --global -l | 	gl = config --global -l | ||||||
| 	aa = add . | 	aa = add . | ||||||
| 	pushfwl = push --force-with-lease | 	pushfwl = push --force-with-lease | ||||||
| 
 |  | ||||||
| [core] | [core] | ||||||
| 	excludesfile = ~/.gitignore | 	excludesfile = $HOME/.gitignore_global | ||||||
| 	pager = delta |  | ||||||
| 
 |  | ||||||
| [interactive] |  | ||||||
|     diffFilter = delta --color-only |  | ||||||
| 
 |  | ||||||
| [init] | [init] | ||||||
| 	defaultBranch = main | 	defaultBranch = main | ||||||
| 
 |  | ||||||
| [commit] | [commit] | ||||||
| 	# gpgsign = true | 	# gpgsign = true | ||||||
| 
 |  | ||||||
| [push] | [push] | ||||||
| 	autoSetupRemote = true | 	autoSetupRemote = true | ||||||
| 
 |  | ||||||
| [filter "lfs"] | [filter "lfs"] | ||||||
| 	clean = git-lfs clean -- %f | 	clean = git-lfs clean -- %f | ||||||
| 	smudge = git-lfs smudge -- %f | 	smudge = git-lfs smudge -- %f | ||||||
| 	process = git-lfs filter-process | 	process = git-lfs filter-process | ||||||
| 	required = true | 	required = true | ||||||
| 
 | [includeIf "gitdir:~/Repos/github.com/blender/"] | ||||||
|  |     path = ~/.config/git/blender.gitconfig | ||||||
|  | [includeIf "gitdir:~/Repos/gitlab.com/blender/"] | ||||||
|  |     path = ~/.config/git/blender.gitconfig | ||||||
| [includeIf "gitdir:~/Repos/projects.blender.org/"] | [includeIf "gitdir:~/Repos/projects.blender.org/"] | ||||||
|     path = ~/.config/git/blender.gitconfig |     path = ~/.config/git/blender.gitconfig | ||||||
|  | @ -1,6 +1,13 @@ | ||||||
| { config, pkgs, inputs, ... }: | { config, pkgs, inputs, ... }: | ||||||
| 
 | 
 | ||||||
| { | { | ||||||
|  |   imports = [ | ||||||
|  |     ./hardware-configuration.nix | ||||||
|  |     ./users.nix             # Import user-specific config | ||||||
|  |     ./packages.nix          # Import package-specific config | ||||||
|  |     ./services.nix          # Import services config | ||||||
|  |   ]; | ||||||
|  | 
 | ||||||
|   # Bootloader and EFI settings |   # Bootloader and EFI settings | ||||||
|   boot.loader.systemd-boot.enable = true; |   boot.loader.systemd-boot.enable = true; | ||||||
|   boot.loader.efi.canTouchEfiVariables = true; |   boot.loader.efi.canTouchEfiVariables = true; | ||||||
|  | @ -29,7 +36,6 @@ | ||||||
|     enableDefaultPackages = true; |     enableDefaultPackages = true; | ||||||
|     packages = with pkgs; [ |     packages = with pkgs; [ | ||||||
|       jetbrains-mono |       jetbrains-mono | ||||||
|       nerdfonts |  | ||||||
|     ]; |     ]; | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
							
								
								
									
										10
									
								
								nixos/flake.lock → tongfang/nixos/flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								nixos/flake.lock → tongfang/nixos/flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -3,8 +3,8 @@ | ||||||
|     "nixpkgs": { |     "nixpkgs": { | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 0, |         "lastModified": 0, | ||||||
|         "narHash": "sha256-vH5mXxEvZeoGNkqKoCluhTGfoeXCZ1seYhC2pbMN0sg=", |         "narHash": "sha256-WLxED18lodtQiayIPDE5zwAfkPJSjHJ35UhZ8h3cJUg=", | ||||||
|         "path": "/nix/store/zd5dgszslv09jzybcpf25gpl12s6r2d9-source", |         "path": "/nix/store/wdk3xa0vwx7swjdl1samf1bccvyyzfc1-source", | ||||||
|         "type": "path" |         "type": "path" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
|  | @ -39,11 +39,11 @@ | ||||||
|         "nixpkgs": "nixpkgs_2" |         "nixpkgs": "nixpkgs_2" | ||||||
|       }, |       }, | ||||||
|       "locked": { |       "locked": { | ||||||
|         "lastModified": 1737404254, |         "lastModified": 1736655632, | ||||||
|         "narHash": "sha256-L8Lxp/WVdy9gKO2cXptphdP8cMsnGvZF5Noj8N3jLzI=", |         "narHash": "sha256-TeA6G+BUWhOi2ZnewAEfwbsY/ku1H1sdNKfwjvH0wzM=", | ||||||
|         "owner": "0xc000022070", |         "owner": "0xc000022070", | ||||||
|         "repo": "zen-browser-flake", |         "repo": "zen-browser-flake", | ||||||
|         "rev": "f8ef9c97ac2f49d5c04dbf3b3d80a0490c05fefb", |         "rev": "32f3692cc4d6a1d1cb8943be7d2e712a63c4b374", | ||||||
|         "type": "github" |         "type": "github" | ||||||
|       }, |       }, | ||||||
|       "original": { |       "original": { | ||||||
							
								
								
									
										17
									
								
								tongfang/nixos/flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								tongfang/nixos/flake.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | ||||||
|  | { | ||||||
|  |   description = "TongFang NixOS flake"; | ||||||
|  | 
 | ||||||
|  |   inputs = { | ||||||
|  |     zen-browser.url = "github:0xc000022070/zen-browser-flake"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  |   outputs = { self, nixpkgs, ... }@inputs: { | ||||||
|  |     nixosConfigurations.tongfang = nixpkgs.lib.nixosSystem { | ||||||
|  |       system = "x86_64-linux"; | ||||||
|  |       modules = [ | ||||||
|  |         ./configuration.nix | ||||||
|  |       ]; | ||||||
|  |       specialArgs = { inherit inputs; }; | ||||||
|  |     }; | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  | @ -4,7 +4,7 @@ | ||||||
| { config, lib, pkgs, modulesPath, ... }: | { config, lib, pkgs, modulesPath, ... }: | ||||||
| 
 | 
 | ||||||
| let | let | ||||||
|   yt6801 = import ./yt6801.nix { |   yt6801 = import ./yt6801/default.nix { | ||||||
|     inherit (pkgs) stdenv lib fetchzip; |     inherit (pkgs) stdenv lib fetchzip; | ||||||
|     kernel = pkgs.linuxPackages.kernel; |     kernel = pkgs.linuxPackages.kernel; | ||||||
|   }; |   }; | ||||||
|  | @ -16,17 +16,19 @@ in | ||||||
|     curl |     curl | ||||||
|     fzf |     fzf | ||||||
|     jq |     jq | ||||||
|     unzip |  | ||||||
|     silver-searcher |     silver-searcher | ||||||
|  |     ranger | ||||||
|     ripgrep |     ripgrep | ||||||
|     wl-clipboard-rs |  | ||||||
|     networkmanager-openvpn |     networkmanager-openvpn | ||||||
|     (pkgs.writeTextDir "share/sddm/themes/breeze/theme.conf.user" '' |     (pkgs.writeTextDir "share/sddm/themes/breeze/theme.conf.user" '' | ||||||
|     [General] |     [General] | ||||||
|     background=${customWallpaper} |     background=${customWallpaper} | ||||||
|     '') |     '') | ||||||
|     dig |     dig | ||||||
|  |     caligula | ||||||
|     zig |     zig | ||||||
|  |     zls | ||||||
|     spotify |     spotify | ||||||
|  |     texlive.combined.scheme-full | ||||||
|   ]; |   ]; | ||||||
| } | } | ||||||
|  | @ -9,7 +9,7 @@ | ||||||
|       vscodium |       vscodium | ||||||
|       thunderbird |       thunderbird | ||||||
|       fastfetch |       fastfetch | ||||||
|       ghostty |       wezterm | ||||||
|       neovim |       neovim | ||||||
|       logseq |       logseq | ||||||
|       element-desktop |       element-desktop | ||||||
|  | @ -18,8 +18,8 @@ | ||||||
|       python3 |       python3 | ||||||
|       gnumake |       gnumake | ||||||
|       gccgo |       gccgo | ||||||
|       nodejs_22 |       # nodejs_22 | ||||||
|       corepack_22 |       # corepack_22 | ||||||
|       azure-cli |       azure-cli | ||||||
|       sops |       sops | ||||||
|       blender |       blender | ||||||
							
								
								
									
										9
									
								
								tongfang/symlink.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										9
									
								
								tongfang/symlink.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,9 @@ | ||||||
|  | #!/usr/bin/env bash | ||||||
|  | 
 | ||||||
|  | if cp --version &>/dev/null; then | ||||||
|  |     dotfiles_home="${1:-$(dirname "$(realpath "$0")")}" | ||||||
|  |     cp -rsf "$dotfiles_home"/. $HOME | ||||||
|  |     echo "dotfiles symlinks recursively copied from $dotfiles_home to $HOME." | ||||||
|  | else | ||||||
|  |     echo "GNU cp required." | ||||||
|  | fi | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue