From 24048fa226f3b91a2b8b23ef671589c39881ccac Mon Sep 17 00:00:00 2001 From: Tobias Geerinckx-Rice Date: Sun, 6 Sep 2015 03:57:00 +0200 Subject: [PATCH] nixos: redshift module: add `package` option ...and make code more consistent. --- nixos/modules/services/x11/redshift.nix | 73 ++++++++++++++++++------- 1 file changed, 53 insertions(+), 20 deletions(-) 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"; }; }; + }