c730 15b/7e8

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


nixos,home manager,customisation,guide,dark mode,light mode,sunrise,sunset

Comments section:



<-- Previous

Next -->