this repo has no description
2
fork

Configure Feed

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

got a bunch of shit fixed

+383 -201
+11 -11
flake.lock
··· 270 270 ] 271 271 }, 272 272 "locked": { 273 - "lastModified": 1736373539, 274 - "narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", 273 + "lastModified": 1751810233, 274 + "narHash": "sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km+tQ=", 275 275 "owner": "nix-community", 276 276 "repo": "home-manager", 277 - "rev": "bd65bc3cde04c16755955630b344bc9e35272c56", 277 + "rev": "9b0873b46c9f9e4b7aa01eb634952c206af53068", 278 278 "type": "github" 279 279 }, 280 280 "original": { 281 281 "owner": "nix-community", 282 - "ref": "release-24.11", 282 + "ref": "release-25.05", 283 283 "repo": "home-manager", 284 284 "type": "github" 285 285 } ··· 354 354 }, 355 355 "nixpkgs_2": { 356 356 "locked": { 357 - "lastModified": 1738277201, 358 - "narHash": "sha256-6L+WXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk=", 357 + "lastModified": 1755274400, 358 + "narHash": "sha256-rTInmnp/xYrfcMZyFMH3kc8oko5zYfxsowaLv1LVobY=", 359 359 "owner": "nixos", 360 360 "repo": "nixpkgs", 361 - "rev": "666e1b3f09c267afd66addebe80fb05a5ef2b554", 361 + "rev": "ad7196ae55c295f53a7d1ec39e4a06d922f3b899", 362 362 "type": "github" 363 363 }, 364 364 "original": { 365 365 "owner": "nixos", 366 - "ref": "nixos-24.11", 366 + "ref": "nixos-25.05", 367 367 "repo": "nixpkgs", 368 368 "type": "github" 369 369 } ··· 534 534 }, 535 535 "unstable": { 536 536 "locked": { 537 - "lastModified": 1744932701, 538 - "narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", 537 + "lastModified": 1752687322, 538 + "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", 539 539 "owner": "nixos", 540 540 "repo": "nixpkgs", 541 - "rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", 541 + "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", 542 542 "type": "github" 543 543 }, 544 544 "original": {
+4 -4
flake.nix
··· 3 3 4 4 inputs = { 5 5 # Nixpkgs 6 - nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; 6 + nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05"; 7 7 unstable.url = "github:nixos/nixpkgs/nixos-unstable"; 8 8 nixos-hardware.url = "github:NixOS/nixos-hardware/master"; 9 9 ··· 11 11 # ngipkgs-local.url = "path:/home/anish/usr/ngipkgs"; 12 12 13 13 # Home manager 14 - home-manager.url = "github:nix-community/home-manager/release-24.11"; 14 + home-manager.url = "github:nix-community/home-manager/release-25.05"; 15 15 home-manager.inputs.nixpkgs.follows = "nixpkgs"; 16 16 hardware.url = "github:nixos/nixos-hardware"; 17 17 ··· 95 95 tidalcycles.overlays.default 96 96 agenix.overlays.default 97 97 nur.overlay 98 - nix-matrix-appservices.overlay 98 + # nix-matrix-appservices.overlay # nixpkgs has these packages and newer ones at that 99 99 unstableOverlay 100 100 vimwikiOverlay 101 101 self.overlays.additions ··· 251 251 }; 252 252 lituus = { 253 253 hostname = "sealight.xyz"; 254 - # autoRollback = false; 254 + autoRollback = false; 255 255 profiles.system = { 256 256 user = "root"; 257 257 path = deploy-rs.lib.x86_64-linux.activate.nixos
+18
home/gui/default.nix
··· 11 11 ../profiles/ssh 12 12 ../profiles/task 13 13 ]; 14 + 15 + # GPG configuration for user session 16 + services.gpg-agent = { 17 + enable = true; 18 + pinentry.package = pkgs.pinentry-rofi; # Use rofi for consistency with desktop theme 19 + enableSshSupport = true; 20 + defaultCacheTtl = 28800; # 8 hours 21 + maxCacheTtl = 86400; # 24 hours 22 + extraConfig = '' 23 + pinentry-program ${pkgs.writeShellScript "pinentry-rofi-themed" '' 24 + exec ${pkgs.pinentry-rofi}/bin/pinentry-rofi -theme ~/.config/rofi/theme/passmenu.rasi "$@" 25 + ''} 26 + ''; 27 + }; 28 + 29 + programs.gpg = { 30 + enable = true; 31 + }; 14 32 }
+1 -1
home/profiles/cli/default.nix
··· 154 154 enableCompletion = true; 155 155 autosuggestion.enable = false; 156 156 157 - initExtra = '' 157 + initContent = '' 158 158 bindkey -v 159 159 autopair-init 160 160 '';
+2 -1
home/profiles/desktop/default.nix
··· 31 31 inotify-tools 32 32 offpunk 33 33 termpdfpy 34 - libsForQt5.kontact 34 + # libsForQt5.kontact 35 35 thunderbird 36 + libsecret # For secret-tool to manage keyring 36 37 ]; 37 38 38 39 # GTK4 color scheme?
+4
home/profiles/desktop/kitty.conf
··· 8 8 mouse_map left click ungrabbed mouse_click_url_or_select 9 9 confirm_os_window_close 0 10 10 enable_audio_bell no 11 + 12 + # Ctrl+V for paste 13 + map ctrl+v paste_from_clipboard 14 + 11 15 -- Allows zen-mode.nvim to increase font size 12 16 -- allow_remote_control socket-only 13 17 -- listen_on unix:/tmp/kitty
+1 -1
home/profiles/firefox/default.nix
··· 18 18 isDefault = true; 19 19 name = "anish"; 20 20 userChrome = (builtins.readFile ./userChrome.css); 21 - extensions = with pkgs.nur.repos.rycee.firefox-addons; [ 21 + extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [ 22 22 # Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix 23 23 ublock-origin 24 24 # wallabagger
+81 -19
home/profiles/firefox/userChrome.css
··· 53 53 height: 28px !important; 54 54 } 55 55 56 - /* hides the sidebar header */ 56 + /* hides the sidebar header 57 57 #sidebar-header { 58 58 display: none !important; 59 59 } 60 + */ 60 61 61 62 .tab[selected="true"] { 62 63 visibility: collapse; ··· 72 73 /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0 73 74 See the above repository for updates as well as full license text. */ 74 75 75 - /* Show sidebar only when the cursor is over it */ 76 - /* The border controlling sidebar width will be removed so you'll need to modify these values to change width */ 76 + /* Show sidebar only when the cursor is over it. 77 + The border controlling sidebar width will be removed so you'll need to modify 78 + these values to change width. 79 + By default the internal layout of sidebar changes when hovered, but this can 80 + be changed by setting pref "userchrome.autohide-sidebar.static-layout.enabled" to true 81 + */ 77 82 78 - #sidebar-box{ 79 - --uc-sidebar-width: 40px; 83 + /* Note: If you want only *some* sidebar to be auto-hidden, then you can use [sidebarcommand] attribute selector. 84 + For example, to only affect Sidebery's sidebar replace all instances of #sidebar-box with 85 + #sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"]. 86 + To find the sidebarcommand value for any other sidebar, open that sidebar and use Browser Toolbox to inspect it. 87 + See: https://firefox-source-docs.mozilla.org/devtools-user/browser_toolbox/index.html 88 + */ 89 + /* The whole thing 90 + :where(#main-window) #browser{ 91 + --uc-sidebar-width: 240px; 80 92 --uc-sidebar-hover-width: 210px; 93 + } 94 + #main-window[sizemode="fullscreen"] #browser{ 95 + --uc-sidebar-width: 1px; 96 + } 97 + #sidebar-box{ 81 98 --uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */ 82 99 --uc-autohide-transition-duration: 115ms; 83 100 --uc-autohide-transition-type: linear; ··· 87 104 width: var(--uc-sidebar-width) !important; 88 105 max-width: var(--uc-sidebar-width) !important; 89 106 z-index: var(--browser-area-z-index-sidebar,3); 107 + background-color: inherit; 108 + /* This directionality flipper is played so that sidebar "grows" into the right direction */ 109 + direction: ltr; 110 + &:is([positionend],[sidebar-positionend]):not(:-moz-locale-dir(rtl)){ 111 + direction: rtl; 112 + } 90 113 } 91 - #sidebar-box[positionend]{ direction: rtl } 92 - #sidebar-box[positionend] > *{ direction: ltr } 93 - 94 - #sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr } 95 - #sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl } 96 - 97 - #main-window[sizemode="fullscreen"] #sidebar-box{ --uc-sidebar-width: 1px; } 114 + .sidebar-browser-stack{ 115 + background: inherit; 116 + } 117 + #main-window[sizemode="fullscreen"] #browser{ --uc-sidebar-width: 1px; } 98 118 99 119 #sidebar-splitter{ display: none } 100 120 ··· 116 136 transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; 117 137 min-width: var(--uc-sidebar-width) !important; 118 138 will-change: min-width; 139 + direction: ltr; 140 + &:-moz-locale-dir(rtl){ 141 + direction: rtl; 142 + } 119 143 } 120 144 #sidebar-box:hover > #sidebar-header, 121 - #sidebar-box:hover > #sidebar{ 145 + #sidebar-box:hover > #sidebar, 146 + #sidebar-box:hover > .sidebar-browser-stack > #sidebar{ 122 147 min-width: var(--uc-sidebar-hover-width) !important; 123 148 transition-delay: 0ms !important; 124 149 } ··· 143 168 border-inline-width: 0px 1px; 144 169 } 145 170 146 - #sidebar-box:not([positionend]) > :-moz-locale-dir(rtl), 147 - #sidebar-box[positionend] > *{ 171 + #sidebar-box:not([positionend],[sidebar-positionend]) > :-moz-locale-dir(rtl), 172 + #sidebar-box:is([positionend],[sidebar-positionend]) > *{ 148 173 border-inline-width: 1px 0px; 149 174 } 150 - 175 + @media -moz-pref("sidebar.revamp") { 176 + #sidebar, #sidebar-header{ border-style: none } 177 + #sidebar-box{ padding: 0 !important; } 178 + } 151 179 /* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */ 152 180 153 - #sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{ 181 + #sidebar-box:not([positionend],[sidebar-positionend]):hover ~ #appcontent #statuspanel{ 154 182 inset-inline: auto 0px !important; 155 183 } 156 - #sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{ 184 + #sidebar-box:not([positionend],[sidebar-positionend]):hover ~ #appcontent #statuspanel-label{ 157 185 margin-inline: 0px !important; 158 186 border-left-style: solid !important; 159 187 } 160 - 188 + @media -moz-pref("userchrome.autohide-sidebar.static-layout.enabled"){ 189 + #sidebar-box{ 190 + min-width: var(--uc-sidebar-width) !important; 191 + contain: size; 192 + box-shadow: var(--content-area-shadow); 193 + } 194 + #sidebar{ 195 + min-width: var(--uc-sidebar-hover-width) !important; 196 + } 197 + .sidebar-browser-stack{ 198 + overflow: hidden; 199 + width: 100%; 200 + transition: width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay); 201 + direction: ltr; 202 + &:hover{ 203 + transition-delay: 0ms; 204 + width: var(--uc-sidebar-hover-width); 205 + } 206 + &:-moz-locale-dir(rtl){ 207 + transition-property: transform,width !important; 208 + } 209 + } 210 + #sidebar-box[sidebar-positionend]:hover :is(#sidebar-header,#sidebar):-moz-locale-dir(ltr){ 211 + transform: translateX(0); 212 + transition-delay: 0ms !important; 213 + } 214 + #sidebar-box:not([sidebar-positionend]):hover .sidebar-browser-stack:-moz-locale-dir(rtl){ 215 + transform: translateX(calc(-1 * var(--uc-sidebar-hover-width) + var(--uc-sidebar-width))); 216 + } 217 + #sidebar-box[sidebar-positionend]:hover > .sidebar-browser-stack:-moz-locale-dir(rtl){ 218 + transform: translateX(calc(var(--uc-sidebar-hover-width) - var(--uc-sidebar-width))); 219 + transition-delay: 0ms !important; 220 + } 221 + } 222 + */
+179 -83
home/profiles/nvim/default.nix
··· 10 10 sha256 = "1fzKmknfVlEYwqeXgbKITbb2/PJ023iJyMz6vak3qh4="; 11 11 }; 12 12 }; 13 - lsp-format = pkgs.vimUtils.buildVimPlugin { 14 - name = "lsp-format"; 15 - src = pkgs.fetchFromGitHub { 16 - owner = "lukas-reineke"; 17 - repo = "lsp-format.nvim"; 18 - rev = "84e117b99bb2bc0d0c8122e2b256046f046f8aff"; 19 - sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4="; 20 - }; 21 - }; 13 + 22 14 my-lspsaga = pkgs.vimUtils.buildVimPlugin { 23 15 name = "lspsaga.nvim"; 24 16 src = pkgs.fetchFromGitHub { ··· 66 58 }; 67 59 meta.homepage = "https://github.com/folke/which-key.nvim/"; 68 60 }; 69 - scnvim = pkgs.vimUtils.buildVimPlugin { 70 - pname = "scnvim"; 71 - version = "2022-06-04"; 72 - src = pkgs.fetchFromGitHub { 73 - owner = "davidgranstrom"; 74 - repo = "scnvim"; 75 - rev = "746cc0db820d02a9c36b8f9ba2eac9725fa73107"; 76 - sha256 = "kvSwS6FNUY2Ue84NhWLLcm0ldLMSp4WqQ7s6TUoX6Cc="; 77 - }; 78 - }; 79 61 yuck-vim = pkgs.vimUtils.buildVimPlugin { 80 62 pname = "yuck.vim"; 81 63 version = "2021-08-09"; ··· 132 114 tasklib 133 115 pynvim 134 116 six 135 - pylsp-mypy 136 - #pyls-isort 137 - #pyls-black 138 - black 139 - isort 140 117 # other python packages you want 141 118 ]; 142 119 python-with-my-packages = pkgs.python3.withPackages my-python-packages; ··· 205 182 set nobackup 206 183 set nowritebackup 207 184 " Better display for messages 208 - set cmdheight=2 185 + set cmdheight=0 209 186 " You will have bad experience for diagnostic messages when it's default 4000. 210 187 set updatetime=300 211 188 " don't give |ins-completion-menu| messages. ··· 214 191 set signcolumn=yes 215 192 " highlight row 216 193 set cursorline 194 + set autoread 217 195 218 196 let mapleader = "\<Space>" 219 197 let maplocalleader = "," ··· 228 206 nmap <leader>rt :retab!<CR> 229 207 vmap <leader>rt :retab!<CR> 230 208 231 - " moving splits with vim movements. 232 - :tnoremap <A-h> <C-\><C-N><C-w>h 233 - :tnoremap <A-j> <C-\><C-N><C-w>j 234 - :tnoremap <A-k> <C-\><C-N><C-w>k 235 - :tnoremap <A-l> <C-\><C-N><C-w>l 236 - :inoremap <A-h> <C-\><C-N><C-w>h 237 - :inoremap <A-j> <C-\><C-N><C-w>j 238 - :inoremap <A-k> <C-\><C-N><C-w>k 239 - :inoremap <A-l> <C-\><C-N><C-w>l 240 - :nnoremap <A-h> <leader>h 241 - :nnoremap <A-j> <leader>j 242 - :nnoremap <A-k> <leader>k 243 - :nnoremap <A-l> <leader>l 209 + " Alt+hjkl navigation now handled by Navigator.nvim plugin 244 210 :nnoremap <F5> "=strftime("%Y-%m-%d %H:%M")<CR> 245 211 :inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M")<CR> 246 212 :inoremap <F4> <C-R>=strftime("%H:%M")<CR> ··· 278 244 autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll 279 245 280 246 " general commands 281 - map <leader>t :NERDTreeToggle<CR> 247 + map <leader>e :Neotree toggle<CR> 282 248 map <leader>s :w<CR> 283 249 map <leader>q :q<CR> 284 250 map <leader>r :RainbowParenthesesToggleAll<CR> 285 - nnoremap <BS> :noh<CR> 251 + nnoremap <Esc> :noh<CR> 286 252 map Q <Nop> 287 253 nnoremap Y y$ 288 254 nnoremap <leader>n :vnew<CR> ··· 313 279 :vmap <leader>sy "*y 314 280 :map <leader>sp :r!xclip -o<CR> 315 281 316 - " barbar 317 - nnoremap <silent> gT :BufferPrevious<CR> 318 - nnoremap <silent> gt :BufferNext<CR> 319 - nnoremap <silent> gj :BufferPick<CR> 320 - nnoremap <silent> gq :BufferClose<CR> 282 + " buffer navigation (using built-in commands) 283 + nnoremap <silent> gT :bprevious<CR> 284 + nnoremap <silent> gt :bnext<CR> 285 + nnoremap <silent> gj :buffers<CR> 286 + nnoremap <silent> gq :bdelete<CR> 321 287 322 288 " git 323 289 nnoremap <leader>ga :G fetch --all ··· 332 298 " kitaab 333 299 "map <leader>cz :VimwikiIndex<CR>:ZettelNew 334 300 "map <leader>zs :ZettelSearch<CR> 335 - "map <leader>zn :ZettelNew<CR> 301 + map <leader>zn :ZettelNew<CR> 336 302 "map <leader>zo :ZettelOpen<CR> 337 303 "map <leader>zf :Telescope oldfiles only_cwd=true<CR> 338 304 "map <leader>wt :VimwikiMakeTomorrowDiaryNote ··· 368 334 nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR> 369 335 nnoremap <leader>vs :Dasht<Space> 370 336 nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR> 371 - nnoremap <leader>vo :LSoutlineToggle<CR> 337 + nnoremap <leader>co :Outline<CR> 338 + " Trouble keybindings 339 + nnoremap <leader>xx :Trouble diagnostics<CR> 340 + nnoremap <leader>xw :Trouble workspace_diagnostics<CR> 341 + nnoremap <leader>xd :Trouble document_diagnostics<CR> 342 + nnoremap <leader>xl :Trouble loclist<CR> 343 + nnoremap <leader>xq :Trouble quickfix<CR> 344 + nnoremap <leader>xr :Trouble lsp_references<CR> 345 + 346 + " Yank to system clipboard (y operations only, not d) 347 + nnoremap y "+y 348 + vnoremap y "+y 349 + nnoremap Y "+Y 350 + 351 + " Note-taking keybindings 352 + nnoremap <leader>zz :ZkNew { title = vim.fn.input('Title: ') }<CR> 372 353 373 354 " dashboard 374 355 let g:dashboard_custom_header = [ ··· 427 408 428 409 " lua config 429 410 lua <<EOF 430 - local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } 411 + local signs = { Error = "⮾ ", Warn = "⚠ ", Hint = "💡", Info = " " } 431 412 for type, icon in pairs(signs) do 432 413 local hl = "DiagnosticSign" .. type 433 414 vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) ··· 487 468 488 469 489 470 vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true}) 490 - 471 + 491 472 -- autopairs 492 473 require('nvim-autopairs').setup{} 493 474 ··· 567 548 cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = ' ' } })) 568 549 require("luasnip.loaders.from_vscode").lazy_load() 569 550 570 - -- null-ls 571 - -- being very janky 572 - local null_ls = require("null-ls") 573 - null_ls.setup({ 574 - sources = { 575 - null_ls.builtins.diagnostics.shellcheck, 576 - null_ls.builtins.diagnostics.proselint.with({ filetypes = { "vimwiki", "mail", }, }), 577 - null_ls.builtins.diagnostics.commitlint, 578 - null_ls.builtins.diagnostics.jsonlint, 579 - -- null_ls.builtins.code_actions.statix, 580 - -- null_ls.builtins.diagnostics.clj_kondo, 581 - -- null_ls.builtins.formatting.isort, 582 - -- null_ls.builtins.formatting.black, 551 + -- lsp-format removed, using conform.nvim instead 552 + require("nvim-navic").setup { 553 + icons = { 554 + Constant = "π ", 555 + Function = "ƒ " 556 + } 557 + } 558 + 559 + -- Setup neo-tree 560 + require("neo-tree").setup {} 561 + 562 + -- Setup outline 563 + require("outline").setup {} 564 + 565 + -- Setup trouble 566 + require("trouble").setup {} 567 + 568 + -- Setup noice for floating command palette and notifications 569 + require("noice").setup({ 570 + cmdline = { 571 + enabled = true, 572 + view = "cmdline_popup", 573 + }, 574 + messages = { 575 + enabled = true, 576 + }, 577 + popupmenu = { 578 + enabled = true, 579 + }, 580 + notify = { 581 + enabled = true, 582 + view = "notify", 583 + }, 584 + lsp = { 585 + progress = { 586 + enabled = true, 587 + format = "lsp_progress", 588 + format_done = "lsp_progress_done", 589 + throttle = 1000 / 30, -- frequency to update lsp progress message 590 + view = "mini", 591 + }, 592 + override = { 593 + ["vim.lsp.util.convert_input_to_markdown_lines"] = true, 594 + ["vim.lsp.util.stylize_markdown"] = true, 595 + ["cmp.entry.get_documentation"] = true, 596 + }, 597 + }, 598 + presets = { 599 + command_palette = true, 600 + long_message_to_split = true, 601 + inc_rename = false, 602 + lsp_doc_border = false, 603 + }, 604 + views = { 605 + cmdline_popup = { 606 + border = { 607 + style = "rounded", 608 + padding = { 0, 1 }, 609 + }, 610 + filter_options = {}, 611 + win_options = { 612 + winhighlight = "NormalFloat:NormalFloat,FloatBorder:FloatBorder", 613 + }, 614 + }, 583 615 }, 584 616 }) 585 - 586 - -- Setup lspconfig 587 - require("lsp-format").setup {} 588 - require("nvim-navic").setup {} 589 - local format = require("lsp-format") 617 + 618 + -- Setup barbar (tabline with icons) 619 + require'barbar'.setup { 620 + icons = { 621 + filetype = { 622 + enabled = true, 623 + }, 624 + }, 625 + } 590 626 local navic = require("nvim-navic") 627 + 628 + -- Setup conform.nvim for formatting 629 + require("conform").setup({ 630 + formatters_by_ft = { 631 + javascript = { "prettier", "lsp" }, 632 + typescript = { "prettier", "lsp" }, 633 + javascriptreact = { "prettier", "lsp" }, 634 + typescriptreact = { "prettier", "lsp" }, 635 + json = { "prettier", "lsp" }, 636 + html = { "prettier", "lsp" }, 637 + css = { "prettier", "lsp" }, 638 + yaml = { "prettier", "lsp" }, 639 + rust = { "lsp" }, 640 + go = { "lsp" }, 641 + lua = { "lsp" }, 642 + nix = { "nixfmt-rfc-style" }, 643 + clojure = { "lsp" }, 644 + fennel = { "lsp" }, 645 + terraform = { "lsp" }, 646 + bash = { "shfmt" }, 647 + sh = { "shfmt" }, 648 + }, 649 + format_on_save = { 650 + timeout_ms = 500, 651 + lsp_fallback = true, 652 + }, 653 + }) 591 654 592 655 -- lspsaga, code_action lightbulb is annoying 593 656 local saga = require('lspsaga') ··· 635 698 } 636 699 } 637 700 638 - local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'lua_ls', 'nil_ls', 'gopls'} 701 + local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'ts_ls', 'lua_ls', 'nil_ls', 'gopls', 'bashls'} 639 702 for _, lsp in ipairs(servers) do 640 703 lspconfig[lsp].setup { 641 704 on_attach = function(client, bufnr) 642 - format.on_attach(client) 643 705 navic.attach(client, bufnr) 644 706 end, 645 707 capabilities = capabilities, 646 708 } 647 709 end 648 710 649 - -- fennel-ls doesn't support gps 711 + -- fennel-ls doesn't support navic 650 712 lspconfig['fennel-ls'].setup { 651 713 on_attach = function(client, bufnr) 652 - format.on_attach(client) 714 + -- fennel-ls setup without navic 653 715 end, 654 716 capabilities = capabilities, 655 717 } ··· 702 764 function() 703 765 local msg = 'No Active Lsp' 704 766 local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') 705 - local clients = vim.lsp.get_active_clients() 767 + local clients = vim.lsp.get_clients() 706 768 if next(clients) == nil then 707 769 return msg 708 770 end ··· 728 790 local map = vim.api.nvim_set_keymap 729 791 local opts = { noremap = true, silent = true } 730 792 map('n', '<TAB>', '<CMD>lua require("FTerm").toggle()<CR>', opts) 731 - map('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts) 793 + map('t', '<TAB>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts) 732 794 733 795 -- Custom functions 734 796 function update_date() ··· 765 827 ) 766 828 767 829 -- auto session 830 + vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions" 768 831 require('auto-session').setup { 769 - log_level = 'info', 770 - auto_session_suppress_dirs = {'~/'} 832 + log_level = 'error', 833 + auto_session_suppress_dirs = {'~/', '/tmp', '/'}, 834 + auto_session_enable_last_session = false, 835 + auto_session_root_dir = vim.fn.stdpath('data').."/sessions/", 836 + auto_session_enabled = true, 837 + auto_save_enabled = nil, 838 + auto_restore_enabled = nil, 839 + auto_session_create_enabled = nil, 771 840 } 772 - vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal" 773 841 774 842 require("which-key").setup{} 775 843 require('leap').set_default_keymaps() ··· 802 870 803 871 -- zk 804 872 require("zk").setup() 805 - vim.api.nvim_set_keymap("n", "<leader>zn", "<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>", opts) 873 + -- vim.api.nvim_set_keymap("n", "<leader>zn", "<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>", opts) 806 874 807 875 -- Open notes. 808 876 vim.api.nvim_set_keymap("n", "<leader>zo", "<Cmd>ZkNotes { sort = { 'modified' } }<CR>", opts) ··· 818 886 819 887 -- Create a new note after asking for its title. 820 888 -- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer. 821 - map("n", "<leader>zn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts) 889 + -- map("n", "<leader>zn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts) 822 890 -- Create a new note in the same directory as the current buffer, using the current selection for title. 823 - map("v", "<leader>znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts) 891 + -- map("v", "<leader>znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts) 824 892 -- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title. 825 893 map("v", "<leader>znc", ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts) 826 894 ··· 886 954 auto_display = false -- WIP automatic markdown image display, may be prone to breaking 887 955 } 888 956 957 + -- Setup Navigator.nvim 958 + require('Navigator').setup { 959 + disable_on_zoom = true, 960 + mux = 'auto', -- auto-detect tmux 961 + } 962 + 963 + -- Set up Navigator.nvim keybindings 964 + vim.keymap.set({'n', 't'}, '<M-h>', '<CMD>NavigatorLeft<CR>') 965 + vim.keymap.set({'n', 't'}, '<M-j>', '<CMD>NavigatorDown<CR>') 966 + vim.keymap.set({'n', 't'}, '<M-k>', '<CMD>NavigatorUp<CR>') 967 + vim.keymap.set({'n', 't'}, '<M-l>', '<CMD>NavigatorRight<CR>') 968 + 969 + -- Disable Ctrl+V in nvim so Kitty can handle paste 970 + vim.keymap.set({'n', 'v', 'i'}, '<C-v>', '<Nop>', {noremap = true, silent = true}) 971 + 972 + -- Pane resizing with Alt+Shift+hjkl (to match tmux) 973 + vim.keymap.set('n', '<M-S-h>', '<Cmd>vertical resize -2<CR>', {silent = true}) 974 + vim.keymap.set('n', '<M-S-j>', '<Cmd>resize -2<CR>', {silent = true}) 975 + vim.keymap.set('n', '<M-S-k>', '<Cmd>resize +2<CR>', {silent = true}) 976 + vim.keymap.set('n', '<M-S-l>', '<Cmd>vertical resize +2<CR>', {silent = true}) 977 + 889 978 EOF 890 979 891 980 ''; ··· 908 997 statix 909 998 nodePackages.typescript 910 999 nodePackages.typescript-language-server 1000 + nodePackages.bash-language-server 911 1001 luajitPackages.lua-lsp 912 1002 fennel-ls 1003 + nixfmt-rfc-style 1004 + shfmt 913 1005 zk 914 1006 ]; 915 1007 ··· 917 1009 # ui 918 1010 lualine-nvim 919 1011 fzf-vim 920 - nerdtree 1012 + neo-tree-nvim 1013 + outline-nvim 1014 + noice-nvim 1015 + nui-nvim 1016 + trouble-nvim 921 1017 neovim-ayu 922 1018 rainbow_parentheses-vim 923 1019 vim-surround ··· 958 1054 959 1055 # lsp stuff 960 1056 # nvim-lint 961 - null-ls-nvim 962 1057 nvim-lspconfig 963 1058 nvim-cmp 964 1059 cmp-nvim-lsp ··· 971 1066 nvim-autopairs 972 1067 cmp_luasnip 973 1068 luasnip 974 - lsp-format 1069 + conform-nvim 975 1070 friendly-snippets 976 1071 lspkind-nvim 977 1072 ··· 991 1086 nvim-luapad 992 1087 scnvim 993 1088 leap 1089 + Navigator-nvim 994 1090 vim-beancount 995 1091 # vimtex 996 1092 # custom ··· 999 1095 # vim-processing 1000 1096 ]; 1001 1097 withPython3 = true; 1002 - extraPython3Packages = pkgs: with pkgs; [ tasklib six ]; 1098 + extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ]; 1003 1099 vimAlias = true; 1004 1100 }; 1005 1101 }
+26
home/profiles/tmux/tmux.conf
··· 57 57 58 58 # messages 59 59 set -g message-style 'fg=yellow bg=green bold' 60 + 61 + # Unbind Ctrl+V so it passes through to Kitty for paste 62 + unbind C-v 63 + 64 + # Vim-aware pane navigation with Alt+hjkl 65 + is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'" 66 + bind-key -n M-h if-shell "$is_vim" "send-keys M-h" "select-pane -L" 67 + bind-key -n M-j if-shell "$is_vim" "send-keys M-j" "select-pane -D" 68 + bind-key -n M-k if-shell "$is_vim" "send-keys M-k" "select-pane -U" 69 + bind-key -n M-l if-shell "$is_vim" "send-keys M-l" "select-pane -R" 70 + 71 + # Window navigation with Alt+n/p 72 + bind-key -n M-n next-window 73 + bind-key -n M-p previous-window 74 + 75 + # Pane resizing with Alt+Shift+hjkl 76 + bind-key -n M-S-h resize-pane -L 2 77 + bind-key -n M-S-j resize-pane -D 2 78 + bind-key -n M-S-k resize-pane -U 2 79 + bind-key -n M-S-l resize-pane -R 2 80 + 81 + # Copy mode setup 82 + bind v copy-mode 83 + setw -g mode-keys vi 84 + bind-key -T copy-mode-vi 'v' send -X begin-selection 85 + bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'xclip -in -selection clipboard'
+4
hosts/box/configuration.nix
··· 66 66 address = "192.168.1.240"; 67 67 prefixLength = 24; 68 68 }]; 69 + ipv6.addresses = [{ 70 + address = "fd7d:587a:4300:1::240"; 71 + prefixLength = 64; 72 + }]; 69 73 ipv4.routes = [{ address = "192.168.1.0"; prefixLength = 24; via = "192.168.1.1"; }]; 70 74 useDHCP = false; 71 75 };
+4 -11
hosts/box/default.nix
··· 56 56 # seafile 57 57 }; 58 58 59 - 60 - services.nginx.virtualHosts."mast.mossnet.lan" = { 61 - enableACME = false; 62 - forceSSL = false; 63 - 64 - locations."/" = { 65 - extraConfig = '' 66 - proxy_pass http://localhost:5731/; 67 - proxy_set_header X-Forwarded-Host $host; 68 - ''; 69 - }; 59 + environment.systemPackages = with pkgs; [ lm_sensors ]; 60 + hardware.fancontrol = { 61 + enable = false; 62 + config = ''''; 70 63 }; 71 64 72 65 age.secrets.box-wg.file = "${self}/secrets/box-wg.age";
+1 -2
hosts/curve/default.nix
··· 38 38 pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] 39 39 }; 40 40 41 - programs.gnupg.agent.enable = true; 42 - programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3; 41 + 43 42 44 43 fileSystems."/mnt/ftp" = { 45 44 device = "192.168.1.240:/home/ftp";
+3 -1
hosts/profiles/desktop/default.nix
··· 220 220 siji 221 221 font-awesome 222 222 proggyfonts 223 - (nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) 223 + nerd-fonts.fira-code 224 + nerd-fonts.droid-sans-mono 225 + nerd-fonts.iosevka 224 226 ]; 225 227 }
+2 -2
hosts/profiles/dns/default.nix
··· 53 53 # private-address = "192.168.1.0/24"; 54 54 cache-min-ttl = 0; 55 55 serve-expired = "yes"; 56 - interface = [ "0.0.0.0" ]; 56 + interface = [ "0.0.0.0" "::" ]; 57 57 access-control = 58 - [ "127.0.0.0/8 allow" "192.168.1.0/24 allow" "10.0.69.0/24 allow" ]; 58 + [ "127.0.0.0/8 allow" "192.168.1.0/24 allow" "10.0.69.0/24 allow" "::1 allow" "fd7d:587a:4300:1::/64 allow" ]; 59 59 access-control-view = "10.0.69.0/24 wireguard"; 60 60 # so-reuseport = "yes"; 61 61 tls-upstream = "yes";
+2 -2
hosts/profiles/matrix/default.nix
··· 47 47 # The registration file is automatically generated after starting the appservice for the first time. 48 48 # cp /var/lib/matrix-appservice-discord/discord-registration.yaml /var/lib/matrix-synapse/ 49 49 # chown matrix-synapse:matrix-synapse /var/lib/matrix-synapse/discord-registration.yaml 50 - "/var/lib/matrix-synapse/telegram-registration.yaml" 50 + # "/var/lib/matrix-synapse/telegram-registration.yaml" 51 51 "/var/lib/matrix-synapse/signal-registration.yaml" 52 - "/var/lib/matrix-as-whatsapp/whatsapp-registration.yaml" 52 + #"/var/lib/matrix-as-whatsapp/whatsapp-registration.yaml" 53 53 "/var/lib/matrix-as-discord/discord-registration.yaml" 54 54 # "/var/lib/matrix-synapse/slack-registration.yaml" 55 55 # "/var/lib/matrix-synapse/discord-registration.yaml"
+32 -32
hosts/profiles/matrix/mautrix-services.nix
··· 2 2 3 3 { 4 4 # Mautrix-signal settings 5 - services.signald.enable = true; 6 - systemd.services.matrix-as-signal = { 7 - requires = [ "signald.service" ]; 8 - after = [ "signald.service" ]; 9 - unitConfig = { 10 - JoinsNamespaceOf = "signald.service"; 11 - }; 12 - path = [ 13 - pkgs.ffmpeg # voice messages need `ffmpeg` 14 - ]; 15 - }; 5 + # services.signald.enable = true; 6 + # systemd.services.matrix-as-signal = { 7 + # requires = [ "signald.service" ]; 8 + # after = [ "signald.service" ]; 9 + # unitConfig = { 10 + # JoinsNamespaceOf = "signald.service"; 11 + # }; 12 + # path = [ 13 + # pkgs.ffmpeg # voice messages need `ffmpeg` 14 + # ]; 15 + # }; 16 16 17 17 services.matrix-appservices = { 18 18 addRegistrationFiles = false; ··· 25 25 # package = pkgs.mautrix-whatsapp; 26 26 # }; 27 27 28 - # discord = { 29 - # port = 29188; 30 - # format = "mautrix-go"; 31 - # package = pkgs.unstable.mautrix-discord; 32 - # }; 33 - 34 - signal = { 35 - port = 29184; 36 - format = "mautrix-python"; 37 - package = pkgs.mautrix-signal; 38 - serviceConfig = { 39 - StateDirectory = [ "matrix-as-signal" "signald" ]; 40 - SupplementaryGroups = [ "signald" ]; 41 - TimeoutStopSec = 1; # work around the service ignoring SIGTERM, see https://gitlab.com/coffeetables/nix-matrix-appservices/-/issues/12 42 - User = lib.mkForce config.services.signald.user; 43 - Group = lib.mkForce config.services.signald.group; 44 - }; 45 - settings.signal = { 46 - socket_path = config.services.signald.socketPath; 47 - outgoing_attachment_dir = "/var/lib/signald/tmp"; 48 - }; 28 + discord = { 29 + port = 29188; 30 + format = "mautrix-go"; 31 + package = pkgs.mautrix-discord; 49 32 }; 33 + 34 + # signal = { 35 + # port = 29184; 36 + # format = "mautrix-python"; 37 + # package = pkgs.mautrix-signal; 38 + # serviceConfig = { 39 + # # StateDirectory = [ "matrix-as-signal" "signald" ]; 40 + # # SupplementaryGroups = [ "signald" ]; 41 + # TimeoutStopSec = 1; # work around the service ignoring SIGTERM, see https://gitlab.com/coffeetables/nix-matrix-appservices/-/issues/12 42 + # # User = lib.mkForce config.services.signald.user; 43 + # # Group = lib.mkForce config.services.signald.group; 44 + # }; 45 + # # settings.signal = { 46 + # # socket_path = config.services.signald.socketPath; 47 + # # outgoing_attachment_dir = "/var/lib/signald/tmp"; 48 + # # }; 49 + # }; 50 50 }; 51 51 }; 52 52 }
+3 -2
hosts/profiles/music/default.nix
··· 22 22 bespokesynth 23 23 lsp-plugins 24 24 helio-workstation 25 - projectm # milkdrop visualizer 25 + # projectm # milkdrop visualizer 26 + # i think it's projectm-sdl-cpp now 26 27 27 28 # DAWs 28 29 # ardour ··· 30 31 # renoise 31 32 ]; 32 33 33 - hardware.pulseaudio.enable = lib.mkForce false; 34 + services.pulseaudio.enable = false; 34 35 security.rtkit.enable = false; 35 36 36 37 services.pipewire = {
+1
hosts/profiles/radicale/default.nix
··· 5 5 package = pkgs.radicale; 6 6 settings = { 7 7 server.hosts = [ "0.0.0.0:5252" ]; 8 + auth.type = "none"; 8 9 }; 9 10 }; 10 11
+4
overlays/default.nix
··· 36 36 knownVulnerabilities = []; 37 37 }); 38 38 39 + mautrix-discord = prev.mautrix-discord.overrideAttrs (attrs: rec { 40 + license = ""; 41 + }); 42 + 39 43 # Need to do server and agent too, maybe 40 44 # woodpecker-cli-next = 41 45 # let
-29
pkgs/mautrix-discord.nix
··· 1 - { lib, buildGoModule, fetchFromGitHub, olm }: 2 - 3 - buildGoModule rec { 4 - pname = "mautrix-discord"; 5 - version = "unstable-2022-11-04"; 6 - 7 - src = fetchFromGitHub { 8 - owner = "mautrix"; 9 - repo = "discord"; 10 - rev = "f53975cc91e3c643a722adf0d3e0dfb98d0127a2"; 11 - hash = "sha256-xUALcN5oQfwC6gmOeygCkOAXJrJzNitBxHRFAKKgFvE="; 12 - }; 13 - 14 - buildInputs = [ olm ]; 15 - 16 - vendorHash = "sha256-yday2mSnPwuhXWkCG4XY7qoBl3DXHcSvzBoZbjgYz/c="; 17 - 18 - ldflags = [ "-s" "-w" ]; # https://github.com/NixOS/nixpkgs/issues/177698 19 - 20 - doCheck = false; # No tests available 21 - 22 - meta = with lib; { 23 - homepage = "https://go.mau.fi/mautrix-discord"; 24 - description = "Matrix to Discord hybrid puppeting/relaybot bridge"; 25 - license = licenses.agpl3Plus; 26 - maintainers = with maintainers; [ robin ]; 27 - }; 28 - } 29 -