diff --git a/common.nix b/common.nix index 4058d76..72e36c5 100644 --- a/common.nix +++ b/common.nix @@ -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'"; diff --git a/hosts/FredOS-Kayla.nix b/hosts/FredOS-Kayla.nix index 09723f5..6aca900 100644 --- a/hosts/FredOS-Kayla.nix +++ b/hosts/FredOS-Kayla.nix @@ -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