biome: 1.9.2 -> 1.9.3
[NixPkgs.git] / pkgs / applications / misc / redshift / default.nix
blob6451fa2c7acf9a9dcab1c0defd5fdf53795dbee8
1 { lib, stdenv, fetchFromGitHub, fetchFromGitLab
2 , autoconf, automake, gettext, intltool
3 , libtool, pkg-config, wrapGAppsHook3, wrapPython, gobject-introspection, wayland-scanner
4 , gtk3, python, pygobject3, pyxdg
6 , withQuartz ? stdenv.hostPlatform.isDarwin, ApplicationServices
7 , withRandr ? stdenv.hostPlatform.isLinux, libxcb
8 , withDrm ? stdenv.hostPlatform.isLinux, libdrm
9 , withVidmode ? stdenv.hostPlatform.isLinux, libXxf86vm
11 , withGeolocation ? true
12 , withCoreLocation ? withGeolocation && stdenv.hostPlatform.isDarwin, CoreLocation, Foundation, Cocoa
13 , withGeoclue ? withGeolocation && stdenv.hostPlatform.isLinux, geoclue
14 , withAppIndicator ? stdenv.hostPlatform.isLinux, libappindicator, libayatana-appindicator
17 let
18   mkRedshift =
19     { pname, version, src, meta }:
20     stdenv.mkDerivation rec {
21       inherit pname version src meta;
23       patches = lib.optionals (pname != "gammastep") [
24         # https://github.com/jonls/redshift/pull/575
25         ./575.patch
26       ];
28       strictDeps = true;
30       depsBuildBuild = [ pkg-config ];
32       nativeBuildInputs = [
33         autoconf
34         automake
35         gettext
36         intltool
37         libtool
38         pkg-config
39         wrapGAppsHook3
40         wrapPython
41         gobject-introspection
42         python
43       ] ++ lib.optionals (pname == "gammastep") [ wayland-scanner ];
45       configureFlags = [
46         "--enable-randr=${if withRandr then "yes" else "no"}"
47         "--enable-geoclue2=${if withGeoclue then "yes" else "no"}"
48         "--enable-drm=${if withDrm then "yes" else "no"}"
49         "--enable-vidmode=${if withVidmode then "yes" else "no"}"
50         "--enable-quartz=${if withQuartz then "yes" else "no"}"
51         "--enable-corelocation=${if withCoreLocation then "yes" else "no"}"
52       ] ++ lib.optionals (pname == "gammastep") [
53         "--with-systemduserunitdir=${placeholder "out"}/lib/systemd/user/"
54         "--enable-apparmor"
55       ];
57       buildInputs = [
58         gtk3
59       ] ++ lib.optional  withRandr        libxcb
60         ++ lib.optional  withGeoclue      geoclue
61         ++ lib.optional  withDrm          libdrm
62         ++ lib.optional  withVidmode      libXxf86vm
63         ++ lib.optional  withQuartz       ApplicationServices
64         ++ lib.optionals withCoreLocation [ CoreLocation Foundation Cocoa ]
65         ++ lib.optional  withAppIndicator (if (pname != "gammastep")
66              then libappindicator
67              else libayatana-appindicator)
68         ;
70       pythonPath = [ pygobject3 pyxdg ];
72       preConfigure = "./bootstrap";
74       dontWrapGApps = true;
76       preFixup = ''
77         makeWrapperArgs+=("''${gappsWrapperArgs[@]}")
78       '';
80       postFixup = ''
81         wrapPythonPrograms
82         wrapGApp $out/bin/${pname}
83       '';
85       # the geoclue agent may inspect these paths and expect them to be
86       # valid without having the correct $PATH set
87       postInstall = if (pname == "gammastep") then ''
88         substituteInPlace $out/share/applications/gammastep.desktop \
89           --replace 'Exec=gammastep' "Exec=$out/bin/gammastep"
90         substituteInPlace $out/share/applications/gammastep-indicator.desktop \
91           --replace 'Exec=gammastep-indicator' "Exec=$out/bin/gammastep-indicator"
92       '' else ''
93         substituteInPlace $out/share/applications/redshift.desktop \
94           --replace 'Exec=redshift' "Exec=$out/bin/redshift"
95         substituteInPlace $out/share/applications/redshift-gtk.desktop \
96           --replace 'Exec=redshift-gtk' "Exec=$out/bin/redshift-gtk"
97       '';
99       enableParallelBuilding = true;
100     };
102 rec {
103   redshift = mkRedshift rec {
104     pname = "redshift";
105     version = "1.12";
107     src = fetchFromGitHub {
108       owner = "jonls";
109       repo = "redshift";
110       rev = "v${version}";
111       sha256 = "12cb4gaqkybp4bkkns8pam378izr2mwhr2iy04wkprs2v92j7bz6";
112     };
114     meta = with lib; {
115       description = "Screen color temperature manager";
116       longDescription = ''
117         Redshift adjusts the color temperature according to the position
118         of the sun. A different color temperature is set during night and
119         daytime. During twilight and early morning, the color temperature
120         transitions smoothly from night to daytime temperature to allow
121         your eyes to slowly adapt. At night the color temperature should
122         be set to match the lamps in your room.
123       '';
124       license = licenses.gpl3Plus;
125       homepage = "http://jonls.dk/redshift";
126       platforms = platforms.unix;
127       mainProgram = "redshift";
128       maintainers = [ ];
129     };
130   };
132   gammastep = mkRedshift rec {
133     pname = "gammastep";
134     version = "2.0.9";
136     src = fetchFromGitLab {
137       owner = "chinstrap";
138       repo = pname;
139       rev = "v${version}";
140       hash = "sha256-EdVLBBIEjMu+yy9rmcxQf4zdW47spUz5SbBDbhmLjOU=";
141     };
143     meta = redshift.meta // {
144       name = "${pname}-${version}";
145       longDescription = "Gammastep"
146         + lib.removePrefix "Redshift" redshift.meta.longDescription;
147       homepage = "https://gitlab.com/chinstrap/gammastep";
148       mainProgram = "gammastep";
149       maintainers = (with lib.maintainers; [ primeos ]) ++ redshift.meta.maintainers;
150     };
151   };