diff --git a/flake.lock b/flake.lock index 15b8d5b..690f7ba 100644 --- a/flake.lock +++ b/flake.lock @@ -47,11 +47,11 @@ "xdph": "xdph" }, "locked": { - "lastModified": 1674661101, - "narHash": "sha256-iFFUngau5KHjsKScLhovpb7kCMjJvw/mXXOj6I62sVM=", + "lastModified": 1674729546, + "narHash": "sha256-15ukCRGhgDd7T60QBbc3PEeMpOkNVgwduT+u93zmyZM=", "owner": "hyprwm", "repo": "Hyprland", - "rev": "fc89e70a1fb74429ad0f772d399325f69e65b357", + "rev": "06b17db22776e613a714e7e936618c16c3f47eaa", "type": "github" }, "original": { diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix index ccd992a..60fdc74 100755 --- a/hosts/thinkpad/default.nix +++ b/hosts/thinkpad/default.nix @@ -82,6 +82,8 @@ traceroute killall python3 + zip + unzip ]; system.stateVersion = "22.11"; diff --git a/secrets/thinkpad.yaml b/secrets/thinkpad.yaml index 56258ef..84f19fc 100644 --- a/secrets/thinkpad.yaml +++ b/secrets/thinkpad.yaml @@ -5,6 +5,10 @@ wireguard: dorm: private: ENC[AES256_GCM,data:ISK2FjZsBx60Sgag8tJs+SyXSvdIQeIHeqB1V/m3g8RxkgIFBkCBnEjB8/g=,iv:CbDXnT3ERB+OYSa0+Xc4nN8joNj3dtSPTQa0SU5S5xg=,tag:Eap30fSv0MtBzaZvBLWAYA==,type:str] preshared: ENC[AES256_GCM,data:5Kc/CMoEVpqJO0vyDOKmw5A19P68jJe5N025+kIvdvoOoNs2Knl127EuSAA=,iv:5lX9Kj5hz1GNh3a6Ig701cocuZ1CYr4Ze++wJzu7AAU=,tag:1rVx8EA5N++SgXpv0aMGNg==,type:str] +email: + tu-dresden: ENC[AES256_GCM,data:erIlghjlXWE2kUqMZLEN70c=,iv:hWTA68mBDe92qDPwemlSFR2vV2sL+/GI4WjHbwViVic=,tag:ZZ2/vTxBWiC6lbN33lNr5w==,type:str] + rfive: ENC[AES256_GCM,data:+lYvCL0OxM7o3nLN4fPeeVyMSKUL6O0uEg==,iv:I0KrK6GRkQWyDkp0GxXgHuCbDzDZ0u2gejNJCEzChxo=,tag:bBsG3n7nsb9T/NOCeptSgg==,type:str] + google: ENC[AES256_GCM,data:J97kR5rrJ7GpqIN1XAeVlg==,iv:r6qXU6pGEfeiajWyqq3cVatS2m6omlUcJD7bDTwHDQI=,tag:B/lTvdRVxKjyAsO7TSsXdA==,type:str] sops: kms: [] gcp_kms: [] @@ -20,8 +24,8 @@ sops: S0NwYWFQcmFtTm5zTEZLVXRtMi91Zk0K3ylHH4OXduJlJxepPz9GxBzVmKGpv9LL ApkEQxfPL4Bxrb2XOFLOYqJGv2SwxBv1QNYT7eTXRLTEsIXUHR0MGA== -----END AGE ENCRYPTED FILE----- - lastmodified: "2023-01-14T10:27:33Z" - mac: ENC[AES256_GCM,data:rRIzDJCCmAY2f8Ufn0055hiPLpBbz9OWRYLzrI5byzTtXAeoXMwOM4oMJUFg3uIofgvOPbUB1OP/ZJNG3iYTkUy8sDuqzU1Oogp2ZIdwv7ke3lAVec+oT1WGMOOithoRtahs7aP3bggnboaov32YUwOH9JAerV1MkDA+OJNyTpA=,iv:+N8ylMN3tgtEmuN9jtXDTRKvM3JHZXJr3IaeXOERVHM=,tag:MGzcRwD6Ih9kqp4/65DGCw==,type:str] + lastmodified: "2023-01-27T10:55:24Z" + mac: ENC[AES256_GCM,data:gzQG0cc3x0MYqrafz7VYBC49hcYed9Bfvih1I6jsNvZ2olKLZaOnj4FKhgoDhmOqbbmjl5SCEaMDIgTkRxj5IZvkLlaJwquO8RFDHVZr2wgOzbbxPmo6NIJL7+kOJ2Qr17lr/L0JMD5kHA1srN0K5jNwSeOneHsloZtJsypd/cY=,iv:KOt/CM9+8mv7xVHGjUZMaaCTuU8oD7UVqnNmTA9utm8=,tag:gwTDa1p8O7sY/v6ON71wlw==,type:str] pgp: - created_at: "2022-12-27T16:39:15Z" enc: |- diff --git a/users/rouven/fixes.nix b/users/rouven/fixes.nix index aa5b56f..57c91c0 100644 --- a/users/rouven/fixes.nix +++ b/users/rouven/fixes.nix @@ -1,5 +1,10 @@ { config, pkgs, ... }: { + # email passwords + sops.secrets."email/tu-dresden".owner = "rouven"; + sops.secrets."email/rfive".owner = "rouven"; + sops.secrets."email/google".owner = "rouven"; + # generate system completions programs.zsh.enable = true; diff --git a/users/rouven/modules/accounts/default.nix b/users/rouven/modules/accounts/default.nix index 7e68f32..5db4fe6 100644 --- a/users/rouven/modules/accounts/default.nix +++ b/users/rouven/modules/accounts/default.nix @@ -1,16 +1,34 @@ -{ config, ... }: +{ config, pkgs, ... }: let gpg-default-key = "116987A8DD3F78FF8601BF4DB95E8FE6B11C4D09"; in { - programs.thunderbird = { - enable = true; - profiles = { - default = { - withExternalGnupg = true; - isDefault = true; - }; + home.packages = with pkgs; [ + imv + w3m + urlview + ]; + services.mbsync.enable = true; + programs = { + neomutt = { + enable = true; + sidebar.enable = true; + checkStatsInterval = 30; + extraConfig = '' + bind pager noop + bind index,pager \Cp sidebar-prev + # Move the highlight to the next mailbox + bind index,pager \Cn sidebar-next + # Open the highlighted mailbox + bind index,pager sidebar-open + set mailcap_path = ${./mailcap} + source ${./vim-keys.rc} + source ${./dracula.muttrc} + source ${./powerline.neomuttrc} + ''; }; + mbsync.enable = true; + msmtp.enable = true; }; accounts.email.accounts = { "rouven@rfive.de" = rec { @@ -19,6 +37,7 @@ in gpg.key = gpg-default-key; realName = "Rouven Seifert"; userName = address; + passwordCommand = "${pkgs.coreutils}/bin/cat /run/secrets/email/rfive"; imap = { host = "pro1.mail.ovh.net"; port = 993; @@ -28,13 +47,28 @@ in port = 587; tls.useStartTls = true; }; - thunderbird.enable = true; + msmtp.enable = true; + mbsync = { + enable = true; + create = "maildir"; + extraConfig = { + account = { + AuthMechs = "Login"; + }; + }; + }; + neomutt = { + enable = true; + mailboxName = "--rouven@rfive.de--"; + extraMailboxes = [ "Sent" "Trash" "Junk-E-Mail" "Drafts" ]; + }; }; - "TU Dresden" = { + "TU-Dresden" = { address = "rouven.seifert@mailbox.tu-dresden.de"; gpg.key = gpg-default-key; realName = "Rouven Seifert"; - userName = "user\\rose159e"; + userName = "rose159e"; + passwordCommand = "${pkgs.coreutils}/bin/cat /run/secrets/email/tu-dresden"; imap = { host = "msx.tu-dresden.de"; port = 993; @@ -45,11 +79,36 @@ in tls.useStartTls = true; }; thunderbird.enable = true; + mbsync = { + enable = true; + create = "maildir"; + extraConfig = { + account = { + AuthMechs = "Login"; + }; + }; + }; + msmtp.enable = true; + neomutt = { + enable = true; + mailboxName = "--TU Dresden-------"; + # mbsync can't handle umlauts, crap + extraMailboxes = [ "Gesendete Elemente" "Opal" "Gel&APY-schte Elemente" "Junk-E-Mail" "Entw&APw-rfe" ]; + extraConfig = '' + unset postponed + unset trash + unset record + set postponed='+Entw&APw-rfe' + set trash='+Gel&APY-schte Elemente' + set record='+Gesendete Elemente' + ''; + }; }; - "Gmail" = rec { + "gmail" = rec { address = "seifertrouven@gmail.com"; realName = "Rouven Seifert"; userName = address; + passwordCommand = "${pkgs.coreutils}/bin/cat /run/secrets/email/google"; imap = { host = "imap.gmail.com"; port = 993; @@ -58,7 +117,32 @@ in host = "smtp.gmail.com"; port = 465; }; - thunderbird.enable = true; + mbsync = { + enable = true; + create = "maildir"; + extraConfig = { + account = { + AuthMechs = "Login"; + }; + }; + }; + msmtp.enable = true; + neomutt = { + enable = true; + mailboxName = "--gmail------------"; + extraMailboxes = [ "[Gmail]/Gesendet" "[Gmail]/Papierkorb" "[Gmail]/Spam" "[Gmail]/Entw&APw-rfe" ]; + extraConfig = '' + unset postponed + unset trash + unset record + set postponed='+[Gmail]/Entw&APw-rfe' + set trash='+[Gmail]/Papierkorb' + set record='+[Gmail/Gesendet]' + ''; + }; }; }; + home.file.".urlview".text = '' + COMMAND google-chrome-stable %s &> /dev/null + ''; } diff --git a/users/rouven/modules/accounts/dracula.muttrc b/users/rouven/modules/accounts/dracula.muttrc new file mode 100644 index 0000000..70e6035 --- /dev/null +++ b/users/rouven/modules/accounts/dracula.muttrc @@ -0,0 +1,51 @@ +############################################################################### +# Dracula Theme for Mutt: https://draculatheme.com/ +# +# @author Paul Townsend + +# general ------------ foreground ---- background ----------------------------- +color error color231 color212 +color indicator color231 color241 +color markers color210 default +color message default default +color normal default default +color prompt default default +color search color84 default +color status color141 color236 +color tilde color231 default +color tree color141 default + +# message index ------ foreground ---- background ----------------------------- +color index color210 default ~D # deleted messages +color index color84 default ~F # flagged messages +color index color117 default ~N # new messages +color index color212 default ~Q # messages which have been replied to +color index color215 default ~T # tagged messages +color index color141 default ~v # messages part of a collapsed thread + +# message headers ---- foreground ---- background ----------------------------- +color hdrdefault color117 default +color header color231 default ^Subject:.* + +# message body ------- foreground ---- background ----------------------------- +color attachment color228 default +color body color231 default [\-\.+_a-zA-Z0-9]+@[\-\.a-zA-Z0-9]+ # email addresses +color body color228 default (https?|ftp)://[\-\.,/%~_:?&=\#a-zA-Z0-9]+ # URLs +color body color231 default (^|[[:space:]])\\*[^[:space:]]+\\*([[:space:]]|$) # *bold* text +color body color231 default (^|[[:space:]])_[^[:space:]]+_([[:space:]]|$) # _underlined_ text +color body color231 default (^|[[:space:]])/[^[:space:]]+/([[:space:]]|$) # /italic/ text +color quoted color61 default +color quoted1 color117 default +color quoted2 color84 default +color quoted3 color215 default +color quoted4 color212 default +color signature color212 default + +color sidebar_indicator cyan black +color sidebar_highlight white color8 +color sidebar_divider color8 black +color sidebar_flagged red black +color sidebar_new green black +color sidebar_ordinary color245 default +color sidebar_spool_file color207 default +color sidebar_unread color136 default diff --git a/users/rouven/modules/accounts/mailcap b/users/rouven/modules/accounts/mailcap new file mode 100644 index 0000000..106b785 --- /dev/null +++ b/users/rouven/modules/accounts/mailcap @@ -0,0 +1,6 @@ +text/plain; w3m -I %{charset} -T text/plain; copiousoutput; +text/html; w3m -I %{charset} -T text/html; copiousoutput; +image/*; setsid imv %s >/dev/null & ; +video/*; setsid mpv --quiet %s >/dev/null &; +audio/*; mpv %s ; +application/pdf; setsid evince %s >/dev/null & ; diff --git a/users/rouven/modules/accounts/powerline.neomuttrc b/users/rouven/modules/accounts/powerline.neomuttrc new file mode 100644 index 0000000..9ffea48 --- /dev/null +++ b/users/rouven/modules/accounts/powerline.neomuttrc @@ -0,0 +1,46 @@ +# ---------------------------------------------------------------------------- +# Powerline / nerdfont +# This is a bit "hackish" due to neomutt limitations +# +# Author: Sheoak +# ---------------------------------------------------------------------------- +set index_format=" %zs %zc %zt %{!%d %b} . %-28.28L %?M?(%1M)& ? %?X?&·? %s" +set pager_format=" %n %zc  %T %s%*  %{!%d %b · %H:%M} %?X?  %X ? %P  " +set status_format = " %f%?r? %r?   %m %?n?  %n ?  %?d?  %d ?%?t?  %t ?%?F?  %F? %> %?p?  %p ?" +set vfolder_format = " %N %?n?%3n& ? %8m  · %f" +set attach_format = "%u%D  %T%-75.75d %?T?%& ? %5s · %m/%M" + +# no addressed to me, to me, group, cc, sent by me, mailing list +set to_chars="➜" +# unchanged mailbox, changed, read only, attach mode +set status_chars = " " +ifdef crypt_chars set crypt_chars = " " +set flag_chars = " " + +set hidden_tags = "unread,draft,flagged,passed,replied,attachment,signed,encrypted" +tag-transforms "replied" "↻ " \ + "encrytpted" "" \ + "signed" "" \ + "attachment" "" \ + +# The formats must start with 'G' and the entire sequence is case sensitive. +tag-formats "replied" "GR" \ + "encrypted" "GE" \ + "signed" "GS" \ + "attachment" "GA" \ + +color status white black +# powerline status bar hack +color status green black '' +color status yellow black '' +color status red black '' +color status brightblack blue '(.*)' 1 +color status blue black '.*()' 1 +color status black blue '\s* [0-9]+\s*' +color status blue black '().*$' 1 +color status yellow black '()\s*\s*[0-9]+\s*' 1 +color status black yellow '\s*\s*[0-9]+\s*' +color status blue yellow '() ([0-9]+%|all|end) \s*' 1 +color status black blue ' ([0-9]+%|all|end) \s*' +color status yellow black '()\s*' 1 +color status default black '' diff --git a/users/rouven/modules/accounts/vim-keys.rc b/users/rouven/modules/accounts/vim-keys.rc new file mode 100644 index 0000000..c3fb61b --- /dev/null +++ b/users/rouven/modules/accounts/vim-keys.rc @@ -0,0 +1,35 @@ +#------------------------------------------------------------ +# Vi Key Bindings +#------------------------------------------------------------ + +# Moving around +bind attach,browser,index g noop +bind attach,browser,index gg first-entry +bind attach,browser,index G last-entry +bind pager g noop +bind pager gg top +bind pager G bottom +bind pager k previous-line +bind pager j next-line + +# Scrolling +bind attach,browser,pager,index \CF next-page +bind attach,browser,pager,index \CB previous-page +bind attach,browser,pager,index \Cu half-up +bind attach,browser,pager,index \Cd half-down +bind browser,pager \Ce next-line +bind browser,pager \Cy previous-line +bind index \Ce next-line +bind index \Cy previous-line + +bind pager,index d noop +bind pager,index dd delete-message + +# Threads +bind browser,pager,index N search-opposite +bind pager,index dT delete-thread +bind pager,index dt delete-subthread +bind pager,index gt next-thread +bind pager,index gT previous-thread +bind index za collapse-thread +bind index zA collapse-all # Missing :folddisable/foldenable