2025-01-13 00:11:59 +00:00

2.0 KiB

DeaDvey's domain

Home page Blogs Projects

Home Manager automatically changing dark/light mode at sunrise/set: Firstly, to do this you need pkgs.sunwait (though other options would work with a bit of changing). Make a script like this, I put mine in my home.file, but you can also just make it a file on it's own.

'scripts/mode-switcher-based-on-sunlight.sh' = { text = '' run_a_command() { if ; then sed -i 's/MODE\ =\ "."/MODE\ =\ "light"/' $HOME/.config/home/home.nix home-manager switch else sed -i 's/MODE\ =\ "."/MODE\ =\ "dark"/' $HOME/.config/home/home.nix home-manager switch fi }; #!/bin/bash # Set your latitude and longitude LATITUDE="53.43N" LONGITUDE="-1.89E"

			# Calculate the sunrise and sunset times for today using sunwait
			light=$(sunwait poll $LATITUDE $LONGITUDE)

			run_a_command
			while sleep 5; do
				new_light=$(sunwait poll $LATITUDE $LONGITUDE)
				if [[ "$new_light" != "$light" ]]; then
					run_a_command
				fi
			done
		'';
		executable = true;
	};</div><br/>

I have this to autorun on startup in Hyprland with

exec-once="$HOME/scripts/mode-switcher-based-on-sunlight.sh";
then in the home.nix, I of course have a variable defined called MODE as either "dark" or "light"

{config, pkgs, lib, ...}: let MODE = "light"; in { # Home config }

And then that should be it, of course you'll want to make to make gtk follow this theme, I do that by having different theme files which each define a set of GTK themes and then those are assigned as variables on rebuild
inherit (import ./themes/\${THEME}_\${MODE}.nix) GTK_THEME GTK_THEME_NAME;

You can see my full nix configurations here
Fly You High - DeaDvey _Published: 15b/7e8 at c730_