From 8d2ab1d914897a9e09e6051497af43e88f18fd71 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 09:56:04 +0100 Subject: [PATCH 1/9] slack-cli: init at 0.18.0 slack-cli must be configured using the SLACK_CLI_TOKEN environment variable. Using `slack init` will not work because it tries to write to the Nix store. --- pkgs/tools/networking/slack-cli/default.nix | 25 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 ++ 2 files changed, 27 insertions(+) create mode 100644 pkgs/tools/networking/slack-cli/default.nix diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix new file mode 100644 index 00000000000..3acf79932bc --- /dev/null +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -0,0 +1,25 @@ +# slack-cli must be configured using the SLACK_CLI_TOKEN environment +# variable. Using `slack init` will not work because it tries to write +# to the Nix store. + +{ stdenv, lib, fetchurl, makeWrapper, curl, jq }: + +stdenv.mkDerivation rec { + name = "slack-cli"; + version = "0.18.0"; + + src = fetchurl { + url = "https://github.com/rockymadden/slack-cli/archive/v${version}.tar.gz"; + sha256 = "0q19l88c1mvnzya58q21pc3v6mff56z43288kzk50000ri286wq2"; + }; + + buildInputs = [ makeWrapper ]; + + dontBuild = true; + + installPhase = '' + mkdir -p $out/bin + cp src/slack $out/bin + wrapProgram $out/bin/slack --prefix PATH : ${lib.makeBinPath [ curl jq ]} + ''; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 029a0a55138..c2f1f212a52 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16695,6 +16695,8 @@ with pkgs; slack = callPackage ../applications/networking/instant-messengers/slack { }; + slack-cli = callPackage ../tools/networking/slack-cli { }; + singularity = callPackage ../applications/virtualization/singularity { }; spectrwm = callPackage ../applications/window-managers/spectrwm { }; From ccc8dd222e574fea27923a4531422ca6d53383df Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 11:36:28 +0100 Subject: [PATCH 2/9] slack-cli: use fetchFromGitHub instead of fetchurl --- pkgs/tools/networking/slack-cli/default.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index 3acf79932bc..5af7540a5d7 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -2,15 +2,17 @@ # variable. Using `slack init` will not work because it tries to write # to the Nix store. -{ stdenv, lib, fetchurl, makeWrapper, curl, jq }: +{ stdenv, lib, fetchFromGitHub, makeWrapper, curl, jq }: stdenv.mkDerivation rec { name = "slack-cli"; version = "0.18.0"; - src = fetchurl { - url = "https://github.com/rockymadden/slack-cli/archive/v${version}.tar.gz"; - sha256 = "0q19l88c1mvnzya58q21pc3v6mff56z43288kzk50000ri286wq2"; + src = fetchFromGitHub { + owner = "rockymadden"; + repo = "slack-cli"; + rev = "v${version}"; + sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; }; buildInputs = [ makeWrapper ]; From 838473d3c595d225d2d5a0dcb36771b834ebb4af Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 12:28:43 +0100 Subject: [PATCH 3/9] slack-cli: add version to name --- pkgs/tools/networking/slack-cli/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index 5af7540a5d7..23131d26655 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -5,7 +5,7 @@ { stdenv, lib, fetchFromGitHub, makeWrapper, curl, jq }: stdenv.mkDerivation rec { - name = "slack-cli"; + name = "slack-cli-${version}"; version = "0.18.0"; src = fetchFromGitHub { From d2eacdcd6529c816dc8b33c5a4d4e20d3748edbe Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 12:32:00 +0100 Subject: [PATCH 4/9] slack-cli: use nativeBuildInputs for makeWrapper --- pkgs/tools/networking/slack-cli/default.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index 23131d26655..55396f16cb0 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -15,7 +15,7 @@ stdenv.mkDerivation rec { sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; }; - buildInputs = [ makeWrapper ]; + nativeBuildInputs = [ makeWrapper ]; dontBuild = true; From dac2235c1a94f5ea2c06c55deff8df07595eeacc Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 12:32:19 +0100 Subject: [PATCH 5/9] slack-cli: quote shell variables --- pkgs/tools/networking/slack-cli/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index 55396f16cb0..2e20fbe2c3c 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -20,8 +20,8 @@ stdenv.mkDerivation rec { dontBuild = true; installPhase = '' - mkdir -p $out/bin - cp src/slack $out/bin - wrapProgram $out/bin/slack --prefix PATH : ${lib.makeBinPath [ curl jq ]} + mkdir -p "$out/bin" + cp src/slack "$out/bin" + wrapProgram "$out/bin/slack" --prefix PATH : ${lib.makeBinPath [ curl jq ]} ''; } From e276965a1626f4f8d4e033b3e256e0e14156b862 Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 13:56:19 +0100 Subject: [PATCH 6/9] slack-cli: warn when not using SLACK_CLI_TOKEN --- pkgs/tools/networking/slack-cli/default.nix | 14 +++++++------- pkgs/tools/networking/slack-cli/wrapper.nix | 15 +++++++++++++++ pkgs/top-level/all-packages.nix | 4 +++- 3 files changed, 25 insertions(+), 8 deletions(-) create mode 100644 pkgs/tools/networking/slack-cli/wrapper.nix diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index 2e20fbe2c3c..ac7d0d4175c 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -1,8 +1,11 @@ -# slack-cli must be configured using the SLACK_CLI_TOKEN environment -# variable. Using `slack init` will not work because it tries to write -# to the Nix store. +# slack-cli must be configured using the SLACK_CLI_TOKEN environment variable. +# Using `slack init` will not work because it tries to write to the Nix store. +# +# There is no reason that we couldn't change the file path that slack-cli uses +# for token storage, except that it would make the Nix package inconsistent with +# upstream and other distributions. -{ stdenv, lib, fetchFromGitHub, makeWrapper, curl, jq }: +{ stdenv, fetchFromGitHub }: stdenv.mkDerivation rec { name = "slack-cli-${version}"; @@ -15,13 +18,10 @@ stdenv.mkDerivation rec { sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; }; - nativeBuildInputs = [ makeWrapper ]; - dontBuild = true; installPhase = '' mkdir -p "$out/bin" cp src/slack "$out/bin" - wrapProgram "$out/bin/slack" --prefix PATH : ${lib.makeBinPath [ curl jq ]} ''; } diff --git a/pkgs/tools/networking/slack-cli/wrapper.nix b/pkgs/tools/networking/slack-cli/wrapper.nix new file mode 100644 index 00000000000..3612aaa137e --- /dev/null +++ b/pkgs/tools/networking/slack-cli/wrapper.nix @@ -0,0 +1,15 @@ +{ lib, writeShellScriptBin, curl, jq }: + +slack-cli: + +writeShellScriptBin "slack" '' + [ "$1" = "init" -a -z "$SLACK_CLI_TOKEN" ] && cat >&2 <<-'MESSAGE' + WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN environment + variable. Using `slack init` will not work because it tries to write to the + Nix store. + + MESSAGE + + export PATH=${lib.makeBinPath [ curl jq ]}:"$PATH" + exec ${slack-cli}/bin/slack "$@" +'' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index c2f1f212a52..f53b144cee9 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16695,7 +16695,9 @@ with pkgs; slack = callPackage ../applications/networking/instant-messengers/slack { }; - slack-cli = callPackage ../tools/networking/slack-cli { }; + wrapSlackCli = callPackage ../tools/networking/slack-cli/wrapper.nix { }; + slack-cli-unwrapped = callPackage ../tools/networking/slack-cli { }; + slack-cli = wrapSlackCli slack-cli-unwrapped; singularity = callPackage ../applications/virtualization/singularity { }; From 0a57de6f5b138ab99bfb72efae742a715f46c46e Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 14:10:38 +0100 Subject: [PATCH 7/9] slack-cli: add metadata --- maintainers/maintainer-list.nix | 5 +++++ pkgs/tools/networking/slack-cli/default.nix | 6 ++++++ pkgs/tools/networking/slack-cli/wrapper.nix | 10 ++++++++-- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/maintainers/maintainer-list.nix b/maintainers/maintainer-list.nix index 6daea45524a..8b6a6318326 100644 --- a/maintainers/maintainer-list.nix +++ b/maintainers/maintainer-list.nix @@ -3247,6 +3247,11 @@ github = "qoelet"; name = "Kenny Shen"; }; + qyliss = { + email = "hi@alyssa.is"; + github = "alyssais"; + name = "Alyssa Ross"; + }; ragge = { email = "r.dahlen@gmail.com"; github = "ragnard"; diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index ac7d0d4175c..24d82782466 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -24,4 +24,10 @@ stdenv.mkDerivation rec { mkdir -p "$out/bin" cp src/slack "$out/bin" ''; + + meta = { + license = stdenv.lib.licenses.mit; + maintainers = [ stdenv.lib.maintainers.qyliss ]; + platforms = stdenv.lib.platforms.unix; + }; } diff --git a/pkgs/tools/networking/slack-cli/wrapper.nix b/pkgs/tools/networking/slack-cli/wrapper.nix index 3612aaa137e..f31553bda37 100644 --- a/pkgs/tools/networking/slack-cli/wrapper.nix +++ b/pkgs/tools/networking/slack-cli/wrapper.nix @@ -2,7 +2,7 @@ slack-cli: -writeShellScriptBin "slack" '' +(writeShellScriptBin "slack" '' [ "$1" = "init" -a -z "$SLACK_CLI_TOKEN" ] && cat >&2 <<-'MESSAGE' WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN environment variable. Using `slack init` will not work because it tries to write to the @@ -12,4 +12,10 @@ writeShellScriptBin "slack" '' export PATH=${lib.makeBinPath [ curl jq ]}:"$PATH" exec ${slack-cli}/bin/slack "$@" -'' +'') // { + unwrapped = slack-cli; + + meta = slack-cli.meta; + name = slack-cli.name; + version = slack-cli.version; +} From 026f49e28c535ad04a54d689c773275a7ab99f9f Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 15:45:41 +0100 Subject: [PATCH 8/9] slack-cli: remove wrapper package --- pkgs/tools/networking/slack-cli/default.nix | 56 +++++++++++++-------- pkgs/tools/networking/slack-cli/wrapper.nix | 21 -------- pkgs/top-level/all-packages.nix | 4 +- 3 files changed, 36 insertions(+), 45 deletions(-) delete mode 100644 pkgs/tools/networking/slack-cli/wrapper.nix diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index 24d82782466..dc8b25d868c 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -5,29 +5,43 @@ # for token storage, except that it would make the Nix package inconsistent with # upstream and other distributions. -{ stdenv, fetchFromGitHub }: +{ stdenv, lib, writeShellScriptBin, fetchFromGitHub, curl, jq }: -stdenv.mkDerivation rec { - name = "slack-cli-${version}"; - version = "0.18.0"; +let + wrapper = writeShellScriptBin "slack" '' + [ "$1" = "init" -a -z "$SLACK_CLI_TOKEN" ] && cat >&2 <<-'MESSAGE' + WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN environment + variable. Using `slack init` will not work because it tries to write to the + Nix store. - src = fetchFromGitHub { - owner = "rockymadden"; - repo = "slack-cli"; - rev = "v${version}"; - sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; - }; + MESSAGE - dontBuild = true; - - installPhase = '' - mkdir -p "$out/bin" - cp src/slack "$out/bin" + export PATH=${lib.makeBinPath [ curl jq ]}:"$PATH" + exec "$(dirname "$0")/.slack-wrapped" "$@" ''; - meta = { - license = stdenv.lib.licenses.mit; - maintainers = [ stdenv.lib.maintainers.qyliss ]; - platforms = stdenv.lib.platforms.unix; - }; -} +in stdenv.mkDerivation rec { + name = "slack-cli-${version}"; + version = "0.18.0"; + + src = fetchFromGitHub { + owner = "rockymadden"; + repo = "slack-cli"; + rev = "v${version}"; + sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p "$out/bin" + cp src/slack "$out/bin/.slack-wrapped" + ln -s ${wrapper}/bin/slack "$out/bin/slack" + ''; + + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.qyliss ]; + platforms = lib.platforms.unix; + }; + } diff --git a/pkgs/tools/networking/slack-cli/wrapper.nix b/pkgs/tools/networking/slack-cli/wrapper.nix deleted file mode 100644 index f31553bda37..00000000000 --- a/pkgs/tools/networking/slack-cli/wrapper.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ lib, writeShellScriptBin, curl, jq }: - -slack-cli: - -(writeShellScriptBin "slack" '' - [ "$1" = "init" -a -z "$SLACK_CLI_TOKEN" ] && cat >&2 <<-'MESSAGE' - WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN environment - variable. Using `slack init` will not work because it tries to write to the - Nix store. - - MESSAGE - - export PATH=${lib.makeBinPath [ curl jq ]}:"$PATH" - exec ${slack-cli}/bin/slack "$@" -'') // { - unwrapped = slack-cli; - - meta = slack-cli.meta; - name = slack-cli.name; - version = slack-cli.version; -} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f53b144cee9..c2f1f212a52 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -16695,9 +16695,7 @@ with pkgs; slack = callPackage ../applications/networking/instant-messengers/slack { }; - wrapSlackCli = callPackage ../tools/networking/slack-cli/wrapper.nix { }; - slack-cli-unwrapped = callPackage ../tools/networking/slack-cli { }; - slack-cli = wrapSlackCli slack-cli-unwrapped; + slack-cli = callPackage ../tools/networking/slack-cli { }; singularity = callPackage ../applications/virtualization/singularity { }; From 0e374a1b9c27aa5d35a858aa74451c66417b305f Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Wed, 15 Aug 2018 16:53:11 +0100 Subject: [PATCH 9/9] slack-cli: fix dirname hack --- pkgs/tools/networking/slack-cli/default.nix | 67 +++++++++++---------- 1 file changed, 34 insertions(+), 33 deletions(-) diff --git a/pkgs/tools/networking/slack-cli/default.nix b/pkgs/tools/networking/slack-cli/default.nix index dc8b25d868c..18f192d3535 100644 --- a/pkgs/tools/networking/slack-cli/default.nix +++ b/pkgs/tools/networking/slack-cli/default.nix @@ -7,41 +7,42 @@ { stdenv, lib, writeShellScriptBin, fetchFromGitHub, curl, jq }: -let - wrapper = writeShellScriptBin "slack" '' - [ "$1" = "init" -a -z "$SLACK_CLI_TOKEN" ] && cat >&2 <<-'MESSAGE' - WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN environment - variable. Using `slack init` will not work because it tries to write to the - Nix store. +stdenv.mkDerivation rec { + name = "slack-cli-${version}"; + version = "0.18.0"; + + src = fetchFromGitHub { + owner = "rockymadden"; + repo = "slack-cli"; + rev = "v${version}"; + sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; + }; + + dontBuild = true; + + installPhase = '' + mkdir -p "$out/bin" + cp src/slack "$out/bin/.slack-wrapped" + + cat <<-WRAPPER > "$out/bin/slack" + #!${stdenv.shell} + [ "\$1" = "init" -a -z "\$SLACK_CLI_TOKEN" ] && cat <<-'MESSAGE' >&2 + WARNING: slack-cli must be configured using the SLACK_CLI_TOKEN + environment variable. Using \`slack init\` will not work because it tries + to write to the Nix store. MESSAGE - export PATH=${lib.makeBinPath [ curl jq ]}:"$PATH" - exec "$(dirname "$0")/.slack-wrapped" "$@" + export PATH=${lib.makeBinPath [ curl jq ]}:"\$PATH" + exec "$out/bin/.slack-wrapped" "\$@" + WRAPPER + + chmod +x "$out/bin/slack" ''; -in stdenv.mkDerivation rec { - name = "slack-cli-${version}"; - version = "0.18.0"; - - src = fetchFromGitHub { - owner = "rockymadden"; - repo = "slack-cli"; - rev = "v${version}"; - sha256 = "022yr3cpfg0v7cxi62zzk08vp0l3w851qpfh6amyfgjiynnfyddl"; - }; - - dontBuild = true; - - installPhase = '' - mkdir -p "$out/bin" - cp src/slack "$out/bin/.slack-wrapped" - ln -s ${wrapper}/bin/slack "$out/bin/slack" - ''; - - meta = { - license = lib.licenses.mit; - maintainers = [ lib.maintainers.qyliss ]; - platforms = lib.platforms.unix; - }; - } + meta = { + license = lib.licenses.mit; + maintainers = [ lib.maintainers.qyliss ]; + platforms = lib.platforms.unix; + }; +}