From e7a4594300daf35f5160ee2f1fb0e6a401a34f45 Mon Sep 17 00:00:00 2001
From: Rouven Seifert <rouven@rfive.de>
Date: Sat, 27 Jan 2024 23:03:29 +0100
Subject: [PATCH 1/2] matrix: enable element-web

---
 hosts/nuc/modules/matrix/default.nix | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/hosts/nuc/modules/matrix/default.nix b/hosts/nuc/modules/matrix/default.nix
index 86f4ff2..895fc8b 100644
--- a/hosts/nuc/modules/matrix/default.nix
+++ b/hosts/nuc/modules/matrix/default.nix
@@ -1,6 +1,12 @@
 { config, pkgs, ... }:
 let
   domain = "matrix.${config.networking.domain}";
+  domainClient = "chat.${config.networking.domain}";
+  clientConfig = {
+    "m.homeserver" = {
+      base_url = "https://${domain}:443";
+    };
+  };
 in
 {
 
@@ -73,6 +79,23 @@ in
           locations."~ ^/(client/|_matrix/client/unstable/org.matrix.msc3575/sync)".proxyPass = "http://localhost:8009";
           # locations."/_synapse/client".proxyPass = "http://[::1]:8008";
         };
+
+
+        # element
+        "${domainClient}" = {
+          enableACME = true;
+          forceSSL = true;
+
+          root = pkgs.element-web.override {
+            conf = {
+              default_server_config = {
+                inherit (clientConfig) "m.homeserver";
+                "m.identity_server".base_url = "";
+              };
+              disable_3pid_login = true;
+            };
+          };
+        };
       };
     };
   };

From b3329fd1a9be076b7a74b7b026ac0e413cf101a0 Mon Sep 17 00:00:00 2001
From: Rouven Seifert <rouven@rfive.de>
Date: Sat, 27 Jan 2024 23:03:53 +0100
Subject: [PATCH 2/2] home: remove declarative account configuration

---
 flake.lock                                |  12 +-
 hosts/thinkpad/default.nix                |   5 +-
 secrets.nix                               |   5 -
 secrets/rouven/mail/agdsn.age             | Bin 386 -> 0 bytes
 secrets/rouven/mail/google.age            |   8 -
 secrets/rouven/mail/ifsr.age              |   8 -
 secrets/rouven/mail/rfive.age             |   8 -
 secrets/rouven/mail/tu-dresden.age        | Bin 328 -> 0 bytes
 users/rouven/modules/accounts/default.nix | 291 ----------------------
 users/rouven/modules/default.nix          |   1 -
 users/rouven/modules/packages.nix         |  30 +++
 users/rouven/modules/spotify/default.nix  |   2 +-
 users/rouven/modules/ssh/default.nix      |  17 +-
 13 files changed, 53 insertions(+), 334 deletions(-)
 delete mode 100644 secrets/rouven/mail/agdsn.age
 delete mode 100644 secrets/rouven/mail/google.age
 delete mode 100644 secrets/rouven/mail/ifsr.age
 delete mode 100644 secrets/rouven/mail/rfive.age
 delete mode 100644 secrets/rouven/mail/tu-dresden.age
 delete mode 100644 users/rouven/modules/accounts/default.nix

diff --git a/flake.lock b/flake.lock
index 5b54bca..991ccaa 100644
--- a/flake.lock
+++ b/flake.lock
@@ -180,11 +180,11 @@
         ]
       },
       "locked": {
-        "lastModified": 1706134977,
-        "narHash": "sha256-KwNb1Li3K6vuVwZ77tFjZ89AWBo7AiCs9t0Cens4BsM=",
+        "lastModified": 1706306660,
+        "narHash": "sha256-lZvgkHtVeduGByPb0Tz9LpAi4olfkEm8XPgv0o7GRsk=",
         "owner": "nix-community",
         "repo": "home-manager",
-        "rev": "6359d40f6ec0b72a38e02b333f343c3d4929ec10",
+        "rev": "b2f56952074cb46e93902ecaabfb04dd93733434",
         "type": "github"
       },
       "original": {
@@ -296,11 +296,11 @@
     },
     "nixpkgs": {
       "locked": {
-        "lastModified": 1705856552,
-        "narHash": "sha256-JXfnuEf5Yd6bhMs/uvM67/joxYKoysyE3M2k6T3eWbg=",
+        "lastModified": 1706191920,
+        "narHash": "sha256-eLihrZAPZX0R6RyM5fYAWeKVNuQPYjAkCUBr+JNvtdE=",
         "owner": "NixOS",
         "repo": "nixpkgs",
-        "rev": "612f97239e2cc474c13c9dafa0df378058c5ad8d",
+        "rev": "ae5c332cbb5827f6b1f02572496b141021de335f",
         "type": "github"
       },
       "original": {
diff --git a/hosts/thinkpad/default.nix b/hosts/thinkpad/default.nix
index c014fb7..23134f1 100755
--- a/hosts/thinkpad/default.nix
+++ b/hosts/thinkpad/default.nix
@@ -93,6 +93,9 @@
     };
   };
 
-  documentation.dev.enable = true;
+  documentation = {
+    dev.enable = true;
+    man.generateCaches = true;
+  };
   system.stateVersion = "22.11";
 }
diff --git a/secrets.nix b/secrets.nix
index 12bac9e..430d4c8 100644
--- a/secrets.nix
+++ b/secrets.nix
@@ -32,10 +32,5 @@ in
   "secrets/falkenstein/borg/key.age".publicKeys = [ rouven falkenstein ];
 
   # rouven (home manager)
-  "secrets/rouven/mail/rfive.age".publicKeys = [ rouven ];
-  "secrets/rouven/mail/ifsr.age".publicKeys = [ rouven ];
-  "secrets/rouven/mail/tu-dresden.age".publicKeys = [ rouven ];
-  "secrets/rouven/mail/agdsn.age".publicKeys = [ rouven ];
-  "secrets/rouven/mail/google.age".publicKeys = [ rouven ];
   "secrets/rouven/spotify.age".publicKeys = [ rouven ];
 }
diff --git a/secrets/rouven/mail/agdsn.age b/secrets/rouven/mail/agdsn.age
deleted file mode 100644
index f49bfcc6e428b338993ab028444c579d05cb2fd4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 386
zcmWm7&u^1Z003amoIRKrlO`UFHWbQlGBqibQbsAIw1p6p1@<VkP+r?t${u$UqsJY0
z-(fQzcJpB3W%0i-dUW?4cG(ucf8Yy~n2d|#Ene>yuxP<;LhaiG`M!ZrO2&ZU`L^6B
zy{OZ78n930gUI)%GGdM1%9XgTw?ZmNS#g~r!yI+lP{Hav?I#4+mqgo{%ot6zihOFP
zJFn@g>l&x2UX2|g0PxVzXhyNK{~M>i3SL&2Otx`|VuC@3InbkJU6o)+7hH9+;4!v`
z3I-b^(h394t868Q<Iv3Ff#hi$dLWmRlF5$SylacZMjKgy<42=z6_xoAvW#GHN@5M_
zQeUdB;RHLDiv9h}5(`C;XtO75nsZ7AkisH8SrP<El8u@Z^z?-1wtIDgN7D=;pO*l=
zubIFD-DWZ`^Uh8VB-)!2?)B}jhwspB{TM#``1vaQIsWqP1$B9Pee?V4l7i<~pUe+;
ZPf!26Ht*k@{r&gu;O&fbFP=X+dIV`Ah2a1I

diff --git a/secrets/rouven/mail/google.age b/secrets/rouven/mail/google.age
deleted file mode 100644
index d61d380..0000000
--- a/secrets/rouven/mail/google.age
+++ /dev/null
@@ -1,8 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 uWbAHQ NCh3pLPZc0yFNmZD2BNjwTaMWm6pKX0JZcQmARfDzwo
-tLw4JjYImQ7Sx5zC5A+MtdifsyZ4gfKtnEE37oPtO00
--> 9)3p3u-grease +=v = @x Mbn`+p
-9oxiykzLx/ZhSKwEnFynCUgPDq1AXJAGsT5Qa2g7+1FQoWwJMB7oMECKt5vF2a/h
-1GFeeRfFUWw4FCu8iE77OsLWIyQcOX20xcdhdqxA+A
---- wjfDMipqiLXDA6u8T1UH1w8Tm+Xj2PFp8szWSsHnDYA
-I���hI�>�E�2���b1��y�0�4��%�(�\/dۯ���Y:
\ No newline at end of file
diff --git a/secrets/rouven/mail/ifsr.age b/secrets/rouven/mail/ifsr.age
deleted file mode 100644
index 1fb131d..0000000
--- a/secrets/rouven/mail/ifsr.age
+++ /dev/null
@@ -1,8 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 uWbAHQ 0Uy/VY+06acvXjAKFy5jcN8q692+8sZH9E3ZUHSaUUo
-6T56w2tmJAvaeGb5oHPyU1t8mexFnV+foVoJl98G6rQ
--> fE4oms$-grease - !fp3#J th
-OA
---- IIBHPUhMYp1bS9Yig7YAyi+abT66ZRd2PyZdPk+k1dg
-�,h-��Lf^O��ǘ��juٝ���x`Q�;�\��cTK\
-� �r~?�trX�
\ No newline at end of file
diff --git a/secrets/rouven/mail/rfive.age b/secrets/rouven/mail/rfive.age
deleted file mode 100644
index b95c142..0000000
--- a/secrets/rouven/mail/rfive.age
+++ /dev/null
@@ -1,8 +0,0 @@
-age-encryption.org/v1
--> ssh-ed25519 uWbAHQ oELRB+KJpT8EfcqyNEdtfaJgiN9aX/1mgKHxqKCPyF8
-ZxVFzwByLOSbSIsX3QtHmEDb5a5Xo/bkHNIgJQqB2cU
--> m-grease (HaFdz_<
-nhPnLs6P+M/Yw9TxmTZ6gKXmQusgFz46+/Ad8QA9YlcjkM9hhEsJkTBoLp6uv++8
-Gjfle0y4R/p7xIOyLKGat5wPXCzk4XxTz8o7c9IXshRR+unkRthsEG6qebNR
---- CFBseeDK5oKdeH1yLe1tVWPkmcWtSPrwtbxrAqJsydc
-��iNZ��(z�W�7�~�"���r�M�[�.��-dQ�R���lC�lD�I-��:��5t?���(��X���"
\ No newline at end of file
diff --git a/secrets/rouven/mail/tu-dresden.age b/secrets/rouven/mail/tu-dresden.age
deleted file mode 100644
index b887c87390743f1dc7327273a89e472e0ee51006..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 328
zcmYdHPt{G$OD?J`D9Oyv)5|YP*Do{V(zR14F3!+RO))YxHMCSH4Nr3P2vjJ}@Qn=9
zcB;s6Ey&XkNDr!vO3o~I_whE<_f9eQb`LGevGj||3^q#-&gOCrF)TOqtTHIiG|usN
zimGxl4GlN3C=K__NKEnZP0n@Fb_{aL@zzfC4F%bjr<-1snpm8wpq!d*7ZvHtRb{O0
zm{o3A<X;%&?P`(hV^*r~T@e{o>St)4;$Lj$;hyR3U*%pAY+T|JUga2-WNH`{6cALd
zT~+Ajnpluj$YoMkn5~};G+b9#A;QzOu*fLLCn>_!EfT28*T>h)#mCghA}iUT+^NFR
z*Uj9*ue{Jn+s~2fx_Ij3ZAn^+i<VBRmc3}O`Q#sG)s-im|K{G2QWL!2^-1V5r~gM0
WUBRskHS9?Wx1P(GUzdJ8wGjY9iEo+!

diff --git a/users/rouven/modules/accounts/default.nix b/users/rouven/modules/accounts/default.nix
deleted file mode 100644
index 802002c..0000000
--- a/users/rouven/modules/accounts/default.nix
+++ /dev/null
@@ -1,291 +0,0 @@
-{ config, pkgs, ... }:
-let
-  gpg-default-key = "116987A8DD3F78FF8601BF4DB95E8FE6B11C4D09";
-in
-{
-  age.secrets = {
-    "mail/rfive".file = ../../../../secrets/rouven/mail/rfive.age;
-    "mail/tu-dresden".file = ../../../../secrets/rouven/mail/tu-dresden.age;
-    "mail/ifsr".file = ../../../../secrets/rouven/mail/ifsr.age;
-    "mail/agdsn".file = ../../../../secrets/rouven/mail/agdsn.age;
-    "mail/google".file = ../../../../secrets/rouven/mail/google.age;
-  };
-  programs = {
-    aerc = {
-      enable = true;
-      extraConfig = {
-        general = {
-          unsafe-accounts-conf = true;
-        };
-        ui = {
-          sort = "date";
-          dirlist-tree = true;
-          fuzzy-complete = true;
-          styleset-name = "dracula";
-          threading-enabled = true;
-          icon-encrypted = "󰯄";
-          icon-signed = "";
-          icon-unknown = "";
-          icon-attachment = "";
-          icon-new = "";
-          icon-old = "";
-          icon-replied = "";
-          icon-marked = "";
-          icon-deleted = "";
-        };
-        filters = {
-          "text/plain" = "colorize";
-          "text/html" = "html | colorize";
-          "message/delivery-status" = "colorize";
-          "message/rfc822" = "colorize";
-          "text/calendar" = "calendar";
-        };
-      };
-
-    };
-    thunderbird = {
-      enable = true;
-      profiles = {
-        default = {
-          withExternalGnupg = true;
-          isDefault = true;
-          settings = {
-            "intl.date_time.pattern_override.connector_short" = "{1} {0}";
-            "intl.date_time.pattern_override.date_short" = "yyyy-MM-dd";
-            "intl.date_time.pattern_override.time_short" = "HH:mm";
-          };
-        };
-      };
-    };
-    mbsync.enable = true;
-  };
-  accounts.email.accounts = {
-    "rouven@rfive.de" = rec {
-      address = "rouven@rfive.de";
-      gpg.key = gpg-default-key;
-      realName = "Rouven Seifert";
-      userName = address;
-      passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets."mail/rfive".path}";
-      imap = {
-        host = "mail.rfive.de";
-        port = 993;
-      };
-      smtp = {
-        host = "mail.rfive.de";
-        port = 465;
-      };
-      thunderbird.enable = true;
-      mbsync = {
-        enable = true;
-        create = "maildir";
-        expunge = "both";
-        extraConfig = {
-          account = {
-            AuthMechs = "Login";
-          };
-        };
-      };
-      aerc.enable = true;
-    };
-    "TU-Dresden" = rec {
-      address = "rouven.seifert@mailbox.tu-dresden.de";
-      gpg.key = gpg-default-key;
-      realName = "Rouven Seifert";
-      userName = "rose159e";
-      passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets."mail/tu-dresden".path}";
-      imap = {
-        host = "msx.tu-dresden.de";
-        port = 993;
-      };
-      smtp = {
-        host = "msx.tu-dresden.de";
-        port = 587;
-        tls.useStartTls = true;
-      };
-      mbsync = {
-        enable = true;
-        create = "maildir";
-        expunge = "both";
-        groups.tud = {
-          channels.inbox = {
-            nearPattern = "INBOX";
-            farPattern = "INBOX";
-            extraConfig.Create = "near";
-          };
-          channels.opal = {
-            nearPattern = "Opal";
-            farPattern = "Opal";
-            extraConfig.Create = "near";
-          };
-          channels.unispam = {
-            nearPattern = "Uni Spam";
-            farPattern = "Uni Spam";
-            extraConfig.Create = "near";
-          };
-          # channels.modules = {
-          #   nearPattern = "Module";
-          #   farPattern = "Module";
-          #   extraConfig.Create = "near";
-          # };
-          channels.trash = {
-            nearPattern = "Trash";
-            farPattern = "Gel&APY-schte Elemente";
-            extraConfig.Create = "near";
-          };
-          channels.sent = {
-            nearPattern = "Sent";
-            farPattern = "Gesendete Elemente";
-            extraConfig.Create = "near";
-          };
-          channels.junk = {
-            nearPattern = "Junk";
-            farPattern = "Junk-E-Mail";
-            extraConfig.Create = "near";
-          };
-          channels.drafts = {
-            nearPattern = "Drafts";
-            farPattern = "Entw&APw-rfe";
-            extraConfig.Create = "near";
-          };
-        };
-        extraConfig = {
-          account = {
-            AuthMechs = "Login";
-          };
-        };
-      };
-      thunderbird.enable = true;
-      aerc.enable = true;
-    };
-    "iFSR" = rec {
-      address = "rouven.seifert@ifsr.de";
-      signature = {
-        showSignature = "append";
-        text = ''
-          Rouven Seifert
-
-          Co-Admin im Fachschaftsrat Informatik TU Dresden
-          Fakultät Informatik
-          Nöthnitzer Str. 46, 01187 Dresden
-        '';
-      };
-      primary = true;
-      gpg.key = gpg-default-key;
-      realName = "Rouven Seifert";
-      userName = "rouven.seifert";
-      passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets."mail/ifsr".path}";
-      imap = {
-        host = "mail.ifsr.de";
-        port = 993;
-      };
-      smtp = {
-        host = "mail.ifsr.de";
-        port = 465;
-      };
-      mbsync = {
-        enable = true;
-        create = "maildir";
-        expunge = "both";
-        extraConfig = {
-          account = {
-            AuthMechs = "Login";
-          };
-        };
-      };
-      thunderbird.enable = true;
-      aerc.enable = true;
-    };
-    "agdsn" = rec {
-      address = "r5@agdsn.me";
-      # gpg.key = gpg-default-key;
-      realName = "Rouven Seifert";
-      userName = "r5@agdsn.me";
-      aliases = [
-        "r5@agdsn.de"
-        "rouven.seifert@agdsn.de"
-      ];
-      passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets."mail/agdsn".path}";
-      imap = {
-        host = "imap.agdsn.de";
-        port = 993;
-      };
-      smtp = {
-        host = "smtp.agdsn.de";
-        port = 465;
-      };
-      mbsync = {
-        enable = true;
-        create = "maildir";
-        expunge = "both";
-        extraConfig = {
-          account = {
-            AuthMechs = "Login";
-          };
-        };
-      };
-      thunderbird.enable = true;
-      aerc.enable = true;
-    };
-    "gmail" = rec {
-      address = "seifertrouven@gmail.com";
-      realName = "Rouven Seifert";
-      userName = address;
-      passwordCommand = "${pkgs.coreutils}/bin/cat ${config.age.secrets."mail/google".path}";
-      imap = {
-        host = "imap.gmail.com";
-        port = 993;
-      };
-      smtp = {
-        host = "smtp.gmail.com";
-        port = 465;
-      };
-      mbsync = {
-        enable = true;
-        create = "maildir";
-        expunge = "both";
-        groups.gmail = {
-          channels.inbox = {
-            nearPattern = "INBOX";
-            farPattern = "INBOX";
-            extraConfig.Create = "near";
-          };
-          channels.trash = {
-            nearPattern = "Trash";
-            farPattern = "[Gmail]/Papierkorb";
-            extraConfig.Create = "near";
-          };
-          channels.junk = {
-            nearPattern = "Junk";
-            farPattern = "[Gmail]/Spam";
-            extraConfig.Create = "near";
-          };
-          channels.drafts = {
-            nearPattern = "Drafts";
-            farPattern = "[Gmail]/Entw&APw-rfe";
-            extraConfig.Create = "near";
-          };
-          channels.hetzner = {
-            nearPattern = "Hetzner";
-            farPattern = "Hetzner";
-            extraConfig.Create = "near";
-          };
-          channels.studentenwerk = {
-            nearPattern = "Studentenwerk";
-            farPattern = "Studentenwerk";
-            extraConfig.Create = "near";
-          };
-        };
-        extraConfig = {
-          account = {
-            AuthMechs = "Login";
-          };
-        };
-      };
-      thunderbird.enable = true;
-      aerc.enable = true;
-    };
-  };
-  home.file.".gnupg/dirmngr_ldapservers.conf".text = ''
-    ldap.pca.dfn.de::::o=DFN-Verein,c=DE
-  '';
-}
diff --git a/users/rouven/modules/default.nix b/users/rouven/modules/default.nix
index 10a654f..6896c64 100644
--- a/users/rouven/modules/default.nix
+++ b/users/rouven/modules/default.nix
@@ -1,7 +1,6 @@
 { ... }:
 {
   imports = [
-    ./accounts
     ./foot
     ./git
     ./gpg
diff --git a/users/rouven/modules/packages.nix b/users/rouven/modules/packages.nix
index b20a00e..372622b 100644
--- a/users/rouven/modules/packages.nix
+++ b/users/rouven/modules/packages.nix
@@ -64,13 +64,43 @@
     nodejs_20
     gnumake
     go
+
+    # fancy tools
     just
+    himalaya
+    zellij
+    nushell
+    # strace but with colors
+    (strace.overrideAttrs (_: {
+      patches = [
+        (fetchpatch {
+          url = "https://raw.githubusercontent.com/xfgusta/strace-with-colors/main/strace-with-colors.patch";
+          hash = "sha256-gcQldGsRgvGnrDX0zqcLTpEpchNEbCUFdKyii0wetEI=";
+        })
+      ];
+    }))
 
   ];
 
 
   programs.obs-studio.enable = true;
   programs.firefox.enable = true;
+  programs = {
+    thunderbird = {
+      enable = true;
+      profiles = {
+        default = {
+          withExternalGnupg = true;
+          isDefault = true;
+          settings = {
+            "intl.date_time.pattern_override.connector_short" = "{1} {0}";
+            "intl.date_time.pattern_override.date_short" = "yyyy-MM-dd";
+            "intl.date_time.pattern_override.time_short" = "HH:mm";
+          };
+        };
+      };
+    };
+  };
   services.gnome-keyring.enable = true;
 
   xdg.mimeApps = {
diff --git a/users/rouven/modules/spotify/default.nix b/users/rouven/modules/spotify/default.nix
index 148d69f..84c0ea5 100644
--- a/users/rouven/modules/spotify/default.nix
+++ b/users/rouven/modules/spotify/default.nix
@@ -8,7 +8,7 @@
     enable = true;
     settings = {
       global = {
-        username = config.accounts.email.accounts."gmail".address;
+        username = "seifertrouven@gmail.com";
         password_cmd = "${pkgs.coreutils}/bin/cat ${config.age.secrets.spotify.path}";
       };
       backend = "pulseaudio";
diff --git a/users/rouven/modules/ssh/default.nix b/users/rouven/modules/ssh/default.nix
index fc1758c..fb95c2e 100644
--- a/users/rouven/modules/ssh/default.nix
+++ b/users/rouven/modules/ssh/default.nix
@@ -53,19 +53,26 @@ in
           RequestTTY = "yes";
           RemoteCommand = "zsh -i";
         };
-
       };
       "quitte-notty" = {
         hostname = "quitte.ifsr.de";
         user = "root";
       };
-      "durian" = {
-        hostname = "durian.ifsr.de";
-        user = "root";
-      };
       "tomate" = {
         hostname = "tomate.ifsr.de";
         user = "root";
+        extraOptions = {
+          RequestTTY = "yes";
+          RemoteCommand = "zsh -i";
+        };
+      };
+      "tomate-notty" = {
+        hostname = "tomate.ifsr.de";
+        user = "root";
+      };
+      "durian" = {
+        hostname = "durian.ifsr.de";
+        user = "root";
       };
       "git@ifsr.de" = {
         match = "Host ifsr.de User git";