kayla: GTK theme for chrome via dconf + initial_preferences; add kaylavm alias

This commit is contained in:
rope 2026-08-10 09:51:24 +01:00
parent ea08e8fd30
commit dfc6855a55
2 changed files with 19 additions and 0 deletions

View file

@ -124,6 +124,9 @@ in
environment.shellAliases = {
update = "bash -c 'set -o pipefail && OLD_SYSTEM=$(readlink /run/current-system) && sudo nixos-rebuild switch $@ --refresh --flake git+https://forg.gregersen.it/rope/nixos -L${buildLog} && nvd diff $OLD_SYSTEM /run/current-system && (command -v record-update &>/dev/null && record-update $OLD_SYSTEM /run/current-system || true)' --";
clean = "sudo nix-collect-garbage -d";
# Throw away the VM's disk first so every run is a real first boot —
# greeter, Plasma first-run, the lot. Builds into ./result in $PWD.
kaylavm = "rm -f FredOS-Kayla.qcow2 && nixos-rebuild build-vm --refresh --flake git+https://forg.gregersen.it/rope/nixos#kayla-vm && ./result/bin/run-FredOS-Kayla-vm";
ll = "ls -alh";
clear = "command clear";
reboot = "bash -c 'if [ \"$(hostname)\" = \"FredOS-Mediaserver\" ]; then read -r -p \"Reboot $(hostname)? [y/N] \" confirm; case \"$confirm\" in [Yy]) ;; *) exit 0 ;; esac; fi; sudo systemctl reboot'";

View file

@ -45,6 +45,22 @@
base0F = "8e44ad"; # base16's "brown" slot; Breeze has no brown
};
# Chrome's GTK theme is only as good as the GTK theme underneath it, and
# stylix's gtk target refuses to apply without dconf (settings/desktop.nix
# enables it, but that file is gated to the Hyprland hosts). Without this
# Chrome falls back to stock light Adwaita while everything else is dark.
programs.dconf.enable = true;
# ...and point Chrome at GTK rather than its own frame. There is no policy
# for this — it's a profile pref — so seed it via Chrome's supported
# initial_preferences hook, which is copied into a profile at *creation*.
# Fresh profile only: an existing one keeps whatever it already has, and
# she can flip it by hand under Settings → Appearance → Theme.
# 0 = Classic, 1 = GTK, 2 = Qt.
environment.etc."opt/chrome/initial_preferences".text = builtins.toJSON {
extensions.theme.system_theme = 1;
};
# Stylix's chromium target is a *managed policy* (BrowserThemeColor written
# to /etc/opt/chrome/policies), which is what makes Chrome say "your
# administrator has set a default theme" and greys out the appearance