aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/home-manager/modules/services/wlsunset.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/home-manager/modules/services/wlsunset.nix')
-rw-r--r--infra/libkookie/home-manager/modules/services/wlsunset.nix97
1 files changed, 97 insertions, 0 deletions
diff --git a/infra/libkookie/home-manager/modules/services/wlsunset.nix b/infra/libkookie/home-manager/modules/services/wlsunset.nix
new file mode 100644
index 000000000000..084dbdb7c3d6
--- /dev/null
+++ b/infra/libkookie/home-manager/modules/services/wlsunset.nix
@@ -0,0 +1,97 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let cfg = config.services.wlsunset;
+
+in {
+ meta.maintainers = [ maintainers.matrss ];
+
+ options.services.wlsunset = {
+ enable = mkEnableOption "Whether to enable wlsunset.";
+
+ package = mkOption {
+ type = types.package;
+ default = pkgs.wlsunset;
+ defaultText = "pkgs.wlsunset";
+ description = ''
+ wlsunset derivation to use.
+ '';
+ };
+
+ 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 <literal>-180.0</literal> and
+ <literal>180.0</literal>.
+ '';
+ };
+
+ temperature = {
+ day = mkOption {
+ type = types.int;
+ default = 6500;
+ description = ''
+ Colour temperature to use during the day, in Kelvin (K).
+ This value must be greater than <literal>temperature.night</literal>.
+ '';
+ };
+
+ night = mkOption {
+ type = types.int;
+ default = 4000;
+ description = ''
+ Colour temperature to use during the night, in Kelvin (K).
+ This value must be smaller than <literal>temperature.day</literal>.
+ '';
+ };
+ };
+
+ gamma = mkOption {
+ type = types.str;
+ default = "1.0";
+ description = ''
+ Gamma value to use.
+ '';
+ };
+
+ systemdTarget = mkOption {
+ type = types.str;
+ default = "graphical-session.target";
+ description = ''
+ Systemd target to bind to.
+ '';
+ };
+ };
+
+ config = mkIf cfg.enable {
+ systemd.user.services.wlsunset = {
+ Unit = {
+ Description = "Day/night gamma adjustments for Wayland compositors.";
+ PartOf = [ "graphical-session.target" ];
+ };
+
+ Service = {
+ ExecStart = let
+ args = [
+ "-l ${cfg.latitude}"
+ "-L ${cfg.longitude}"
+ "-t ${toString cfg.temperature.night}"
+ "-T ${toString cfg.temperature.day}"
+ "-g ${cfg.gamma}"
+ ];
+ in "${cfg.package}/bin/wlsunset ${concatStringsSep " " args}";
+ };
+
+ Install = { WantedBy = [ cfg.systemdTarget ]; };
+ };
+ };
+}