From 9ce215862e28823906b47f76d9b22eb41fa915f5 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Fri, 17 Nov 2017 11:47:55 -0600 Subject: [PATCH 1/3] dropbox: overwrite existing installation if our installer is newer --- .../networking/dropbox/default.nix | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index e60fd82ff016..27052454e7a4 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -35,7 +35,7 @@ buildFHSUserEnv { targetPkgs = pkgs: with pkgs; with xlibs; [ libICE libSM libX11 libXcomposite libXdamage libXext libXfixes libXrender libXxf86vm libxcb xkeyboardconfig - curl dbus fontconfig freetype gcc glib gnutar libxml2 libxslt zlib + curl dbus fontconfig freetype gcc glib gnutar libxml2 libxslt procps zlib ]; extraInstallCommands = '' @@ -44,12 +44,31 @@ buildFHSUserEnv { ''; runScript = writeScript "install-and-start-dropbox" '' + set -e + + do_install= if ! [ -d "$HOME/.dropbox-dist" ]; then + do_install=1 + else + installed_version=$(cat "$HOME/.dropbox-dist/VERSION") + latest_version=$(printf "${version}\n$installed_version\n" | sort -V | head -n 1) + if [ "x$installed_version" != "x$latest_version" ]; then + do_install=1 + fi + fi + + if [ -n "$do_install" ]; then + installer=$(mktemp) # Dropbox is not installed. # Download and unpack the client. If a newer version is available, # the client will update itself when run. - curl '${installer}' | tar -C "$HOME" -x -z + curl '${installer}' >"$installer" + pkill dropbox || true + rm -fr "$HOME/.dropbox-dist" + tar -C "$HOME" -x -z -f "$installer" + rm "$installer" fi + exec "$HOME/.dropbox-dist/dropboxd" ''; From 7e7fbebed917a5151c2f6d45f1afcc4cf1d826d6 Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Fri, 17 Nov 2017 11:48:34 -0600 Subject: [PATCH 2/3] dropbox: pass along positional parameters to exec --- pkgs/applications/networking/dropbox/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index 27052454e7a4..d33ba5266f77 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -69,7 +69,7 @@ buildFHSUserEnv { rm "$installer" fi - exec "$HOME/.dropbox-dist/dropboxd" + exec "$HOME/.dropbox-dist/dropboxd" "$@" ''; meta = with lib; { From 7dee7d6ddbaca686fb80a63b3dd15eacce7b7b5d Mon Sep 17 00:00:00 2001 From: Thomas Tuegel Date: Fri, 17 Nov 2017 12:00:20 -0600 Subject: [PATCH 3/3] dropbox: install firefox-bin in FHS env To sign in to dropbox, a browser must be available in the FHS env. We cannot ensure that the user's browser of choice is available, so we provide Firefox as a default. Resolves: #31667 --- pkgs/applications/networking/dropbox/default.nix | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkgs/applications/networking/dropbox/default.nix b/pkgs/applications/networking/dropbox/default.nix index d33ba5266f77..e9d6c5f306f0 100644 --- a/pkgs/applications/networking/dropbox/default.nix +++ b/pkgs/applications/networking/dropbox/default.nix @@ -35,7 +35,8 @@ buildFHSUserEnv { targetPkgs = pkgs: with pkgs; with xlibs; [ libICE libSM libX11 libXcomposite libXdamage libXext libXfixes libXrender libXxf86vm libxcb xkeyboardconfig - curl dbus fontconfig freetype gcc glib gnutar libxml2 libxslt procps zlib + curl dbus firefox-bin fontconfig freetype gcc glib gnutar libxml2 libxslt + procps zlib ]; extraInstallCommands = '' @@ -44,6 +45,8 @@ buildFHSUserEnv { ''; runScript = writeScript "install-and-start-dropbox" '' + export BROWSER=firefox + set -e do_install=