diff --git a/pkgs/default.nix b/pkgs/default.nix
index 8f1a76e6f6002f6358e3ffeb5c79afe2f220cbef..612abdc469e80d8c639173d0227f64de9bd527a7 100644
--- a/pkgs/default.nix
+++ b/pkgs/default.nix
@@ -261,6 +261,7 @@
gnsstk = callPackage ./gnss/gnsstk { };
gnsstk-apps = callPackage ./gnss/gnsstk-apps { };
gps-sdr-sim = callPackage ./gnss/gps-sdr-sim { };
rtklib = callPackage ./gnss/rtklib { };
visualgps = libsForQt5.callPackage ./gnss/visualgps { };
diff --git a/pkgs/gnss/gpsdate/clock_settime.patch b/pkgs/gnss/gpsdate/clock_settime.patch
new file mode 100644
index 0000000000000000000000000000000000000000..ac0cd3d70ed4aa221434d32f5a4e3f57fa6f7097
--- /dev/null
+++ b/pkgs/gnss/gpsdate/clock_settime.patch
@@ -0,0 +1,19 @@
+diff --git i/gpsdate.c w/gpsdate.c
+index 969bbdc..fe10276 100644
+--- i/gpsdate.c
++++ w/gpsdate.c
+@@ -104,10 +104,11 @@ static void process_message(const char *msgid, const char **data)
t->tm_sec = seconds;
/* Set new system time: */
+- time_t gps_time = mktime(t);
+- gps_time += t->tm_gmtoff;
++ struct timespec gps_time;
++ gps_time.tv_sec = mktime(t) + t->tm_gmtoff;
++ gps_time.tv_nsec = 0;
+- if (stime(&gps_time) == 0) {
++ if (clock_settime(CLOCK_REALTIME, &gps_time) == 0) {
printf("Successfully updated local time.\n");
date_changed = true;
} else {
diff --git a/pkgs/gnss/gpsdate/default.nix b/pkgs/gnss/gpsdate/default.nix
new file mode 100644
index 0000000000000000000000000000000000000000..2ea2e49ccbf3820abfa199650a545db3013ce7b7
--- /dev/null
+++ b/pkgs/gnss/gpsdate/default.nix
@@ -0,0 +1,27 @@
+{ lib, stdenv, fetchFromGitHub }:
+stdenv.mkDerivation (finalAttrs: {
+})
application/octet-stream
This content has been proxied by September (3851b).