1{
2 stdenv,
3 fetchurl,
4 lib,
5 brand,
6 type,
7 version,
8 homepage,
9 url,
10 hash,
11 runCommand,
12 dpkg,
13 vmTools,
14 runtimeShell,
15 bubblewrap,
16 ...
17}:
18let
19 debian =
20 let
21 debs = lib.flatten (import ./deps.nix { inherit fetchurl; });
22 in
23 runCommand "x32edit-debian" { nativeBuildInputs = [ dpkg ]; } (
24 lib.concatMapStringsSep "\n" (deb: ''
25 dpkg-deb -x ${deb} $out
26 '') debs
27 );
28in
29stdenv.mkDerivation rec {
30 pname = "${lib.toLower type}-edit";
31 inherit version;
32
33 src = fetchurl {
34 inherit url hash;
35 };
36
37 sourceRoot = ".";
38 dontBuild = true;
39 dontStrip = true;
40
41 installPhase = ''
42 mkdir -p $out/bin
43 cp ${type}-Edit $out/bin/.${pname}
44
45 cat >$out/bin/${pname} <<EOF
46 #!${runtimeShell} -eu
47 exec ${lib.getExe bubblewrap} \
48 --dev-bind / / \
49 --ro-bind "${debian}/lib" /lib \
50 --ro-bind "${debian}/lib64" /lib64 \
51 --tmpfs /usr \
52 --ro-bind "${debian}/usr/lib" /usr/lib \
53 $out/bin/.${pname}
54 EOF
55 chmod 755 $out/bin/${pname}
56 '';
57
58 passthru.deps =
59 let
60 distro = vmTools.debDistros.debian12x86_64;
61 in
62 vmTools.debClosureGenerator {
63 name = "x32edit-dependencies";
64 inherit (distro) urlPrefix;
65 packagesLists = [ distro.packagesList ];
66 packages = [
67 "libstdc++6"
68 "libcurl4"
69 "libfreetype6"
70 "libasound2"
71 "libx11-6"
72 "libxext6"
73 ];
74 };
75
76 meta = with lib; {
77 inherit homepage;
78 description = "Editor for the ${brand} ${type} digital mixer";
79 sourceProvenance = with sourceTypes; [ binaryNativeCode ];
80 license = licenses.unfree;
81 platforms = platforms.linux;
82 maintainers = [ maintainers.magnetophon ];
83 };
84}