got a bunch of shit fixed

This commit is contained in:
Anish Lakhwara 2025-09-12 00:29:37 -07:00
parent 4049df5724
commit 01c65f54af
21 changed files with 383 additions and 201 deletions

View file

@ -270,16 +270,16 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1736373539, "lastModified": 1751810233,
"narHash": "sha256-dinzAqCjenWDxuy+MqUQq0I4zUSfaCvN9rzuCmgMZJY=", "narHash": "sha256-kllkNbIqQi3VplgTMeGzuh1t8Gk8TauvkTRt93Km+tQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "bd65bc3cde04c16755955630b344bc9e35272c56", "rev": "9b0873b46c9f9e4b7aa01eb634952c206af53068",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nix-community", "owner": "nix-community",
"ref": "release-24.11", "ref": "release-25.05",
"repo": "home-manager", "repo": "home-manager",
"type": "github" "type": "github"
} }
@ -354,16 +354,16 @@
}, },
"nixpkgs_2": { "nixpkgs_2": {
"locked": { "locked": {
"lastModified": 1738277201, "lastModified": 1755274400,
"narHash": "sha256-6L+WXKCw5mqnUIExvqkD99pJQ41xgyCk6z/H9snClwk=", "narHash": "sha256-rTInmnp/xYrfcMZyFMH3kc8oko5zYfxsowaLv1LVobY=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "666e1b3f09c267afd66addebe80fb05a5ef2b554", "rev": "ad7196ae55c295f53a7d1ec39e4a06d922f3b899",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "nixos",
"ref": "nixos-24.11", "ref": "nixos-25.05",
"repo": "nixpkgs", "repo": "nixpkgs",
"type": "github" "type": "github"
} }
@ -534,11 +534,11 @@
}, },
"unstable": { "unstable": {
"locked": { "locked": {
"lastModified": 1744932701, "lastModified": 1752687322,
"narHash": "sha256-fusHbZCyv126cyArUwwKrLdCkgVAIaa/fQJYFlCEqiU=", "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "b024ced1aac25639f8ca8fdfc2f8c4fbd66c48ef", "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -3,7 +3,7 @@
inputs = { inputs = {
# Nixpkgs # Nixpkgs
nixpkgs.url = "github:nixos/nixpkgs/nixos-24.11"; nixpkgs.url = "github:nixos/nixpkgs/nixos-25.05";
unstable.url = "github:nixos/nixpkgs/nixos-unstable"; unstable.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-hardware.url = "github:NixOS/nixos-hardware/master"; nixos-hardware.url = "github:NixOS/nixos-hardware/master";
@ -11,7 +11,7 @@
# ngipkgs-local.url = "path:/home/anish/usr/ngipkgs"; # ngipkgs-local.url = "path:/home/anish/usr/ngipkgs";
# Home manager # Home manager
home-manager.url = "github:nix-community/home-manager/release-24.11"; home-manager.url = "github:nix-community/home-manager/release-25.05";
home-manager.inputs.nixpkgs.follows = "nixpkgs"; home-manager.inputs.nixpkgs.follows = "nixpkgs";
hardware.url = "github:nixos/nixos-hardware"; hardware.url = "github:nixos/nixos-hardware";
@ -95,7 +95,7 @@
tidalcycles.overlays.default tidalcycles.overlays.default
agenix.overlays.default agenix.overlays.default
nur.overlay nur.overlay
nix-matrix-appservices.overlay # nix-matrix-appservices.overlay # nixpkgs has these packages and newer ones at that
unstableOverlay unstableOverlay
vimwikiOverlay vimwikiOverlay
self.overlays.additions self.overlays.additions
@ -251,7 +251,7 @@
}; };
lituus = { lituus = {
hostname = "sealight.xyz"; hostname = "sealight.xyz";
# autoRollback = false; autoRollback = false;
profiles.system = { profiles.system = {
user = "root"; user = "root";
path = deploy-rs.lib.x86_64-linux.activate.nixos path = deploy-rs.lib.x86_64-linux.activate.nixos

View file

@ -11,4 +11,22 @@
../profiles/ssh ../profiles/ssh
../profiles/task ../profiles/task
]; ];
# GPG configuration for user session
services.gpg-agent = {
enable = true;
pinentry.package = pkgs.pinentry-rofi; # Use rofi for consistency with desktop theme
enableSshSupport = true;
defaultCacheTtl = 28800; # 8 hours
maxCacheTtl = 86400; # 24 hours
extraConfig = ''
pinentry-program ${pkgs.writeShellScript "pinentry-rofi-themed" ''
exec ${pkgs.pinentry-rofi}/bin/pinentry-rofi -theme ~/.config/rofi/theme/passmenu.rasi "$@"
''}
'';
};
programs.gpg = {
enable = true;
};
} }

View file

@ -154,7 +154,7 @@
enableCompletion = true; enableCompletion = true;
autosuggestion.enable = false; autosuggestion.enable = false;
initExtra = '' initContent = ''
bindkey -v bindkey -v
autopair-init autopair-init
''; '';

View file

@ -31,8 +31,9 @@ in
inotify-tools inotify-tools
offpunk offpunk
termpdfpy termpdfpy
libsForQt5.kontact # libsForQt5.kontact
thunderbird thunderbird
libsecret # For secret-tool to manage keyring
]; ];
# GTK4 color scheme? # GTK4 color scheme?

View file

@ -8,6 +8,10 @@ open_url_with default
mouse_map left click ungrabbed mouse_click_url_or_select mouse_map left click ungrabbed mouse_click_url_or_select
confirm_os_window_close 0 confirm_os_window_close 0
enable_audio_bell no enable_audio_bell no
# Ctrl+V for paste
map ctrl+v paste_from_clipboard
-- Allows zen-mode.nvim to increase font size -- Allows zen-mode.nvim to increase font size
-- allow_remote_control socket-only -- allow_remote_control socket-only
-- listen_on unix:/tmp/kitty -- listen_on unix:/tmp/kitty

View file

@ -18,7 +18,7 @@
isDefault = true; isDefault = true;
name = "anish"; name = "anish";
userChrome = (builtins.readFile ./userChrome.css); userChrome = (builtins.readFile ./userChrome.css);
extensions = with pkgs.nur.repos.rycee.firefox-addons; [ extensions.packages = with pkgs.nur.repos.rycee.firefox-addons; [
# Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix # Find extensions: https://github.com/nix-community/nur-combined/blob/master/repos/rycee/pkgs/firefox-addons/generated-firefox-addons.nix
ublock-origin ublock-origin
# wallabagger # wallabagger

View file

@ -53,10 +53,11 @@
height: 28px !important; height: 28px !important;
} }
/* hides the sidebar header */ /* hides the sidebar header
#sidebar-header { #sidebar-header {
display: none !important; display: none !important;
} }
*/
.tab[selected="true"] { .tab[selected="true"] {
visibility: collapse; visibility: collapse;
@ -72,12 +73,28 @@
/* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0 /* Source file https://github.com/MrOtherGuy/firefox-csshacks/tree/master/chrome/autohide_sidebar.css made available under Mozilla Public License v. 2.0
See the above repository for updates as well as full license text. */ See the above repository for updates as well as full license text. */
/* Show sidebar only when the cursor is over it */ /* Show sidebar only when the cursor is over it.
/* The border controlling sidebar width will be removed so you'll need to modify these values to change width */ The border controlling sidebar width will be removed so you'll need to modify
these values to change width.
By default the internal layout of sidebar changes when hovered, but this can
be changed by setting pref "userchrome.autohide-sidebar.static-layout.enabled" to true
*/
#sidebar-box{ /* Note: If you want only *some* sidebar to be auto-hidden, then you can use [sidebarcommand] attribute selector.
--uc-sidebar-width: 40px; For example, to only affect Sidebery's sidebar replace all instances of #sidebar-box with
#sidebar-box[sidebarcommand="_3c078156-979c-498b-8990-85f7987dd929_-sidebar-action"].
To find the sidebarcommand value for any other sidebar, open that sidebar and use Browser Toolbox to inspect it.
See: https://firefox-source-docs.mozilla.org/devtools-user/browser_toolbox/index.html
*/
/* The whole thing
:where(#main-window) #browser{
--uc-sidebar-width: 240px;
--uc-sidebar-hover-width: 210px; --uc-sidebar-hover-width: 210px;
}
#main-window[sizemode="fullscreen"] #browser{
--uc-sidebar-width: 1px;
}
#sidebar-box{
--uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */ --uc-autohide-sidebar-delay: 600ms; /* Wait 0.6s before hiding sidebar */
--uc-autohide-transition-duration: 115ms; --uc-autohide-transition-duration: 115ms;
--uc-autohide-transition-type: linear; --uc-autohide-transition-type: linear;
@ -87,14 +104,17 @@ See the above repository for updates as well as full license text. */
width: var(--uc-sidebar-width) !important; width: var(--uc-sidebar-width) !important;
max-width: var(--uc-sidebar-width) !important; max-width: var(--uc-sidebar-width) !important;
z-index: var(--browser-area-z-index-sidebar,3); z-index: var(--browser-area-z-index-sidebar,3);
background-color: inherit;
/* This directionality flipper is played so that sidebar "grows" into the right direction */
direction: ltr;
&:is([positionend],[sidebar-positionend]):not(:-moz-locale-dir(rtl)){
direction: rtl;
}
} }
#sidebar-box[positionend]{ direction: rtl } .sidebar-browser-stack{
#sidebar-box[positionend] > *{ direction: ltr } background: inherit;
}
#sidebar-box[positionend]:-moz-locale-dir(rtl){ direction: ltr } #main-window[sizemode="fullscreen"] #browser{ --uc-sidebar-width: 1px; }
#sidebar-box[positionend]:-moz-locale-dir(rtl) > *{ direction: rtl }
#main-window[sizemode="fullscreen"] #sidebar-box{ --uc-sidebar-width: 1px; }
#sidebar-splitter{ display: none } #sidebar-splitter{ display: none }
@ -116,9 +136,14 @@ See the above repository for updates as well as full license text. */
transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important; transition: min-width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay) !important;
min-width: var(--uc-sidebar-width) !important; min-width: var(--uc-sidebar-width) !important;
will-change: min-width; will-change: min-width;
direction: ltr;
&:-moz-locale-dir(rtl){
direction: rtl;
}
} }
#sidebar-box:hover > #sidebar-header, #sidebar-box:hover > #sidebar-header,
#sidebar-box:hover > #sidebar{ #sidebar-box:hover > #sidebar,
#sidebar-box:hover > .sidebar-browser-stack > #sidebar{
min-width: var(--uc-sidebar-hover-width) !important; min-width: var(--uc-sidebar-hover-width) !important;
transition-delay: 0ms !important; transition-delay: 0ms !important;
} }
@ -143,18 +168,55 @@ See the above repository for updates as well as full license text. */
border-inline-width: 0px 1px; border-inline-width: 0px 1px;
} }
#sidebar-box:not([positionend]) > :-moz-locale-dir(rtl), #sidebar-box:not([positionend],[sidebar-positionend]) > :-moz-locale-dir(rtl),
#sidebar-box[positionend] > *{ #sidebar-box:is([positionend],[sidebar-positionend]) > *{
border-inline-width: 1px 0px; border-inline-width: 1px 0px;
} }
@media -moz-pref("sidebar.revamp") {
#sidebar, #sidebar-header{ border-style: none }
#sidebar-box{ padding: 0 !important; }
}
/* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */ /* Move statuspanel to the other side when sidebar is hovered so it doesn't get covered by sidebar */
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel{ #sidebar-box:not([positionend],[sidebar-positionend]):hover ~ #appcontent #statuspanel{
inset-inline: auto 0px !important; inset-inline: auto 0px !important;
} }
#sidebar-box:not([positionend]):hover ~ #appcontent #statuspanel-label{ #sidebar-box:not([positionend],[sidebar-positionend]):hover ~ #appcontent #statuspanel-label{
margin-inline: 0px !important; margin-inline: 0px !important;
border-left-style: solid !important; border-left-style: solid !important;
} }
@media -moz-pref("userchrome.autohide-sidebar.static-layout.enabled"){
#sidebar-box{
min-width: var(--uc-sidebar-width) !important;
contain: size;
box-shadow: var(--content-area-shadow);
}
#sidebar{
min-width: var(--uc-sidebar-hover-width) !important;
}
.sidebar-browser-stack{
overflow: hidden;
width: 100%;
transition: width var(--uc-autohide-transition-duration) var(--uc-autohide-transition-type) var(--uc-autohide-sidebar-delay);
direction: ltr;
&:hover{
transition-delay: 0ms;
width: var(--uc-sidebar-hover-width);
}
&:-moz-locale-dir(rtl){
transition-property: transform,width !important;
}
}
#sidebar-box[sidebar-positionend]:hover :is(#sidebar-header,#sidebar):-moz-locale-dir(ltr){
transform: translateX(0);
transition-delay: 0ms !important;
}
#sidebar-box:not([sidebar-positionend]):hover .sidebar-browser-stack:-moz-locale-dir(rtl){
transform: translateX(calc(-1 * var(--uc-sidebar-hover-width) + var(--uc-sidebar-width)));
}
#sidebar-box[sidebar-positionend]:hover > .sidebar-browser-stack:-moz-locale-dir(rtl){
transform: translateX(calc(var(--uc-sidebar-hover-width) - var(--uc-sidebar-width)));
transition-delay: 0ms !important;
}
}
*/

View file

@ -10,15 +10,7 @@ let
sha256 = "1fzKmknfVlEYwqeXgbKITbb2/PJ023iJyMz6vak3qh4="; sha256 = "1fzKmknfVlEYwqeXgbKITbb2/PJ023iJyMz6vak3qh4=";
}; };
}; };
lsp-format = pkgs.vimUtils.buildVimPlugin {
name = "lsp-format";
src = pkgs.fetchFromGitHub {
owner = "lukas-reineke";
repo = "lsp-format.nvim";
rev = "84e117b99bb2bc0d0c8122e2b256046f046f8aff";
sha256 = "rs3NTZwWdsmBGXnrgUeVxUiNjbN/ULxJHifPYJD9mT4=";
};
};
my-lspsaga = pkgs.vimUtils.buildVimPlugin { my-lspsaga = pkgs.vimUtils.buildVimPlugin {
name = "lspsaga.nvim"; name = "lspsaga.nvim";
src = pkgs.fetchFromGitHub { src = pkgs.fetchFromGitHub {
@ -66,16 +58,6 @@ let
}; };
meta.homepage = "https://github.com/folke/which-key.nvim/"; meta.homepage = "https://github.com/folke/which-key.nvim/";
}; };
scnvim = pkgs.vimUtils.buildVimPlugin {
pname = "scnvim";
version = "2022-06-04";
src = pkgs.fetchFromGitHub {
owner = "davidgranstrom";
repo = "scnvim";
rev = "746cc0db820d02a9c36b8f9ba2eac9725fa73107";
sha256 = "kvSwS6FNUY2Ue84NhWLLcm0ldLMSp4WqQ7s6TUoX6Cc=";
};
};
yuck-vim = pkgs.vimUtils.buildVimPlugin { yuck-vim = pkgs.vimUtils.buildVimPlugin {
pname = "yuck.vim"; pname = "yuck.vim";
version = "2021-08-09"; version = "2021-08-09";
@ -132,11 +114,6 @@ let
tasklib tasklib
pynvim pynvim
six six
pylsp-mypy
#pyls-isort
#pyls-black
black
isort
# other python packages you want # other python packages you want
]; ];
python-with-my-packages = pkgs.python3.withPackages my-python-packages; python-with-my-packages = pkgs.python3.withPackages my-python-packages;
@ -205,7 +182,7 @@ in
set nobackup set nobackup
set nowritebackup set nowritebackup
" Better display for messages " Better display for messages
set cmdheight=2 set cmdheight=0
" You will have bad experience for diagnostic messages when it's default 4000. " You will have bad experience for diagnostic messages when it's default 4000.
set updatetime=300 set updatetime=300
" don't give |ins-completion-menu| messages. " don't give |ins-completion-menu| messages.
@ -214,6 +191,7 @@ in
set signcolumn=yes set signcolumn=yes
" highlight row " highlight row
set cursorline set cursorline
set autoread
let mapleader = "\<Space>" let mapleader = "\<Space>"
let maplocalleader = "," let maplocalleader = ","
@ -228,19 +206,7 @@ in
nmap <leader>rt :retab!<CR> nmap <leader>rt :retab!<CR>
vmap <leader>rt :retab!<CR> vmap <leader>rt :retab!<CR>
" moving splits with vim movements. " Alt+hjkl navigation now handled by Navigator.nvim plugin
:tnoremap <A-h> <C-\><C-N><C-w>h
:tnoremap <A-j> <C-\><C-N><C-w>j
:tnoremap <A-k> <C-\><C-N><C-w>k
:tnoremap <A-l> <C-\><C-N><C-w>l
:inoremap <A-h> <C-\><C-N><C-w>h
:inoremap <A-j> <C-\><C-N><C-w>j
:inoremap <A-k> <C-\><C-N><C-w>k
:inoremap <A-l> <C-\><C-N><C-w>l
:nnoremap <A-h> <leader>h
:nnoremap <A-j> <leader>j
:nnoremap <A-k> <leader>k
:nnoremap <A-l> <leader>l
:nnoremap <F5> "=strftime("%Y-%m-%d %H:%M")<CR> :nnoremap <F5> "=strftime("%Y-%m-%d %H:%M")<CR>
:inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M")<CR> :inoremap <F5> <C-R>=strftime("%Y-%m-%d %H:%M")<CR>
:inoremap <F4> <C-R>=strftime("%H:%M")<CR> :inoremap <F4> <C-R>=strftime("%H:%M")<CR>
@ -278,11 +244,11 @@ in
autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll autocmd BufReadPost,BufNewFile c,clj,cljs RainbowParenthesesToggleAll
" general commands " general commands
map <leader>t :NERDTreeToggle<CR> map <leader>e :Neotree toggle<CR>
map <leader>s :w<CR> map <leader>s :w<CR>
map <leader>q :q<CR> map <leader>q :q<CR>
map <leader>r :RainbowParenthesesToggleAll<CR> map <leader>r :RainbowParenthesesToggleAll<CR>
nnoremap <BS> :noh<CR> nnoremap <Esc> :noh<CR>
map Q <Nop> map Q <Nop>
nnoremap Y y$ nnoremap Y y$
nnoremap <leader>n :vnew<CR> nnoremap <leader>n :vnew<CR>
@ -313,11 +279,11 @@ in
:vmap <leader>sy "*y :vmap <leader>sy "*y
:map <leader>sp :r!xclip -o<CR> :map <leader>sp :r!xclip -o<CR>
" barbar " buffer navigation (using built-in commands)
nnoremap <silent> gT :BufferPrevious<CR> nnoremap <silent> gT :bprevious<CR>
nnoremap <silent> gt :BufferNext<CR> nnoremap <silent> gt :bnext<CR>
nnoremap <silent> gj :BufferPick<CR> nnoremap <silent> gj :buffers<CR>
nnoremap <silent> gq :BufferClose<CR> nnoremap <silent> gq :bdelete<CR>
" git " git
nnoremap <leader>ga :G fetch --all nnoremap <leader>ga :G fetch --all
@ -332,7 +298,7 @@ in
" kitaab " kitaab
"map <leader>cz :VimwikiIndex<CR>:ZettelNew "map <leader>cz :VimwikiIndex<CR>:ZettelNew
"map <leader>zs :ZettelSearch<CR> "map <leader>zs :ZettelSearch<CR>
"map <leader>zn :ZettelNew<CR> map <leader>zn :ZettelNew<CR>
"map <leader>zo :ZettelOpen<CR> "map <leader>zo :ZettelOpen<CR>
"map <leader>zf :Telescope oldfiles only_cwd=true<CR> "map <leader>zf :Telescope oldfiles only_cwd=true<CR>
"map <leader>wt :VimwikiMakeTomorrowDiaryNote "map <leader>wt :VimwikiMakeTomorrowDiaryNote
@ -368,7 +334,22 @@ in
nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR> nnoremap <leader>vsd :Lspsaga show_line_diagnostics<CR>
nnoremap <leader>vs :Dasht<Space> nnoremap <leader>vs :Dasht<Space>
nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR> nnoremap <leader>vn :Lspsaga diagnostic_jump_prev<CR>
nnoremap <leader>vo :LSoutlineToggle<CR> nnoremap <leader>co :Outline<CR>
" Trouble keybindings
nnoremap <leader>xx :Trouble diagnostics<CR>
nnoremap <leader>xw :Trouble workspace_diagnostics<CR>
nnoremap <leader>xd :Trouble document_diagnostics<CR>
nnoremap <leader>xl :Trouble loclist<CR>
nnoremap <leader>xq :Trouble quickfix<CR>
nnoremap <leader>xr :Trouble lsp_references<CR>
" Yank to system clipboard (y operations only, not d)
nnoremap y "+y
vnoremap y "+y
nnoremap Y "+Y
" Note-taking keybindings
nnoremap <leader>zz :ZkNew { title = vim.fn.input('Title: ') }<CR>
" dashboard " dashboard
let g:dashboard_custom_header = [ let g:dashboard_custom_header = [
@ -427,7 +408,7 @@ in
" lua config " lua config
lua <<EOF lua <<EOF
local signs = { Error = " ", Warn = " ", Hint = " ", Info = " " } local signs = { Error = " ", Warn = " ", Hint = "💡", Info = " " }
for type, icon in pairs(signs) do for type, icon in pairs(signs) do
local hl = "DiagnosticSign" .. type local hl = "DiagnosticSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl }) vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = hl })
@ -487,7 +468,7 @@ in
vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true}) vim.api.nvim_set_keymap('n', '<leader>vt', ':call v:lua.toggle_diagnostics()<CR>', {noremap = true, silent = true})
-- autopairs -- autopairs
require('nvim-autopairs').setup{} require('nvim-autopairs').setup{}
@ -567,27 +548,109 @@ in
cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = ' ' } })) cmp.event:on( 'confirm_done', cmp_autopairs.on_confirm_done({ map_char = { tex = ' ' } }))
require("luasnip.loaders.from_vscode").lazy_load() require("luasnip.loaders.from_vscode").lazy_load()
-- null-ls -- lsp-format removed, using conform.nvim instead
-- being very janky require("nvim-navic").setup {
local null_ls = require("null-ls") icons = {
null_ls.setup({ Constant = "π ",
sources = { Function = "ƒ "
null_ls.builtins.diagnostics.shellcheck, }
null_ls.builtins.diagnostics.proselint.with({ filetypes = { "vimwiki", "mail", }, }), }
null_ls.builtins.diagnostics.commitlint,
null_ls.builtins.diagnostics.jsonlint, -- Setup neo-tree
-- null_ls.builtins.code_actions.statix, require("neo-tree").setup {}
-- null_ls.builtins.diagnostics.clj_kondo,
-- null_ls.builtins.formatting.isort, -- Setup outline
-- null_ls.builtins.formatting.black, require("outline").setup {}
-- Setup trouble
require("trouble").setup {}
-- Setup noice for floating command palette and notifications
require("noice").setup({
cmdline = {
enabled = true,
view = "cmdline_popup",
},
messages = {
enabled = true,
},
popupmenu = {
enabled = true,
},
notify = {
enabled = true,
view = "notify",
},
lsp = {
progress = {
enabled = true,
format = "lsp_progress",
format_done = "lsp_progress_done",
throttle = 1000 / 30, -- frequency to update lsp progress message
view = "mini",
},
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
["cmp.entry.get_documentation"] = true,
},
},
presets = {
command_palette = true,
long_message_to_split = true,
inc_rename = false,
lsp_doc_border = false,
},
views = {
cmdline_popup = {
border = {
style = "rounded",
padding = { 0, 1 },
},
filter_options = {},
win_options = {
winhighlight = "NormalFloat:NormalFloat,FloatBorder:FloatBorder",
},
},
}, },
}) })
-- Setup lspconfig -- Setup barbar (tabline with icons)
require("lsp-format").setup {} require'barbar'.setup {
require("nvim-navic").setup {} icons = {
local format = require("lsp-format") filetype = {
enabled = true,
},
},
}
local navic = require("nvim-navic") local navic = require("nvim-navic")
-- Setup conform.nvim for formatting
require("conform").setup({
formatters_by_ft = {
javascript = { "prettier", "lsp" },
typescript = { "prettier", "lsp" },
javascriptreact = { "prettier", "lsp" },
typescriptreact = { "prettier", "lsp" },
json = { "prettier", "lsp" },
html = { "prettier", "lsp" },
css = { "prettier", "lsp" },
yaml = { "prettier", "lsp" },
rust = { "lsp" },
go = { "lsp" },
lua = { "lsp" },
nix = { "nixfmt-rfc-style" },
clojure = { "lsp" },
fennel = { "lsp" },
terraform = { "lsp" },
bash = { "shfmt" },
sh = { "shfmt" },
},
format_on_save = {
timeout_ms = 500,
lsp_fallback = true,
},
})
-- lspsaga, code_action lightbulb is annoying -- lspsaga, code_action lightbulb is annoying
local saga = require('lspsaga') local saga = require('lspsaga')
@ -635,21 +698,20 @@ in
} }
} }
local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'tsserver', 'lua_ls', 'nil_ls', 'gopls'} local servers = { 'clojure_lsp', 'terraform_lsp', 'zls', 'pyright', 'rust_analyzer', 'ts_ls', 'lua_ls', 'nil_ls', 'gopls', 'bashls'}
for _, lsp in ipairs(servers) do for _, lsp in ipairs(servers) do
lspconfig[lsp].setup { lspconfig[lsp].setup {
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
format.on_attach(client)
navic.attach(client, bufnr) navic.attach(client, bufnr)
end, end,
capabilities = capabilities, capabilities = capabilities,
} }
end end
-- fennel-ls doesn't support gps -- fennel-ls doesn't support navic
lspconfig['fennel-ls'].setup { lspconfig['fennel-ls'].setup {
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
format.on_attach(client) -- fennel-ls setup without navic
end, end,
capabilities = capabilities, capabilities = capabilities,
} }
@ -702,7 +764,7 @@ in
function() function()
local msg = 'No Active Lsp' local msg = 'No Active Lsp'
local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype')
local clients = vim.lsp.get_active_clients() local clients = vim.lsp.get_clients()
if next(clients) == nil then if next(clients) == nil then
return msg return msg
end end
@ -728,7 +790,7 @@ in
local map = vim.api.nvim_set_keymap local map = vim.api.nvim_set_keymap
local opts = { noremap = true, silent = true } local opts = { noremap = true, silent = true }
map('n', '<TAB>', '<CMD>lua require("FTerm").toggle()<CR>', opts) map('n', '<TAB>', '<CMD>lua require("FTerm").toggle()<CR>', opts)
map('t', '<A-i>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts) map('t', '<TAB>', '<C-\\><C-n><CMD>lua require("FTerm").toggle()<CR>', opts)
-- Custom functions -- Custom functions
function update_date() function update_date()
@ -765,11 +827,17 @@ in
) )
-- auto session -- auto session
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
require('auto-session').setup { require('auto-session').setup {
log_level = 'info', log_level = 'error',
auto_session_suppress_dirs = {'~/'} auto_session_suppress_dirs = {'~/', '/tmp', '/'},
auto_session_enable_last_session = false,
auto_session_root_dir = vim.fn.stdpath('data').."/sessions/",
auto_session_enabled = true,
auto_save_enabled = nil,
auto_restore_enabled = nil,
auto_session_create_enabled = nil,
} }
vim.o.sessionoptions="blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal"
require("which-key").setup{} require("which-key").setup{}
require('leap').set_default_keymaps() require('leap').set_default_keymaps()
@ -802,7 +870,7 @@ in
-- zk -- zk
require("zk").setup() require("zk").setup()
vim.api.nvim_set_keymap("n", "<leader>zn", "<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>", opts) -- vim.api.nvim_set_keymap("n", "<leader>zn", "<Cmd>ZkNew { title = vim.fn.input('Title: ') }<CR>", opts)
-- Open notes. -- Open notes.
vim.api.nvim_set_keymap("n", "<leader>zo", "<Cmd>ZkNotes { sort = { 'modified' } }<CR>", opts) vim.api.nvim_set_keymap("n", "<leader>zo", "<Cmd>ZkNotes { sort = { 'modified' } }<CR>", opts)
@ -818,9 +886,9 @@ in
-- Create a new note after asking for its title. -- Create a new note after asking for its title.
-- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer. -- This overrides the global `<leader>zn` mapping to create the note in the same directory as the current buffer.
map("n", "<leader>zn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts) -- map("n", "<leader>zn", "<Cmd>ZkNew { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
-- Create a new note in the same directory as the current buffer, using the current selection for title. -- Create a new note in the same directory as the current buffer, using the current selection for title.
map("v", "<leader>znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts) -- map("v", "<leader>znt", ":'<,'>ZkNewFromTitleSelection { dir = vim.fn.expand('%:p:h') }<CR>", opts)
-- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title. -- Create a new note in the same directory as the current buffer, using the current selection for note content and asking for its title.
map("v", "<leader>znc", ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts) map("v", "<leader>znc", ":'<,'>ZkNewFromContentSelection { dir = vim.fn.expand('%:p:h'), title = vim.fn.input('Title: ') }<CR>", opts)
@ -886,6 +954,27 @@ in
auto_display = false -- WIP automatic markdown image display, may be prone to breaking auto_display = false -- WIP automatic markdown image display, may be prone to breaking
} }
-- Setup Navigator.nvim
require('Navigator').setup {
disable_on_zoom = true,
mux = 'auto', -- auto-detect tmux
}
-- Set up Navigator.nvim keybindings
vim.keymap.set({'n', 't'}, '<M-h>', '<CMD>NavigatorLeft<CR>')
vim.keymap.set({'n', 't'}, '<M-j>', '<CMD>NavigatorDown<CR>')
vim.keymap.set({'n', 't'}, '<M-k>', '<CMD>NavigatorUp<CR>')
vim.keymap.set({'n', 't'}, '<M-l>', '<CMD>NavigatorRight<CR>')
-- Disable Ctrl+V in nvim so Kitty can handle paste
vim.keymap.set({'n', 'v', 'i'}, '<C-v>', '<Nop>', {noremap = true, silent = true})
-- Pane resizing with Alt+Shift+hjkl (to match tmux)
vim.keymap.set('n', '<M-S-h>', '<Cmd>vertical resize -2<CR>', {silent = true})
vim.keymap.set('n', '<M-S-j>', '<Cmd>resize -2<CR>', {silent = true})
vim.keymap.set('n', '<M-S-k>', '<Cmd>resize +2<CR>', {silent = true})
vim.keymap.set('n', '<M-S-l>', '<Cmd>vertical resize +2<CR>', {silent = true})
EOF EOF
''; '';
@ -908,8 +997,11 @@ in
statix statix
nodePackages.typescript nodePackages.typescript
nodePackages.typescript-language-server nodePackages.typescript-language-server
nodePackages.bash-language-server
luajitPackages.lua-lsp luajitPackages.lua-lsp
fennel-ls fennel-ls
nixfmt-rfc-style
shfmt
zk zk
]; ];
@ -917,7 +1009,11 @@ in
# ui # ui
lualine-nvim lualine-nvim
fzf-vim fzf-vim
nerdtree neo-tree-nvim
outline-nvim
noice-nvim
nui-nvim
trouble-nvim
neovim-ayu neovim-ayu
rainbow_parentheses-vim rainbow_parentheses-vim
vim-surround vim-surround
@ -958,7 +1054,6 @@ in
# lsp stuff # lsp stuff
# nvim-lint # nvim-lint
null-ls-nvim
nvim-lspconfig nvim-lspconfig
nvim-cmp nvim-cmp
cmp-nvim-lsp cmp-nvim-lsp
@ -971,7 +1066,7 @@ in
nvim-autopairs nvim-autopairs
cmp_luasnip cmp_luasnip
luasnip luasnip
lsp-format conform-nvim
friendly-snippets friendly-snippets
lspkind-nvim lspkind-nvim
@ -991,6 +1086,7 @@ in
nvim-luapad nvim-luapad
scnvim scnvim
leap leap
Navigator-nvim
vim-beancount vim-beancount
# vimtex # vimtex
# custom # custom
@ -999,7 +1095,7 @@ in
# vim-processing # vim-processing
]; ];
withPython3 = true; withPython3 = true;
extraPython3Packages = pkgs: with pkgs; [ tasklib six ]; extraPython3Packages = pkgs: with pkgs; [ tasklib six packaging ];
vimAlias = true; vimAlias = true;
}; };
} }

View file

@ -57,3 +57,29 @@ setw -g window-status-bell-style 'fg=yellow bg=green bold'
# messages # messages
set -g message-style 'fg=yellow bg=green bold' set -g message-style 'fg=yellow bg=green bold'
# Unbind Ctrl+V so it passes through to Kitty for paste
unbind C-v
# Vim-aware pane navigation with Alt+hjkl
is_vim="ps -o state= -o comm= -t '#{pane_tty}' | grep -iqE '^[^TXZ ]+ +(\\S+\\/)?g?(view|n?vim?x?)(diff)?$'"
bind-key -n M-h if-shell "$is_vim" "send-keys M-h" "select-pane -L"
bind-key -n M-j if-shell "$is_vim" "send-keys M-j" "select-pane -D"
bind-key -n M-k if-shell "$is_vim" "send-keys M-k" "select-pane -U"
bind-key -n M-l if-shell "$is_vim" "send-keys M-l" "select-pane -R"
# Window navigation with Alt+n/p
bind-key -n M-n next-window
bind-key -n M-p previous-window
# Pane resizing with Alt+Shift+hjkl
bind-key -n M-S-h resize-pane -L 2
bind-key -n M-S-j resize-pane -D 2
bind-key -n M-S-k resize-pane -U 2
bind-key -n M-S-l resize-pane -R 2
# Copy mode setup
bind v copy-mode
setw -g mode-keys vi
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-pipe-and-cancel 'xclip -in -selection clipboard'

View file

@ -66,6 +66,10 @@
address = "192.168.1.240"; address = "192.168.1.240";
prefixLength = 24; prefixLength = 24;
}]; }];
ipv6.addresses = [{
address = "fd7d:587a:4300:1::240";
prefixLength = 64;
}];
ipv4.routes = [{ address = "192.168.1.0"; prefixLength = 24; via = "192.168.1.1"; }]; ipv4.routes = [{ address = "192.168.1.0"; prefixLength = 24; via = "192.168.1.1"; }];
useDHCP = false; useDHCP = false;
}; };

View file

@ -56,17 +56,10 @@
# seafile # seafile
}; };
environment.systemPackages = with pkgs; [ lm_sensors ];
services.nginx.virtualHosts."mast.mossnet.lan" = { hardware.fancontrol = {
enableACME = false; enable = false;
forceSSL = false; config = '''';
locations."/" = {
extraConfig = ''
proxy_pass http://localhost:5731/;
proxy_set_header X-Forwarded-Host $host;
'';
};
}; };
age.secrets.box-wg.file = "${self}/secrets/box-wg.age"; age.secrets.box-wg.file = "${self}/secrets/box-wg.age";

View file

@ -38,8 +38,7 @@
pkgs.lib.mkForce [ ]; # Normally ["network-online.target"] pkgs.lib.mkForce [ ]; # Normally ["network-online.target"]
}; };
programs.gnupg.agent.enable = true;
programs.gnupg.agent.pinentryPackage = pkgs.pinentry-gnome3;
fileSystems."/mnt/ftp" = { fileSystems."/mnt/ftp" = {
device = "192.168.1.240:/home/ftp"; device = "192.168.1.240:/home/ftp";

View file

@ -220,6 +220,8 @@ in {
siji siji
font-awesome font-awesome
proggyfonts proggyfonts
(nerdfonts.override { fonts = [ "FiraCode" "DroidSansMono" "Iosevka" ]; }) nerd-fonts.fira-code
nerd-fonts.droid-sans-mono
nerd-fonts.iosevka
]; ];
} }

View file

@ -53,9 +53,9 @@ in {
# private-address = "192.168.1.0/24"; # private-address = "192.168.1.0/24";
cache-min-ttl = 0; cache-min-ttl = 0;
serve-expired = "yes"; serve-expired = "yes";
interface = [ "0.0.0.0" ]; interface = [ "0.0.0.0" "::" ];
access-control = access-control =
[ "127.0.0.0/8 allow" "192.168.1.0/24 allow" "10.0.69.0/24 allow" ]; [ "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" ];
access-control-view = "10.0.69.0/24 wireguard"; access-control-view = "10.0.69.0/24 wireguard";
# so-reuseport = "yes"; # so-reuseport = "yes";
tls-upstream = "yes"; tls-upstream = "yes";

View file

@ -47,9 +47,9 @@
# The registration file is automatically generated after starting the appservice for the first time. # The registration file is automatically generated after starting the appservice for the first time.
# cp /var/lib/matrix-appservice-discord/discord-registration.yaml /var/lib/matrix-synapse/ # cp /var/lib/matrix-appservice-discord/discord-registration.yaml /var/lib/matrix-synapse/
# chown matrix-synapse:matrix-synapse /var/lib/matrix-synapse/discord-registration.yaml # chown matrix-synapse:matrix-synapse /var/lib/matrix-synapse/discord-registration.yaml
"/var/lib/matrix-synapse/telegram-registration.yaml" # "/var/lib/matrix-synapse/telegram-registration.yaml"
"/var/lib/matrix-synapse/signal-registration.yaml" "/var/lib/matrix-synapse/signal-registration.yaml"
"/var/lib/matrix-as-whatsapp/whatsapp-registration.yaml" #"/var/lib/matrix-as-whatsapp/whatsapp-registration.yaml"
"/var/lib/matrix-as-discord/discord-registration.yaml" "/var/lib/matrix-as-discord/discord-registration.yaml"
# "/var/lib/matrix-synapse/slack-registration.yaml" # "/var/lib/matrix-synapse/slack-registration.yaml"
# "/var/lib/matrix-synapse/discord-registration.yaml" # "/var/lib/matrix-synapse/discord-registration.yaml"

View file

@ -2,17 +2,17 @@
{ {
# Mautrix-signal settings # Mautrix-signal settings
services.signald.enable = true; # services.signald.enable = true;
systemd.services.matrix-as-signal = { # systemd.services.matrix-as-signal = {
requires = [ "signald.service" ]; # requires = [ "signald.service" ];
after = [ "signald.service" ]; # after = [ "signald.service" ];
unitConfig = { # unitConfig = {
JoinsNamespaceOf = "signald.service"; # JoinsNamespaceOf = "signald.service";
}; # };
path = [ # path = [
pkgs.ffmpeg # voice messages need `ffmpeg` # pkgs.ffmpeg # voice messages need `ffmpeg`
]; # ];
}; # };
services.matrix-appservices = { services.matrix-appservices = {
addRegistrationFiles = false; addRegistrationFiles = false;
@ -25,28 +25,28 @@
# package = pkgs.mautrix-whatsapp; # package = pkgs.mautrix-whatsapp;
# }; # };
# discord = { discord = {
# port = 29188; port = 29188;
# format = "mautrix-go"; format = "mautrix-go";
# package = pkgs.unstable.mautrix-discord; package = pkgs.mautrix-discord;
# };
signal = {
port = 29184;
format = "mautrix-python";
package = pkgs.mautrix-signal;
serviceConfig = {
StateDirectory = [ "matrix-as-signal" "signald" ];
SupplementaryGroups = [ "signald" ];
TimeoutStopSec = 1; # work around the service ignoring SIGTERM, see https://gitlab.com/coffeetables/nix-matrix-appservices/-/issues/12
User = lib.mkForce config.services.signald.user;
Group = lib.mkForce config.services.signald.group;
};
settings.signal = {
socket_path = config.services.signald.socketPath;
outgoing_attachment_dir = "/var/lib/signald/tmp";
};
}; };
# signal = {
# port = 29184;
# format = "mautrix-python";
# package = pkgs.mautrix-signal;
# serviceConfig = {
# # StateDirectory = [ "matrix-as-signal" "signald" ];
# # SupplementaryGroups = [ "signald" ];
# TimeoutStopSec = 1; # work around the service ignoring SIGTERM, see https://gitlab.com/coffeetables/nix-matrix-appservices/-/issues/12
# # User = lib.mkForce config.services.signald.user;
# # Group = lib.mkForce config.services.signald.group;
# };
# # settings.signal = {
# # socket_path = config.services.signald.socketPath;
# # outgoing_attachment_dir = "/var/lib/signald/tmp";
# # };
# };
}; };
}; };
} }

View file

@ -22,7 +22,8 @@
bespokesynth bespokesynth
lsp-plugins lsp-plugins
helio-workstation helio-workstation
projectm # milkdrop visualizer # projectm # milkdrop visualizer
# i think it's projectm-sdl-cpp now
# DAWs # DAWs
# ardour # ardour
@ -30,7 +31,7 @@
# renoise # renoise
]; ];
hardware.pulseaudio.enable = lib.mkForce false; services.pulseaudio.enable = false;
security.rtkit.enable = false; security.rtkit.enable = false;
services.pipewire = { services.pipewire = {

View file

@ -5,6 +5,7 @@
package = pkgs.radicale; package = pkgs.radicale;
settings = { settings = {
server.hosts = [ "0.0.0.0:5252" ]; server.hosts = [ "0.0.0.0:5252" ];
auth.type = "none";
}; };
}; };

View file

@ -36,6 +36,10 @@
knownVulnerabilities = []; knownVulnerabilities = [];
}); });
mautrix-discord = prev.mautrix-discord.overrideAttrs (attrs: rec {
license = "";
});
# Need to do server and agent too, maybe # Need to do server and agent too, maybe
# woodpecker-cli-next = # woodpecker-cli-next =
# let # let

View file

@ -1,29 +0,0 @@
{ lib, buildGoModule, fetchFromGitHub, olm }:
buildGoModule rec {
pname = "mautrix-discord";
version = "unstable-2022-11-04";
src = fetchFromGitHub {
owner = "mautrix";
repo = "discord";
rev = "f53975cc91e3c643a722adf0d3e0dfb98d0127a2";
hash = "sha256-xUALcN5oQfwC6gmOeygCkOAXJrJzNitBxHRFAKKgFvE=";
};
buildInputs = [ olm ];
vendorHash = "sha256-yday2mSnPwuhXWkCG4XY7qoBl3DXHcSvzBoZbjgYz/c=";
ldflags = [ "-s" "-w" ]; # https://github.com/NixOS/nixpkgs/issues/177698
doCheck = false; # No tests available
meta = with lib; {
homepage = "https://go.mau.fi/mautrix-discord";
description = "Matrix to Discord hybrid puppeting/relaybot bridge";
license = licenses.agpl3Plus;
maintainers = with maintainers; [ robin ];
};
}