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