nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 stdenv,
3 lib,
4 fetchurl,
5 squashfsTools,
6 autoPatchelfHook,
7 copyDesktopItems,
8 alsa-lib,
9 nss,
10 libdrm,
11 libgbm,
12 libGL,
13 libxkbcommon,
14 pcsclite,
15 makeDesktopItem,
16 makeWrapper,
17 wrapGAppsHook3,
18 writeScript,
19 udev,
20}:
21
22stdenv.mkDerivation rec {
23 pname = "tk-safe";
24 version = "25.12.0";
25 revision = "24";
26
27 src = fetchurl {
28 url = "https://api.snapcraft.io/api/v1/snaps/download/rLNeIGEaag0TKFQLO0TxF3ARXg3rcTNx_${revision}.snap";
29 hash = "sha512-cAe982qjRgu3GJ1ttY+84ghAzorB1BREcEM+wY6pTW2kJvu5Czu881dPDUXpdSMil99lrtgZ7Mx3bPycDPXmMg==";
30 };
31
32 desktopItems = [
33 (makeDesktopItem {
34 name = "tk-safe";
35 icon = "tk-safe";
36 exec = "tk-safe";
37 desktopName = "TK-Safe";
38 comment = meta.description;
39 genericName = "Eletronic medical record (ePA)";
40 categories = [ "Utility" ];
41 })
42 ];
43
44 nativeBuildInputs = [
45 autoPatchelfHook
46 copyDesktopItems
47 makeWrapper
48 squashfsTools
49 wrapGAppsHook3
50 ];
51
52 unpackPhase = ''
53 runHook preUnpack
54
55 unsquashfs $src
56
57 runHook postUnpack
58 '';
59
60 sourceRoot = "squashfs-root";
61
62 postPatch = ''
63 rm -rf lib usr
64 '';
65
66 buildInputs = [
67 alsa-lib
68 nss
69 libdrm
70 libgbm
71 libxkbcommon
72 udev
73 pcsclite
74 ];
75
76 installPhase = ''
77 runHook preInstall
78
79 mkdir -p $out/{bin,opt/tk-safe}
80 mv * $out/opt/tk-safe
81 ln -s $out/opt/tk-safe/app/tk-safe $out/bin/tk-safe
82
83 mkdir -p $out/share/icons/hicolor/1024x1024/apps
84 ln -s $out/opt/tk-safe/meta/gui/icon.png $out/share/icons/hicolor/1024x1024/apps/tk-safe.png
85
86 runHook postInstall
87 '';
88
89 preFixup = ''
90 wrapProgram $out/opt/tk-safe/app/tk-safe \
91 --prefix LD_LIBRARY_PATH : "${lib.makeLibraryPath [ libGL ]}"
92 '';
93
94 passthru.updateScript = writeScript "update-tk-safe" ''
95 #!/usr/bin/env nix-shell
96 #!nix-shell -i bash -p common-updater-scripts curl jq
97
98 set -eu -o pipefail
99
100 data=$(curl -H 'X-Ubuntu-Series: 16' \
101 'https://api.snapcraft.io/api/v1/snaps/details/tk-safe?fields=download_sha512,revision,version')
102
103 version=$(jq -r .version <<<"$data")
104
105 if [[ "x$UPDATE_NIX_OLD_VERSION" != "x$version" ]]; then
106
107 revision=$(jq -r .revision <<<"$data")
108 hash=$(nix --extra-experimental-features nix-command hash to-sri "sha512:$(jq -r .download_sha512 <<<"$data")")
109
110 update-source-version "$UPDATE_NIX_ATTR_PATH" "$version" "$hash"
111 update-source-version --ignore-same-hash --version-key=revision "$UPDATE_NIX_ATTR_PATH" "$revision" "$hash"
112
113 fi
114 '';
115
116 meta = {
117 description = "Electronic medical record (ePA) by Techniker Krankenkasse (TK)";
118 homepage = "https://snapcraft.io/tk-safe";
119 license = lib.licenses.unfree;
120 platforms = [ "x86_64-linux" ];
121 # Vendored copy of Electron.
122 sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
123 maintainers = with lib.maintainers; [ felschr ];
124 mainProgram = "tk-safe";
125 };
126}