forked from
lass.pds.lassul.us/superconfig
This repository has no description
3.3 kB
98 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 # Skip if already on the requested theme (prevents loops with noctalia hook)
14 if [ "$(${pkgs.coreutils}/bin/cat /var/theme/current_theme 2>/dev/null)" = "$1" ]; then
15 exit 0
16 fi
17 ${pkgs.coreutils}/bin/mkdir -p /var/theme/config
18 ${pkgs.rsync}/bin/rsync --chown=lass:users -a --delete "/etc/themes/$1/" /var/theme/config/
19 echo "$1" > /var/theme/current_theme
20 ${pkgs.coreutils}/bin/chown lass:users /var/theme/current_theme
21 ${pkgs.xorg.xrdb}/bin/xrdb -merge /var/theme/config/xresources || : # wayland has no xresources
22 ${pkgs.procps}/bin/pkill -HUP xsettingsd || :
23 set +f
24 GSETTINGS_SCHEMA_DIR=$(echo /run/current-system/sw/share/gsettings-schemas/*/*/schemas | sed s', ,:,g')
25 export GSETTINGS_SCHEMA_DIR
26 set -f
27 ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface gtk-theme "$(cat /var/theme/config/gtk-theme)" || :
28 ${pkgs.glib}/bin/gsettings set org.gnome.desktop.interface color-scheme "prefer-$1" || :
29 set +f
30 for sock in /tmp/kitty-socket*; do
31 ${pkgs.kitty}/bin/kitten @ --to unix:"$sock" set-colors -a /var/theme/config/kitty-colors.conf 2>/dev/null || :
32 done
33 set -f
34 # Update noctalia-shell dark mode setting (it watches settings.json for changes)
35 noctalia_settings="''${XDG_CONFIG_HOME:-$HOME/.config}/noctalia/settings.json"
36 if test -f "$noctalia_settings"; then
37 if [ "$1" = dark ]; then
38 noctalia_dark=true
39 else
40 noctalia_dark=false
41 fi
42 ${pkgs.jq}/bin/jq ".colorSchemes.darkMode = $noctalia_dark" "$noctalia_settings" > "$noctalia_settings.tmp" && \
43 ${pkgs.coreutils}/bin/mv "$noctalia_settings.tmp" "$noctalia_settings" || :
44 fi
45 else
46 echo "theme $1 not found"
47 fi
48 '';
49
50in
51{
52 systemd.tmpfiles.rules = [
53 "d /var/theme/ 755 lass users"
54 ];
55 environment.systemPackages = [
56 switch-theme
57 pkgs.adw-gtk3
58 pkgs.adwaita-icon-theme
59 ];
60 environment.etc = {
61 "themes/light/gtk-theme".text = ''
62 Adwaita
63 '';
64 "themes/light/xsettings.conf".text = ''
65 Net/ThemeName "Adwaita"
66 '';
67 "themes/light/xresources".text = ''
68 *background: #ffffff
69 *foreground: #000000
70 '';
71 "themes/light/rofi-theme".text = ''
72 gruvbox-light-hard
73 '';
74
75 "themes/dark/gtk-theme".text = ''
76 adw-gtk3-dark
77 '';
78 "themes/dark/xsettings.conf".text = ''
79 Net/ThemeName "adw-gtk3-dark"
80 '';
81 "themes/dark/xresources".text = ''
82 *background: #000000
83 *foreground: #ffffff
84 '';
85 "themes/dark/rofi-theme".text = ''
86 gruvbox-dark-hard
87 '';
88 };
89 # system.activationScripts.theme.text = ''
90 # export DISPLAY=:0
91 # if test -e /var/theme/current_theme; then
92 # ${switch-theme}/bin/switch-theme "$(cat /var/theme/current_theme)" ||
93 # ${switch-theme}/bin/switch-theme dark
94 # else
95 # ${switch-theme}/bin/switch-theme dark
96 # fi
97 # '';
98}