tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
lol
0
fork
atom
overview
issues
pulls
pipelines
_86Box: reformat according to RFC166
John Chadwick
2 years ago
dc701446
5f865840
+50
-32
1 changed file
expand all
collapse all
unified
split
pkgs
applications
emulators
86box
default.nix
+50
-32
pkgs/applications/emulators/86box/default.nix
···
1
1
-
{ stdenv, lib, fetchFromGitHub, cmake, pkg-config, makeWrapper, freetype, SDL2
2
2
-
, glib, pcre2, openal, rtmidi, fluidsynth, jack2, alsa-lib, qt5, libvncserver
3
3
-
, discord-gamesdk, libpcap, libslirp
1
1
+
{
2
2
+
stdenv,
3
3
+
lib,
4
4
+
fetchFromGitHub,
5
5
+
cmake,
6
6
+
pkg-config,
7
7
+
makeWrapper,
8
8
+
freetype,
9
9
+
SDL2,
10
10
+
glib,
11
11
+
pcre2,
12
12
+
openal,
13
13
+
rtmidi,
14
14
+
fluidsynth,
15
15
+
jack2,
16
16
+
alsa-lib,
17
17
+
qt5,
18
18
+
libvncserver,
19
19
+
discord-gamesdk,
20
20
+
libpcap,
21
21
+
libslirp,
4
22
5
5
-
, enableDynarec ? with stdenv.hostPlatform; isx86 || isAarch
6
6
-
, enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch
7
7
-
, enableVncRenderer ? false
8
8
-
, unfreeEnableDiscord ? false
9
9
-
, unfreeEnableRoms ? false
23
23
+
enableDynarec ? with stdenv.hostPlatform; isx86 || isAarch,
24
24
+
enableNewDynarec ? enableDynarec && stdenv.hostPlatform.isAarch,
25
25
+
enableVncRenderer ? false,
26
26
+
unfreeEnableDiscord ? false,
27
27
+
unfreeEnableRoms ? false,
10
28
}:
11
29
12
30
stdenv.mkDerivation (finalAttrs: {
···
40
58
libslirp
41
59
qt5.qtbase
42
60
qt5.qttools
43
43
-
] ++ lib.optional stdenv.isLinux alsa-lib
44
44
-
++ lib.optional enableVncRenderer libvncserver;
61
61
+
] ++ lib.optional stdenv.isLinux alsa-lib ++ lib.optional enableVncRenderer libvncserver;
45
62
46
46
-
cmakeFlags = lib.optional stdenv.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF"
63
63
+
cmakeFlags =
64
64
+
lib.optional stdenv.isDarwin "-DCMAKE_MACOSX_BUNDLE=OFF"
47
65
++ lib.optional enableNewDynarec "-DNEW_DYNAREC=ON"
48
66
++ lib.optional enableVncRenderer "-DVNC=ON"
49
67
++ lib.optional (!enableDynarec) "-DDYNAREC=OFF"
50
68
++ lib.optional (!unfreeEnableDiscord) "-DDISCORD=OFF";
51
69
52
52
-
postInstall = lib.optionalString stdenv.isLinux ''
53
53
-
install -Dm644 -t $out/share/applications $src/src/unix/assets/net.86box.86Box.desktop
70
70
+
postInstall =
71
71
+
lib.optionalString stdenv.isLinux ''
72
72
+
install -Dm644 -t $out/share/applications $src/src/unix/assets/net.86box.86Box.desktop
54
73
55
55
-
for size in 48 64 72 96 128 192 256 512; do
56
56
-
install -Dm644 -t $out/share/icons/hicolor/"$size"x"$size"/apps \
57
57
-
$src/src/unix/assets/"$size"x"$size"/net.86box.86Box.png
58
58
-
done;
59
59
-
''
60
60
-
+ lib.optionalString unfreeEnableRoms ''
61
61
-
mkdir -p $out/share/86Box
62
62
-
ln -s ${finalAttrs.passthru.roms} $out/share/86Box/roms
63
63
-
'';
74
74
+
for size in 48 64 72 96 128 192 256 512; do
75
75
+
install -Dm644 -t $out/share/icons/hicolor/"$size"x"$size"/apps \
76
76
+
$src/src/unix/assets/"$size"x"$size"/net.86box.86Box.png
77
77
+
done;
78
78
+
''
79
79
+
+ lib.optionalString unfreeEnableRoms ''
80
80
+
mkdir -p $out/share/86Box
81
81
+
ln -s ${finalAttrs.passthru.roms} $out/share/86Box/roms
82
82
+
'';
64
83
65
84
passthru = {
66
85
roms = fetchFromGitHub {
···
73
92
74
93
# Some libraries are loaded dynamically, but QLibrary doesn't seem to search
75
94
# the runpath, so use a wrapper instead.
76
76
-
preFixup = let
77
77
-
libPath = lib.makeLibraryPath ([
78
78
-
libpcap
79
79
-
] ++ lib.optional unfreeEnableDiscord discord-gamesdk);
80
80
-
libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
81
81
-
in ''
82
82
-
makeWrapperArgs+=(--prefix ${libPathVar} : "${libPath}")
83
83
-
'';
95
95
+
preFixup =
96
96
+
let
97
97
+
libPath = lib.makeLibraryPath ([ libpcap ] ++ lib.optional unfreeEnableDiscord discord-gamesdk);
98
98
+
libPathVar = if stdenv.isDarwin then "DYLD_LIBRARY_PATH" else "LD_LIBRARY_PATH";
99
99
+
in
100
100
+
''
101
101
+
makeWrapperArgs+=(--prefix ${libPathVar} : "${libPath}")
102
102
+
'';
84
103
85
104
meta = with lib; {
86
105
description = "Emulator of x86-based machines based on PCem.";
87
106
mainProgram = "86Box";
88
107
homepage = "https://86box.net/";
89
89
-
license = with licenses; [ gpl2Only ]
90
90
-
++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
108
108
+
license = with licenses; [ gpl2Only ] ++ optional (unfreeEnableDiscord || unfreeEnableRoms) unfree;
91
109
maintainers = [ maintainers.jchw ];
92
110
platforms = platforms.linux;
93
111
};