summaryrefslogtreecommitdiff
path: root/accounts/gkleen@skadhi/rzm/default.nix
diff options
context:
space:
mode:
authorGregor Kleen <gkleen@yggdrasil.li>2026-09-27 12:37:52 +0200
committerGregor Kleen <gkleen@yggdrasil.li>2026-09-27 12:37:52 +0200
commitbadf7aba844967c5d13e01079c12df758715167a (patch)
tree3c0872b667a64a82caf7bab3d2503c9f7a6444b9 /accounts/gkleen@skadhi/rzm/default.nix
parent74d97f767ac4d6f05ce95e388460a49c5190afc3 (diff)
downloadnixos-badf7aba844967c5d13e01079c12df758715167a.tar
nixos-badf7aba844967c5d13e01079c12df758715167a.tar.gz
nixos-badf7aba844967c5d13e01079c12df758715167a.tar.bz2
nixos-badf7aba844967c5d13e01079c12df758715167a.tar.xz
nixos-badf7aba844967c5d13e01079c12df758715167a.zip
Diffstat (limited to 'accounts/gkleen@skadhi/rzm/default.nix')
-rw-r--r--accounts/gkleen@skadhi/rzm/default.nix161
1 files changed, 161 insertions, 0 deletions
diff --git a/accounts/gkleen@skadhi/rzm/default.nix b/accounts/gkleen@skadhi/rzm/default.nix
new file mode 100644
index 00000000..efe5468e
--- /dev/null
+++ b/accounts/gkleen@skadhi/rzm/default.nix
@@ -0,0 +1,161 @@
1{ config, pkgs, ... }:
2let
3 mwnSubnetsPublic =
4 [ "129.187.0.0/16" "141.40.0.0/16" "141.84.0.0/16"
5 "192.68.211.0/24" "192.68.212.0/24" "192.68.213.0/24" "192.68.214.0/24" "192.68.215.0/24"
6 "193.174.96.0/22"
7 "194.95.59.0/24"
8 ];
9 mwnSubnetsPrivate =
10 [ "10.153.0.0/16" "10.162.0.0/16" "10.156.0.0/16"
11 ];
12in {
13 config = {
14 systemd.network = {
15 config.routeTables.wgrz = 1025;
16 netdevs = {
17 wgrz = {
18 netdevConfig = {
19 Name = "wgrz";
20 Kind = "wireguard";
21 MTUBytes = "1558";
22 };
23 wireguardConfig = {
24 PrivateKeyFile = "/run/credentials/systemd-networkd.service/wgrz.priv";
25 ListenPort = 51822;
26 # FirewallMark = 1;
27 };
28 wireguardPeers = [
29 { AllowedIPs = [ "10.200.116.1/32" "10.163.88.40/32" ] ++ mwnSubnetsPrivate ++ mwnSubnetsPublic;
30 PublicKey = "YlRFLc+rD2k2KXl7pIJbOKbcPgdJCl8ZTsv0xlK4VEI=";
31 PersistentKeepalive = 25;
32 Endpoint = "wg.math.lmu.de:51820";
33 }
34 ];
35 };
36 };
37 networks = {
38 wgrz = {
39 name = "wgrz";
40 matchConfig = {
41 Name = "wgrz";
42 };
43 address = ["10.200.116.131/24"];
44 routes = map (Destination: {
45 inherit Destination;
46 Gateway = "10.200.116.1";
47 GatewayOnLink = true;
48 Table = "wgrz";
49 }) (mwnSubnetsPrivate ++ mwnSubnetsPublic ++ ["10.163.88.40/32"]);
50 routingPolicyRules = [
51 { Table = "main";
52 # FirewallMark = 1;
53 To = "129.187.111.225";
54 Priority = 100;
55 }
56 { Table = "main";
57 To = "10.153.91.204";
58 Priority = 100;
59 }
60 { Table = "wgrz";
61 From = "10.200.116.131";
62 Priority = 200;
63 }
64 { Table = "wgrz";
65 To = "10.163.88.40";
66 Priority = 200;
67 }
68 ] ++ map (To: { Table = "wgrz";
69 inherit To;
70 Priority = 200;
71 }) (mwnSubnetsPrivate ++ mwnSubnetsPublic);
72 linkConfig = {
73 RequiredForOnline = false;
74 };
75 networkConfig = {
76 LLMNR = false;
77 MulticastDNS = false;
78 DNS = ["10.153.88.9" "129.187.111.202" "10.156.33.53"];
79 # Tunnel = "rz-gre-1";
80 };
81 };
82 };
83 };
84 networking.networkmanager.unmanaged = ["wgrz"];
85 sops.secrets.wgrz = {
86 format = "binary";
87 sopsFile = ./wgrz.priv;
88 };
89 systemd.services."systemd-networkd".serviceConfig.LoadCredential = [
90 "wgrz.priv:${config.sops.secrets.wgrz.path}"
91 ];
92
93 environment.etc."NetworkManager/dnsmasq.d/wgrz.conf" = {
94 text = ''
95 server=/mathinst.loc/10.153.88.9@wgrz
96 server=/cipmath.loc/10.153.88.9@wgrz
97 '';
98 };
99
100 home-manager.users.gkleen = { sysConfig, config, ... }: {
101 home.persistence."/persistent".files = [
102 "rz.kdbx" ".config/Element-lmu"
103 ];
104
105 xdg.desktopEntries = {
106 element-lmu = {
107 name = "Element (LMU)";
108 exec = "element-desktop --profile=lmu %u";
109 icon = "element";
110 genericName = "Matrix Client";
111 categories = [ "Network" "InstantMessaging" "Chat" ];
112 settings = {
113 StartupWMClass = "Element";
114 };
115 };
116 thunderbird-lmu = {
117 name = "Thunderbird (LMU)";
118 exec = "thunderbird --name thunderbird -P lmu %U";
119 icon = "thunderbird";
120 genericName = "Email Client";
121 categories = [ "Network" "Chat" "Email" "Feed" "GTK" "News" ];
122 settings = {
123 StartupWMClass = "thunderbird";
124 StartupNotify = "true";
125 };
126 };
127 };
128
129 programs.zsh.dirHashes = {
130 u2w = "$HOME/projects/uni2work";
131 rz = "$HOME/projects/rz";
132 pro = "$HOME/projects/pro";
133 };
134
135 programs.ssh.matchBlocks = {
136 "*.mathinst.loc" = {
137 match = "host *.mathinst.loc,*.cipmath.loc,*.math.lmu.de";
138 identityFile = "~/.ssh/gkleen@mathinst.loc";
139 extraOptions = {
140 HostKeyAlgorithms = "+ssh-rsa";
141 PubkeyAcceptedAlgorithms = "+ssh-rsa";
142 PasswordAuthentication = "yes";
143 GlobalKnownHostsFile = toString (pkgs.writeText "ssh_known_hosts" ''
144 @cert-authority *.mathinst.loc,*.math.lmu.de,*.cipmath.loc ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIBUTFpVCdETCXiDSDl7YGbR1J4BLTsoBzjDtflHJGO/z ssh-pki@mgmt01
145 '');
146 };
147 };
148 };
149
150 home.file = {
151 ".cups/client.conf".text = ''
152 ServerName cups.mathinst.loc
153 '';
154 };
155
156 home.packages = with pkgs; [
157 cups
158 ];
159 };
160 };
161}