pytrainer: unpin python 3.10
[NixPkgs.git] / pkgs / build-support / appimage / default.nix
bloba6b08042db99376f0e6c84d058e2b1c6dd19a70c
1 { lib
2 , bash
3 , binutils-unwrapped
4 , coreutils
5 , gawk
6 , libarchive
7 , pv
8 , squashfsTools
9 , buildFHSEnv
10 , pkgs
13 rec {
14   appimage-exec = pkgs.substituteAll {
15     src = ./appimage-exec.sh;
16     isExecutable = true;
17     dir = "bin";
18     path = lib.makeBinPath [
19       bash
20       binutils-unwrapped
21       coreutils
22       gawk
23       libarchive
24       pv
25       squashfsTools
26     ];
27   };
29   extract = args@{ name ? "${args.pname}-${args.version}", postExtract ? "", src, ... }: pkgs.runCommand "${name}-extracted" {
30       buildInputs = [ appimage-exec ];
31     } ''
32       appimage-exec.sh -x $out ${src}
33       ${postExtract}
34     '';
36   # for compatibility, deprecated
37   extractType1 = extract;
38   extractType2 = extract;
39   wrapType1 = wrapType2;
41   wrapAppImage = args@{
42     src,
43     extraPkgs ? pkgs: [ ],
44     meta ? {},
45     ...
46   }: buildFHSEnv
47     (defaultFhsEnvArgs // {
48       targetPkgs = pkgs: [ appimage-exec ]
49         ++ defaultFhsEnvArgs.targetPkgs pkgs ++ extraPkgs pkgs;
51       runScript = "appimage-exec.sh -w ${src} --";
53       meta = {
54         sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
55       } // meta;
56     } // (removeAttrs args (builtins.attrNames (builtins.functionArgs wrapAppImage))));
58   wrapType2 = args@{ src, extraPkgs ? pkgs: [ ], ... }: wrapAppImage
59     (args // {
60       inherit extraPkgs;
61       src = extract (lib.filterAttrs (key: value: builtins.elem key [ "name" "pname" "version" "src" ]) args);
63       # passthru src to make nix-update work
64       # hack to keep the origin position (unsafeGetAttrPos)
65       passthru = lib.pipe args [
66         lib.attrNames
67         (lib.remove "src")
68         (removeAttrs args)
69       ] // args.passthru or { };
70     });
72   defaultFhsEnvArgs = {
73     # Most of the packages were taken from the Steam chroot
74     targetPkgs = pkgs: with pkgs; [
75       gtk3
76       bashInteractive
77       zenity
78       xorg.xrandr
79       which
80       perl
81       xdg-utils
82       iana-etc
83       krb5
84       gsettings-desktop-schemas
85       hicolor-icon-theme # dont show a gtk warning about hicolor not being installed
86     ];
88     # list of libraries expected in an appimage environment:
89     # https://github.com/AppImage/pkg2appimage/blob/master/excludelist
90     multiPkgs = pkgs: with pkgs; [
91       desktop-file-utils
92       xorg.libXcomposite
93       xorg.libXtst
94       xorg.libXrandr
95       xorg.libXext
96       xorg.libX11
97       xorg.libXfixes
98       libGL
100       gst_all_1.gstreamer
101       gst_all_1.gst-plugins-ugly
102       gst_all_1.gst-plugins-base
103       libdrm
104       xorg.xkeyboardconfig
105       xorg.libpciaccess
107       glib
108       gtk2
109       bzip2
110       zlib
111       gdk-pixbuf
113       xorg.libXinerama
114       xorg.libXdamage
115       xorg.libXcursor
116       xorg.libXrender
117       xorg.libXScrnSaver
118       xorg.libXxf86vm
119       xorg.libXi
120       xorg.libSM
121       xorg.libICE
122       freetype
123       curlWithGnuTls
124       nspr
125       nss
126       fontconfig
127       cairo
128       pango
129       expat
130       dbus
131       cups
132       libcap
133       SDL2
134       libusb1
135       udev
136       dbus-glib
137       atk
138       at-spi2-atk
139       libudev0-shim
141       xorg.libXt
142       xorg.libXmu
143       xorg.libxcb
144       xorg.xcbutil
145       xorg.xcbutilwm
146       xorg.xcbutilimage
147       xorg.xcbutilkeysyms
148       xorg.xcbutilrenderutil
149       libGLU
150       libuuid
151       libogg
152       libvorbis
153       SDL
154       SDL2_image
155       glew110
156       openssl
157       libidn
158       tbb
159       wayland
160       mesa
161       libxkbcommon
162       vulkan-loader
164       flac
165       libglut
166       libjpeg
167       libpng12
168       libpulseaudio
169       libsamplerate
170       libmikmod
171       libthai
172       libtheora
173       libtiff
174       pixman
175       speex
176       SDL_image
177       SDL_ttf
178       SDL_mixer
179       SDL2_ttf
180       SDL2_mixer
181       libappindicator-gtk2
182       libcaca
183       libcanberra
184       libgcrypt
185       libvpx
186       librsvg
187       xorg.libXft
188       libvdpau
189       alsa-lib
191       harfbuzz
192       e2fsprogs
193       libgpg-error
194       keyutils.lib
195       libjack2
196       fribidi
197       p11-kit
199       gmp
201       # libraries not on the upstream include list, but nevertheless expected
202       # by at least one appimage
203       libtool.lib # for Synfigstudio
204       xorg.libxshmfence # for apple-music-electron
205       at-spi2-core
206       pciutils # for FreeCAD
207       pipewire # immersed-vr wayland support
209       libsecret # For bitwarden
210     ];
211   };