mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +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,
|
||||
systemd,
|
||||
wrapGAppsHook3,
|
||||
xorg,
|
||||
callPackage,
|
||||
lib,
|
||||
...
|
||||
}:
|
||||
|
||||
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";
|
||||
inherit version;
|
||||
|
||||
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
|
||||
'';
|
||||
|
||||
version = "1.46.0";
|
||||
meta = {
|
||||
description = "GUI for MongoDB";
|
||||
maintainers = with lib.maintainers; [
|
||||
bryanasdev000
|
||||
friedow
|
||||
iamanaws
|
||||
];
|
||||
homepage = "https://github.com/mongodb-js/compass";
|
||||
sourceProvenance = with lib.sourceTypes; [ binaryNativeCode ];
|
||||
license = lib.licenses.sspl;
|
||||
platforms = [ "x86_64-linux" ];
|
||||
platforms = [
|
||||
"x86_64-linux"
|
||||
"aarch64-darwin"
|
||||
"x86_64-darwin"
|
||||
];
|
||||
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