mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-12 04:35:41 +03:00
mongodb-compass: add darwin support and split package file
Moved most of the package.nix code into linux.nix and introduced darwin.nix, enabling mongodb-compass on x86_64-darwin and aarch64-darwin.
This commit is contained in:
parent
e3b579bed0
commit
2c14a3e73e
3 changed files with 210 additions and 132 deletions
63
pkgs/by-name/mo/mongodb-compass/darwin.nix
Normal file
63
pkgs/by-name/mo/mongodb-compass/darwin.nix
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
{
|
||||||
|
stdenvNoCC,
|
||||||
|
fetchurl,
|
||||||
|
unzip,
|
||||||
|
runtimeShell,
|
||||||
|
pname,
|
||||||
|
version,
|
||||||
|
meta,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
appName = "MongoDB Compass.app";
|
||||||
|
|
||||||
|
dist =
|
||||||
|
{
|
||||||
|
aarch64-darwin = {
|
||||||
|
arch = "arm64";
|
||||||
|
sha256 = "sha256-naSOCYxdDLt/zDtR4MhTE96gJypfbk98CWKx2i8kiTk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
x86_64-darwin = {
|
||||||
|
arch = "x64";
|
||||||
|
sha256 = "sha256-TnoXaiSNYiblgJS5nygTHOe9HBgVCTfffX37wrwtxZ8=";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
.${stdenvNoCC.hostPlatform.system}
|
||||||
|
or (throw "Unsupported system: ${stdenvNoCC.hostPlatform.system}");
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenvNoCC.mkDerivation {
|
||||||
|
inherit pname version meta;
|
||||||
|
|
||||||
|
src = fetchurl {
|
||||||
|
url = "https://downloads.mongodb.com/compass/mongodb-compass-${version}-darwin-${dist.arch}.zip";
|
||||||
|
inherit (dist) sha256;
|
||||||
|
name = "${pname}-${version}.zip";
|
||||||
|
};
|
||||||
|
|
||||||
|
nativeBuildInputs = [ unzip ];
|
||||||
|
|
||||||
|
# The archive will be automatically unzipped; tell Nix where the source root is.
|
||||||
|
dontFixup = true;
|
||||||
|
sourceRoot = appName;
|
||||||
|
|
||||||
|
installPhase = ''
|
||||||
|
runHook preInstall
|
||||||
|
|
||||||
|
# Create directories for the application bundle and the launcher script.
|
||||||
|
mkdir -p "$out/Applications/${appName}" "$out/bin"
|
||||||
|
|
||||||
|
# Copy the unzipped app bundle into the Applications folder.
|
||||||
|
cp -R . "$out/Applications/${appName}"
|
||||||
|
|
||||||
|
# Create a launcher script that opens the app.
|
||||||
|
cat > "$out/bin/${pname}" << EOF
|
||||||
|
#!${runtimeShell}
|
||||||
|
open -na "$out/Applications/${appName}" --args "\$@"
|
||||||
|
EOF
|
||||||
|
chmod +x "$out/bin/${pname}"
|
||||||
|
|
||||||
|
runHook postInstall
|
||||||
|
'';
|
||||||
|
}
|
132
pkgs/by-name/mo/mongodb-compass/linux.nix
Normal file
132
pkgs/by-name/mo/mongodb-compass/linux.nix
Normal file
|
@ -0,0 +1,132 @@
|
||||||
|
{
|
||||||
|
alsa-lib,
|
||||||
|
at-spi2-atk,
|
||||||
|
at-spi2-core,
|
||||||
|
atk,
|
||||||
|
cairo,
|
||||||
|
cups,
|
||||||
|
curl,
|
||||||
|
dbus,
|
||||||
|
dpkg,
|
||||||
|
expat,
|
||||||
|
fetchurl,
|
||||||
|
fontconfig,
|
||||||
|
freetype,
|
||||||
|
gdk-pixbuf,
|
||||||
|
glib,
|
||||||
|
gtk3,
|
||||||
|
lib,
|
||||||
|
libdrm,
|
||||||
|
libGL,
|
||||||
|
libnotify,
|
||||||
|
libsecret,
|
||||||
|
libuuid,
|
||||||
|
libxcb,
|
||||||
|
libxkbcommon,
|
||||||
|
libgbm,
|
||||||
|
nspr,
|
||||||
|
nss,
|
||||||
|
pango,
|
||||||
|
stdenv,
|
||||||
|
systemd,
|
||||||
|
wrapGAppsHook3,
|
||||||
|
xorg,
|
||||||
|
pname,
|
||||||
|
version,
|
||||||
|
meta,
|
||||||
|
}:
|
||||||
|
|
||||||
|
let
|
||||||
|
rpath = lib.makeLibraryPath [
|
||||||
|
alsa-lib
|
||||||
|
at-spi2-atk
|
||||||
|
at-spi2-core
|
||||||
|
atk
|
||||||
|
cairo
|
||||||
|
cups
|
||||||
|
curl
|
||||||
|
dbus
|
||||||
|
expat
|
||||||
|
fontconfig
|
||||||
|
freetype
|
||||||
|
gdk-pixbuf
|
||||||
|
glib
|
||||||
|
gtk3
|
||||||
|
libdrm
|
||||||
|
libGL
|
||||||
|
libnotify
|
||||||
|
libsecret
|
||||||
|
libuuid
|
||||||
|
libxcb
|
||||||
|
libxkbcommon
|
||||||
|
libgbm
|
||||||
|
nspr
|
||||||
|
nss
|
||||||
|
pango
|
||||||
|
stdenv.cc.cc
|
||||||
|
systemd
|
||||||
|
xorg.libX11
|
||||||
|
xorg.libXScrnSaver
|
||||||
|
xorg.libXcomposite
|
||||||
|
xorg.libXcursor
|
||||||
|
xorg.libXdamage
|
||||||
|
xorg.libXext
|
||||||
|
xorg.libXfixes
|
||||||
|
xorg.libXi
|
||||||
|
xorg.libXrandr
|
||||||
|
xorg.libXrender
|
||||||
|
xorg.libXtst
|
||||||
|
xorg.libxkbfile
|
||||||
|
xorg.libxshmfence
|
||||||
|
(lib.getLib stdenv.cc.cc)
|
||||||
|
];
|
||||||
|
|
||||||
|
in
|
||||||
|
stdenv.mkDerivation {
|
||||||
|
inherit pname version meta;
|
||||||
|
|
||||||
|
src =
|
||||||
|
if stdenv.hostPlatform.system == "x86_64-linux" then
|
||||||
|
fetchurl {
|
||||||
|
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
||||||
|
hash = "sha256-cwhYiV5G8GRBT7MST20MPUxEMQM1mzxlLUfzGO6jv10=";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
||||||
|
|
||||||
|
buildInputs = [
|
||||||
|
dpkg
|
||||||
|
wrapGAppsHook3
|
||||||
|
gtk3
|
||||||
|
];
|
||||||
|
dontUnpack = true;
|
||||||
|
|
||||||
|
buildCommand = ''
|
||||||
|
IFS=$'\n'
|
||||||
|
|
||||||
|
# The deb file contains a setuid binary, so 'dpkg -x' doesn't work here
|
||||||
|
dpkg --fsys-tarfile $src | tar --extract
|
||||||
|
|
||||||
|
mkdir -p $out
|
||||||
|
mv usr/* $out
|
||||||
|
|
||||||
|
# cp -av $out/usr/* $out
|
||||||
|
rm -rf $out/share/lintian
|
||||||
|
|
||||||
|
# The node_modules are bringing in non-linux files/dependencies
|
||||||
|
find $out -name "*.app" -exec rm -rf {} \; || true
|
||||||
|
find $out -name "*.dll" -delete
|
||||||
|
find $out -name "*.exe" -delete
|
||||||
|
|
||||||
|
# Otherwise it looks "suspicious"
|
||||||
|
chmod -R g-w $out
|
||||||
|
|
||||||
|
for file in `find $out -type f -perm /0111 -o -name \*.so\*`; do
|
||||||
|
echo "Manipulating file: $file"
|
||||||
|
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
|
||||||
|
patchelf --set-rpath ${rpath}:$out/lib/mongodb-compass "$file" || true
|
||||||
|
done
|
||||||
|
|
||||||
|
wrapGAppsHook $out/bin/mongodb-compass
|
||||||
|
'';
|
||||||
|
}
|
|
@ -1,149 +1,32 @@
|
||||||
{
|
{
|
||||||
alsa-lib,
|
|
||||||
at-spi2-atk,
|
|
||||||
at-spi2-core,
|
|
||||||
atk,
|
|
||||||
cairo,
|
|
||||||
cups,
|
|
||||||
curl,
|
|
||||||
dbus,
|
|
||||||
dpkg,
|
|
||||||
expat,
|
|
||||||
fetchurl,
|
|
||||||
fontconfig,
|
|
||||||
freetype,
|
|
||||||
gdk-pixbuf,
|
|
||||||
glib,
|
|
||||||
gtk3,
|
|
||||||
lib,
|
|
||||||
libdrm,
|
|
||||||
libGL,
|
|
||||||
libnotify,
|
|
||||||
libsecret,
|
|
||||||
libuuid,
|
|
||||||
libxcb,
|
|
||||||
libxkbcommon,
|
|
||||||
libgbm,
|
|
||||||
nspr,
|
|
||||||
nss,
|
|
||||||
pango,
|
|
||||||
stdenv,
|
stdenv,
|
||||||
systemd,
|
callPackage,
|
||||||
wrapGAppsHook3,
|
lib,
|
||||||
xorg,
|
...
|
||||||
}:
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
version = "1.46.0";
|
|
||||||
|
|
||||||
rpath = lib.makeLibraryPath [
|
|
||||||
alsa-lib
|
|
||||||
at-spi2-atk
|
|
||||||
at-spi2-core
|
|
||||||
atk
|
|
||||||
cairo
|
|
||||||
cups
|
|
||||||
curl
|
|
||||||
dbus
|
|
||||||
expat
|
|
||||||
fontconfig
|
|
||||||
freetype
|
|
||||||
gdk-pixbuf
|
|
||||||
glib
|
|
||||||
gtk3
|
|
||||||
libdrm
|
|
||||||
libGL
|
|
||||||
libnotify
|
|
||||||
libsecret
|
|
||||||
libuuid
|
|
||||||
libxcb
|
|
||||||
libxkbcommon
|
|
||||||
libgbm
|
|
||||||
nspr
|
|
||||||
nss
|
|
||||||
pango
|
|
||||||
stdenv.cc.cc
|
|
||||||
systemd
|
|
||||||
xorg.libX11
|
|
||||||
xorg.libXScrnSaver
|
|
||||||
xorg.libXcomposite
|
|
||||||
xorg.libXcursor
|
|
||||||
xorg.libXdamage
|
|
||||||
xorg.libXext
|
|
||||||
xorg.libXfixes
|
|
||||||
xorg.libXi
|
|
||||||
xorg.libXrandr
|
|
||||||
xorg.libXrender
|
|
||||||
xorg.libXtst
|
|
||||||
xorg.libxkbfile
|
|
||||||
xorg.libxshmfence
|
|
||||||
(lib.getLib stdenv.cc.cc)
|
|
||||||
];
|
|
||||||
|
|
||||||
src =
|
|
||||||
if stdenv.hostPlatform.system == "x86_64-linux" then
|
|
||||||
fetchurl {
|
|
||||||
url = "https://downloads.mongodb.com/compass/mongodb-compass_${version}_amd64.deb";
|
|
||||||
hash = "sha256-cwhYiV5G8GRBT7MST20MPUxEMQM1mzxlLUfzGO6jv10=";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
throw "MongoDB compass is not supported on ${stdenv.hostPlatform.system}";
|
|
||||||
# NOTE While MongoDB Compass is available to darwin, I do not have resources to test it
|
|
||||||
# Feel free to make a PR adding support if desired
|
|
||||||
|
|
||||||
in
|
|
||||||
stdenv.mkDerivation {
|
|
||||||
pname = "mongodb-compass";
|
pname = "mongodb-compass";
|
||||||
inherit version;
|
version = "1.46.0";
|
||||||
|
|
||||||
inherit src;
|
|
||||||
|
|
||||||
buildInputs = [
|
|
||||||
dpkg
|
|
||||||
wrapGAppsHook3
|
|
||||||
gtk3
|
|
||||||
];
|
|
||||||
dontUnpack = true;
|
|
||||||
|
|
||||||
buildCommand = ''
|
|
||||||
IFS=$'\n'
|
|
||||||
|
|
||||||
# The deb file contains a setuid binary, so 'dpkg -x' doesn't work here
|
|
||||||
dpkg --fsys-tarfile $src | tar --extract
|
|
||||||
|
|
||||||
mkdir -p $out
|
|
||||||
mv usr/* $out
|
|
||||||
|
|
||||||
# cp -av $out/usr/* $out
|
|
||||||
rm -rf $out/share/lintian
|
|
||||||
|
|
||||||
# The node_modules are bringing in non-linux files/dependencies
|
|
||||||
find $out -name "*.app" -exec rm -rf {} \; || true
|
|
||||||
find $out -name "*.dll" -delete
|
|
||||||
find $out -name "*.exe" -delete
|
|
||||||
|
|
||||||
# Otherwise it looks "suspicious"
|
|
||||||
chmod -R g-w $out
|
|
||||||
|
|
||||||
for file in `find $out -type f -perm /0111 -o -name \*.so\*`; do
|
|
||||||
echo "Manipulating file: $file"
|
|
||||||
patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true
|
|
||||||
patchelf --set-rpath ${rpath}:$out/lib/mongodb-compass "$file" || true
|
|
||||||
done
|
|
||||||
|
|
||||||
wrapGAppsHook $out/bin/mongodb-compass
|
|
||||||
'';
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = "GUI for MongoDB";
|
description = "GUI for MongoDB";
|
||||||
maintainers = with lib.maintainers; [
|
maintainers = with lib.maintainers; [
|
||||||
bryanasdev000
|
bryanasdev000
|
||||||
friedow
|
friedow
|
||||||
|
iamanaws
|
||||||
];
|
];
|
||||||
homepage = "https://github.com/mongodb-js/compass";
|
homepage = "https://github.com/mongodb-js/compass";
|
||||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||||
license = lib.licenses.sspl;
|
license = lib.licenses.sspl;
|
||||||
platforms = [ "x86_64-linux" ];
|
platforms = [
|
||||||
|
"x86_64-linux"
|
||||||
|
"aarch64-darwin"
|
||||||
|
"x86_64-darwin"
|
||||||
|
];
|
||||||
mainProgram = "mongodb-compass";
|
mainProgram = "mongodb-compass";
|
||||||
};
|
};
|
||||||
}
|
in
|
||||||
|
if stdenv.hostPlatform.isDarwin then
|
||||||
|
callPackage ./darwin.nix { inherit pname version meta; }
|
||||||
|
else
|
||||||
|
callPackage ./linux.nix { inherit pname version meta; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue