mirror of
				https://github.com/bartvdbraak/dotfiles.git
				synced 2025-10-30 07:09:09 +00:00 
			
		
		
		
	Compare commits
	
		
			3 commits
		
	
	
		
			5ac124b389
			...
			9e754a026e
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 9e754a026e | ||
|  | 97677f6181 | ||
| ab338d3b15 | 
					 87 changed files with 2218 additions and 3315 deletions
				
			
		
							
								
								
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								.gitmodules
									
										
									
									
										vendored
									
									
								
							|  | @ -1,3 +0,0 @@ | |||
| [submodule "tongfang/.config/nvim"] | ||||
| 	path = tongfang/.config/nvim | ||||
| 	url = git@github.com:bartvdbraak/nbim.git | ||||
|  | @ -1,3 +1,10 @@ | |||
| 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, see [LICENSE](./LICENSE). | ||||
| You're allowed to use it in whatever way you see fit but **on your own risk**, see our GLWTS 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 | ||||
|  |  | |||
							
								
								
									
										6
									
								
								dotfiles/.bash_aliases
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dotfiles/.bash_aliases
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| 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' | ||||
|  | @ -20,6 +20,11 @@ function ensure_ssh_key { | |||
|     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. | ||||
| bind '"\e[A": history-search-backward' | ||||
| bind '"\e[B": history-search-forward' | ||||
|  | @ -9,4 +9,4 @@ | |||
|         "command": "-editor.action.selectHighlights", | ||||
|         "when": "editorFocus" | ||||
|     } | ||||
| ] | ||||
| ] | ||||
							
								
								
									
										5
									
								
								dotfiles/.config/ghosty/config
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								dotfiles/.config/ghosty/config
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| font-size = 12 | ||||
| font-family = JetBrainsMono Nerd Font | ||||
| background-opacity = 0.95 | ||||
| background-blur-radius = 20 | ||||
| mouse-hide-while-typing = true | ||||
							
								
								
									
										2
									
								
								dotfiles/.config/git/blender.gitconfig
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								dotfiles/.config/git/blender.gitconfig
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,2 @@ | |||
| [user] | ||||
| 	email = bart@blender.org | ||||
							
								
								
									
										6
									
								
								dotfiles/.config/nvim/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dotfiles/.config/nvim/.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| tags | ||||
| test.sh | ||||
| .luarc.json | ||||
| nvim | ||||
| 
 | ||||
| spell/ | ||||
							
								
								
									
										6
									
								
								dotfiles/.config/nvim/.stylua.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								dotfiles/.config/nvim/.stylua.toml
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| column_width = 160 | ||||
| line_endings = "Unix" | ||||
| indent_type = "Spaces" | ||||
| indent_width = 2 | ||||
| quote_style = "AutoPreferSingle" | ||||
| call_parentheses = "None" | ||||
							
								
								
									
										888
									
								
								dotfiles/.config/nvim/init.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										888
									
								
								dotfiles/.config/nvim/init.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,888 @@ | |||
| -- 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 | ||||
							
								
								
									
										5
									
								
								dotfiles/.config/nvim/lua/custom/plugins/init.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								dotfiles/.config/nvim/lua/custom/plugins/init.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,5 @@ | |||
| -- 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 {} | ||||
							
								
								
									
										52
									
								
								dotfiles/.config/nvim/lua/kickstart/health.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								dotfiles/.config/nvim/lua/kickstart/health.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,52 @@ | |||
| --[[ | ||||
| -- | ||||
| -- 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, | ||||
| } | ||||
							
								
								
									
										16
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/autopairs.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/autopairs.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| -- 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, | ||||
| } | ||||
							
								
								
									
										148
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/debug.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										148
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/debug.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,148 @@ | |||
| -- 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, | ||||
| } | ||||
							
								
								
									
										61
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/gitsigns.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/gitsigns.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,61 @@ | |||
| -- 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, | ||||
|     }, | ||||
|   }, | ||||
| } | ||||
|  | @ -0,0 +1,9 @@ | |||
| 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 = {}, | ||||
|   }, | ||||
| } | ||||
							
								
								
									
										60
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/lint.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/lint.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,60 @@ | |||
| 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, | ||||
|   }, | ||||
| } | ||||
							
								
								
									
										25
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/neo-tree.lua
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								dotfiles/.config/nvim/lua/kickstart/plugins/neo-tree.lua
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| -- 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', | ||||
|         }, | ||||
|       }, | ||||
|     }, | ||||
|   }, | ||||
| } | ||||
|  | @ -2,6 +2,7 @@ | |||
| 	name = Bart van der Braak | ||||
| 	email = bart@vanderbraak.nl | ||||
| 	# signingkey = 26ED0D75D89D9B61 | ||||
| 
 | ||||
| [alias] | ||||
| 	p = push | ||||
| 	st = status | ||||
|  | @ -12,22 +13,28 @@ | |||
| 	gl = config --global -l | ||||
| 	aa = add . | ||||
| 	pushfwl = push --force-with-lease | ||||
| 
 | ||||
| [core] | ||||
| 	excludesfile = $HOME/.gitignore_global | ||||
| 	excludesfile = ~/.gitignore | ||||
| 	pager = delta | ||||
| 
 | ||||
| [interactive] | ||||
|     diffFilter = delta --color-only | ||||
| 
 | ||||
| [init] | ||||
| 	defaultBranch = main | ||||
| 
 | ||||
| [commit] | ||||
| 	# gpgsign = true | ||||
| 
 | ||||
| [push] | ||||
| 	autoSetupRemote = true | ||||
| 
 | ||||
| [filter "lfs"] | ||||
| 	clean = git-lfs clean -- %f | ||||
| 	smudge = git-lfs smudge -- %f | ||||
| 	process = git-lfs filter-process | ||||
| 	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/"] | ||||
|     path = ~/.config/git/blender.gitconfig | ||||
							
								
								
									
										1
									
								
								dotfiles/.nix-channels
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								dotfiles/.nix-channels
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1 @@ | |||
| https://nixos.org/channels/nixos-unstable nixos | ||||
							
								
								
									
										6
									
								
								dotfiles/symlink.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										6
									
								
								dotfiles/symlink.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| #!/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." | ||||
|  | @ -1,24 +0,0 @@ | |||
| [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 +0,0 @@ | |||
| .DS_Store | ||||
|  | @ -1,96 +0,0 @@ | |||
| ## 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 -)" | ||||
|  | @ -1,89 +0,0 @@ | |||
| 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 | ||||
| 
 | ||||
|  | @ -1,278 +0,0 @@ | |||
| { | ||||
|     "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 | ||||
|             } | ||||
|         } | ||||
|     ] | ||||
| } | ||||
|  | @ -1,21 +0,0 @@ | |||
| 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 | ||||
										
											
												File diff suppressed because it is too large
												Load diff
											
										
									
								
							|  | @ -1,71 +0,0 @@ | |||
| { | ||||
|   "$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 | ||||
| } | ||||
|  | @ -1,86 +0,0 @@ | |||
| #: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 | ||||
|  | @ -1,13 +1,6 @@ | |||
| { 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 | ||||
|   boot.loader.systemd-boot.enable = true; | ||||
|   boot.loader.efi.canTouchEfiVariables = true; | ||||
|  | @ -36,6 +29,7 @@ | |||
|     enableDefaultPackages = true; | ||||
|     packages = with pkgs; [ | ||||
|       jetbrains-mono | ||||
|       nerdfonts | ||||
|     ]; | ||||
|   }; | ||||
| 
 | ||||
|  | @ -58,4 +52,4 @@ | |||
| 
 | ||||
|   # System state version | ||||
|   system.stateVersion = "24.11"; | ||||
| } | ||||
| } | ||||
							
								
								
									
										10
									
								
								tongfang/nixos/flake.lock → nixos/flake.lock
									
										
									
										generated
									
									
									
								
							
							
						
						
									
										10
									
								
								tongfang/nixos/flake.lock → nixos/flake.lock
									
										
									
										generated
									
									
									
								
							|  | @ -3,8 +3,8 @@ | |||
|     "nixpkgs": { | ||||
|       "locked": { | ||||
|         "lastModified": 0, | ||||
|         "narHash": "sha256-WLxED18lodtQiayIPDE5zwAfkPJSjHJ35UhZ8h3cJUg=", | ||||
|         "path": "/nix/store/wdk3xa0vwx7swjdl1samf1bccvyyzfc1-source", | ||||
|         "narHash": "sha256-vH5mXxEvZeoGNkqKoCluhTGfoeXCZ1seYhC2pbMN0sg=", | ||||
|         "path": "/nix/store/zd5dgszslv09jzybcpf25gpl12s6r2d9-source", | ||||
|         "type": "path" | ||||
|       }, | ||||
|       "original": { | ||||
|  | @ -39,11 +39,11 @@ | |||
|         "nixpkgs": "nixpkgs_2" | ||||
|       }, | ||||
|       "locked": { | ||||
|         "lastModified": 1736655632, | ||||
|         "narHash": "sha256-TeA6G+BUWhOi2ZnewAEfwbsY/ku1H1sdNKfwjvH0wzM=", | ||||
|         "lastModified": 1737404254, | ||||
|         "narHash": "sha256-L8Lxp/WVdy9gKO2cXptphdP8cMsnGvZF5Noj8N3jLzI=", | ||||
|         "owner": "0xc000022070", | ||||
|         "repo": "zen-browser-flake", | ||||
|         "rev": "32f3692cc4d6a1d1cb8943be7d2e712a63c4b374", | ||||
|         "rev": "f8ef9c97ac2f49d5c04dbf3b3d80a0490c05fefb", | ||||
|         "type": "github" | ||||
|       }, | ||||
|       "original": { | ||||
							
								
								
									
										111
									
								
								nixos/flake.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								nixos/flake.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,111 @@ | |||
| { | ||||
|   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 | ||||
|       #   ]; | ||||
|       # }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										35
									
								
								nixos/hardware/qemu.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										35
									
								
								nixos/hardware/qemu.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,35 @@ | |||
| # 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; | ||||
| } | ||||
|  | @ -4,7 +4,7 @@ | |||
| { config, lib, pkgs, modulesPath, ... }: | ||||
| 
 | ||||
| let | ||||
|   yt6801 = import ./yt6801/default.nix { | ||||
|   yt6801 = import ./yt6801.nix { | ||||
|     inherit (pkgs) stdenv lib fetchzip; | ||||
|     kernel = pkgs.linuxPackages.kernel; | ||||
|   }; | ||||
|  | @ -41,4 +41,4 @@ in | |||
| 
 | ||||
|   nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; | ||||
|   hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; | ||||
| } | ||||
| } | ||||
|  | @ -48,4 +48,4 @@ stdenv.mkDerivation { | |||
|     ]; | ||||
|     platforms = platforms.linux; | ||||
|   }; | ||||
| } | ||||
| } | ||||
							
								
								
									
										16
									
								
								nixos/modules/battery.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								nixos/modules/battery.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| { 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"; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										12
									
								
								nixos/modules/bluetooth.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nixos/modules/bluetooth.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										17
									
								
								nixos/modules/bootloader.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								nixos/modules/bootloader.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,17 @@ | |||
| { 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"; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										13
									
								
								nixos/modules/compilation.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								nixos/modules/compilation.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     mold | ||||
|     gcc | ||||
|     ninja | ||||
|     clang | ||||
|     lld | ||||
|     lldb | ||||
|     musl | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										9
									
								
								nixos/modules/configuration.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								nixos/modules/configuration.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| # 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"; | ||||
| } | ||||
							
								
								
									
										9
									
								
								nixos/modules/creative-tools.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								nixos/modules/creative-tools.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,9 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     blender | ||||
|     inkscape | ||||
|     gimp | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										11
									
								
								nixos/modules/devops-tools.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								nixos/modules/devops-tools.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     azure-cli | ||||
|     opentofu | ||||
|     curl | ||||
|     go-task | ||||
|     sops | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										18
									
								
								nixos/modules/display-manager.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								nixos/modules/display-manager.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										8
									
								
								nixos/modules/environment-variables.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								nixos/modules/environment-variables.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   # Setup Env Variables | ||||
|   environment.variables.SPOTIFY_PATH = "${pkgs.spotify}/"; | ||||
|   environment.variables.JDK_PATH = "${pkgs.jdk11}/"; | ||||
|   environment.variables.NODEJS_PATH = "${pkgs.nodePackages_latest.nodejs}/"; | ||||
| } | ||||
							
								
								
									
										10
									
								
								nixos/modules/firewall.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								nixos/modules/firewall.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { ... }: | ||||
| 
 | ||||
| { | ||||
|   # Open ports in the firewall. | ||||
|   networking.firewall.enable = true; | ||||
|   networking.firewall.allowedTCPPorts = [ ]; | ||||
|   networking.firewall.allowedUDPPorts = [  | ||||
|     5353 # Spotify Connect | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										10
									
								
								nixos/modules/fonts.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								nixos/modules/fonts.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   # Fonts | ||||
|   fonts.packages = with pkgs; [ | ||||
|     jetbrains-mono | ||||
|     nerd-font-patcher | ||||
|     noto-fonts-color-emoji | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										6
									
								
								nixos/modules/gaming.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								nixos/modules/gaming.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   # Enable Steam | ||||
|   programs.steam.enable = true; | ||||
| } | ||||
							
								
								
									
										16
									
								
								nixos/modules/gc.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								nixos/modules/gc.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,16 @@ | |||
| { ... }: | ||||
| 
 | ||||
| { | ||||
|   # 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"; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										10
									
								
								nixos/modules/gnome.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								nixos/modules/gnome.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   services.xserver = { | ||||
|     enable = true; | ||||
|     xkb.layout = "us"; | ||||
|     desktopManager.gnome.enable = true; | ||||
|     displayManager.gdm.enable = true; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										18
									
								
								nixos/modules/greeter.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								nixos/modules/greeter.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,18 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										25
									
								
								nixos/modules/hyprland.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nixos/modules/hyprland.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										28
									
								
								nixos/modules/info-fetchers.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								nixos/modules/info-fetchers.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,28 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										30
									
								
								nixos/modules/internationalisation.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								nixos/modules/internationalisation.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,30 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										11
									
								
								nixos/modules/kde.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								nixos/modules/kde.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,11 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   # Enable KDE Plasma 6 | ||||
|   services.xserver.enable = true; | ||||
|   services.displayManager.sddm = { | ||||
|     enable = true; | ||||
|     wayland.enable = true; | ||||
|   }; | ||||
|   services.desktopManager.plasma6.enable = true; | ||||
| } | ||||
							
								
								
									
										14
									
								
								nixos/modules/keyboard.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								nixos/modules/keyboard.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										21
									
								
								nixos/modules/linux-kernel.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								nixos/modules/linux-kernel.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,21 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										31
									
								
								nixos/modules/lsp.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								nixos/modules/lsp.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,31 @@ | |||
| { 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 | ||||
|   ];   | ||||
| } | ||||
							
								
								
									
										13
									
								
								nixos/modules/networking.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								nixos/modules/networking.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   # Enable networking | ||||
|   networking.hostName = "tongfang"; | ||||
|   networking.networkmanager.enable = true; | ||||
|   users.extraGroups.networkmanager.members = [ "bart" ]; | ||||
|    | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     iwgtk | ||||
|     impala | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										8
									
								
								nixos/modules/nix-settings.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								nixos/modules/nix-settings.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| { ... }: | ||||
| 
 | ||||
| { | ||||
|   # Nix Configuration | ||||
|   nix.settings = { | ||||
|     experimental-features = [ "nix-command" "flakes" ];     | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										6
									
								
								nixos/modules/nixpkgs.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								nixos/modules/nixpkgs.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | |||
| { ... }: | ||||
| 
 | ||||
| { | ||||
|   # Allow unfree packages | ||||
|   nixpkgs.config.allowUnfree = true; | ||||
| } | ||||
							
								
								
									
										14
									
								
								nixos/modules/open-ssh.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								nixos/modules/open-ssh.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,14 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   # Enable the OpenSSH daemon. | ||||
|   services.openssh = { | ||||
|     enable = true; | ||||
|     settings = { | ||||
|       PasswordAuthentication = false; | ||||
|       KbdInteractiveAuthentication = false; | ||||
|       PermitRootLogin = "no"; | ||||
|       AllowUsers = [ "bart" ]; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
							
								
								
									
										8
									
								
								nixos/modules/printing.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								nixos/modules/printing.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,8 @@ | |||
| { ... }: | ||||
| 
 | ||||
| { | ||||
|   # 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; | ||||
| } | ||||
							
								
								
									
										13
									
								
								nixos/modules/programming-languages.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								nixos/modules/programming-languages.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,13 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										10
									
								
								nixos/modules/screen.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								nixos/modules/screen.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   programs.light.enable = true; | ||||
| 
 | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     wlsunset | ||||
|     brightnessctl | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										56
									
								
								nixos/modules/services.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								nixos/modules/services.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,56 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										25
									
								
								nixos/modules/sound.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nixos/modules/sound.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										59
									
								
								nixos/modules/terminal-utils.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								nixos/modules/terminal-utils.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,59 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										62
									
								
								nixos/modules/theme.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								nixos/modules/theme.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,62 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										7
									
								
								nixos/modules/time.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								nixos/modules/time.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | |||
| { ... }: | ||||
| 
 | ||||
| { | ||||
|   # Set your time zone. | ||||
|   time.hardwareClockInLocalTime = true; | ||||
|   time.timeZone = "Europe/Amsterdam"; | ||||
| } | ||||
							
								
								
									
										25
									
								
								nixos/modules/usb.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								nixos/modules/usb.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,25 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										19
									
								
								nixos/modules/users.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								nixos/modules/users.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| { 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"; | ||||
| } | ||||
							
								
								
									
										23
									
								
								nixos/modules/virtualisation.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								nixos/modules/virtualisation.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										12
									
								
								nixos/modules/vpn.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								nixos/modules/vpn.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,12 @@ | |||
| { 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 | ||||
|   ]; | ||||
| } | ||||
							
								
								
									
										10
									
								
								nixos/modules/work.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								nixos/modules/work.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,10 @@ | |||
| { pkgs, ... }: | ||||
| 
 | ||||
| { | ||||
|   environment.systemPackages = with pkgs; [ | ||||
|     thunderbird | ||||
|     element-desktop | ||||
|     gnumake | ||||
|     cmake | ||||
|   ]; | ||||
| } | ||||
|  | @ -16,19 +16,17 @@ in | |||
|     curl | ||||
|     fzf | ||||
|     jq | ||||
|     unzip | ||||
|     silver-searcher | ||||
|     ranger | ||||
|     ripgrep | ||||
|     wl-clipboard-rs | ||||
|     networkmanager-openvpn | ||||
|     (pkgs.writeTextDir "share/sddm/themes/breeze/theme.conf.user" '' | ||||
|     [General] | ||||
|     background=${customWallpaper} | ||||
|     '') | ||||
|     dig | ||||
|     caligula | ||||
|     zig | ||||
|     zls | ||||
|     spotify | ||||
|     texlive.combined.scheme-full | ||||
|   ]; | ||||
| } | ||||
| } | ||||
|  | @ -40,4 +40,4 @@ | |||
|   services.printing.enable = true; | ||||
|   services.printing.browsed.enable = false; | ||||
|   hardware.bluetooth.enable = true; | ||||
| } | ||||
| } | ||||
							
								
								
									
										19
									
								
								nixos/symlink.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										19
									
								
								nixos/symlink.sh
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,19 @@ | |||
| #!/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" | ||||
|  | @ -9,7 +9,7 @@ | |||
|       vscodium | ||||
|       thunderbird | ||||
|       fastfetch | ||||
|       wezterm | ||||
|       ghostty | ||||
|       neovim | ||||
|       logseq | ||||
|       element-desktop | ||||
|  | @ -18,8 +18,8 @@ | |||
|       python3 | ||||
|       gnumake | ||||
|       gccgo | ||||
|       # nodejs_22 | ||||
|       # corepack_22 | ||||
|       nodejs_22 | ||||
|       corepack_22 | ||||
|       azure-cli | ||||
|       sops | ||||
|       blender | ||||
|  | @ -68,4 +68,4 @@ | |||
|     enable = true; | ||||
|     setSocketVariable = true; | ||||
|   }; | ||||
| } | ||||
| } | ||||
|  | @ -1,7 +0,0 @@ | |||
| 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' | ||||
|  | @ -1 +0,0 @@ | |||
| {:window/native-titlebar? true} | ||||
|  | @ -1,2 +0,0 @@ | |||
| [user] | ||||
| 	email = bart@blender.org | ||||
|  | @ -1 +0,0 @@ | |||
| Subproject commit 4120893b8a1f31a0957f2f891f7fbef73ddfb9b1 | ||||
|  | @ -1,67 +0,0 @@ | |||
| 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, | ||||
| } | ||||
|  | @ -1,17 +0,0 @@ | |||
| { | ||||
|   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; }; | ||||
|     }; | ||||
|   }; | ||||
| } | ||||
|  | @ -1,9 +0,0 @@ | |||
| #!/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