{ "@context": "https://www.w3.org/ns/activitystreams", "id": "https://deadvey.com//socialweb/notes/76", "type": "Note", "hash": "76", "content": "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 [[ \"$light\" == \"DAY\" ]]; 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;
};



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", "url": "https://deadvey.com/blog/76.html", "attributedTo": "https://deadvey.com/@blog", "to": [ "https://www.w3.org/ns/activitystreams#Public" ], "cc": [], "published": "Thu, 12 Dec 2024 18:40:26", "replies": { "id": "https://deadvey.com/socialweb/replies/76", "type": "Collection", "first": { "type": "CollectionPage", "next": "https://deadvey.com/socialweb/replies/76?page=true", "partOf": "https://deadvey.com/socialweb/replies/76", "items": [] } }, "tag": [ { "Type": "Hashtag", "Href": "https://deadvey.com/blog/nixos.html", "Name": "#nixos" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/home manager.html", "Name": "#home manager" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/customisation.html", "Name": "#customisation" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/guide.html", "Name": "#guide" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/dark mode.html", "Name": "#dark mode" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/light mode.html", "Name": "#light mode" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/sunrise.html", "Name": "#sunrise" }, { "Type": "Hashtag", "Href": "https://deadvey.com/blog/sunset.html", "Name": "#sunset" } ] }