From 40539ae163c966e19ff218d335141b382ac4d6f0 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Feb 2026 00:25:04 +0100 Subject: [PATCH 01/10] prep roundcube, from ktiu.net, nvim stuff --- home/fish.nix | 4 ++++ home/mail/default.nix | 7 +++++-- home/nvim/config.vim | 20 ++++++++++++++++---- home/nvim/default.nix | 18 ++++++++++++------ system/mail-server/roundcube.nix | 21 +++++++++++++++++++-- 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/home/fish.nix b/home/fish.nix index 6570f73..b8fd587 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -53,6 +53,10 @@ end end + function diary --description 'Create or edit today\'s diary entry' + nvim -c "call Diary()" + end + set -U fish_prompt_pwd_dir_length 0 function fish_prompt --description "Write out the prompt" diff --git a/home/mail/default.nix b/home/mail/default.nix index cb69326..1eebf52 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -3,10 +3,13 @@ { programs.msmtp = { enable = true; - configContent = '' + configContent = lib.mkOrder 1200 '' defaults logfile ${config.xdg.stateHome}/msmtp/msmtp.log port 587 + + account ktiu : t9e + from *@ktiu.net ''; }; @@ -136,7 +139,7 @@ }; msmtp = { enable = true; - extraConfig.from = "*@(ktiu.net|t9e.me)"; + extraConfig.from = "*@t9e.me"; }; passwordCommand = "pass mail/arielle.ktiu.net"; }; diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 2b3d0e5..5213e5f 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -23,6 +23,9 @@ set splitright set tabstop=2 set updatetime=300 +" set foldmethod=expr +" set foldexpr=nvim_treesitter#foldexpr() + let g:netrw_liststyle = 3 let g:netrw_fastbrowse = 0 @@ -48,8 +51,17 @@ xnoremap i% GoggV onoremap i% :normal vi% function CreateNote(title) - execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md" - execute "set ft=markdown" - execute "normal! i" . a:title - execute "normal V\yaml_note\" + execute "VimwikiIndex" + execute "VimwikiGoto " . a:title endfunction + +function Diary() + execute "VimwikiMakeDiaryNote" +endfunction + +" function CreateNote(title) +" execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md" +" execute "set ft=markdown" +" execute "normal! i" . a:title +" execute "normal V\yaml_note\" +" endfunction diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 1cec2fb..c83d287 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ lib, pkgs, ... }: { home.packages = with pkgs; [ @@ -6,6 +6,7 @@ marksman nil typescript-language-server + vim-language-server ]; programs.neovim = { @@ -30,8 +31,9 @@ { plugin = fugitive; + type = "lua"; config = '' - nnoremap g :Git + vim.api.nvim_set_keymap("n", "g", ":Git", { noremap = true, silent = true }) ''; } @@ -43,9 +45,9 @@ vim.api.nvim_set_keymap('i', '', '(fzf-complete-word)', { silent = true }) vim.api.nvim_set_keymap('i', '', '(fzf-complete-line)', { silent = true }) - vim.api.nvim_set_keymap('n', '', '(fzf-maps-n)', { silent = true }) - vim.api.nvim_set_keymap('x', '', '(fzf-maps-x)', { silent = true }) - vim.api.nvim_set_keymap('o', '', '(fzf-maps-o)', { silent = true }) + vim.api.nvim_set_keymap('n', '', '(fzf-maps-n)', { silent = true }) + vim.api.nvim_set_keymap('x', '', '(fzf-maps-x)', { silent = true }) + vim.api.nvim_set_keymap('o', '', '(fzf-maps-o)', { silent = true }) vim.api.nvim_set_keymap('n', 'b', ':Buffers', { noremap = true, silent = true }) vim.api.nvim_set_keymap('n', 'o', ':Files', { noremap = true, silent = true }) @@ -107,11 +109,14 @@ vim.lsp.enable('r_language_server') vim.lsp.enable('texlab') vim.lsp.enable('ts_ls') + vim.lsp.enable('vimls') vim.api.nvim_del_keymap('i', '') ''; } + (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ])) + { plugin = papercolor-theme; config = '' @@ -155,10 +160,11 @@ { plugin = vim-pandoc; config = '' - let g:pandoc#modules#disabled = ["completion", "command", "menu", "completion"] + let g:pandoc#modules#disabled = ["completion", "command", "menu"] ''; } + vim-pandoc-syntax vim-repeat { diff --git a/system/mail-server/roundcube.nix b/system/mail-server/roundcube.nix index a8e704d..9379620 100644 --- a/system/mail-server/roundcube.nix +++ b/system/mail-server/roundcube.nix @@ -1,9 +1,15 @@ -{ config, pkgs, ... }: +{ config, lib, ... }: + +let + + webmailHostName = "webmail.${config.networking.domain}"; + +in { services.roundcube = { enable = true; - hostName = "webmail.ktiu.net"; + hostName = webmailHostName; extraConfig = '' $config['smtp_host'] = 'tls://%h'; $config['smtp_conn_options'] = [ @@ -14,4 +20,15 @@ ]; ''; }; + + # not sure why this is currently working w/o the following + # + # services.nginx.virtualHosts."${webmailHostName}" = { + # enableACME = lib.mkForce false; + # useACMEHost = config.networking.domain; + # }; + # security.acme.certs."${config.networking.domain}".extraDomainNames = [ + # webmailHostName + # ]; + } From 9fdeb99a6179d2aca1cc3546282a79f7f936b06d Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 12 Feb 2026 15:28:48 +0100 Subject: [PATCH 02/10] diesdas --- home/aichat.nix | 6 ++ home/calendars.nix | 4 +- home/mail/bindings.neomuttrc | 82 ++++++++----------- home/mail/config.neomuttrc | 41 ++-------- home/mail/default.nix | 143 +++++++++------------------------ home/mail/smime.neomuttrc | 24 ------ home/nvim/config.vim | 4 +- home/nvim/default.nix | 27 ++++++- home/nvim/nvim-cmp.lua | 37 +++------ system/desktop/yubikey-pam.nix | 3 +- system/web-server/dex.nix | 2 +- 11 files changed, 122 insertions(+), 251 deletions(-) delete mode 100644 home/mail/smime.neomuttrc diff --git a/home/aichat.nix b/home/aichat.nix index e2a927a..cdbc120 100644 --- a/home/aichat.nix +++ b/home/aichat.nix @@ -5,4 +5,10 @@ aichat glow ]; + + programs.fish.shellAliases = { + vibe = "aichat -c"; + clank = "aichat -e"; + slop = "aichat"; + }; } diff --git a/home/calendars.nix b/home/calendars.nix index e645f50..da4c27e 100644 --- a/home/calendars.nix +++ b/home/calendars.nix @@ -3,7 +3,7 @@ let myRemote = slug: { - passwordCommand = [ "pass" "ktiu/radicale" ]; + passwordCommand = [ "pass" "accounts/ktiu-radicale" ]; userName = "ktiu"; type = "caldav"; url = "https://kalender.ktiu.net/ktiu/${slug}"; @@ -127,7 +127,7 @@ in remote = { type = "caldav"; url = "https://cloud.gridisnotajournal.de/remote.php/dav/calendars/till/grid/"; - passwordCommand = [ "pass" "grid/nextcloud" ]; + passwordCommand = [ "pass" "uni/grid-caldav-nextcloud" ]; userName = "till"; }; }; diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index 92a2f00..be89bbd 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -1,25 +1,18 @@ # Navigation bind pager k previous-entry bind pager j next-entry -# bind index,pager \Cu half-up -# bind index,pager \Cd half-down -# bind pager gg top -# bind index gg first-entry -# bind pager G bottom -# bind index G last-entry -# bind index,pager N search-opposite bind index display-message bind index collapse-thread bind index,pager gf change-folder # Read HTML bind index,pager V noop -macro index,pager V "html" +macro index,pager V "html" "View as HTML" # compose bind compose p postpone-message bind compose P pgp-menu -# macro compose I "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > "$tmpfile" && echo "$tmpfile"`" "attach image from clipboard" +macro compose I "\`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"\`" "attach image from clipboard" bind editor complete-query bind editor ^T complete @@ -28,58 +21,47 @@ bind index,pager m noop macro index,pager mar "newn*" "Mark all read" # compose with signature management -macro index,pager @ "set signature=$my_signature" "Compose to sender" macro index,pager c "set signature=$my_signature" "Compose new message" -macro index,pager r "unset signature" "Reply to message" -macro index,pager a "unset signature" "Reply all" -macro index,pager f "unset signature" "Forward message" +macro index,pager r "unset signature" "Reply to message" +macro index,pager a "unset signature" "Reply all" +macro index,pager f "unset signature" "Forward message" # moving messages -macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" \ - "Move to junk folder" -macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" \ - "Move message to the archive" -macro index,pager I "$spoolfile" "Move message to the inbox" +macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" +macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" "Move to archive" +macro index,pager I "$spoolfile" "Move to inbox" # switch folders -macro index,pager g! "$spoolfile" "Go to inbox" -macro index,pager gd "$postponed" "Go to drafts" -macro index,pager g< "$record" "Go to sent" -macro index,pager ga "$mbox" "Go to archive" -macro index,pager g> "$mbox" "Go to archive" -macro index,pager gt "$trash" "Go to trash" -macro index,pager gj "$my_junk" "Go to junk" +macro index,pager g! "$spoolfile" "Go to inbox" +macro index,pager gd "$postponed" "Go to drafts" +macro index,pager g< "$record" "Go to sent" +macro index,pager g> "$mbox" "Go to archive" +macro index,pager gt "$trash" "Go to trash" +macro index,pager gj "$my_junk" "Go to junk" # accounts -macro index,pager gu "~/.local/share/mail/gu/Inbox" "Go to GU" -# macro index,pager gp "+systemli/IMAP/Inbox" "Go to Systemli" -macro index,pager gm "~/.local/share/mail/t9e/Inbox" "Go to t9e" -# macro index,pager gm "+gmail/IMAP/Inbox" "Go to Gmail" -macro index,pager gk "~/.local/share/mail/ksh/Inbox" "Go to KSH" -macro index,pager gi "~/.local/share/mail/ktiu/Inbox" "Go to ktiu" -# macro index,pager gf "~/.local/share/mail/dkg/Inbox" "Go to DKG" +macro index,pager gu "~/.local/share/mail/gu/Inbox" "Go to gu" +macro index,pager gm "~/.local/share/mail/t9e/Inbox" "Go to t9e" +macro index,pager gk "~/.local/share/mail/ksh/Inbox" "Go to ksh" +macro index,pager gi "~/.local/share/mail/ktiu/Inbox" "Go to ktiu" macro index,pager L "all\n" "Show all messages (undo limit)" -# macro index,pager go "mbsync -c ~/.config/mbsync/mbsyncrc $my_mbsync_acct && notmuch new &" \ -# "Run mbsync to sync mail for this account" +macro index,pager go "mbsync $my_account && notmuch new" "Sync this account" +macro index,pager gO "mbsync -a && notmuch new" "Sync all accounts" -macro index,pager go "mbsync $my_mbsync_acct && notmuch new" \ +bind index,pager / noop +macro index,pager // "folder:/$my_account/" "Find in account" +macro index,pager g/ "" "Find in all accounts" +macro index,pager /! "folder:+$my_account/$my_nm_spoolfile" "Find in inbox" +macro index,pager /< "folder:+$my_account/$my_nm_record" "Find in sent" +macro index,pager /> "folder:+$my_account/$my_nm_mbox" "Find in archive" +macro index,pager /d "folder:+$my_account/$my_nm_postponed" "Find in drafts" +macro index,pager /t "folder:+$my_account/$my_nm_trash" "Find in trash" +macro index,pager /j "folder:+$my_account/$my_nm_junk" "Find in junk" -macro index,pager g/ "" "find in nm" +macro index,pager A "khard add-email --vcard-version=4.0" "Add sender to khard" -macro index,pager A \ - "khard add-email --vcard-version=4.0" \ - "add the sender email address to khard" +macro index,pager S " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" "Save all attachments" -macro index,pager S \ - " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" \ - "save all non-text attachments using ripmime" - -macro index,pager gb \ - " urlscan" \ - "extract URLs out of a message" - -macro index,pager gO \ - "mbsync -a && notmuch new" \ - "run mbsync to sync all mail" +macro index,pager gb " urlscan" "Extract URLs" diff --git a/home/mail/config.neomuttrc b/home/mail/config.neomuttrc index 870ebec..a41cf1a 100644 --- a/home/mail/config.neomuttrc +++ b/home/mail/config.neomuttrc @@ -3,10 +3,10 @@ source $alias_file set mailcap_path = ~/.config/neomutt/mailcap -# source ./smime.neomuttrc - set my_download_folder = ~/tmp +set shell = /bin/sh + # Caching and tmp set header_cache = $XDG_CACHE_HOME/neomutt/headers set message_cachedir = $XDG_CACHE_HOME/neomutt/bodies @@ -16,42 +16,24 @@ set tmpdir = $XDG_CACHE_HOME/neomutt/tmp # Basic options unset wait_key set mbox_type = Maildir -# set delete set mail_check_stats unset confirm_append unset beep unset mark_old set sleep_time = 0 -# set shell = /bin/bash # Sending set use_envelope_from -unset reverse_realname +unset reverse_real_name # Searching set nm_default_url = "notmuch:///home/till/.local/share/mail/" +set my_nm_spoolfile = 'Inbox' +set my_nm_postponed = 'Drafts' +set my_nm_record = 'Sent' +set my_nm_trash = 'Trash' -# Multi-account setup -# source ~/.config/neomutt/accounts/dkg.neomuttrc -# source ~/.config/neomutt/accounts/gu.neomuttrc -# bind index,pager g noop - -# folder-hook $folder/gu/ source ~/.config/neomutt/accounts/gu.neomuttrc -# folder-hook $folder/systemli/ source ~/.config/neomutt/accounts/systemli.neomuttrc -# folder-hook $folder/ks/ source ~/.config/neomutt/accounts/ks.neomuttrc -# folder-hook $folder/gmail/ source ~/.config/neomutt/accounts/gmail.neomuttrc -# folder-hook $folder/ktiu/ source ~/.config/neomutt/accounts/ktiu.neomuttrc -# folder-hook $folder/dkg/ source ~/.config/neomutt/accounts/dkg.neomuttrc -# folder-hook $folder/papa/ source ~/.config/neomutt/accounts/papa.neomuttrc - -folder-hook . source ~/.config/neomutt/bindings.neomuttrc - -# # Source config -# source ~/.config/neomutt/views.neomuttrc -# source ~/.config/neomutt/sidebar.neomuttrc -# source ~/.config/neomutt/colors.neomuttrc -# source ~/.config/neomutt/smime.neomuttrc -# source ~/.config/neomutt/pgp.neomuttrc +folder-hook . source ~/.config/neomutt/bindings.neomuttrc # Compose set editor = "nvim -c 'call woof#init#Init()'" @@ -118,13 +100,6 @@ color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" color header blue default "^Date" -## Status -# color status yellow default '\[ ↻ \]' -# color status green default '\[ ✔ \]' -# color status magenta default '\[ ٪ \]' -# color status black default '\[ [0-9]+ new \]' -# color status red default '\[ [0-9]+ to delete \]' - ## Mutt color message cyan default color error red default diff --git a/home/mail/default.nix b/home/mail/default.nix index 1eebf52..b00c1b9 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,37 +1,26 @@ { config, pkgs, lib, ... }: { - programs.msmtp = { - enable = true; - configContent = lib.mkOrder 1200 '' - defaults - logfile ${config.xdg.stateHome}/msmtp/msmtp.log - port 587 - - account ktiu : t9e - from *@ktiu.net - ''; - }; + programs.msmtp.enable = true; programs.mbsync.enable = true; + programs.notmuch.enable = true; + programs.neomutt = { enable = true; vimKeys = true; extraConfig = builtins.readFile ./config.neomuttrc; }; - programs.notmuch.enable = true; - xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; - xdg.configFile."neomutt/smime.neomuttrc".source = ./smime.neomuttrc; xdg.configFile."neomutt/mailcap".source = ./neomutt_mailcap; accounts.email = { maildirBasePath = "${config.xdg.dataHome}/mail"; accounts = { - gu = { + gu = { name, ... }: { primary = true; address = "straube@geo.uni-frankfurt.de"; realName = "Till Straube"; @@ -39,7 +28,6 @@ smtp.host = "smtpauth.rz.uni-frankfurt.de"; smtp.tls.useStartTls = true; userName = "tstraube"; - notmuch.enable = true; passwordCommand = "pass uni/hrz"; signature = { text = '' @@ -49,6 +37,7 @@ ''; showSignature = "append"; }; + notmuch.enable = true; mbsync = { enable = true; create = "maildir"; @@ -57,11 +46,15 @@ msmtp.enable = true; neomutt = { enable = true; - sendMailCommand = lib.getExe pkgs.msmtp; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; extraConfig = '' + set my_account='${ name }' + set mbox='+Archive' + set my_nm_mbox='Archive' + set my_junk='+Spamverdacht' - set my_mbsync_acct='gu' + set my_nm_junk='Spamverdacht' set crypt_auto_smime unset crypt_auto_pgp @@ -71,10 +64,8 @@ set crypt_replysign set crypt_replysignencrypted set crypt_verify_sig - # set smime_default_key = "f1355556.0" set smime_sign_as = "f1355556.0" set pgp_default_key = "" - # unset crypt_use_gpgme unalternates * alternates ^straube@em.uni-frankfurt.de$ \ @@ -82,40 +73,37 @@ ^tstraube@rz.uni-frankfurt.de$ \ ^tstraube@uni-frankfurt.de$ unset reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.gu.signature.text - } + + set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.gu.signature.text } color status blue default ''; }; }; - t9e = { + t9e = { name, ... }: { address = "till.straube@t9e.me"; realName = "Till Straube"; imap.host = "arielle.ktiu.net"; smtp.host = "arielle.ktiu.net"; smtp.tls.useStartTls = true; - notmuch.enable = true; userName = "till.straube@t9e.me"; signature.text = '' Till Straube (he/him) PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me ''; - signature.showSignature = "append"; - gpg = { - key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3"; - signByDefault = true; - }; + gpg.signByDefault = true; + notmuch.enable = true; neomutt = { enable = true; - sendMailCommand = lib.getExe pkgs.msmtp; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; extraConfig = '' - set my_mbsync_acct='t9e' + set my_mbsync_account='${ name }' + set mbox='+Archive' + set my_nm_mbox='Archive' + set my_junk='+Junk' + set my_nm_junk='Junk' set crypt_auto_pgp unset crypt_auto_smime @@ -124,11 +112,7 @@ alternates @t9e.me$ @ktiu.net$ set reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.t9e.signature.text - } + set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.t9e.signature.text } color status green default ''; }; @@ -139,87 +123,37 @@ }; msmtp = { enable = true; - extraConfig.from = "*@t9e.me"; + extraConfig.port = "587"; }; - passwordCommand = "pass mail/arielle.ktiu.net"; + passwordCommand = "pass accounts/ktiu-imap"; }; - ktiu = { - address = "till@ktiu.net"; - realName = "Till Straube"; - imap.host = "shorbut.ktiu.net"; - smtp.host = "shorbut.ktiu.net"; - smtp.tls.useStartTls = true; - notmuch.enable = true; - userName = "till"; - signature.text = '' - Till Straube (he/him) - PGP key: https://keys.openpgp.org/search?q=till@ktiu.net - ''; - signature.showSignature = "append"; - gpg = { - key = "5FA6782F543D12ED07110780BA1B73F10BABF8E3"; - signByDefault = true; - }; - neomutt = { - enable = true; - sendMailCommand = lib.getExe pkgs.msmtp; - extraConfig = '' - set my_mbsync_acct='ktiu' - - set mbox='+Archive' - set my_junk='+Junk' - - set crypt_auto_pgp - unset crypt_auto_smime - - unalternates * - alternates @ktiu.net$ - set reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.ktiu.signature.text - } - color status green default - ''; - }; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp = { - enable = false; - # extraConfig.from = "*@ktiu.net"; - }; - passwordCommand = "secret-tool lookup server shorbut.ktiu.net account till"; - }; - - ksh = { + ksh = { name, ...}: { address = "kein_schlussstrich_hessen@systemli.org"; realName = "Kein Schlussstrich Hessen"; imap.host = "mail.systemli.org"; smtp.host = "mail.systemli.org"; smtp.tls.useStartTls = true; - notmuch.enable = true; userName = "kein_schlussstrich_hessen@systemli.org"; signature.text = '' Kein Schlussstrich Hessen PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org ''; signature.showSignature = "append"; + gpg.signByDefault = true; + notmuch.enable = true; neomutt = { enable = true; - # sendMailCommand = "/home/till/.nix-profile/bin/msmtp"; - sendMailCommand = lib.getExe pkgs.msmtp; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; extraConfig = '' - set my_mbsync_acct='ksh' + set my_mbsync_account='${ name }' + set mbox='+Erledigt' + set my_nm_mbox='Erledigt' + set my_junk='+Junk' - set postponed='+Drafts' - set record='+Sent' - set trash='+Trash' + set my_nm_junk='Junk' + set crypt_auto_pgp unset crypt_auto_smime @@ -238,11 +172,8 @@ create = "maildir"; expunge = "both"; }; - msmtp = { - enable = true; - extraConfig.from = "kein_schlussstrich_hessen@systemli.org"; - }; - passwordCommand = "pass other/ksh_systemli"; + msmtp.enable = true; + passwordCommand = "pass ksh/systemli"; }; }; }; diff --git a/home/mail/smime.neomuttrc b/home/mail/smime.neomuttrc deleted file mode 100644 index 60f57e5..0000000 --- a/home/mail/smime.neomuttrc +++ /dev/null @@ -1,24 +0,0 @@ -# Locations -# set smime_ca_location="~/.keys/neomutt/smime/ca" -# set smime_certificates="~/.keys/neomutt/smime/public" -# set smime_keys="~/.keys/neomutt/smime/private" - -# Commands (smime_keys) -set smime_pk7out_command="openssl smime -verify -in %f -noverify -pk7out" -set smime_get_cert_command="openssl pkcs7 -print_certs -in %f" -set smime_get_signer_cert_command="openssl smime -verify -in %f -noverify -signer %c -out /dev/null" -set smime_get_cert_email_command="openssl x509 -in %f -noout -email" -set smime_import_cert_command="smime_keys add_cert %f" - -# Outgoing -set smime_encrypt_with="aes256" -set smime_encrypt_command="openssl smime -encrypt -%a -outform DER -in %f %c" -set smime_sign_digest_alg="sha256" -set smime_sign_command="openssl smime -sign -md %d -signer %c -inkey %k -passin stdin -in %f -certfile %i -outform DER" - -# Incoming -set smime_decrypt_command="openssl smime -decrypt -passin stdin -inform DER -in %f -inkey %k -recip %c" -set smime_verify_command="openssl smime -verify -inform DER -in %s %C -content %f" -set smime_verify_opaque_command="\ -openssl smime -verify -inform DER -in %s %C || \ -openssl smime -verify -inform DER -in %s -noverify 2>/dev/null" diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 5213e5f..b4cda0b 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -23,8 +23,8 @@ set splitright set tabstop=2 set updatetime=300 -" set foldmethod=expr -" set foldexpr=nvim_treesitter#foldexpr() +set foldmethod=expr +set foldexpr=nvim_treesitter#foldexpr() let g:netrw_liststyle = 3 let g:netrw_fastbrowse = 0 diff --git a/home/nvim/default.nix b/home/nvim/default.nix index c83d287..7d3e0ff 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -1,4 +1,4 @@ -{ lib, pkgs, ... }: +{ pkgs, lib, ... }: { home.packages = with pkgs; [ @@ -73,7 +73,7 @@ nnoremap [og :Goyo 80 nnoremap ]og :Goyo! ''; - } + } { plugin = limelight-vim; config = '' @@ -115,7 +115,23 @@ ''; } - (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ])) + { + plugin = (nvim-treesitter.withPlugins (p: [ p.nix p.lua p.r p.typescript ])); + type = "lua"; + config = '' + vim.api.nvim_create_autocmd('FileType', { + pattern = { 'nix', 'markdown', 'lua', 'r' }, + callback = function() + -- Enable Tree-sitter-based folding + vim.o.foldexpr = 'v:lua.vim.treesitter.foldexpr()' + vim.o.foldmethod = 'expr' + -- Optional: configure fold behavior + vim.o.foldlevel = 99 + vim.o.foldlevelstart = 99 + end, + }) + ''; + } { plugin = papercolor-theme; @@ -154,7 +170,10 @@ ''; } - vim-fish + { + plugin = vim-fish; + } + vim-nix { diff --git a/home/nvim/nvim-cmp.lua b/home/nvim/nvim-cmp.lua index 9d64ae5..7ac7e74 100644 --- a/home/nvim/nvim-cmp.lua +++ b/home/nvim/nvim-cmp.lua @@ -8,18 +8,15 @@ cmp.setup({ end, }, - window = { - -- completion = cmp.config.window.bordered(), - -- documentation = cmp.config.window.bordered(), - }, - - mapping = cmp.mapping.preset.insert({ - [''] = cmp.mapping.scroll_docs(-4), - [''] = cmp.mapping.scroll_docs(4), - [''] = cmp.mapping.complete(), - [''] = cmp.mapping.abort(), - [''] = cmp.mapping.confirm({ select = true }), - }), + mapping = cmp.mapping.preset.insert( + { + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + [''] = cmp.mapping.confirm({ select = false }), + } + ), sources = cmp.config.sources({ { name = 'cmp_pandoc' }, @@ -34,17 +31,6 @@ cmp.setup({ }) --- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below --- Set configuration for specific filetype. ---[[ cmp.setup.filetype('gitcommit', { - sources = cmp.config.sources({ - { name = 'git' }, - }, { - { name = 'buffer' }, - }) -}) -require("cmp_git").setup() ]]-- - -- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). cmp.setup.cmdline({ '/', '?' }, { mapping = cmp.mapping.preset.cmdline(), @@ -66,8 +52,3 @@ cmp.setup.cmdline(':', { -- Set up lspconfig. local capabilities = require('cmp_nvim_lsp').default_capabilities() --- Replace with each lsp server you've enabled. --- vim.lsp.config('', { --- capabilities = capabilities --- }) --- vim.lsp.enable('') diff --git a/system/desktop/yubikey-pam.nix b/system/desktop/yubikey-pam.nix index 8ef8248..3544d2d 100644 --- a/system/desktop/yubikey-pam.nix +++ b/system/desktop/yubikey-pam.nix @@ -4,8 +4,9 @@ services.pcscd.enable = true; environment.systemPackages = with pkgs; [ - yubikey-personalization keymapp + yubikey-personalization + yubikey-manager ]; services.udev = { diff --git a/system/web-server/dex.nix b/system/web-server/dex.nix index 1708e36..d9ad4cc 100644 --- a/system/web-server/dex.nix +++ b/system/web-server/dex.nix @@ -19,7 +19,7 @@ in { { id = "outline"; name = "Outline Client"; - redirectURIs = [ "https://${outline.hostname}/auth/oidc.callback" ]; + redirectURIs = [ "https://${config.services.outline.hostname}/auth/oidc.callback" ]; secretFile = "/var/custom-access/outline-oidc-secret.txt"; } ]; From 438cf6da97046357ec68f9628f9c383f96ede8d8 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 12 Feb 2026 15:33:40 +0100 Subject: [PATCH 03/10] list reply --- home/mail/bindings.neomuttrc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index be89bbd..541ae3b 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -25,6 +25,8 @@ macro index,pager c "set signature=$my_signature" "C macro index,pager r "unset signature" "Reply to message" macro index,pager a "unset signature" "Reply all" macro index,pager f "unset signature" "Forward message" +# macro index,pager l "unset signature" "Forward message" +macro index,pager l "" "Reply to list" # moving messages macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" From f7fd3a7fe91c10e44cd2713f5dbfb6cab1dddca8 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 12 Feb 2026 15:36:56 +0100 Subject: [PATCH 04/10] no sig on list reply --- home/mail/bindings.neomuttrc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index 541ae3b..bcffc0e 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -1,9 +1,9 @@ # Navigation -bind pager k previous-entry -bind pager j next-entry -bind index display-message -bind index collapse-thread -bind index,pager gf change-folder +bind pager k previous-entry +bind pager j next-entry +bind index display-message +bind index collapse-thread +bind index,pager gf change-folder # Read HTML bind index,pager V noop @@ -25,8 +25,7 @@ macro index,pager c "set signature=$my_signature" "C macro index,pager r "unset signature" "Reply to message" macro index,pager a "unset signature" "Reply all" macro index,pager f "unset signature" "Forward message" -# macro index,pager l "unset signature" "Forward message" -macro index,pager l "" "Reply to list" +macro index,pager l "unset signature" "List reply" # moving messages macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" From 8099faa9ae4d2a2648440bc45db7002f6dc0cd30 Mon Sep 17 00:00:00 2001 From: Till Date: Mon, 16 Feb 2026 01:41:59 +0100 Subject: [PATCH 05/10] mail by index --- home/mail/bindings.neomuttrc | 52 ------- home/mail/config.neomuttrc | 73 ++------- home/mail/default.nix | 292 +++++++++++++++++++++-------------- 3 files changed, 186 insertions(+), 231 deletions(-) diff --git a/home/mail/bindings.neomuttrc b/home/mail/bindings.neomuttrc index bcffc0e..833af0d 100644 --- a/home/mail/bindings.neomuttrc +++ b/home/mail/bindings.neomuttrc @@ -1,52 +1,5 @@ -# Navigation -bind pager k previous-entry -bind pager j next-entry -bind index display-message -bind index collapse-thread -bind index,pager gf change-folder - -# Read HTML -bind index,pager V noop -macro index,pager V "html" "View as HTML" # compose -bind compose p postpone-message -bind compose P pgp-menu -macro compose I "\`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"\`" "attach image from clipboard" - -bind editor complete-query -bind editor ^T complete -bind index,pager a group-reply -bind index,pager m noop -macro index,pager mar "newn*" "Mark all read" - -# compose with signature management -macro index,pager c "set signature=$my_signature" "Compose new message" -macro index,pager r "unset signature" "Reply to message" -macro index,pager a "unset signature" "Reply all" -macro index,pager f "unset signature" "Forward message" -macro index,pager l "unset signature" "List reply" - -# moving messages -macro index,pager J ":set resolve=no\nn:set resolve=yes\n$my_junk" "Move to junk" -macro index,pager y ":set resolve=no\nn:set resolve=yes\n$mbox" "Move to archive" -macro index,pager I "$spoolfile" "Move to inbox" - -# switch folders -macro index,pager g! "$spoolfile" "Go to inbox" -macro index,pager gd "$postponed" "Go to drafts" -macro index,pager g< "$record" "Go to sent" -macro index,pager g> "$mbox" "Go to archive" -macro index,pager gt "$trash" "Go to trash" -macro index,pager gj "$my_junk" "Go to junk" - -# accounts -macro index,pager gu "~/.local/share/mail/gu/Inbox" "Go to gu" -macro index,pager gm "~/.local/share/mail/t9e/Inbox" "Go to t9e" -macro index,pager gk "~/.local/share/mail/ksh/Inbox" "Go to ksh" -macro index,pager gi "~/.local/share/mail/ktiu/Inbox" "Go to ktiu" - -macro index,pager L "all\n" "Show all messages (undo limit)" macro index,pager go "mbsync $my_account && notmuch new" "Sync this account" macro index,pager gO "mbsync -a && notmuch new" "Sync all accounts" @@ -61,8 +14,3 @@ macro index,pager /d "folder:+$my_account/$my_nm_po macro index,pager /t "folder:+$my_account/$my_nm_trash" "Find in trash" macro index,pager /j "folder:+$my_account/$my_nm_junk" "Find in junk" -macro index,pager A "khard add-email --vcard-version=4.0" "Add sender to khard" - -macro index,pager S " ripmime -i - -d ~/tmp && rm ~/tmp/textfile*" "Save all attachments" - -macro index,pager gb " urlscan" "Extract URLs" diff --git a/home/mail/config.neomuttrc b/home/mail/config.neomuttrc index a41cf1a..da13972 100644 --- a/home/mail/config.neomuttrc +++ b/home/mail/config.neomuttrc @@ -1,71 +1,26 @@ +# Alias + set alias_file = ~/.local/share/neomutt/aliases.neomuttrc source $alias_file -set mailcap_path = ~/.config/neomutt/mailcap +# External set my_download_folder = ~/tmp -set shell = /bin/sh - -# Caching and tmp -set header_cache = $XDG_CACHE_HOME/neomutt/headers -set message_cachedir = $XDG_CACHE_HOME/neomutt/bodies -set header_cache_backend = "lmdb" -set tmpdir = $XDG_CACHE_HOME/neomutt/tmp - -# Basic options -unset wait_key -set mbox_type = Maildir -set mail_check_stats -unset confirm_append -unset beep -unset mark_old -set sleep_time = 0 - -# Sending -set use_envelope_from -unset reverse_real_name - -# Searching -set nm_default_url = "notmuch:///home/till/.local/share/mail/" -set my_nm_spoolfile = 'Inbox' -set my_nm_postponed = 'Drafts' -set my_nm_record = 'Sent' -set my_nm_trash = 'Trash' - -folder-hook . source ~/.config/neomutt/bindings.neomuttrc - -# Compose -set editor = "nvim -c 'call woof#init#Init()'" -set edit_headers -set forward_format = "Fwd: %s" -set forward_attachments -set fast_reply -set include -set forward_quote -unset recall -set resume_draft_files -set abort_noattach_regex = "(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)" -set abort_noattach = ask-yes -set mime_type_query_command = "file -b --mime-type %s" -set query_command= "khard email --parsable '%s'" - # Status bar + set status_chars = "✔↻٪A" -set status_format = "— [ %r ] %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —" unset help # Index + set index_format = "%-25.25F %<[y?%<[7d?%<[d?%[ %H:%M]&%[%a %H:%M]>&%[%d.%m. %Hh]>&%[%d.%m.%Y]> %Z %?X?▼ &?%s" set strict_threads set send_charset = "utf-8:iso-8859-1:us-ascii" set charset = "utf-8" -# sorting -set sort = threads -set sort_aux = reverse-last-date-received - # Pager view + set pager_index_lines = 10 set pager_context = 3 set pager_stop @@ -81,31 +36,23 @@ alternative_order text/plain text/enriched text/html auto_view text/html # Attachments + set rfc2047_parameters set attach_save_dir = $my_download_folder -## Indicator -color indicator brightwhite brightblack +# Colors -## Index +color indicator brightwhite brightblack color index_flags brightmagenta default '.*' color index_date cyan default - -## New mail color index brightblack default '~N' - -## Header colors color header brightblack default ".*" color header brightgreen default "^(Subject)" color header yellow default "^(From|To|CC|BCC)" color header blue default "^Date" - -## Mutt color message cyan default color error red default color tilde black default - -## Pager color normal default default color attachment brightblack default color search black yellow @@ -117,8 +64,6 @@ color quoted4 red default color quoted5 brightred default color signature cyan default color underline black default - -## Email color body blue default "[\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+" # Email addresses color body blue default "(https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+" # URL color body red default "(BAD signature)" diff --git a/home/mail/default.nix b/home/mail/default.nix index b00c1b9..5133ecc 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -1,32 +1,63 @@ { config, pkgs, lib, ... }: -{ - programs.msmtp.enable = true; +let - programs.mbsync.enable = true; + makeConfig = accountName: + '' + unset reverse_name + unset crypt_auto_pgp + unset crypt_auto_smime + set my_account='${ accountName }' + macro index,pager / "tag:${ accountName } " + unalternates * + set nm_record_tags = "+sent -inbox -unread +${ accountName }"; + set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.${accountName}.signature.text } + set status_format = "— [ %r ] $my_account %f (%lB) %>— %m messages%?n? [ %n new ]?%?d? [ %d to delete ]?%?t? [ %t tagged ]? —" + ''; - programs.notmuch.enable = true; + makeAccount = accountName: { + signature.showSignature = "append"; + smtp.tls.useStartTls = true; + msmtp.enable = true; - programs.neomutt = { - enable = true; - vimKeys = true; - extraConfig = builtins.readFile ./config.neomuttrc; + mbsync = { + enable = true; + create = "maildir"; + expunge = "both"; + }; + + neomutt = { + enable = true; + sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ accountName }"; + }; + + notmuch = { + enable = true; + neomutt = { + virtualMailboxes = [ + { name = "Inbox"; query = "tag:${ accountName } and tag:inbox"; } + { name = "Archive"; query = "tag:${ accountName } and not tag:sent and not tag:draft"; } + { name = "Sent"; query = "tag:${ accountName } and tag:sent"; } + { name = "Drafts"; query = "tag:${ accountName } and tag:draft"; } + { name = "Spam"; query = "tag:${ accountName } and tag:spam"; } + { name = "Trash"; query = "tag:${ accountName } and tag:trash"; } + ]; + }; + }; }; - xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; - xdg.configFile."neomutt/mailcap".source = ./neomutt_mailcap; +in +{ accounts.email = { maildirBasePath = "${config.xdg.dataHome}/mail"; accounts = { - - gu = { name, ... }: { + gu = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) { primary = true; address = "straube@geo.uni-frankfurt.de"; realName = "Till Straube"; imap.host = "imap.server.uni-frankfurt.de"; smtp.host = "smtpauth.rz.uni-frankfurt.de"; - smtp.tls.useStartTls = true; userName = "tstraube"; passwordCommand = "pass uni/hrz"; signature = { @@ -35,149 +66,180 @@ Dept. of Human Geography Goethe University Frankfurt ''; - showSignature = "append"; }; - notmuch.enable = true; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp.enable = true; neomutt = { - enable = true; - sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; - extraConfig = '' - set my_account='${ name }' - - set mbox='+Archive' - set my_nm_mbox='Archive' - - set my_junk='+Spamverdacht' - set my_nm_junk='Spamverdacht' - - set crypt_auto_smime - unset crypt_auto_pgp - - set crypt_autosign - set crypt_replyencrypt - set crypt_replysign - set crypt_replysignencrypted - set crypt_verify_sig - set smime_sign_as = "f1355556.0" - set pgp_default_key = "" - - unalternates * - alternates ^straube@em.uni-frankfurt.de$ \ - ^tstraube@em.uni-frankfurt.de$ \ - ^tstraube@rz.uni-frankfurt.de$ \ - ^tstraube@uni-frankfurt.de$ - unset reverse_name - - set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.gu.signature.text } + extraConfig = makeConfig name + '' color status blue default + alternates ^tstraube@(em|rz)?.uni-frankfurt.de$ + set crypt_auto_smime ''; }; }; - t9e = { name, ... }: { + t9e = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) { address = "till.straube@t9e.me"; realName = "Till Straube"; imap.host = "arielle.ktiu.net"; smtp.host = "arielle.ktiu.net"; - smtp.tls.useStartTls = true; userName = "till.straube@t9e.me"; signature.text = '' Till Straube (he/him) PGP key: https://keys.openpgp.org/search?q=till.straube@t9e.me ''; - gpg.signByDefault = true; - notmuch.enable = true; neomutt = { - enable = true; - sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; - extraConfig = '' - set my_mbsync_account='${ name }' - - set mbox='+Archive' - set my_nm_mbox='Archive' - - set my_junk='+Junk' - set my_nm_junk='Junk' - - set crypt_auto_pgp - unset crypt_auto_smime - - unalternates * - alternates @t9e.me$ @ktiu.net$ - set reverse_name - - set my_signature = ${ pkgs.writeText "signature.txt" config.accounts.email.accounts.t9e.signature.text } + extraConfig = makeConfig name + '' color status green default + alternates @t9e.me$ @ktiu.net$ ^(tillkowski|till.straube)@gmail.com$ + set reverse_name + set crypt_auto_pgp ''; }; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp = { - enable = true; - extraConfig.port = "587"; - }; + msmtp.extraConfig.port = "587"; passwordCommand = "pass accounts/ktiu-imap"; }; - ksh = { name, ...}: { + ksh = { name, ... }: lib.attrsets.recursiveUpdate (makeAccount name) { address = "kein_schlussstrich_hessen@systemli.org"; realName = "Kein Schlussstrich Hessen"; imap.host = "mail.systemli.org"; smtp.host = "mail.systemli.org"; - smtp.tls.useStartTls = true; userName = "kein_schlussstrich_hessen@systemli.org"; signature.text = '' Kein Schlussstrich Hessen PGP Key: https://keys.openpgp.org/search?q=kein_schlussstrich_hessen@systemli.org ''; - signature.showSignature = "append"; - gpg.signByDefault = true; - notmuch.enable = true; neomutt = { - enable = true; - sendMailCommand = "${lib.getExe pkgs.msmtp} -a ${ name }"; - extraConfig = '' - set my_mbsync_account='${ name }' - - set mbox='+Erledigt' - set my_nm_mbox='Erledigt' - - set my_junk='+Junk' - set my_nm_junk='Junk' - + extraConfig = makeConfig name + '' + color status red default set crypt_auto_pgp - unset crypt_auto_smime - - unalternates * - set reverse_name - set my_signature = ${ - pkgs.writeText - "signature.txt" - config.accounts.email.accounts.ksh.signature.text - } - color status cyan default ''; }; - mbsync = { - enable = true; - create = "maildir"; - expunge = "both"; - }; - msmtp.enable = true; passwordCommand = "pass ksh/systemli"; }; }; }; + programs.msmtp.enable = true; + + programs.mbsync.enable = true; + + programs.notmuch = { + enable = true; + search.excludeTags = [ "trash" "spam" ]; + new.tags = [ "new" "unread" ]; + hooks = { + preNew = '' + notmuch tag +draft -- folder:/\/Drafts\// not tag:draft + mbsync --all + ''; + postNew = '' + notmuch tag +gu -- tag:new path:gu/** + notmuch tag +t9e -- tag:new path:t9e/** + notmuch tag +ksh -- tag:new path:ksh/** + notmuch tag +inbox -- tag:new 'folder:"/\/Inbox$/"' + notmuch tag +sent -unread -- tag:new 'folder:"/\/Sent$/"' + notmuch tag +trash -unread -- tag:new 'folder:"/\/Trash$/"' + notmuch tag +draft -unread -- tag:new 'folder:"/\/Drafts$/"' + notmuch tag +spam -- tag:new 'folder:"/\/Spam$/"' + notmuch tag +spam -- tag:new 'folder:"/\/Junk$/"' + notmuch tag -new -- tag:new + ''; + }; + }; + + programs.neomutt = { + enable = true; + + vimKeys = true; + changeFolderWhenSourcingAccount = true; + editor = "nvim -c 'call woof#init#Init()'"; + sort = "reverse-date-received"; + unmailboxes = true; + + settings = { + abort_noattach = "ask-yes"; + abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\""; + # auto_edit = "yes"; + beep = "no"; + confirm_append = "no"; + crypt_auto_sign = "yes"; + crypt_replyencrypt = "yes"; + crypt_replysign = "yes"; + crypt_replysignencrypted = "yes"; + crypt_verify_sig = "yes"; + edit_headers = "yes"; + forward_attachments = "yes"; + forward_format = "\"Fwd: %s\""; + forward_quote = "yes"; + include = "yes"; + mail_check_stats = "yes"; + mailcap_path = builtins.path { path = ./neomutt_mailcap; }; + mark_old = "no"; + mbox_type = "Maildir"; + mime_type_query_command = "\"file -b --mime-type %s\""; + nm_record = "yes"; + query_command= "\"khard email --parsable '%s'\""; + recall = "no"; + resume_draft_files = "yes"; + reverse_real_name = "no"; + shell = "/bin/sh"; + sleep_time = "0"; + use_envelope_from = "yes"; + virtual_spool_file = "yes"; + wait_key = "no"; + }; + + binds = [ + { key = "k"; map = "pager"; action = "previous-entry"; } + { key = "j"; map = "pager"; action = "next-entry"; } + { key = ""; map = "index"; action = "display-message"; } + { key = ""; map = "index"; action = "collapse-thread"; } + { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } + { key = "P"; map = "compose"; action = "pgp-menu"; } + { key = ""; map = "editor"; action = "complete-query"; } + { key = "a"; map = [ "index" "pager" ]; action = "group-reply"; } + { key = "m"; map = [ "index" "pager" ]; action = "noop"; } + ]; + + macros = [ + { key = "gu"; map = [ "index" "pager" ]; action = "tag:dummy:source ${config.xdg.configHome}/neomutt/gug!"; } + { key = "gm"; map = [ "index" "pager" ]; action = "tag:dummy:source ${config.xdg.configHome}/neomutt/t9eg!"; } + { key = "gk"; map = [ "index" "pager" ]; action = "tag:dummy:source ${config.xdg.configHome}/neomutt/kshg!"; } + + { key = "Y"; map = [ "index" "pager" ]; action = ""; } + { key = "y"; map = [ "index" "pager" ]; action = "-inbox -unread -spam -trash"; } + { key = "J"; map = [ "index" "pager" ]; action = "+spam -inbox -unread -trash"; } + { key = "I"; map = [ "index" "pager" ]; action = "+inbox -old -spam -trash"; } + { key = "Y"; map = [ "index" "pager" ]; action = ""; } + { key = "dd"; map = [ "index" "pager" ]; action = "+trash -inbox -unread -spam"; } + + { key = "g!"; map = [ "index" "pager" ]; action = "Inbox"; } + { key = "g<"; map = [ "index" "pager" ]; action = "Sent"; } + { key = "g>"; map = [ "index" "pager" ]; action = "Archive"; } + { key = "gj"; map = [ "index" "pager" ]; action = "Spam"; } + { key = "gd"; map = [ "index" "pager" ]; action = "Drafts"; } + { key = "gt"; map = [ "index" "pager" ]; action = "Trash"; } + + { key = "go"; map = [ "index" "pager" ]; action = "notmuch new"; } + { key = "V"; map = ["index" "pager"]; action = "html"; } + { key = "mar"; map = [ "index" "pager" ]; action = "newn*"; } + { key = "A"; map = [ "index" "pager" ]; action = "khard add-email --vcard-version=4.0"; } + { key = "S"; map = [ "index" "pager" ]; action = "ripmime -i - -d ~/tmp && rm ~/tmp/textfile*"; } + { key = "gb"; map = [ "index" "pager" ]; action = "urlscan"; } + { key = "I"; map = [ "compose" ]; action = "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"`"; } + + { key = "c"; map = [ "index" "pager" ]; action = "set signature=$my_signature"; } + { key = "r"; map = [ "index" "pager" ]; action = "unset signature"; } + { key = "a"; map = [ "index" "pager" ]; action = "unset signature"; } + { key = "f"; map = [ "index" "pager" ]; action = "unset signature"; } + { key = "l"; map = [ "index" "pager" ]; action = "unset signature"; } + ]; + + extraConfig = builtins.readFile ./config.neomuttrc; + }; + + xdg.configFile."neomutt/bindings.neomuttrc".source = ./bindings.neomuttrc; + programs.neovim.plugins = with pkgs.vimPlugins; [ { plugin = vim-pathogen; From 312d6d63efe87eee1a858782854af9937a883b23 Mon Sep 17 00:00:00 2001 From: Till Date: Fri, 27 Feb 2026 21:41:24 +0100 Subject: [PATCH 06/10] diesdas --- flake.nix | 21 +++- home/castget/castget.conf | 53 ---------- home/desktop-full.nix | 2 +- home/desktop-slim.nix | 7 +- home/devel.nix | 3 +- home/{gnome/default.nix => gnome.nix} | 12 ++- home/gnome/run-or-raise.conf | 25 ----- home/gnome/wallpaper_nix_paper_gray.svg | 128 ------------------------ home/gpg.nix | 3 +- home/mail/default.nix | 40 ++++++-- home/mail/neomutt_mailcap | 11 -- home/media.nix | 4 +- home/minimal.nix | 9 +- home/office-cli.nix | 1 - home/{tmux/default.nix => tmux.nix} | 22 ++-- home/tmux/jekyll.conf | 6 -- home/tmux/rloft.conf | 2 - home/tmux/vifm.conf | 1 - home/vifm.nix | 30 ++++++ home/vifm/default.nix | 13 --- home/vifm/light.vifm | 20 ---- system/mail-server/roundcube.nix | 4 +- system/web-server/letsencrypt.nix | 2 +- 23 files changed, 122 insertions(+), 297 deletions(-) delete mode 100644 home/castget/castget.conf rename home/{gnome/default.nix => gnome.nix} (92%) delete mode 100644 home/gnome/run-or-raise.conf delete mode 100644 home/gnome/wallpaper_nix_paper_gray.svg delete mode 100644 home/mail/neomutt_mailcap rename home/{tmux/default.nix => tmux.nix} (71%) delete mode 100644 home/tmux/jekyll.conf delete mode 100644 home/tmux/rloft.conf delete mode 100644 home/tmux/vifm.conf create mode 100644 home/vifm.nix delete mode 100644 home/vifm/default.nix delete mode 100644 home/vifm/light.vifm diff --git a/flake.nix b/flake.nix index 5170f3d..31617a5 100644 --- a/flake.nix +++ b/flake.nix @@ -25,12 +25,31 @@ specialArgs = { inherit inputs; }; modules = [ ./hosts/arielle + home-manager.nixosModules.home-manager { + home-manager = { + extraSpecialArgs = { inherit inputs; }; + useGlobalPkgs = true; + useUserPackages = true; + users = { + + till = { + imports = [ + ./home/on-server.nix + ./users/till/home.nix + ]; + }; + + }; + }; + } ]; }; homer = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; - modules = [ ./hosts/homer ]; + modules = [ + ./hosts/homer + ]; }; mila = nixpkgs.lib.nixosSystem { diff --git a/home/castget/castget.conf b/home/castget/castget.conf deleted file mode 100644 index cd4f148..0000000 --- a/home/castget/castget.conf +++ /dev/null @@ -1,53 +0,0 @@ -# vim: set ft=conf - -[2.5admins] -url=https://2.5admins.com/feed/podcast - -[50plus2] -url=https://50plus2.podigee.io/feed/mp3 -album_tag=50+2 - -[drei90] -url=http://feeds.feedburner.com/Drei90 -album_tag=drei90 - -[efpodcast] -url=https://www.eintracht-podcast.de/feed/mp3 - -[latenightlinux] -url=https://latenightlinux.com/feed/mp3 - -[linuxafterdark] -url=https://linuxafterdark.net/feed/podcast - -[linuxdevtime] -url=https://latenightlinux.com/feed/extra - -[linuxmatters] -url=https://linuxmatters.sh/episode/index.xml - -[logbuchnetzpolitik] -url=https://feeds.metaebene.me/lnp/mp3 -album_tag=Logbuch Netzpolitik - -[schlusskonferenz] -url=https://schlusskonferenz.podigee.io/feed/mp3 - -[tribünengespräch] -url=https://tribuenengespraech.podigee.io/feed/mp3 - -[wettbrötchen] -url=https://www.wett-broetchen.de/feed/mp3 -album_tag=Wettbrötchen - -[edeltalk] -url=https://cdn.julephosting.de/podcasts/573-edeltalk-mit-dominik-kevin/feed.rss -album_tag=Edeltalk - -[youredeadtome] -url=https://podcasts.files.bbci.co.uk/p07mdbhg.rss - -[*] -genre_tag=Podcast -spool=/home/till/.local/share/podcasts -filename=%(channel_title)_%(date)_%(title).mp3 diff --git a/home/desktop-full.nix b/home/desktop-full.nix index ea29f46..3ff2da1 100644 --- a/home/desktop-full.nix +++ b/home/desktop-full.nix @@ -1,4 +1,4 @@ -{ pkgs, ... }: +{ ... }: { imports = [ diff --git a/home/desktop-slim.nix b/home/desktop-slim.nix index 9add985..dca19a8 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ pkgs, ... }: { imports = [ @@ -8,7 +8,7 @@ ./firefox.nix ./fonts.nix ./foot.nix - ./gnome + ./gnome.nix ./media.nix ./user-dirs.nix ]; @@ -25,8 +25,5 @@ zathura ]; - xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; - services.syncthing.enable = true; - } diff --git a/home/devel.nix b/home/devel.nix index ba0cdca..0ff875b 100644 --- a/home/devel.nix +++ b/home/devel.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ config, pkgs, ... }: { home.file.".npmrc".text = '' @@ -10,6 +10,7 @@ bundix nodejs yarn-berry + yq duckdb tippecanoe pmtiles diff --git a/home/gnome/default.nix b/home/gnome.nix similarity index 92% rename from home/gnome/default.nix rename to home/gnome.nix index 4103a84..b7b8c4b 100644 --- a/home/gnome/default.nix +++ b/home/gnome.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { home.pointerCursor = { @@ -35,7 +35,6 @@ gtk-theme = "Adwaita"; }; "org/gnome/desktop/background" = { - picture-uri = "file://" + ./wallpaper_nix_paper_gray.svg; picture-options = "zoom"; }; "org/gnome/desktop/wm/keybindings" = { @@ -104,5 +103,12 @@ sleep-inactive-battery-timeout = 1200; }; }; - xdg.configFile."run-or-raise/shortcuts.conf".source = ./run-or-raise.conf; + + xdg.configFile."run-or-raise/shortcuts.conf".text = '' + b,firefox,, + f,nautilus,, + g:always-run,tmux new-window -n vifm vifm ~/desktop,foot, + return,foot,, + p,keepassxc,,, + ''; } diff --git a/home/gnome/run-or-raise.conf b/home/gnome/run-or-raise.conf deleted file mode 100644 index b4bc39d..0000000 --- a/home/gnome/run-or-raise.conf +++ /dev/null @@ -1,25 +0,0 @@ -b,firefox,, -f,nautilus,, -g:always-run,tmux new-window -n vifm vifm ~/desktop,foot, -return,foot,, -p,keepassxc,,, - -# You may use regular expression in title or wm_class. -# Just put the regular expression between slashes. -# E.g. to jump to pidgin conversation window you may use this line -# (that means any windows of wm_class Pidgin, not containing the title Buddy List)" -# KP_1,pidgin,Pidgin,/^((?!Buddy List).)*$/ - -# Have the mail always at numpad-click. -# KP_2,chromium-browser --app=https://mail.google.com/mail/u/0/#inbox - -# ============= -# Run only form -# ============= -# -# This line will launch notify-send command. -# h,notify-send Hello world - -# Blank lines are allowed. Line starting with "#" means a comment. -# Now delete these shortcuts and put here yours. -# How to know wm_class? Alt+f2, lg, "windows" tab (at least on Ubuntu 17.10) diff --git a/home/gnome/wallpaper_nix_paper_gray.svg b/home/gnome/wallpaper_nix_paper_gray.svg deleted file mode 100644 index f729f2d..0000000 --- a/home/gnome/wallpaper_nix_paper_gray.svg +++ /dev/null @@ -1,128 +0,0 @@ - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - diff --git a/home/gpg.nix b/home/gpg.nix index 554398a..8a54d51 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { @@ -15,7 +15,6 @@ programs.gpg = { enable = true; - # homedir = "${config.xdg.dataHome}/gnupg"; settings = { no-emit-version = true; no-comments = true; diff --git a/home/mail/default.nix b/home/mail/default.nix index 5133ecc..b9a709a 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -46,9 +46,25 @@ let }; }; + mailcap_path = pkgs.writeText "neomutt_mailcap" '' + application/pdf; zathura %s + multipart; xdg-open %s + text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal + text/html; w3m -v -F -T text/html -dump %s; copiousoutput + text; neomutt %s + application; xdg-open %s + image; xdg-open %s + video; xdg-open %s + audio; xdg-open %s + message; xdg-open %s + model; xdg-open %s + ''; + in { + programs.mu.enable = true; + accounts.email = { maildirBasePath = "${config.xdg.dataHome}/mail"; accounts = { @@ -129,7 +145,7 @@ in new.tags = [ "new" "unread" ]; hooks = { preNew = '' - notmuch tag +draft -- folder:/\/Drafts\// not tag:draft + notmuch tag +draft -- 'folder:"/\/Drafts$/"' mbsync --all ''; postNew = '' @@ -159,7 +175,7 @@ in settings = { abort_noattach = "ask-yes"; abort_noattach_regex = "\"(attach|enclosed|anbei|anhängen|angehängt|anhang|anhänge|hängt an)\""; - # auto_edit = "yes"; + auto_edit = "yes"; beep = "no"; confirm_append = "no"; crypt_auto_sign = "yes"; @@ -171,34 +187,43 @@ in forward_attachments = "yes"; forward_format = "\"Fwd: %s\""; forward_quote = "yes"; + help = "no"; include = "yes"; mail_check_stats = "yes"; - mailcap_path = builtins.path { path = ./neomutt_mailcap; }; + mailcap_path = "${ mailcap_path }"; mark_old = "no"; + markers = "no"; mbox_type = "Maildir"; + menu_scroll = "yes"; mime_type_query_command = "\"file -b --mime-type %s\""; nm_record = "yes"; + pager_context = "3"; + pager_index_lines = "5"; + pager_stop = "yes"; query_command= "\"khard email --parsable '%s'\""; recall = "no"; resume_draft_files = "yes"; reverse_real_name = "no"; shell = "/bin/sh"; sleep_time = "0"; + smart_wrap = "yes"; + status_chars = "✔↻٪A"; + tilde = "yes"; use_envelope_from = "yes"; virtual_spool_file = "yes"; wait_key = "no"; }; binds = [ + { key = "m"; map = [ "index" "pager" ]; action = "noop"; } { key = "k"; map = "pager"; action = "previous-entry"; } { key = "j"; map = "pager"; action = "next-entry"; } { key = ""; map = "index"; action = "display-message"; } - { key = ""; map = "index"; action = "collapse-thread"; } + { key = ""; map = "index"; action = "entire-thread"; } { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } - { key = "P"; map = "compose"; action = "pgp-menu"; } { key = ""; map = "editor"; action = "complete-query"; } - { key = "a"; map = [ "index" "pager" ]; action = "group-reply"; } - { key = "m"; map = [ "index" "pager" ]; action = "noop"; } + { key = "P"; map = "compose"; action = "pgp-menu"; } + { key = "p"; map = [ "compose" ]; action = "postpone-message"; } ]; macros = [ @@ -227,6 +252,7 @@ in { key = "S"; map = [ "index" "pager" ]; action = "ripmime -i - -d ~/tmp && rm ~/tmp/textfile*"; } { key = "gb"; map = [ "index" "pager" ]; action = "urlscan"; } { key = "I"; map = [ "compose" ]; action = "`tmpfile=$(mktemp -u --suffix .png -t XXXXXXXXXXXX -p ~/tmp) && wl-paste -t image/png > \"$tmpfile\" && echo \"$tmpfile\"`"; } + { key = "p"; map = [ "compose" ]; action = ""; } { key = "c"; map = [ "index" "pager" ]; action = "set signature=$my_signature"; } { key = "r"; map = [ "index" "pager" ]; action = "unset signature"; } diff --git a/home/mail/neomutt_mailcap b/home/mail/neomutt_mailcap deleted file mode 100644 index 1718345..0000000 --- a/home/mail/neomutt_mailcap +++ /dev/null @@ -1,11 +0,0 @@ -application/pdf; zathura %s -multipart; xdg-open %s -text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal -text/html; w3m -v -F -T text/html -dump %s; copiousoutput -text; neomutt %s -application; xdg-open %s -image; xdg-open %s -video; xdg-open %s -audio; xdg-open %s -message; xdg-open %s -model; xdg-open %s diff --git a/home/media.nix b/home/media.nix index 46e02e6..5c5e14c 100644 --- a/home/media.nix +++ b/home/media.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ pkgs, ... }: { home.packages = with pkgs; [ @@ -11,6 +11,4 @@ yt-dlp zathura ]; - - xdg.configFile."castget/castget.conf".source = ./castget/castget.conf; } diff --git a/home/minimal.nix b/home/minimal.nix index eeb7f44..a33684c 100644 --- a/home/minimal.nix +++ b/home/minimal.nix @@ -1,4 +1,4 @@ -{ config, pkgs, inputs, lib, ... }: +{ config, pkgs, ... }: { programs.home-manager.enable = true; @@ -20,12 +20,13 @@ imports = [ ./fish.nix - ./tmux - ./password-store.nix - ./vifm + ./vifm.nix ./nvim + + ./tmux.nix ./gpg.nix ./ssh.nix + ./password-store.nix ]; programs.nix-index = { diff --git a/home/office-cli.nix b/home/office-cli.nix index 5baf102..cf86068 100644 --- a/home/office-cli.nix +++ b/home/office-cli.nix @@ -9,7 +9,6 @@ home.packages = with pkgs; [ bat - castget ghostscript hunspell hunspellDicts.de_DE diff --git a/home/tmux/default.nix b/home/tmux.nix similarity index 71% rename from home/tmux/default.nix rename to home/tmux.nix index 7ce808d..5c54bc3 100644 --- a/home/tmux/default.nix +++ b/home/tmux.nix @@ -1,4 +1,4 @@ -{ config, pkgs, ... }: +{ pkgs, ... }: { programs.tmux = { @@ -22,13 +22,19 @@ bind j select-pane -D bind k select-pane -U bind l select-pane -R + bind -r H resize-pane -L 5 + bind -r J resize-pane -D 5 + bind -r K resize-pane -U 5 + bind -r L resize-pane -R 5 bind c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" bind C-c command-prompt -I "#{b:pane_current_path}" "rename-window '%%'" # Layouts - bind f source-file ~/.config/tmux/vifm.conf - bind R source-file ~/.config/tmux/rloft.conf - bind J source-file ~/.config/tmux/jekyll.conf + bind f new-window -c '#{pane_current_path}' vifm + bind R source ${ pkgs.writeText "tmux-rloft" '' + split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore; + select-pane -l + ''} # Unbind unbind p @@ -36,7 +42,6 @@ unbind % # Eye candy - # set-option -g status-position top set-option -g status-right "" set-option -g status-left "" set-option -g status-justify "centre" @@ -47,9 +52,10 @@ # Some more specifics set-option -g focus-events on + set -g base-index 1 + setw -g pane-base-index 1 + set -g default-terminal "tmux-256color" + set -as terminal-features ",xterm-256color:RGB" ''; }; - xdg.configFile."tmux/vifm.conf".source = ./vifm.conf; - xdg.configFile."tmux/rloft.conf".source = ./rloft.conf; - xdg.configFile."tmux/jekyll.conf".source = ./jekyll.conf; } diff --git a/home/tmux/jekyll.conf b/home/tmux/jekyll.conf deleted file mode 100644 index 8ecb9ee..0000000 --- a/home/tmux/jekyll.conf +++ /dev/null @@ -1,6 +0,0 @@ -split-window -c '#{pane_current_path}' -h nix-shell -send-keys "jekyll serve" Enter -resize-pane -x 40% -split-pane -c '#{pane_current_path}' "git status; fish" -select-pane -L -rename-window "jekyll" diff --git a/home/tmux/rloft.conf b/home/tmux/rloft.conf deleted file mode 100644 index 400c102..0000000 --- a/home/tmux/rloft.conf +++ /dev/null @@ -1,2 +0,0 @@ -split-window -c '#{pane_current_path}' -h R -q --no-save --no-restore -select-pane -l diff --git a/home/tmux/vifm.conf b/home/tmux/vifm.conf deleted file mode 100644 index 45fd508..0000000 --- a/home/tmux/vifm.conf +++ /dev/null @@ -1 +0,0 @@ -new-window -c '#{pane_current_path}' vifm diff --git a/home/vifm.nix b/home/vifm.nix new file mode 100644 index 0000000..d68ebbd --- /dev/null +++ b/home/vifm.nix @@ -0,0 +1,30 @@ +{ config, pkgs, ... }: + +{ + programs.vifm = { + enable = true; + extraConfig = " + colorscheme light + set vicmd=nvim + filetype * xdg-open + "; + }; + xdg.configFile."vifm/colors/light.vifm".text = '' + highlight clear + highlight Win cterm=none ctermfg=black ctermbg=default + highlight Directory cterm=none ctermfg=cyan ctermbg=default + highlight Link cterm=none ctermfg=yellow ctermbg=default + highlight BrokenLink cterm=none ctermfg=white ctermbg=red + highlight Socket cterm=none ctermfg=red ctermbg=default + highlight Device cterm=none ctermfg=red ctermbg=default + highlight Fifo cterm=none ctermfg=black ctermbg=cyan + highlight Executable cterm=none ctermfg=green ctermbg=default + highlight Selected cterm=bold ctermfg=magenta ctermbg=default + highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta + highlight TopLine cterm=bold ctermfg=magenta ctermbg=default + highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white + highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white + highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default + highlight Border cterm=none ctermfg=default ctermbg=default + ''; +} diff --git a/home/vifm/default.nix b/home/vifm/default.nix deleted file mode 100644 index 4845d34..0000000 --- a/home/vifm/default.nix +++ /dev/null @@ -1,13 +0,0 @@ -{ config, pkgs, ... }: - -{ - programs.vifm = { - enable = true; - extraConfig = " - colorscheme light - set vicmd=nvim - filetype * xdg-open - "; - }; - xdg.configFile."vifm/colors/light.vifm".source = ./light.vifm; -} diff --git a/home/vifm/light.vifm b/home/vifm/light.vifm deleted file mode 100644 index f770398..0000000 --- a/home/vifm/light.vifm +++ /dev/null @@ -1,20 +0,0 @@ -highlight clear - -highlight Win cterm=none ctermfg=black ctermbg=default -highlight Directory cterm=none ctermfg=cyan ctermbg=default -highlight Link cterm=none ctermfg=yellow ctermbg=default -highlight BrokenLink cterm=none ctermfg=white ctermbg=red -highlight Socket cterm=none ctermfg=red ctermbg=default -highlight Device cterm=none ctermfg=red ctermbg=default -highlight Fifo cterm=none ctermfg=black ctermbg=cyan -highlight Executable cterm=none ctermfg=green ctermbg=default -highlight Selected cterm=bold ctermfg=magenta ctermbg=default -highlight CurrLine cterm=bold ctermfg=white ctermbg=magenta -highlight TopLine cterm=bold ctermfg=magenta ctermbg=default -highlight TopLineSel cterm=bold ctermfg=magenta ctermbg=white -highlight StatusLine cterm=bold ctermfg=magenta ctermbg=white -"highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black -highlight CmdLine cterm=bold ctermfg=magenta ctermbg=default -"highlight ErrorMsg cterm=none ctermfg=red ctermbg=black -highlight Border cterm=none ctermfg=default ctermbg=default -"highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white diff --git a/system/mail-server/roundcube.nix b/system/mail-server/roundcube.nix index 9379620..5c48fc1 100644 --- a/system/mail-server/roundcube.nix +++ b/system/mail-server/roundcube.nix @@ -1,4 +1,4 @@ -{ config, lib, ... }: +{ config, ... }: let @@ -24,6 +24,8 @@ in # not sure why this is currently working w/o the following # # services.nginx.virtualHosts."${webmailHostName}" = { + # onlySSL = true; + # forceSSL = lib.mkForce false; # enableACME = lib.mkForce false; # useACMEHost = config.networking.domain; # }; diff --git a/system/web-server/letsencrypt.nix b/system/web-server/letsencrypt.nix index 7e99212..9b462f9 100644 --- a/system/web-server/letsencrypt.nix +++ b/system/web-server/letsencrypt.nix @@ -5,7 +5,7 @@ acceptTerms = true; defaults.email = "till@ktiu.net"; certs."${config.networking.domain}" = { - domain = config.networking.domain; + # domain = config.networking.domain; webroot = "/var/lib/acme/.challenges"; group = config.services.nginx.group; extraDomainNames = [ config.networking.fqdn ]; From 96e5924fb00b63509d2ee344d4280c27faf95844 Mon Sep 17 00:00:00 2001 From: Till Date: Wed, 4 Mar 2026 19:50:45 +0100 Subject: [PATCH 07/10] nh --- flake.lock | 18 +++++++++--------- home/desktop-slim.nix | 2 +- home/firefox.nix | 2 +- home/foot.nix | 14 +++++++------- home/gpg.nix | 14 ++++++++------ home/hyprland.nix | 7 +++++++ home/mail/default.nix | 11 ++++++----- home/nvim/config.vim | 2 ++ home/nvim/default.nix | 4 ++-- home/password-store.nix | 9 +++------ home/plasma.nix | 5 +++++ hosts/nova/default.nix | 7 +++++-- system/desktop/cosmic.nix | 14 ++++++++++++++ system/desktop/default.nix | 5 +++++ system/desktop/gnome.nix | 8 ++++---- system/desktop/hyprland.nix | 29 +++++++++++++++++++++++++++++ system/desktop/plasma.nix | 18 ++++++++++++++++++ 17 files changed, 126 insertions(+), 43 deletions(-) create mode 100644 home/hyprland.nix create mode 100644 home/plasma.nix create mode 100644 system/desktop/cosmic.nix create mode 100644 system/desktop/hyprland.nix create mode 100644 system/desktop/plasma.nix diff --git a/flake.lock b/flake.lock index 97c4a34..4354c7b 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ }, "locked": { "dir": "pkgs/firefox-addons", - "lastModified": 1769054619, - "narHash": "sha256-LCc0gbSgjehdy41Gi1H5WNxEuW9PtRHFVaPXoFzslQU=", + "lastModified": 1772596991, + "narHash": "sha256-awJJ4ATy9t8Svrx2z0zAftgXnUaGCFb2Ty0u036CnCQ=", "owner": "rycee", "repo": "nur-expressions", - "rev": "6509620630f68dc02ac3e99f15a67760778444ff", + "rev": "cd2d0893966c0a5c27345a9a72d0418b42b7e36d", "type": "gitlab" }, "original": { @@ -29,11 +29,11 @@ ] }, "locked": { - "lastModified": 1767910483, - "narHash": "sha256-MOU5YdVu4DVwuT5ztXgQpPuRRBjSjUGIdUzOQr9iQOY=", + "lastModified": 1772633058, + "narHash": "sha256-SO7JapRy2HPhgmqiLbfnW1kMx5rakPMKZ9z3wtRLQjI=", "owner": "nix-community", "repo": "home-manager", - "rev": "82fb7dedaad83e5e279127a38ef410bcfac6d77c", + "rev": "080657a04188aca25f8a6c70a0fb2ea7e37f1865", "type": "github" }, "original": { @@ -45,11 +45,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1768028080, - "narHash": "sha256-50aDK+8eLvsLK39TzQhKNq50/HcXyP4hyxOYoPoVxjo=", + "lastModified": 1772598333, + "narHash": "sha256-YaHht/C35INEX3DeJQNWjNaTcPjYmBwwjFJ2jdtr+5U=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d03088749a110d52a4739348f39a63f84bb0be14", + "rev": "fabb8c9deee281e50b1065002c9828f2cf7b2239", "type": "github" }, "original": { diff --git a/home/desktop-slim.nix b/home/desktop-slim.nix index dca19a8..66f0da4 100644 --- a/home/desktop-slim.nix +++ b/home/desktop-slim.nix @@ -8,8 +8,8 @@ ./firefox.nix ./fonts.nix ./foot.nix - ./gnome.nix ./media.nix + # ./plasma.nix ./user-dirs.nix ]; diff --git a/home/firefox.nix b/home/firefox.nix index 9d79fe2..43418ef 100644 --- a/home/firefox.nix +++ b/home/firefox.nix @@ -1,7 +1,6 @@ { config, pkgs, inputs, osConfig, ... }: { - programs.firefox = { enable = true; policies = { @@ -149,6 +148,7 @@ user_pref("signon.rememberSignons", false); user_pref("toolkit.telemetry.enabled", false); user_pref("toolkit.telemetry.server", ""); + user_pref("widget.gtk.libadwaita-colors.enabled", false); ''; }; }; diff --git a/home/foot.nix b/home/foot.nix index a0fadb4..10dc8aa 100644 --- a/home/foot.nix +++ b/home/foot.nix @@ -8,13 +8,13 @@ main = { shell = "${pkgs.fish}/bin/fish -c 'tmux attach'"; pad = "34x34"; - # font = "JetBrains Mono:size=16"; - font = "Adwaita Mono:size=17"; - font-bold = "Adwaita Mono:size=17:weight=bold"; - font-italic = "Adwaita Mono:size=17:slant=italic"; - font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic"; - initial-window-mode = "maximized"; - initial-color-theme = "dark"; + font = "JetBrains Mono:size=14"; + # font = "Adwaita Mono:size=17"; + # font-bold = "Adwaita Mono:size=17:weight=bold"; + # font-italic = "Adwaita Mono:size=17:slant=italic"; + # font-bold-italic = "Adwaita Mono:size=17:weight=boldslant=italic"; + # initial-window-mode = "maximized"; + # initial-color-theme = "dark"; }; mouse.hide-when-typing = "yes"; diff --git a/home/gpg.nix b/home/gpg.nix index 8a54d51..43886ae 100644 --- a/home/gpg.nix +++ b/home/gpg.nix @@ -6,12 +6,14 @@ pinentry-all ]; - services.gpg-agent = { - enable = true; - pinentry.package = pkgs.pinentry-gnome3; - pinentry.program = "pinentry-gnome3"; - enableSshSupport = true; - }; +# moved to system + +# services.gpg-agent = { +# enable = true; +# pinentry.package = pkgs.pinentry-all; +# pinentry.program = "pinentry"; +# # enableSshSupport = true; +# }; programs.gpg = { enable = true; diff --git a/home/hyprland.nix b/home/hyprland.nix new file mode 100644 index 0000000..005d6a6 --- /dev/null +++ b/home/hyprland.nix @@ -0,0 +1,7 @@ +{ ... }: + +{ + wayland.windowManager.hyprland = { + systemd.enable = false; + }; +} diff --git a/home/mail/default.nix b/home/mail/default.nix index b9a709a..f6dba07 100644 --- a/home/mail/default.nix +++ b/home/mail/default.nix @@ -51,6 +51,7 @@ let multipart; xdg-open %s text/html; firefox %s; description=HTML Text; nametemplate=%s.html; needsterminal text/html; w3m -v -F -T text/html -dump %s; copiousoutput + text/calendar; khal import %s text; neomutt %s application; xdg-open %s image; xdg-open %s @@ -216,13 +217,13 @@ in binds = [ { key = "m"; map = [ "index" "pager" ]; action = "noop"; } - { key = "k"; map = "pager"; action = "previous-entry"; } - { key = "j"; map = "pager"; action = "next-entry"; } - { key = ""; map = "index"; action = "display-message"; } + { key = "k"; map = [ "pager" ]; action = "previous-entry"; } + { key = "j"; map = [ "pager" ]; action = "next-entry"; } + { key = ""; map = [ "index" ]; action = "display-message"; } { key = ""; map = "index"; action = "entire-thread"; } { key = "gf"; map = [ "index" "pager" ]; action = "change-folder"; } - { key = ""; map = "editor"; action = "complete-query"; } - { key = "P"; map = "compose"; action = "pgp-menu"; } + { key = ""; map = [ "editor" ]; action = "complete-query"; } + { key = "P"; map = [ "compose" ]; action = "pgp-menu"; } { key = "p"; map = [ "compose" ]; action = "postpone-message"; } ]; diff --git a/home/nvim/config.vim b/home/nvim/config.vim index b4cda0b..166132d 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -50,6 +50,8 @@ onoremap al :normal val xnoremap i% GoggV onoremap i% :normal vi% +" highlight Normal guibg=NONE + function CreateNote(title) execute "VimwikiIndex" execute "VimwikiGoto " . a:title diff --git a/home/nvim/default.nix b/home/nvim/default.nix index 7d3e0ff..f7e9cfc 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -136,7 +136,7 @@ { plugin = papercolor-theme; config = '' - set background=light + " set background=light colorscheme PaperColor ''; } @@ -203,7 +203,7 @@ vim-snippets vim-speeddating vim-surround - + { plugin = vim-unimpaired; config = '' diff --git a/home/password-store.nix b/home/password-store.nix index 8839f20..af8f9e3 100644 --- a/home/password-store.nix +++ b/home/password-store.nix @@ -1,8 +1,6 @@ { config, pkgs, ... }: { - services.gnome-keyring.enable = false; - programs.password-store = { enable = true; settings = { @@ -14,14 +12,12 @@ pkgs.passff-host ]; + services.gnome-keyring.enable = false; + services.pass-secret-service = { enable = true; }; - home.packages = with pkgs; [ - pinentry-all - ]; - xdg.configFile."scdaemon" = { text = '' disable-ccid @@ -29,4 +25,5 @@ ''; target = "../.gnupg/scdaemon.conf"; }; + } diff --git a/home/plasma.nix b/home/plasma.nix new file mode 100644 index 0000000..426fa8e --- /dev/null +++ b/home/plasma.nix @@ -0,0 +1,5 @@ +{ ... }: + +{ + services.kdeconnect.enable = true; +} diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 969a3e5..1ffb75e 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -9,9 +9,12 @@ ../../users/guest/system.nix ../../system ../../system/desktop - ../../system/desktop/gnome.nix - # ../../system/desktop/cast.nix ../../system/desktop/ergodox-udev.nix + # ../../system/desktop/gnome.nix + # ../../system/desktop/hyprland.nix + # ../../system/desktop/cast.nix + # ../../system/desktop/plasma.nix + ../../system/desktop/cosmic.nix ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix ]; diff --git a/system/desktop/cosmic.nix b/system/desktop/cosmic.nix new file mode 100644 index 0000000..a90680b --- /dev/null +++ b/system/desktop/cosmic.nix @@ -0,0 +1,14 @@ +{ lib, ... }: + +{ + services.desktopManager.cosmic.enable = true; + services.displayManager.cosmic-greeter.enable = true; + + services.system76-scheduler.enable = true; + + services.gnome.gnome-keyring.enable = lib.mkForce false; + + programs.firefox.preferences = { + "widget.gtk.libadwaita-colors.enabled" = false; + }; +} diff --git a/system/desktop/default.nix b/system/desktop/default.nix index 26f54a5..b4c988b 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -51,4 +51,9 @@ programs.virt-manager.enable = true; programs.dconf.enable = true; + programs.gnupg.agent = { + enable = true; + pinentryPackage = pkgs.pinentry-all; + # pinentry.program = "pinentry"; + }; } diff --git a/system/desktop/gnome.nix b/system/desktop/gnome.nix index e1e463a..b31365b 100644 --- a/system/desktop/gnome.nix +++ b/system/desktop/gnome.nix @@ -4,10 +4,10 @@ { services.desktopManager.gnome.enable = true; - services.displayManager = { - gdm.enable = true; - defaultSession = "gnome"; - }; + # services.displayManager = { + # gdm.enable = true; + # defaultSession = "gnome"; + # }; environment.gnome.excludePackages = with pkgs; [ gnome-tour diff --git a/system/desktop/hyprland.nix b/system/desktop/hyprland.nix new file mode 100644 index 0000000..ab3624d --- /dev/null +++ b/system/desktop/hyprland.nix @@ -0,0 +1,29 @@ +{ pkgs, ... }: + +{ + + programs.hyprland = { + enable = true; + withUWSM = true; + # xwayland.enable = true; + }; + + # programs.regreet = { + # enable = true; + # # For this example you'd need to have a version of Adwaita and the font Cantarell installed + # theme.name = "Adwaita"; + # font = { + # name = "Cantarell"; + # size = 16; + # }; + # cursorTheme.name = "Adwaita"; + # }; + + environment.systemPackages = with pkgs; [ + ashell + kitty + mako + tofi + ]; + +} diff --git a/system/desktop/plasma.nix b/system/desktop/plasma.nix new file mode 100644 index 0000000..d3f86a6 --- /dev/null +++ b/system/desktop/plasma.nix @@ -0,0 +1,18 @@ +{ ... }: + +{ + services.desktopManager.plasma6.enable = true; + + programs.kdeconnect.enable = true; + + networking.firewall = rec { + allowedTCPPortRanges = [ { from = 1714; to = 1764; } ]; + allowedUDPPortRanges = allowedTCPPortRanges; + }; + + services.displayManager.sddm = { + enable = true; + wayland.enable = true; + settings.General.DisplayServer = "wayland"; + }; +} From 82115af2528ce1b1cfc9c26998766a6fa19a9e47 Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 09:11:17 +0100 Subject: [PATCH 08/10] prep arielle --- flake.nix | 4 +--- home/desktop-full.nix | 15 --------------- home/devel.nix | 9 ++------- home/fish.nix | 2 -- home/nvim/config.vim | 7 ------- home/nvim/default.nix | 2 +- home/profiles/desktop-full.nix | 15 +++++++++++++++ home/{ => profiles}/desktop-slim.nix | 15 ++++++++------- home/{ => profiles}/minimal.nix | 15 +++++++-------- home/{ => profiles}/on-server.nix | 0 hosts/arielle/default.nix | 2 +- .../{hardware.nix => hardware-configuration.nix} | 0 hosts/nova/default.nix | 3 --- 13 files changed, 35 insertions(+), 54 deletions(-) delete mode 100644 home/desktop-full.nix create mode 100644 home/profiles/desktop-full.nix rename home/{ => profiles}/desktop-slim.nix (64%) rename home/{ => profiles}/minimal.nix (85%) rename home/{ => profiles}/on-server.nix (100%) rename hosts/arielle/{hardware.nix => hardware-configuration.nix} (100%) diff --git a/flake.nix b/flake.nix index 31617a5..2c06763 100644 --- a/flake.nix +++ b/flake.nix @@ -34,7 +34,7 @@ till = { imports = [ - ./home/on-server.nix + ./home/minimal.nix ./users/till/home.nix ]; }; @@ -62,9 +62,7 @@ nova = nixpkgs.lib.nixosSystem { specialArgs = { inherit inputs; }; modules = [ - ./hosts/nova - home-manager.nixosModules.home-manager { home-manager = { extraSpecialArgs = { inherit inputs; }; diff --git a/home/desktop-full.nix b/home/desktop-full.nix deleted file mode 100644 index 3ff2da1..0000000 --- a/home/desktop-full.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ ... }: - -{ - imports = [ - ./desktop-slim.nix - - ./messaging.nix - ./r.nix - ./tex.nix - ./mail - ./office-gui.nix - ./office-cli.nix - ./aichat.nix - ]; -} diff --git a/home/devel.nix b/home/devel.nix index 0ff875b..27817b2 100644 --- a/home/devel.nix +++ b/home/devel.nix @@ -6,13 +6,8 @@ ''; home.packages = with pkgs; [ - bundler - bundix nodejs - yarn-berry - yq - duckdb - tippecanoe - pmtiles ]; + + programs.direnv.enable = true; } diff --git a/home/fish.nix b/home/fish.nix index b8fd587..16997a5 100644 --- a/home/fish.nix +++ b/home/fish.nix @@ -1,7 +1,6 @@ { config, ... }: { - home.shellAliases = { top = "btm --battery"; du = "dust"; @@ -13,7 +12,6 @@ }; programs.fish = { - enable = true; interactiveShellInit = "fish_add_path ${config.xdg.dataHome}/npm/packages/bin"; diff --git a/home/nvim/config.vim b/home/nvim/config.vim index 166132d..94efc9a 100644 --- a/home/nvim/config.vim +++ b/home/nvim/config.vim @@ -60,10 +60,3 @@ endfunction function Diary() execute "VimwikiMakeDiaryNote" endfunction - -" function CreateNote(title) -" execute "file ~/notes/" . strftime("%Y-%m-%d") . "_" . join(split(tolower(a:title)), "_") . ".md" -" execute "set ft=markdown" -" execute "normal! i" . a:title -" execute "normal V\yaml_note\" -" endfunction diff --git a/home/nvim/default.nix b/home/nvim/default.nix index f7e9cfc..e982334 100644 --- a/home/nvim/default.nix +++ b/home/nvim/default.nix @@ -136,7 +136,7 @@ { plugin = papercolor-theme; config = '' - " set background=light + set background=light colorscheme PaperColor ''; } diff --git a/home/profiles/desktop-full.nix b/home/profiles/desktop-full.nix new file mode 100644 index 0000000..c786f38 --- /dev/null +++ b/home/profiles/desktop-full.nix @@ -0,0 +1,15 @@ +{ ... }: + +{ + imports = [ + ./desktop-slim.nix + + ../messaging.nix + ../r.nix + ../tex.nix + ../mail + ../office-gui.nix + ../office-cli.nix + ../aichat.nix + ]; +} diff --git a/home/desktop-slim.nix b/home/profiles/desktop-slim.nix similarity index 64% rename from home/desktop-slim.nix rename to home/profiles/desktop-slim.nix index 66f0da4..15dac09 100644 --- a/home/desktop-slim.nix +++ b/home/profiles/desktop-slim.nix @@ -4,13 +4,14 @@ imports = [ ./minimal.nix - ./devel.nix - ./firefox.nix - ./fonts.nix - ./foot.nix - ./media.nix - # ./plasma.nix - ./user-dirs.nix + ../devel.nix + ../firefox.nix + ../fonts.nix + ../foot.nix + ../media.nix + ../user-dirs.nix + ../gpg.nix + ../password-store.nix ]; home.packages = with pkgs; [ diff --git a/home/minimal.nix b/home/profiles/minimal.nix similarity index 85% rename from home/minimal.nix rename to home/profiles/minimal.nix index a33684c..6fbf2a8 100644 --- a/home/minimal.nix +++ b/home/profiles/minimal.nix @@ -10,23 +10,22 @@ fastfetch fzf jq + nh nix-search progress rename silver-searcher tldr tmux + yq ]; imports = [ - ./fish.nix - ./vifm.nix - ./nvim - - ./tmux.nix - ./gpg.nix - ./ssh.nix - ./password-store.nix + ../fish.nix + ../vifm.nix + ../nvim + ../tmux.nix + ../ssh.nix ]; programs.nix-index = { diff --git a/home/on-server.nix b/home/profiles/on-server.nix similarity index 100% rename from home/on-server.nix rename to home/profiles/on-server.nix diff --git a/hosts/arielle/default.nix b/hosts/arielle/default.nix index 1c6bee4..0503bda 100644 --- a/hosts/arielle/default.nix +++ b/hosts/arielle/default.nix @@ -5,7 +5,7 @@ networking.domain = "ktiu.net"; imports = [ - ./hardware + ./hardware-configuration.nix ../system ../system/web-server ../system/mail-server diff --git a/hosts/arielle/hardware.nix b/hosts/arielle/hardware-configuration.nix similarity index 100% rename from hosts/arielle/hardware.nix rename to hosts/arielle/hardware-configuration.nix diff --git a/hosts/nova/default.nix b/hosts/nova/default.nix index 1ffb75e..482b1bf 100644 --- a/hosts/nova/default.nix +++ b/hosts/nova/default.nix @@ -11,9 +11,6 @@ ../../system/desktop ../../system/desktop/ergodox-udev.nix # ../../system/desktop/gnome.nix - # ../../system/desktop/hyprland.nix - # ../../system/desktop/cast.nix - # ../../system/desktop/plasma.nix ../../system/desktop/cosmic.nix ../../system/desktop/steam.nix ../../system/desktop/yubikey-pam.nix From accc04e2146e1d408387c364dddecd2c59d053da Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 09:59:10 +0100 Subject: [PATCH 09/10] refactor, prep --- flake.nix | 14 ++++++++++---- home/profiles/desktop-slim.nix | 2 +- home/profiles/minimal.nix | 1 - users/guest/system.nix | 2 +- users/till/home.nix | 5 +++++ users/till/{ssh => pubkeys}/till@nova.pub | 0 {home => users/till}/ssh.nix | 12 ++++++------ users/till/system.nix | 2 +- 8 files changed, 24 insertions(+), 14 deletions(-) rename users/till/{ssh => pubkeys}/till@nova.pub (100%) rename {home => users/till}/ssh.nix (89%) diff --git a/flake.nix b/flake.nix index 2c06763..581d289 100644 --- a/flake.nix +++ b/flake.nix @@ -72,29 +72,34 @@ till = { imports = [ - ./home/desktop-full.nix + ./home/profiles/desktop-full.nix ./users/till/home.nix ]; }; alt = { imports = [ - ./home/desktop-slim.nix + ./home/profiles/desktop-slim.nix ./users/alt/home.nix ]; }; guest = { imports = [ - ./home/desktop-slim.nix + ./home/profiles/desktop-slim.nix ./users/guest/home.nix ]; }; }; }; } - { + + # firefox-addons.config.allowUnfreePredicate = pkg: + # builtins.elem (nixpkgs.lib.getName pkg) [ + # "tampermonkey" + # ]; + nixpkgs.config.allowUnfreePredicate = pkg: builtins.elem (nixpkgs.lib.getName pkg) [ "corefonts" @@ -102,6 +107,7 @@ "keymapp" "steam" "steam-unwrapped" + # "tampermonkey" ]; } ]; diff --git a/home/profiles/desktop-slim.nix b/home/profiles/desktop-slim.nix index 15dac09..c2936c4 100644 --- a/home/profiles/desktop-slim.nix +++ b/home/profiles/desktop-slim.nix @@ -7,7 +7,7 @@ ../devel.nix ../firefox.nix ../fonts.nix - ../foot.nix + # ../foot.nix ../media.nix ../user-dirs.nix ../gpg.nix diff --git a/home/profiles/minimal.nix b/home/profiles/minimal.nix index 6fbf2a8..e4e5828 100644 --- a/home/profiles/minimal.nix +++ b/home/profiles/minimal.nix @@ -25,7 +25,6 @@ ../vifm.nix ../nvim ../tmux.nix - ../ssh.nix ]; programs.nix-index = { diff --git a/users/guest/system.nix b/users/guest/system.nix index ddfbf5e..610bce2 100644 --- a/users/guest/system.nix +++ b/users/guest/system.nix @@ -7,7 +7,7 @@ extraGroups = [ "networkmanager" ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ../till/ssh/till${"@"}nova.pub + ../till/pubkeys/till${"@"}nova.pub ]; }; } diff --git a/users/till/home.nix b/users/till/home.nix index b14b24c..ab32419 100644 --- a/users/till/home.nix +++ b/users/till/home.nix @@ -6,4 +6,9 @@ name = "Till"; email = "till@ktiu.net"; }; + + imports = [ + ./ssh.nix + ]; + } diff --git a/users/till/ssh/till@nova.pub b/users/till/pubkeys/till@nova.pub similarity index 100% rename from users/till/ssh/till@nova.pub rename to users/till/pubkeys/till@nova.pub diff --git a/home/ssh.nix b/users/till/ssh.nix similarity index 89% rename from home/ssh.nix rename to users/till/ssh.nix index 7836029..a04ca2d 100644 --- a/home/ssh.nix +++ b/users/till/ssh.nix @@ -41,7 +41,7 @@ in identityFile = certs.uni; }; - "arielle arielle.ktiu.net" = { + "arielle (arielle|git).ktiu.net" = { hostname = "arielle.ktiu.net"; user = "till"; identityFile = certs.personal; @@ -65,11 +65,11 @@ in identityFile = certs.personal; }; - # "mila" = { - # hostname = "mila"; - # user = "till"; - # identityFile = certs.personal; - # }; + "mila" = { + hostname = "mila"; + user = "tstraube"; + identityFile = certs.uni; + }; }; }; diff --git a/users/till/system.nix b/users/till/system.nix index fd25636..e4c413e 100644 --- a/users/till/system.nix +++ b/users/till/system.nix @@ -10,7 +10,7 @@ ]; shell = pkgs.fish; openssh.authorizedKeys.keyFiles = [ - ./ssh/till${"@"}nova.pub + ./pubkeys/till${"@"}nova.pub ]; }; } From 6f30269e1e500019204361e60b2c8454bf698f1e Mon Sep 17 00:00:00 2001 From: Till Date: Thu, 5 Mar 2026 10:22:10 +0100 Subject: [PATCH 10/10] git ssh don't force user --- users/till/ssh.nix | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/users/till/ssh.nix b/users/till/ssh.nix index a04ca2d..7dbbba7 100644 --- a/users/till/ssh.nix +++ b/users/till/ssh.nix @@ -41,6 +41,10 @@ in identityFile = certs.uni; }; + "git.ktiu.net" = { + identityFile = certs.personal; + }; + "arielle (arielle|git).ktiu.net" = { hostname = "arielle.ktiu.net"; user = "till";