diff options
author | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
---|---|---|
committer | Mx Kookie <kookie@spacekookie.de> | 2020-10-31 19:35:09 +0100 |
commit | c4625b175f8200f643fd6e11010932ea44c78433 (patch) | |
tree | bce3f89888c8ac3991fa5569a878a9eab6801ccc /infra/libkookie/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix | |
parent | 49f735974dd103039ddc4cb576bb76555164a9e7 (diff) | |
parent | d661aa56a8843e991261510c1bb28fdc2f6975ae (diff) |
Add 'infra/libkookie/' from commit 'd661aa56a8843e991261510c1bb28fdc2f6975ae'
git-subtree-dir: infra/libkookie
git-subtree-mainline: 49f735974dd103039ddc4cb576bb76555164a9e7
git-subtree-split: d661aa56a8843e991261510c1bb28fdc2f6975ae
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix')
-rw-r--r-- | infra/libkookie/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix | 167 |
1 files changed, 167 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix new file mode 100644 index 000000000000..2edccd8c019e --- /dev/null +++ b/infra/libkookie/nixpkgs/pkgs/applications/networking/instant-messengers/slack/default.nix @@ -0,0 +1,167 @@ +{ stdenv +, fetchurl +, dpkg +, undmg +, makeWrapper +, nodePackages +, alsaLib +, at-spi2-atk +, at-spi2-core +, atk +, cairo +, cups +, curl +, dbus +, expat +, fontconfig +, freetype +, gdk-pixbuf +, glib +, gnome2 +, gtk3 +, libappindicator-gtk3 +, libdrm +, libnotify +, libpulseaudio +, libuuid +, libxcb +, mesa +, nspr +, nss +, pango +, systemd +, xdg_utils +, xorg +}: + +let + inherit (stdenv.hostPlatform) system; + throwSystem = throw "Unsupported system: ${system}"; + + pname = "slack"; + version = { + x86_64-darwin = "4.9.0"; + x86_64-linux = "4.9.1"; + }.${system} or throwSystem; + + src = let + base = "https://downloads.slack-edge.com"; + in { + x86_64-darwin = fetchurl { + url = "${base}/releases/macos/${version}/prod/x64/Slack-${version}-macOS.dmg"; + sha256 = "007fflncvvclj4agb6g5hc5k9j5hhz1rpvlcfd8w31rn1vad4abk"; + }; + x86_64-linux = fetchurl { + url = "${base}/linux_releases/slack-desktop-${version}-amd64.deb"; + sha256 = "1n8br5vlcnf13b8m6727hy4bkmd6wayss96ck4ba9zsjiyj7v74i"; + }; + }.${system} or throwSystem; + + meta = with stdenv.lib; { + description = "Desktop client for Slack"; + homepage = "https://slack.com"; + license = licenses.unfree; + maintainers = with maintainers; [ mmahut ]; + platforms = [ "x86_64-darwin" "x86_64-linux" ]; + }; + + linux = stdenv.mkDerivation rec { + inherit pname version src meta; + + rpath = stdenv.lib.makeLibraryPath [ + alsaLib + at-spi2-atk + at-spi2-core + atk + cairo + cups + curl + dbus + expat + fontconfig + freetype + gdk-pixbuf + glib + gnome2.GConf + gtk3 + libappindicator-gtk3 + libdrm + libnotify + libpulseaudio + libuuid + libxcb + mesa + 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 + ] + ":${stdenv.cc.cc.lib}/lib64"; + + buildInputs = [ + gtk3 # needed for GSETTINGS_SCHEMAS_PATH + ]; + + nativeBuildInputs = [ dpkg makeWrapper nodePackages.asar ]; + + dontUnpack = true; + dontBuild = true; + dontPatchELF = true; + + installPhase = '' + # The deb file contains a setuid binary, so 'dpkg -x' doesn't work here + dpkg --fsys-tarfile $src | tar --extract + rm -rf usr/share/lintian + + mkdir -p $out + mv usr/* $out + + # Otherwise it looks "suspicious" + chmod -R g-w $out + + for file in $(find $out -type f \( -perm /0111 -o -name \*.so\* \) ); do + patchelf --set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" "$file" || true + patchelf --set-rpath ${rpath}:$out/lib/slack $file || true + done + + # Replace the broken bin/slack symlink with a startup wrapper + rm $out/bin/slack + makeWrapper $out/lib/slack/slack $out/bin/slack \ + --prefix XDG_DATA_DIRS : $GSETTINGS_SCHEMAS_PATH \ + --prefix PATH : ${xdg_utils}/bin + + # Fix the desktop link + substituteInPlace $out/share/applications/slack.desktop \ + --replace /usr/bin/ $out/bin/ \ + --replace /usr/share/ $out/share/ + ''; + }; + + darwin = stdenv.mkDerivation { + inherit pname version src meta; + + nativeBuildInputs = [ undmg ]; + + sourceRoot = "Slack.app"; + + installPhase = '' + mkdir -p $out/Applications/Slack.app + cp -R . $out/Applications/Slack.app + /usr/bin/defaults write com.tinyspeck.slackmacgap SlackNoAutoUpdates -bool YES + ''; + }; +in if stdenv.isDarwin + then darwin + else linux |