59 lines
1.8 KiB
Nix
59 lines
1.8 KiB
Nix
|
{ stdenv, coreutils, fetchurl, patchelf, gcc }:
|
||
|
|
||
|
let
|
||
|
arch = if stdenv.system == "x86_64-linux" then "x86_64"
|
||
|
else if stdenv.system == "i686-linux" then "x86"
|
||
|
else if stdenv.system == "armv6-linux" then "armv6h"
|
||
|
else throw "Copy.com client for: ${stdenv.system} not supported!";
|
||
|
|
||
|
interpreter = if stdenv.system == "x86_64-linux" then "ld-linux-x86-64.so.2"
|
||
|
else if stdenv.system == "i686-linux" then "ld-linux.so.2"
|
||
|
else if stdenv.system == "armv6-linux" then "ld-linux.so.2"
|
||
|
else throw "Copy.com client for: ${stdenv.system} not supported!";
|
||
|
|
||
|
appdir = "opt/copy";
|
||
|
|
||
|
in stdenv.mkDerivation {
|
||
|
|
||
|
name = "copy-com-1.4";
|
||
|
|
||
|
src = fetchurl {
|
||
|
# Note: copy.com doesn't version this file. Annoying.
|
||
|
url = "https://copy.com/install/linux/Copy.tgz";
|
||
|
sha256 = "f8da6dbfdaac71c4c4e9102671cf8fbe4ac5cb1dac63464783b8b62a7939b6fa";
|
||
|
};
|
||
|
|
||
|
buildInputs = [ coreutils patchelf ];
|
||
|
|
||
|
phases = "unpackPhase installPhase";
|
||
|
|
||
|
installPhase = ''
|
||
|
mkdir -p $out/opt
|
||
|
cp -r ${arch} "$out/${appdir}"
|
||
|
ensureDir "$out/bin"
|
||
|
ln -s "$out/${appdir}/CopyConsole" "$out/bin/copy_console"
|
||
|
ln -s "$out/${appdir}/CopyAgent" "$out/bin/copy_agent"
|
||
|
ln -s "$out/${appdir}/CopyCmd" "$out/bin/copy_cmd"
|
||
|
patchelf --set-interpreter ${stdenv.glibc}/lib/${interpreter} \
|
||
|
"$out/${appdir}/CopyConsole"
|
||
|
|
||
|
RPATH=${gcc.gcc}/lib:$out/${appdir}
|
||
|
echo "updating rpaths to: $RPATH"
|
||
|
find "$out/${appdir}" -type f -a -perm +0100 \
|
||
|
-print -exec patchelf --force-rpath --set-rpath "$RPATH" {} \;
|
||
|
|
||
|
|
||
|
|
||
|
'';
|
||
|
|
||
|
meta = {
|
||
|
homepage = http://copy.com;
|
||
|
description = "Copy.com Client";
|
||
|
# Closed Source unfortunately.
|
||
|
license = stdenv.lib.licenses.unfree;
|
||
|
maintainers = with stdenv.lib.maintainers; [ nathan-gs ];
|
||
|
# NOTE: Copy.com itself only works on linux, so this is ok.
|
||
|
platforms = stdenv.lib.platforms.linux;
|
||
|
};
|
||
|
}
|