summary refs log tree commit diff
path: root/nixos/modules/services/x11/redshift.nix
diff options
context:
space:
mode:
Diffstat (limited to 'nixos/modules/services/x11/redshift.nix')
-rw-r--r--nixos/modules/services/x11/redshift.nix51
1 files changed, 51 insertions, 0 deletions
diff --git a/nixos/modules/services/x11/redshift.nix b/nixos/modules/services/x11/redshift.nix
new file mode 100644
index 000000000000..bf7f974edc7b
--- /dev/null
+++ b/nixos/modules/services/x11/redshift.nix
@@ -0,0 +1,51 @@
+{ config, pkgs, ... }:
+with pkgs.lib;
+let
+  cfg = config.services.redshift;
+
+in {
+  options = {
+    services.redshift.enable = mkOption {
+      type = types.bool;
+      default = false;
+      example = true;
+      description = "Enable Redshift to change your screen's colour temperature depending on the time of day";
+    };
+
+    services.redshift.latitude = mkOption {
+      description = "Your current latitude";
+      type = types.string;
+    };
+
+    services.redshift.longitude = mkOption {
+      description = "Your current longitude";
+      type = types.string;
+    };
+
+    services.redshift.temperature = {
+      day = mkOption {
+        description = "Colour temperature to use during day time";
+        default = 5500;
+        type = types.int;
+      };
+      night = mkOption {
+        description = "Colour temperature to use during night time";
+        default = 3700;
+        type = types.int;
+      };
+    };
+  };
+
+  config = mkIf cfg.enable {
+    systemd.services.redshift = {
+      description = "Redshift colour temperature adjuster";
+      requires = [ "display-manager.service" ];
+      script = ''
+        ${pkgs.redshift}/bin/redshift \
+          -l ${cfg.latitude}:${cfg.longitude} \
+          -t ${toString cfg.temperature.day}:${toString cfg.temperature.night}
+      '';
+      environment = { DISPLAY = ":0"; };
+    };
+  };
+}