diff --git a/nixos/modules/services/x11/redshift.nix b/nixos/modules/services/x11/redshift.nix
index 4f39e05f0f8d..ffae22d2d670 100644
--- a/nixos/modules/services/x11/redshift.nix
+++ b/nixos/modules/services/x11/redshift.nix
@@ -1,58 +1,90 @@
{ config, lib, pkgs, ... }:
+
with lib;
+
let
+
cfg = config.services.redshift;
in {
- options = {
- services.redshift.enable = mkOption {
+
+ 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";
+ description = ''
+ Enable Redshift to change your screen's colour temperature depending on
+ the time of day.
+ '';
};
- services.redshift.latitude = mkOption {
- description = "Your current latitude";
+ latitude = mkOption {
type = types.str;
+ description = ''
+ Your current latitude.
+ '';
};
- services.redshift.longitude = mkOption {
- description = "Your current longitude";
+ longitude = mkOption {
type = types.str;
+ description = ''
+ Your current longitude.
+ '';
};
- services.redshift.temperature = {
+ temperature = {
day = mkOption {
- description = "Colour temperature to use during day time";
+ type = types.int;
default = 5500;
- type = types.int;
+ description = ''
+ Colour temperature to use during the day.
+ '';
};
night = mkOption {
- description = "Colour temperature to use during night time";
+ type = types.int;
default = 3700;
- type = types.int;
+ description = ''
+ Colour temperature to use at night.
+ '';
};
};
- services.redshift.brightness = {
+ brightness = {
day = mkOption {
- description = "Screen brightness to apply during the day (between 0.1 and 1.0)";
- default = "1";
type = types.str;
+ default = "1";
+ description = ''
+ Screen brightness to apply during the day,
+ between 0.1 and 1.0.
+ '';
};
night = mkOption {
- description = "Screen brightness to apply during the night (between 0.1 and 1.0)";
- default = "1";
type = types.str;
+ default = "1";
+ description = ''
+ Screen brightness to apply during the night,
+ between 0.1 and 1.0.
+ '';
};
};
- services.redshift.extraOptions = mkOption {
+ package = mkOption {
+ type = types.package;
+ default = pkgs.redshift;
+ description = ''
+ redshift derivation to use.
+ '';
+ };
+
+ extraOptions = mkOption {
type = types.listOf types.str;
default = [];
example = [ "-v" "-m randr" ];
- description = "Additional command-line arguments to pass to the redshift(1) command";
+ description = ''
+ Additional command-line arguments to pass to
+ redshift.
+ '';
};
};
@@ -63,7 +95,7 @@ in {
after = [ "display-manager.service" ];
wantedBy = [ "graphical.target" ];
serviceConfig.ExecStart = ''
- ${pkgs.redshift}/bin/redshift \
+ ${cfg.package}/bin/redshift \
-l ${cfg.latitude}:${cfg.longitude} \
-t ${toString cfg.temperature.day}:${toString cfg.temperature.night} \
-b ${toString cfg.brightness.day}:${toString cfg.brightness.night} \
@@ -73,4 +105,5 @@ in {
serviceConfig.Restart = "always";
};
};
+
}