1{ lib, stdenv, fetchurl, buildPackages }:
2
3stdenv.mkDerivation rec {
4 pname = "tzdata";
5 version = "2023c";
6
7 srcs = [
8 (fetchurl {
9 url = "https://data.iana.org/time-zones/releases/tzdata${version}.tar.gz";
10 hash = "sha256-P1ELXRtK6bs45IWqMCp3azF/s2N722QExK33tsrdllw=";
11 })
12 (fetchurl {
13 url = "https://data.iana.org/time-zones/releases/tzcode${version}.tar.gz";
14 hash = "sha256-RtF/K7Ga1zKQ8DogMAYVLg+g17EeW3FGfEqCOBGyFOc=";
15 })
16 ];
17
18 sourceRoot = ".";
19
20 patches = lib.optionals stdenv.hostPlatform.isWindows [
21 ./0001-Add-exe-extension-for-MS-Windows-binaries.patch
22 ];
23
24 outputs = [ "out" "bin" "man" "dev" ];
25 propagatedBuildOutputs = [];
26
27 makeFlags = [
28 "TOPDIR=$(out)"
29 "TZDIR=$(out)/share/zoneinfo"
30 "BINDIR=$(bin)/bin"
31 "ZICDIR=$(bin)/bin"
32 "ETCDIR=$(TMPDIR)/etc"
33 "TZDEFAULT=tzdefault-to-remove"
34 "LIBDIR=$(dev)/lib"
35 "MANDIR=$(man)/share/man"
36 "AWK=awk"
37 "CFLAGS=-DHAVE_LINK=0"
38 "CFLAGS+=-DZIC_BLOAT_DEFAULT=\\\"fat\\\""
39 "cc=${stdenv.cc.targetPrefix}cc"
40 "AR=${stdenv.cc.targetPrefix}ar"
41 ] ++ lib.optionals stdenv.hostPlatform.isWindows [
42 "CFLAGS+=-DHAVE_DIRECT_H"
43 "CFLAGS+=-DHAVE_SETENV=0"
44 "CFLAGS+=-DHAVE_SYMLINK=0"
45 "CFLAGS+=-DRESERVE_STD_EXT_IDS"
46 ];
47
48 doCheck = false; # needs more tools
49
50 installFlags = lib.optionals (stdenv.buildPlatform != stdenv.hostPlatform) [
51 "zic=${buildPackages.tzdata.bin}/bin/zic"
52 ];
53
54 postInstall =
55 ''
56 rm $out/share/zoneinfo-posix
57 rm $out/share/zoneinfo/tzdefault-to-remove
58 mkdir $out/share/zoneinfo/posix
59 ( cd $out/share/zoneinfo/posix; ln -s ../* .; rm posix )
60 mv $out/share/zoneinfo-leaps $out/share/zoneinfo/right
61
62 mkdir -p "$dev/include"
63 cp tzfile.h "$dev/include/tzfile.h"
64 '';
65
66 setupHook = ./tzdata-setup-hook.sh;
67
68 meta = with lib; {
69 homepage = "http://www.iana.org/time-zones";
70 description = "Database of current and historical time zones";
71 changelog = "https://github.com/eggert/tz/blob/${version}/NEWS";
72 license = with licenses; [
73 bsd3 # tzcode
74 publicDomain # tzdata
75 ];
76 platforms = platforms.all;
77 maintainers = with maintainers; [ ajs124 fpletz ];
78 };
79}