5 pkgs ? (import nixpkgs) {},
12 xonotic = mkDerivation { pki = true; dp = true; data = true; } rec {
13 name = "xonotic-${version}";
16 src = lib.sourceFilesBySuffices ./. [
25 QCC = "${gmqcc}/gmqcc";
31 # unzip # for downloading maps
39 openssl # for d0_blind_id
60 exe=darkplaces/darkplaces
61 rpath=$(patchelf --print-rpath $exe)
62 rpath_firstparty=$out/d0_blind_id
63 rpath_thirdparty=${lib.makeLibraryPath runtimeInputs}
64 rpath=''${rpath:+$rpath:}$rpath_firstparty:$rpath_thirdparty
65 patchelf --set-rpath $rpath $exe
73 gmqcc = mkDerivation { qcc = true; } rec {
74 name = "gmqcc-${version}";
75 version = "xonotic-${VERSION}";
85 netradiant = mkDerivation { radiant = true; } rec {
86 name = "netradiant-${version}";
125 stdenv = if (cc != null) then overrideCC pkgs.stdenv pkgs."${cc}" else pkgs.stdenv;
126 mkEnableTargets = args: {
127 XON_NO_PKI = !args?pki;
128 XON_NO_DP = !args?dp;
129 XON_NO_DATA = !args?data;
130 XON_NO_QCC = !args?qcc;
131 XON_NO_RADIANT = !args?radiant;
133 mkDerivation = targets: {env ? {}, shellHook ? "", runtimeInputs ? [], ...}@args:
134 stdenv.mkDerivation (
135 (mkEnableTargets targets)
136 // { enableParallelBuilding = true; }
137 // (removeAttrs args ["env" "shellHook" "runtimeInputs"]) # passthru
142 ${lib.concatStringsSep "\n" (lib.mapAttrsToList (n: v: "export ${n}=${v}") env)}
143 export LD_LIBRARY_PATH=''${LD_LIBRARY_PATH:+$LD_LIBRARY_PATH:}${lib.makeLibraryPath runtimeInputs}
147 shell = let inputs = (lib.mapAttrsToList (n: v: v) targets); in stdenv.mkDerivation (rec {
149 XON_NO_DAEMON = true;
150 nativeBuildInputs = builtins.map (it: it.nativeBuildInputs) inputs;
151 buildInputs = builtins.map (it: it.buildInputs) inputs;
152 shellHook = builtins.map (it: it.shellHook) (builtins.filter (it: it?shellHook) inputs);
154 in { inherit shell; } // targets