python3Packages.orjson: Disable failing tests on 32 bit
[NixPkgs.git] / pkgs / development / libraries / flatpak / default.nix
blobd79923c0f81a574afc657dffc5e19a32fd3c0e0b
1 { lib, stdenv
2 , fetchurl
3 , autoreconfHook
4 , docbook_xml_dtd_45
5 , docbook-xsl-nons
6 , which
7 , libxml2
8 , gobject-introspection
9 , gtk-doc
10 , intltool
11 , libxslt
12 , pkg-config
13 , xmlto
14 , substituteAll
15 , runCommand
16 , bison
17 , xdg-dbus-proxy
18 , p11-kit
19 , appstream
20 , bubblewrap
21 , bzip2
22 , curl
23 , dbus
24 , glib
25 , gpgme
26 , json-glib
27 , libarchive
28 , libcap
29 , libseccomp
30 , coreutils
31 , socat
32 , gettext
33 , hicolor-icon-theme
34 , shared-mime-info
35 , desktop-file-utils
36 , gtk3
37 , fuse3
38 , nixosTests
39 , xz
40 , zstd
41 , ostree
42 , polkit
43 , python3
44 , systemd
45 , xorg
46 , valgrind
47 , glib-networking
48 , wrapGAppsNoGuiHook
49 , dconf
50 , gsettings-desktop-schemas
51 , librsvg
52 , makeWrapper
55 stdenv.mkDerivation (finalAttrs: {
56   pname = "flatpak";
57   version = "1.14.0";
59   # TODO: split out lib once we figure out what to do with triggerdir
60   outputs = [ "out" "dev" "man" "doc" "devdoc" "installedTests" ];
62   src = fetchurl {
63     url = "https://github.com/flatpak/flatpak/releases/download/${finalAttrs.version}/flatpak-${finalAttrs.version}.tar.xz";
64     sha256 = "sha256-jidpc3cOok3fJZetSuzTa5g5PmvekeSOF0OqymfyeBU="; # Taken from https://github.com/flatpak/flatpak/releases/
65   };
67   patches = [
68     # Hardcode paths used by tests and change test runtime generation to use files from Nix store.
69     # https://github.com/flatpak/flatpak/issues/1460
70     (substituteAll {
71       src = ./fix-test-paths.patch;
72       inherit coreutils gettext socat gtk3;
73       smi = shared-mime-info;
74       dfu = desktop-file-utils;
75       hicolorIconTheme = hicolor-icon-theme;
76     })
78     # Hardcode paths used by Flatpak itself.
79     (substituteAll {
80       src = ./fix-paths.patch;
81       p11kit = "${p11-kit.bin}/bin/p11-kit";
82     })
84     # Allow gtk-doc to find schemas using XML_CATALOG_FILES environment variable.
85     # Patch taken from gtk-doc expression.
86     ./respect-xml-catalog-files-var.patch
88     # Nix environment hacks should not leak into the apps.
89     # https://github.com/NixOS/nixpkgs/issues/53441
90     ./unset-env-vars.patch
92     # Do not clear XDG_DATA_DIRS in fish shell
93     # https://github.com/flatpak/flatpak/pull/5123
94     ./no-breaking-fish.patch
96     # The icon validator needs to access the gdk-pixbuf loaders in the Nix store
97     # and cannot bind FHS paths since those are not available on NixOS.
98     finalAttrs.passthru.icon-validator-patch
99   ];
101   nativeBuildInputs = [
102     autoreconfHook
103     libxml2
104     docbook_xml_dtd_45
105     docbook-xsl-nons
106     which
107     gobject-introspection
108     gtk-doc
109     intltool
110     libxslt
111     pkg-config
112     xmlto
113     bison
114     wrapGAppsNoGuiHook
115   ];
117   buildInputs = [
118     appstream
119     bubblewrap
120     bzip2
121     curl
122     dbus
123     dconf
124     gpgme
125     json-glib
126     libarchive
127     libcap
128     libseccomp
129     xz
130     zstd
131     polkit
132     python3
133     systemd
134     xorg.libXau
135     fuse3
136     gsettings-desktop-schemas
137     glib-networking
138     librsvg # for flatpak-validate-icon
139   ];
141   # Required by flatpak.pc
142   propagatedBuildInputs = [
143     glib
144     ostree
145   ];
147   checkInputs = [
148     valgrind
149   ];
151   # TODO: some issues with temporary files
152   doCheck = false;
154   NIX_LDFLAGS = "-lpthread";
156   enableParallelBuilding = true;
158   configureFlags = [
159     "--with-curl"
160     "--with-system-bubblewrap=${bubblewrap}/bin/bwrap"
161     "--with-system-dbus-proxy=${xdg-dbus-proxy}/bin/xdg-dbus-proxy"
162     "--with-dbus-config-dir=${placeholder "out"}/share/dbus-1/system.d"
163     "--localstatedir=/var"
164     "--enable-gtk-doc"
165     "--enable-installed-tests"
166   ];
168   makeFlags = [
169     "installed_testdir=${placeholder "installedTests"}/libexec/installed-tests/flatpak"
170     "installed_test_metadir=${placeholder "installedTests"}/share/installed-tests/flatpak"
171   ];
173   postPatch = let
174     vsc-py = python3.withPackages (pp: [
175       pp.pyparsing
176     ]);
177   in ''
178     patchShebangs buildutil
179     patchShebangs tests
180     PATH=${lib.makeBinPath [vsc-py]}:$PATH patchShebangs --build subprojects/variant-schema-compiler/variant-schema-compiler
181   '';
183   preFixup = ''
184     gappsWrapperArgs+=(
185       # Use flatpak from PATH in exported assets (e.g. desktop files).
186       --set FLATPAK_BINARY flatpak
187     )
188   '';
190   passthru = {
191     icon-validator-patch = substituteAll {
192       src = ./fix-icon-validation.patch;
193       inherit (builtins) storeDir;
194     };
196     tests = {
197       installedTests = nixosTests.installed-tests.flatpak;
199       validate-icon = runCommand "test-icon-validation" { } ''
200         ${finalAttrs.finalPackage}/libexec/flatpak-validate-icon --sandbox 512 512 ${../../../applications/audio/zynaddsubfx/ZynLogo.svg} > "$out"
201         grep format=svg "$out"
202       '';
203     };
204   };
206   meta = with lib; {
207     description = "Linux application sandboxing and distribution framework";
208     homepage = "https://flatpak.org/";
209     license = licenses.lgpl21Plus;
210     maintainers = with maintainers; [ jtojnar ];
211     platforms = platforms.linux;
212   };