Redshift: Difference between revisions
mNo edit summary |
|||
| Line 33: | Line 33: | ||
==== Home Manager ==== | ==== Home Manager ==== | ||
===== Example Usage | ===== Example Usage ===== | ||
You can find more options in [https://nix-community.github.io/home-manager/options.xhtml#opt-services.redshift.enable Home Manager: services.redshift]. This configuration defines the temperature the display will use at night and day, the schedule and length of the transition, brightness for the display to use, and whether it will use a tray icon. <code>extraOptions</code> defines additional command-line arguments to pass to <code>redshift</code>. | You can find more options in [https://nix-community.github.io/home-manager/options.xhtml#opt-services.redshift.enable Home Manager: services.redshift]. This configuration defines the temperature the display will use at night and day, the schedule and length of the transition, brightness for the display to use, and whether it will use a tray icon. <code>extraOptions</code> defines additional command-line arguments to pass to <code>redshift</code>. | ||
{{File|3=services.redshift = { | {{File|3=services.redshift = { | ||
| Line 67: | Line 67: | ||
You can choose to use Redshift with location based screen temperature to match when the sun actually sets and rises in your area. Below are examples of those options using [https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home Geoclue] and manually set coordinates. | You can choose to use Redshift with location based screen temperature to match when the sun actually sets and rises in your area. Below are examples of those options using [https://gitlab.freedesktop.org/geoclue/geoclue/-/wikis/home Geoclue] and manually set coordinates. | ||
====== Geoclue | ====== Geoclue ====== | ||
Geoclue provides location using GPS, 3G modems, GeoIP, and WiFi Geolocation. Some integrations may require additional setup.{{File|3=services.redshift = { | Geoclue provides location using GPS, 3G modems, GeoIP, and WiFi Geolocation. Some integrations may require additional setup.{{File|3=services.redshift = { | ||
enable = true; | enable = true; | ||
| Line 75: | Line 75: | ||
location.provider = "geoclue2";|name=/etc/nixos/configuration.nix|lang=nix}} | location.provider = "geoclue2";|name=/etc/nixos/configuration.nix|lang=nix}} | ||
====== Coordinates | ====== Coordinates ====== | ||
{{File|3=services.redshift = { | {{File|3=services.redshift = { | ||
enable = true; | enable = true; | ||
Latest revision as of 20:18, 3 December 2025
Redshift is an open-source software application designed to adjust color temperature of screens based on the time of day.
It does this by gradually shifting the color temperature of the display to reduce the amount of blue light towards the night, and increasing the amount of blue light in the morning.
Users may choose to have screen temperature automatically match their lighting based on geographic location, or based on manually set time-frames. Users may also customize day and night color temperatures, adjust the speed of transitions, and more.
Redshift is best used on X11 systems as it is unmaintained and does not support Wayland.
For Wayland support you may consider Gammastep, a modern fork of Redshift. Alternatively there is also wlsunset, which is a lightweight modern alternative.
Installation
Using Global Configuration
environment.systemPackages = [
pkgs.redshift
];
Using Home Configuration
home.packages = [
pkgs.redshift
];
Configuration
Global Configuration:
Options may be found under services.redshift. For more options for configuring Geoclue, check the Geoclue page.
services.redshift = {
enable = true;
temperature = {
day = 5500;
night = 3700;
};
};
services.geoclue2.enable = true;
location.provider = "geoclue2";
Home Manager
Example Usage
You can find more options in Home Manager: services.redshift. This configuration defines the temperature the display will use at night and day, the schedule and length of the transition, brightness for the display to use, and whether it will use a tray icon. extraOptions defines additional command-line arguments to pass to redshift.
services.redshift = {
enable = true;
# Display temperature settings (in Kelvin)
temperature = {
day = 5500;
night = 3500;
};
# Schedule settings
dawnTime = "6:00-7:45";
duskTime = "18:35-20:15";
# Brightness
brightness = {
day = "1";
night = "0.8";
};
extraOptions = [
"-v"
"-m randr"
];
# Tray Icon
tray = false;
};
Location Based Transitions
You can choose to use Redshift with location based screen temperature to match when the sun actually sets and rises in your area. Below are examples of those options using Geoclue and manually set coordinates.
Geoclue
Geoclue provides location using GPS, 3G modems, GeoIP, and WiFi Geolocation. Some integrations may require additional setup.
services.redshift = {
enable = true;
provider = "geoclue2";
};
You will also need to enable Geoclue in your global configuration (See options on the Geoclue page).
services.geoclue2.enable = true;
location.provider = "geoclue2";
Coordinates
services.redshift = {
enable = true;
# Coordinates based location
provider = "manual";
latitude = "27.9880614";
longitude = "86.92521";
};
Instead of declaring your coordinates in Redshift, you can also declare them globally for your device in your global configuration:
location = {
provider = "manual";
latitude = "27.9880614";
longitude = "86.92521";
};
Troubleshooting
Provider is unable to determine location
It may happen that Redshift gets stuck at "Waiting for initial location to become available..." when using the geoclue2 location provider. This may happen when Geoclue is unable to determine your location due to missing information. In that case, you may resort to setting the location manually or using an alternate location service such as beaconDB, which can take advantage of WiFi scanning.
An example of using beaconDB as an alternative:
location.provider = "geoclue2";
services.geoclue2 = {
enable = true;
geoProviderUrl = "https://api.beacondb.net/v1/geolocate";
};