This repository has no description
2.0 kB
66 lines
1{ pkgs, ... }:
2let
3
4 switch-theme = pkgs.writers.writeDashBin "switch-theme" ''
5 set -efux
6 if [ "$1" = toggle ]; then
7 if [ "$(${pkgs.coreutils}/bin/cat /var/theme/current_theme)" = dark ]; then
8 ${placeholder "out"}/bin/switch-theme light
9 else
10 ${placeholder "out"}/bin/switch-theme dark
11 fi
12 elif test -e "/etc/themes/$1"; then
13 ${pkgs.coreutils}/bin/mkdir -p /var/theme/config
14 ${pkgs.rsync}/bin/rsync --chown=lass:users -a --delete "/etc/themes/$1/" /var/theme/config/
15 echo "$1" > /var/theme/current_theme
16 ${pkgs.coreutils}/bin/chown lass:users /var/theme/current_theme
17 ${pkgs.xorg.xrdb}/bin/xrdb -merge /var/theme/config/xresources || : # wayland has no xresources
18 ${pkgs.procps}/bin/pkill -HUP xsettingsd || :
19 ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme "$(cat /var/theme/config/gtk-theme)" || :
20 else
21 echo "theme $1 not found"
22 fi
23 '';
24
25in
26{
27 systemd.tmpfiles.rules = [
28 "d /var/theme/ 755 lass users"
29 ];
30 environment.systemPackages = [
31 switch-theme
32 pkgs.dracula-theme
33 pkgs.gnome3.adwaita-icon-theme
34 ];
35 environment.etc = {
36 "themes/light/gtk-theme".text = ''
37 Adwaita
38 '';
39 "themes/light/xsettings.conf".text = ''
40 Net/ThemeName "Adwaita"
41 '';
42 "themes/light/xresources".text = ''
43 *background: #ffffff
44 *foreground: #000000
45 '';
46 "themes/dark/gtk-theme".text = ''
47 Dracula
48 '';
49 "themes/dark/xsettings.conf".text = ''
50 Net/ThemeName "Dracula"
51 '';
52 "themes/dark/xresources".text = ''
53 *background: #000000
54 *foreground: #ffffff
55 '';
56 };
57 system.activationScripts.theme.text = ''
58 export DISPLAY=:0
59 if test -e /var/theme/current_theme; then
60 ${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" ||
61 ${switch-theme}/bin/switch-theme dark
62 else
63 ${switch-theme}/bin/switch-theme dark
64 fi
65 '';
66}