summaryrefslogtreecommitdiff
path: root/accounts
diff options
context:
space:
mode:
Diffstat (limited to 'accounts')
-rw-r--r--accounts/gkleen@sif/default.nix606
1 files changed, 309 insertions, 297 deletions
diff --git a/accounts/gkleen@sif/default.nix b/accounts/gkleen@sif/default.nix
index 66328970..4d4eb7be 100644
--- a/accounts/gkleen@sif/default.nix
+++ b/accounts/gkleen@sif/default.nix
@@ -43,350 +43,362 @@ in {
43 imports = with flake.nixosModules.userProfiles.${userName}; [ 43 imports = with flake.nixosModules.userProfiles.${userName}; [
44 mpv yt-dlp (args: import ./xcompose.nix (inputs // args)) 44 mpv yt-dlp (args: import ./xcompose.nix (inputs // args))
45 ]; 45 ];
46 46
47 config.home-manager.users.${userName} = { 47 config = {
48 nixpkgs.config = { 48 services.xserver = {
49 allowUnfree = true; 49 displayManager.defaultSession = "none+xmonad";
50 zathura.useMupdf = false; 50
51 }; 51 windowManager.session = [{
52 52 name = "xmonad";
53 programs = { 53 start = ''
54 ssh = { 54 ${pkgs.systemd}/bin/systemd-cat -t xmonad -- ${pkgs.coreutils}/bin/env -u SHLVL -- ${xmonad}/bin/xmonad &
55 matchBlocks = import ./ssh-hosts.nix { inherit pkgs; }; # customUtils.nixImport { dir = ./ssh-hosts; }; 55 waitPID=$!
56 extraConfig = ''
57 Match host uniworx3.ifi.lmu.de,uniworx4.ifi.lmu.de,uniworx5.ifi.lmu.de,uni2workgw.ifi.lmu.de,blackbeard.tcs.ifi.lmu.de,gitlab2.rz.ifi.lmu.de,oregon.tcs.ifi.lmu.de !exec "nc -z -w 1 %h %p &>/dev/null"
58 ProxyJump remote.cip.ifi.lmu.de
59
60 Match host *.mathinst.loc,*.cipmath.loc,*.math.lmu.de
61 IdentityFile ~/.ssh/gkleen@mathinst.loc
62 HostKeyAlgorithms +ssh-rsa
63 PubkeyAcceptedAlgorithms +ssh-rsa
64 ConnectTimeout 30
65 PasswordAuthentication yes
66 KbdInteractiveAuthentication yes
67
68 Match host *.mathinst.loc !host mathw0g.mathinst.loc !exec "nc -z -w 1 %h %p &>/dev/null"
69 # ProxyCommand ${pkgs.socat}/bin/socat - SOCKS4A:127.0.0.1:%h:%p,socksport=8118
70 ProxyJump mathw0g
71
72 Match host mathw0g.mathinst.loc !exec "nc -z -w 1 %h %p &>/dev/null"
73 HostName mathw0g.math.lmu.de
74
75 Match host *.cipmath.loc !exec "nc -z -w 1 %h %p &>/dev/null"
76 ProxyJump mathw0h
77
78 Match host *.ifi.lmu.de,*.math.lmu.de
79 AddressFamily inet
80
81 Match host *.mgmt.yggdrasil
82 ProxyJump vidhar
83
84 Host *
85 ''; 56 '';
86 }; 57 }];
58 };
87 59
88 emacs = { 60 home-manager.users.${userName} = {
89 enable = true; 61 nixpkgs.config = {
90 extraPackages = epkgs: with epkgs; [ 62 allowUnfree = true;
91 evil evil-dvorak undo-tree magit haskell-mode nix-mode 63 zathura.useMupdf = false;
92 yaml-mode json-mode shakespeare-mode smart-mode-line
93 highlight-parentheses highlight-symbol ag sass-mode lua-mode
94 fira-code-mode use-package # notmuch
95 use-package-ensure-system-package git-gutter emacsScratch
96 edit-server mediawiki editorconfig typescript-mode
97 markdown-mode
98 ];
99 }; 64 };
100 firefox = { 65
101 enable = true; 66 programs = {
102 profiles.default = { 67 ssh = {
103 settings = { 68 matchBlocks = import ./ssh-hosts.nix { inherit pkgs; }; # customUtils.nixImport { dir = ./ssh-hosts; };
104 "layout.css.devPixelsPerPx" = "1.75"; 69 extraConfig = ''
105 "browser.tabs.drawInTitlebar" = false; 70 Match host uniworx3.ifi.lmu.de,uniworx4.ifi.lmu.de,uniworx5.ifi.lmu.de,uni2workgw.ifi.lmu.de,blackbeard.tcs.ifi.lmu.de,gitlab2.rz.ifi.lmu.de,oregon.tcs.ifi.lmu.de !exec "nc -z -w 1 %h %p &>/dev/null"
106 "toolkit.legacyUserProfileCustomizations.stylesheets" = true; 71 ProxyJump remote.cip.ifi.lmu.de
107 "dom.security.https_only_mode" = true; 72
73 Match host *.mathinst.loc,*.cipmath.loc,*.math.lmu.de
74 IdentityFile ~/.ssh/gkleen@mathinst.loc
75 HostKeyAlgorithms +ssh-rsa
76 PubkeyAcceptedAlgorithms +ssh-rsa
77 ConnectTimeout 30
78 PasswordAuthentication yes
79 KbdInteractiveAuthentication yes
80
81 Match host *.mathinst.loc !host mathw0g.mathinst.loc !exec "nc -z -w 1 %h %p &>/dev/null"
82 # ProxyCommand ${pkgs.socat}/bin/socat - SOCKS4A:127.0.0.1:%h:%p,socksport=8118
83 ProxyJump mathw0g
84
85 Match host mathw0g.mathinst.loc !exec "nc -z -w 1 %h %p &>/dev/null"
86 HostName mathw0g.math.lmu.de
87
88 Match host *.cipmath.loc !exec "nc -z -w 1 %h %p &>/dev/null"
89 ProxyJump mathw0h
90
91 Match host *.ifi.lmu.de,*.math.lmu.de
92 AddressFamily inet
93
94 Match host *.mgmt.yggdrasil
95 ProxyJump vidhar
96
97 Host *
98 '';
99 };
100
101 emacs = {
102 enable = true;
103 extraPackages = epkgs: with epkgs; [
104 evil evil-dvorak undo-tree magit haskell-mode nix-mode
105 yaml-mode json-mode shakespeare-mode smart-mode-line
106 highlight-parentheses highlight-symbol ag sass-mode lua-mode
107 fira-code-mode use-package # notmuch
108 use-package-ensure-system-package git-gutter emacsScratch
109 edit-server mediawiki editorconfig typescript-mode
110 markdown-mode
111 ];
112 };
113 firefox = {
114 enable = true;
115 profiles.default = {
116 settings = {
117 "layout.css.devPixelsPerPx" = "1.75";
118 "browser.tabs.drawInTitlebar" = false;
119 "toolkit.legacyUserProfileCustomizations.stylesheets" = true;
120 "dom.security.https_only_mode" = true;
121 };
108 }; 122 };
109 }; 123 };
110 };
111 124
112 alacritty = { 125 alacritty = {
113 enable = true; 126 enable = true;
114 settings = import ./alacritty.nix; 127 settings = import ./alacritty.nix;
115 }; 128 };
116 129
117 zathura.enable = true; 130 zathura.enable = true;
118 131
119 mpv.config = { 132 mpv.config = {
120 demuxer-max-bytes = 1073741824; 133 demuxer-max-bytes = 1073741824;
121 demuxer-max-back-bytes = 268435456; 134 demuxer-max-back-bytes = 268435456;
122 # gpu-api = "vulkan"; 135 # gpu-api = "vulkan";
123 }; 136 };
124 137
125 autorandr = { 138 autorandr = {
126 enable = true; 139 enable = true;
127 hooks = { 140 hooks = {
128 preswitch = { 141 preswitch = {
129 "stop-tray" = '' 142 "stop-tray" = ''
130 ${pkgs.systemd}/bin/systemctl --user try-restart tray.target 143 ${pkgs.systemd}/bin/systemctl --user try-restart tray.target
131 ''; 144 '';
132 }; 145 };
133 postswitch = { 146 postswitch = {
134 # "restart-compton" = "${pkgs.systemd}/bin/systemctl --user try-restart picom"; 147 # "restart-compton" = "${pkgs.systemd}/bin/systemctl --user try-restart picom";
135 "restart-tray" = '' 148 "restart-tray" = ''
136 ${pkgs.systemd}/bin/systemctl --user try-restart tray.target 149 ${pkgs.systemd}/bin/systemctl --user try-restart tray.target
137 ''; 150 '';
151 };
138 }; 152 };
153 profiles = customUtils.nixImport rec { dir = ./autorandr-profiles; _import = name: _base: import "${toString dir}/${name}" inputs; };
139 }; 154 };
140 profiles = customUtils.nixImport rec { dir = ./autorandr-profiles; _import = name: _base: import "${toString dir}/${name}" inputs; };
141 };
142 155
143 zsh.initExtra = "source ${./zshrc}"; 156 zsh.initExtra = "source ${./zshrc}";
144 zsh.dirHashes = let 157 zsh.dirHashes = let
145 flakeHashes = lib.mapAttrs' (n: v: lib.nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs; 158 flakeHashes = lib.mapAttrs' (n: v: lib.nameValuePair (inputNames.${n} or n) (toString v)) flakeInputs;
146 inputNames = { 159 inputNames = {
147 "nixpkgs" = "nixos"; 160 "nixpkgs" = "nixos";
161 };
162 in flakeHashes // {
163 u2w = "$HOME/projects/uni2work";
164 docs = "$HOME/documents";
165 dl = "$HOME/Downloads";
166 flk = "$HOME/config/nixos-flakes";
167 rz = "$HOME/projects/rz";
148 }; 168 };
149 in flakeHashes // {
150 u2w = "$HOME/projects/uni2work";
151 docs = "$HOME/documents";
152 dl = "$HOME/Downloads";
153 flk = "$HOME/config/nixos-flakes";
154 rz = "$HOME/projects/rz";
155 };
156 169
157 obs-studio = { 170 obs-studio = {
158 enable = true; 171 enable = true;
159 plugins = with pkgs; []; 172 plugins = with pkgs; [];
160 };
161
162 gh = {
163 enable = true;
164 settings = {
165 editor = "${config.home-manager.users.${userName}.programs.emacs.package}/bin/emacsclient";
166 gitProtocol = "ssh";
167 }; 173 };
168 };
169 174
170 nix-index.enable = true; 175 gh = {
171 }; 176 enable = true;
177 settings = {
178 editor = "${config.home-manager.users.${userName}.programs.emacs.package}/bin/emacsclient";
179 gitProtocol = "ssh";
180 };
181 };
172 182
173 services = { 183 nix-index.enable = true;
174 dunst = {
175 settings = import ./dunst-settings.nix inputs;
176 iconTheme = cfg.gtk.iconTheme;
177 enable = true;
178 }; 184 };
179 emacs = { 185
180 enable = true; 186 services = {
181 client = { 187 dunst = {
188 settings = import ./dunst-settings.nix inputs;
189 iconTheme = cfg.gtk.iconTheme;
182 enable = true; 190 enable = true;
183 arguments = lib.mkForce ["-a" "\"\""];
184 }; 191 };
185 }; 192 emacs = {
186 gpg-agent = { 193 enable = true;
187 enable = true; 194 client = {
188 enableSshSupport = true; 195 enable = true;
189 extraConfig = '' 196 arguments = lib.mkForce ["-a" "\"\""];
190 pinentry-program ${pkgs.pinentry-gtk2}/bin/pinentry 197 };
191 grab 198 };
192 ''; 199 gpg-agent = {
193 }; 200 enable = true;
194 taffybar = { 201 enableSshSupport = true;
195 enable = true; 202 extraConfig = ''
196 package = import ./taffybar { haskellPackages = pkgs.haskell.packages.ghc8107; }; 203 pinentry-program ${pkgs.pinentry-gtk2}/bin/pinentry
197 }; 204 grab
198 status-notifier-watcher.enable = true; 205 '';
199 xembed-sni-proxy.enable = true; 206 };
200 pasystray.enable = true; 207 taffybar = {
201 udiskie = { 208 enable = true;
202 enable = true; 209 package = import ./taffybar { haskellPackages = pkgs.haskell.packages.ghc8107; };
203 automount = false; 210 };
204 }; 211 status-notifier-watcher.enable = true;
205 unclutter = { 212 xembed-sni-proxy.enable = true;
206 enable = true; 213 pasystray.enable = true;
207 timeout = 5; 214 udiskie = {
208 }; 215 enable = true;
209 network-manager-applet.enable = true; 216 automount = false;
210 blueman-applet.enable = true; 217 };
218 unclutter = {
219 enable = true;
220 timeout = 5;
221 };
222 network-manager-applet.enable = true;
223 blueman-applet.enable = true;
211 224
212 sxhkd = { 225 sxhkd = {
213 enable = true; 226 enable = true;
214 keybindings = { 227 keybindings = {
215 "button8" = "${muteScript}/bin/mute unmute"; 228 "button8" = "${muteScript}/bin/mute unmute";
216 "@button8" = "${muteScript}/bin/mute mute"; 229 "@button8" = "${muteScript}/bin/mute mute";
217 "button9" = "${pkgs.pulseaudio}/bin/pacmd set-sink-mute @DEFAULT_SINK@ 1"; 230 "button9" = "${pkgs.pulseaudio}/bin/pacmd set-sink-mute @DEFAULT_SINK@ 1";
218 "@button9" = "${pkgs.pulseaudio}/bin/pacmd set-sink-mute @DEFAULT_SINK@ 0"; 231 "@button9" = "${pkgs.pulseaudio}/bin/pacmd set-sink-mute @DEFAULT_SINK@ 0";
232 };
219 }; 233 };
220 };
221 234
222 unison = { 235 unison = {
223 enable = true; 236 enable = true;
224 pairs = { 237 pairs = {
225 documents = { 238 documents = {
226 roots = ["${cfg.home.homeDirectory}/documents" "ssh://unison.vidhar/documents"]; 239 roots = ["${cfg.home.homeDirectory}/documents" "ssh://unison.vidhar/documents"];
227 stateDirectory = "${cfg.xdg.dataHome}/documents.unison"; 240 stateDirectory = "${cfg.xdg.dataHome}/documents.unison";
228 commandOptions = { 241 commandOptions = {
229 auto = "true"; 242 auto = "true";
230 batch = "true"; 243 batch = "true";
231 log = "false"; 244 log = "false";
232 repeat = "watch"; 245 repeat = "watch";
233 sshcmd = "${pkgs.openssh}/bin/ssh"; 246 sshcmd = "${pkgs.openssh}/bin/ssh";
234 ui = "text"; 247 ui = "text";
248 };
235 }; 249 };
236 }; 250 };
237 }; 251 };
238 };
239 252
240 easyeffects = { 253 easyeffects = {
241 enable = true; 254 enable = true;
242 preset = "LoudnessEqualizer"; 255 preset = "LoudnessEqualizer";
243 }; 256 };
244 257
245 screen-locker = { 258 screen-locker = {
246 enable = true; 259 enable = true;
247 lockCmd = toString (pkgs.writeShellScript "lock" '' 260 lockCmd = toString (pkgs.writeShellScript "lock" ''
248 cleanup() { 261 cleanup() {
249 ${cfg.services.dunst.package}/bin/dunstctl set-paused false 262 ${cfg.services.dunst.package}/bin/dunstctl set-paused false
250 } 263 }
251 trap cleanup EXIT INT TERM 264 trap cleanup EXIT INT TERM
252 265
253 ${pkgs.playerctl}/bin/playerctl -a pause 266 ${pkgs.playerctl}/bin/playerctl -a pause
254 ${cfg.services.dunst.package}/bin/dunstctl set-paused true 267 ${cfg.services.dunst.package}/bin/dunstctl set-paused true
255 ${pkgs.xsecurelock}/bin/xsecurelock 268 ${pkgs.xsecurelock}/bin/xsecurelock
256 ''); 269 '');
257 xss-lock.extraOptions = ["--transfer-sleep-lock"]; 270 xss-lock.extraOptions = ["--transfer-sleep-lock"];
271 };
258 }; 272 };
259 };
260 273
261 home.pointerCursor = { 274 home.pointerCursor = {
262 package = pkgs.vanilla-dmz; 275 package = pkgs.vanilla-dmz;
263 name = "Vanilla-DMZ-AA"; 276 name = "Vanilla-DMZ-AA";
264 size = 32; 277 size = 32;
265 278
266 x11 = { 279 x11 = {
267 enable = true; 280 enable = true;
268 defaultCursor = "left_ptr"; 281 defaultCursor = "left_ptr";
282 };
283 gtk.enable = true;
269 }; 284 };
270 gtk.enable = true;
271 };
272 285
273 gtk = { 286 gtk = {
274 enable = true; 287 enable = true;
275 font = { 288 font = {
276 package = pkgs.fira; 289 package = pkgs.fira;
277 name = "Fira Sans"; 290 name = "Fira Sans";
278 size = 6; 291 size = 6;
279 }; 292 };
280 theme = { 293 theme = {
281 package = pkgs.equilux-theme; 294 package = pkgs.equilux-theme;
282 name = "Equilux-compact"; 295 name = "Equilux-compact";
283 }; 296 };
284 iconTheme = { 297 iconTheme = {
285 package = pkgs.paper-icon-theme; 298 package = pkgs.paper-icon-theme;
286 name = "Paper"; 299 name = "Paper";
300 };
287 }; 301 };
288 };
289
290 xsession = {
291 enable = true;
292 302
293 windowManager.command = "${pkgs.coreutils}/bin/env -u SHLVL -- ${xmonad}/bin/xmonad"; 303 xsession = {
294 304 enable = true;
295 initExtra = ''
296 ${pkgs.xorg.xinput}/bin/xinput disable 'Synaptics TM3512-010'
297 ${pkgs.xorg.xmodmap}/bin/xmodmap -e 'keysym Caps_Lock = Multi_key'
298 '';
299 };
300 305
301 xresources.properties = import ./xresources.nix; 306 initExtra = ''
302 307 ${pkgs.xorg.xinput}/bin/xinput disable 'Synaptics TM3512-010'
303 home = { 308 ${pkgs.xorg.xmodmap}/bin/xmodmap -e 'keysym Caps_Lock = Multi_key'
304 packages = with pkgs; [ 309 '';
305 fira fira-code powerline-fonts nerdfonts pavucontrol keepassxc
306 sxiv xclip mumble pulseaudio-ctl pamixer libnotify synergy
307 xorg.xbacklight screen-message
308 ytmdesktop qt5ct playerctl evince
309 thunderbird wrappedZulip zoom-us steam steam-run wireshark
310 virt-manager rclone cached-nix-shell xournal xmonad worktime
311 fira-code-symbols libreoffice xournalpp wrappedChrome
312 nixos-shell virt-viewer freerdp gnome-icon-theme
313 paper-icon-theme sshpassSecret weechat helvum
314 wrappedElementDesktop matrix-synapse-tools.synadm
315 wrappedRocketChatDesktop
316 flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs
317 sieve-connect
318 ];
319
320 file = {
321 ".emacs".source = ./emacs.el;
322 ".backup-munin".source = ./backup-patterns;
323 ".mozilla/firefox/default/chrome/userChrome.css".source = ./firefox-chrome.css;
324 ".mozilla/firefox/default/chrome/userContent.css".source = ./firefox-content.css;
325 }; 310 };
326 311
327 sessionVariables = { 312 xresources.properties = import ./xresources.nix;
328 GDK_SCALE = 96.0 / 282.0; 313
329 QT_AUTO_SCREEN_SCALE_FACTOR = 1; 314 home = {
330 QT_QPA_PLATFORMTHEME = "qt5ct"; 315 packages = with pkgs; [
331 LIBVIRT_DEFAULT_URI = "qemu:///system"; 316 fira fira-code powerline-fonts nerdfonts pavucontrol keepassxc
332 }; 317 sxiv xclip mumble pulseaudio-ctl pamixer libnotify synergy
318 xorg.xbacklight screen-message
319 ytmdesktop qt5ct playerctl evince
320 thunderbird wrappedZulip zoom-us steam steam-run wireshark
321 virt-manager rclone cached-nix-shell xournal xmonad worktime
322 fira-code-symbols libreoffice xournalpp wrappedChrome
323 nixos-shell virt-viewer freerdp gnome-icon-theme
324 paper-icon-theme sshpassSecret weechat helvum
325 wrappedElementDesktop matrix-synapse-tools.synadm
326 wrappedRocketChatDesktop
327 flakeInputs.deploy-rs.packages.${config.nixpkgs.system}.deploy-rs
328 sieve-connect
329 ];
333 330
334 extraProfileCommands = '' 331 file = {
335 export XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}''${XDG_DATA_DIRS:+:''${XDG_DATA_DIRS}}" 332 ".emacs".source = ./emacs.el;
336 ''; 333 ".backup-munin".source = ./backup-patterns;
334 ".mozilla/firefox/default/chrome/userChrome.css".source = ./firefox-chrome.css;
335 ".mozilla/firefox/default/chrome/userContent.css".source = ./firefox-content.css;
336 };
337 337
338 keyboard = { 338 sessionVariables = {
339 layout = "us"; 339 GDK_SCALE = 96.0 / 282.0;
340 variant = "dvp"; 340 QT_AUTO_SCREEN_SCALE_FACTOR = 1;
341 options = [ "ctl:nocaps" "compose:caps" ]; 341 QT_QPA_PLATFORMTHEME = "qt5ct";
342 }; 342 LIBVIRT_DEFAULT_URI = "qemu:///system";
343 }; 343 };
344 344
345 xdg.configFile = { 345 extraProfileCommands = ''
346 "dunst/dunstrc.d" = { 346 export XDG_DATA_DIRS="${pkgs.gsettings-desktop-schemas}/share/gsettings-schemas/${pkgs.gsettings-desktop-schemas.name}:${pkgs.gtk3}/share/gsettings-schemas/${pkgs.gtk3.name}''${XDG_DATA_DIRS:+:''${XDG_DATA_DIRS}}"
347 source = ./dunstrc.d;
348 recursive = true;
349 onChange = ''
350 ${pkgs.systemd}/bin/systemctl --user try-restart dunst
351 ''; 347 '';
348
349 keyboard = {
350 layout = "us";
351 variant = "dvp";
352 options = [ "ctl:nocaps" "compose:caps" ];
353 };
352 }; 354 };
353 "wireplumber" = { 355
354 source = ./wireplumber; 356 xdg.configFile = {
355 recursive = true; 357 "dunst/dunstrc.d" = {
356 onChange = '' 358 source = ./dunstrc.d;
357 ${pkgs.systemd}/bin/systemctl --user try-restart wireplumber 359 recursive = true;
358 ''; 360 onChange = ''
361 ${pkgs.systemd}/bin/systemctl --user try-restart dunst
362 '';
363 };
364 "wireplumber" = {
365 source = ./wireplumber;
366 recursive = true;
367 onChange = ''
368 ${pkgs.systemd}/bin/systemctl --user try-restart wireplumber
369 '';
370 };
359 }; 371 };
360 };
361 372
362 xdg.dataFile = { 373 xdg.dataFile = {
363 "pandoc/abbreviations" = { 374 "pandoc/abbreviations" = {
364 source = pkgs.runCommand "pandoc-abbreviations" { 375 source = pkgs.runCommand "pandoc-abbreviations" {
365 buildInputs = [ pkgs.pandoc pkgs.coreutils ]; 376 buildInputs = [ pkgs.pandoc pkgs.coreutils ];
366 } (let 377 } (let
367 germanAbbrevs = pkgs.fetchFromGitHub { 378 germanAbbrevs = pkgs.fetchFromGitHub {
368 owner = "jfilter"; 379 owner = "jfilter";
369 repo = "german-abbreviations"; 380 repo = "german-abbreviations";
370 rev = "8eb9dae93b6f05d7c53374cd217ab2dc89558e0c"; 381 rev = "8eb9dae93b6f05d7c53374cd217ab2dc89558e0c";
371 sha256 = "SaD3tSqzen6Y3SPICe6/9vhe4iMHlArZ3kFQaEk7Hps="; 382 sha256 = "SaD3tSqzen6Y3SPICe6/9vhe4iMHlArZ3kFQaEk7Hps=";
372 }; 383 };
373 in '' 384 in ''
374 cat \ 385 cat \
375 <(pandoc --print-default-data-file=abbreviations) \ 386 <(pandoc --print-default-data-file=abbreviations) \
376 <(grep -E '^[^ ]+\.$' ${germanAbbrevs}/german_abbreviations.txt) \ 387 <(grep -E '^[^ ]+\.$' ${germanAbbrevs}/german_abbreviations.txt) \
377 ${pkgs.writeText "abbrevs.txt" '' 388 ${pkgs.writeText "abbrevs.txt" ''
378 i.A. 389 i.A.
379 d.h. 390 d.h.
380 D.h. 391 D.h.
381 gdw. 392 gdw.
382 ''} \ 393 ''} \
383 | sort | uniq >$out 394 | sort | uniq >$out
384 ''); 395 '');
396 };
385 }; 397 };
386 };
387 398
388 fonts.fontconfig.enable = true; 399 fonts.fontconfig.enable = true;
389 400
390 systemd.user = import ./systemd.nix inputs; 401 systemd.user = import ./systemd.nix inputs;
402 };
391 }; 403 };
392} 404}