nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 stdenv,
4 fetchFromGitLab,
5 callPackage,
6 libglut,
7 freealut,
8 libGLU,
9 libGL,
10 libICE,
11 libjpeg,
12 openal,
13 plib,
14 libSM,
15 libunwind,
16 libX11,
17 xorgproto,
18 libXext,
19 libXi,
20 libXmu,
21 libXt,
22 simgear,
23 zlib,
24 boost,
25 cmake,
26 libpng,
27 udev,
28 fltk_1_3,
29 apr,
30 qt5,
31 glew,
32 curl,
33}:
34
35let
36 version = "2024.1.3";
37 data = stdenv.mkDerivation rec {
38 pname = "flightgear-data";
39 inherit version;
40
41 src = fetchFromGitLab {
42 owner = "flightgear";
43 repo = "fgdata";
44 tag = version;
45 hash = "sha256-LNHO/W8p4b8fYcehdfVecldKQ9uJp1zlg60xdgDC45c=";
46 };
47
48 dontUnpack = true;
49
50 installPhase = ''
51 mkdir -p "$out/share/FlightGear"
52 cp ${src}/* -a "$out/share/FlightGear/"
53 '';
54 };
55 openscenegraph = callPackage ./openscenegraph-flightgear.nix { };
56in
57stdenv.mkDerivation rec {
58 pname = "flightgear";
59 # inheriting data for `nix-prefetch-url -A pkgs.flightgear.data.src`
60 inherit version data;
61
62 src = fetchFromGitLab {
63 owner = "flightgear";
64 repo = "flightgear";
65 tag = version;
66 hash = "sha256-m4bbWwMXwKJrMkb6svGrIZhcsPghrTMgFs8JCx3Wn/A=";
67 };
68
69 nativeBuildInputs = [
70 cmake
71 qt5.wrapQtAppsHook
72 ];
73 buildInputs = [
74 libglut
75 freealut
76 libGLU
77 libGL
78 libICE
79 libjpeg
80 openal
81 openscenegraph
82 plib
83 libSM
84 libunwind
85 libX11
86 xorgproto
87 libXext
88 libXi
89 libXmu
90 libXt
91 (simgear.override { openscenegraph = openscenegraph; })
92 zlib
93 boost
94 libpng
95 udev
96 fltk_1_3
97 apr
98 qt5.qtbase
99 qt5.qtquickcontrols2
100 glew
101 qt5.qtdeclarative
102 curl
103 ];
104
105 qtWrapperArgs = [ "--set FG_ROOT ${data}/share/FlightGear" ];
106
107 postInstall = ''
108 # Remove redundant AppImage artifacts
109 rm -rf "$out/appdir"
110 '';
111
112 meta = {
113 description = "Flight simulator";
114 maintainers = with lib.maintainers; [ raskin ];
115 platforms = lib.platforms.linux;
116 hydraPlatforms = [ ]; # disabled from hydra because it's so big
117 license = lib.licenses.gpl2Plus;
118 mainProgram = "fgfs";
119 };
120}