This repository has no description
2.6 kB
83 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 set +f
20 GSETTINGS_SCHEMA_DIR=$(echo /run/current-system/sw/share/gsettings-schemas/*/*/schemas | sed s', ,:,g')
21 export GSETTINGS_SCHEMA_DIR
22 set -f
23 ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme "$(cat /var/theme/config/gtk-theme)" || :
24 ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface color-scheme "prefer-$1" || :
25 set +f
26 for sock in /tmp/kitty-socket*; do
27 ${pkgs.kitty}/bin/kitten @ --to unix:"$sock" set-colors -a /var/theme/config/kitty-colors.conf 2>/dev/null || :
28 done
29 set -f
30 else
31 echo "theme $1 not found"
32 fi
33 '';
34
35in
36{
37 systemd.tmpfiles.rules = [
38 "d /var/theme/ 755 lass users"
39 ];
40 environment.systemPackages = [
41 switch-theme
42 pkgs.dracula-theme
43 pkgs.adwaita-icon-theme
44 ];
45 environment.etc = {
46 "themes/light/gtk-theme".text = ''
47 Adwaita
48 '';
49 "themes/light/xsettings.conf".text = ''
50 Net/ThemeName "Adwaita"
51 '';
52 "themes/light/xresources".text = ''
53 *background: #ffffff
54 *foreground: #000000
55 '';
56 "themes/light/rofi-theme".text = ''
57 gruvbox-light-hard
58 '';
59
60 "themes/dark/gtk-theme".text = ''
61 Dracula
62 '';
63 "themes/dark/xsettings.conf".text = ''
64 Net/ThemeName "Dracula"
65 '';
66 "themes/dark/xresources".text = ''
67 *background: #000000
68 *foreground: #ffffff
69 '';
70 "themes/dark/rofi-theme".text = ''
71 gruvbox-dark-hard
72 '';
73 };
74 # system.activationScripts.theme.text = ''
75 # export DISPLAY=:0
76 # if test -e /var/theme/current_theme; then
77 # ${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" ||
78 # ${switch-theme}/bin/switch-theme dark
79 # else
80 # ${switch-theme}/bin/switch-theme dark
81 # fi
82 # '';
83}