diff options
author | Robert Helgesson <robert@rycee.net> | 2017-01-20 19:26:52 +0100 |
---|---|---|
committer | Robert Helgesson <robert@rycee.net> | 2017-01-20 19:26:52 +0100 |
commit | 64d6a66324618c98643968c1457b2e87d5d8a7b0 (patch) | |
tree | fe2967cd89042d1a31c69fc97fe08fb8a268e70d /modules | |
parent | 35e0a339f8c14aed2c3e7230850b026befc02dc9 (diff) |
redshift: add module
This module is adapted from the Nixpkgs version.
Diffstat (limited to 'modules')
-rw-r--r-- | modules/default.nix | 1 | ||||
-rw-r--r-- | modules/services/redshift.nix | 124 |
2 files changed, 125 insertions, 0 deletions
diff --git a/modules/default.nix b/modules/default.nix index a95870b50e4..93ce01ad852 100644 --- a/modules/default.nix +++ b/modules/default.nix @@ -25,6 +25,7 @@ let ./services/keepassx.nix ./services/network-manager-applet.nix ./services/random-background.nix + ./services/redshift.nix ./services/taffybar.nix ./services/tahoe-lafs.nix ./services/udiskie.nix diff --git a/modules/services/redshift.nix b/modules/services/redshift.nix new file mode 100644 index 00000000000..f8978613464 --- /dev/null +++ b/modules/services/redshift.nix @@ -0,0 +1,124 @@ +# Adapted from Nixpkgs. + +{ config, lib, pkgs, ... }: + +with 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. + ''; + }; + + latitude = mkOption { + type = types.str; + description = '' + Your current latitude, between + <literal>-90.0</literal> and <literal>90.0</literal>. + ''; + }; + + longitude = mkOption { + type = types.str; + description = '' + Your current longitude, between + between <literal>-180.0</literal> and <literal>180.0</literal>. + ''; + }; + + temperature = { + day = mkOption { + type = types.int; + default = 5500; + description = '' + Colour temperature to use during the day, between + <literal>1000</literal> and <literal>25000</literal> K. + ''; + }; + night = mkOption { + type = types.int; + default = 3700; + description = '' + Colour temperature to use at night, between + <literal>1000</literal> and <literal>25000</literal> K. + ''; + }; + }; + + brightness = { + day = mkOption { + type = types.str; + default = "1"; + description = '' + Screen brightness to apply during the day, + between <literal>0.1</literal> and <literal>1.0</literal>. + ''; + }; + night = mkOption { + type = types.str; + default = "1"; + description = '' + Screen brightness to apply during the night, + between <literal>0.1</literal> and <literal>1.0</literal>. + ''; + }; + }; + + package = mkOption { + type = types.package; + default = pkgs.redshift; + defaultText = "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 + <command>redshift</command>. + ''; + }; + }; + + config = mkIf cfg.enable { + systemd.user.services.redshift = { + Unit = { + Description = "Redshift colour temperature adjuster"; + }; + + Install = { + WantedBy = [ "graphical-session.target" ]; + }; + + Service = { + ExecStart = + let + args = [ + "-l ${cfg.latitude}:${cfg.longitude}" + "-t ${toString cfg.temperature.day}:${toString cfg.temperature.night}" + "-b ${toString cfg.brightness.day}:${toString cfg.brightness.night}" + ] ++ cfg.extraOptions; + in + "${cfg.package}/bin/redshift ${concatStringsSep " " args}"; + RestartSec = 3; + Restart = "always"; + }; + }; + }; + +} |