diff --git a/hm/style.nix b/hm/style.nix index 29a212d..e73c6d1 100644 --- a/hm/style.nix +++ b/hm/style.nix @@ -3,7 +3,8 @@ let # Currently last commit in https://github.com/danth/stylix/pull/194 stylix = builtins.fetchTarball "https://github.com/willemml/stylix/archive/2ed2b0086b41d582aca26e083c19c0e47c8991e3.tar.gz"; polarityFile = "${config.xdg.stateHome}/theme_polarity"; - polarity = if builtins.pathExists polarityFile then lib.strings.fileContents polarityFile else "light"; + polarityFromFile = if builtins.pathExists polarityFile then lib.strings.fileContents polarityFile else "light"; + polarity = if config.frogeye.polarity == "dynamic" then polarityFromFile else config.frogeye.polarity; phases = [ { command = "jour"; polarity = "light"; } { command = "crepuscule"; polarity = "dark"; } @@ -53,13 +54,15 @@ in runtimeInputs = [ pkgs.brightnessctl ]; text = (lib.optionalString cfg.enable '' brightnessctl set ${builtins.getAttr phase.command cfg} - '') + '' + '') + '' echo ${phase.polarity} > ${polarityFile} if command -v home-manager then home-manager switch else - sudo nixos-rebuild switch + # In two steps to get the visual changes slightly earlier + sudo /nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration test + sudo /nix/var/nix/profiles/system/specialisation/${phase.polarity}/bin/switch-to-configuration boot fi ''; }) diff --git a/options.nix b/options.nix index 11a0552..0321786 100644 --- a/options.nix +++ b/options.nix @@ -3,6 +3,11 @@ options.frogeye = { extra = lib.mkEnableOption "Big software"; gaming = lib.mkEnableOption "Games"; + polarity = lib.mkOption { + default = "dynamic"; + description = "Whether to use light theme or dark theme."; + type = lib.types.enum [ "dynamic" "light" "dark" ]; + }; desktop = { xorg = lib.mkEnableOption "Enable X11 support"; numlock = lib.mkEnableOption "Auto-enable numlock"; diff --git a/os/geoffrey.nix b/os/geoffrey.nix index cd27181..c76dde6 100644 --- a/os/geoffrey.nix +++ b/os/geoffrey.nix @@ -1,4 +1,4 @@ -{ pkgs, config, ... }: +{ pkgs, lib, config, ... }: { imports = [ @@ -32,6 +32,12 @@ useGlobalPkgs = true; }; + specialisation = { + dark.configuration.frogeye.polarity = "dark"; + light.configuration.frogeye.polarity = "light"; + }; + + # Because everything is encrypted and I'm the only user, this is fine. services.xserver.displayManager.autoLogin.user = "geoffrey"; }