@@ -18,11 +18,11 @@ if [ -z "$1" ]; then
24# A second argument will provide a hint to run
24# A second argument will provide a hint to run
25−if [ -n "$1" ]; then
25+if ! [ -z "$1" ]; then
@@ -31,7 +31,7 @@ fi
32expr="with import <nixpkgs> {}; let x = ($pkg); in x"
32expr="with import <nixpkgs> {}; let x = ($pkg); in x"
33path=$(nix-instantiate --no-gc-warning -E "$expr")
33path=$(nix-instantiate --no-gc-warning -E "$expr")
34−out=$(nix-store --no-gc-warning -r "$path")
34+out=$(nix-store --no-gc-warning -r $path)
36if [ -z "$out" ]; then
36if [ -z "$out" ]; then
37 >&2 echo "Could not evaluate $pkg to a Nix drv."
37 >&2 echo "Could not evaluate $pkg to a Nix drv."
@@ -43,7 +43,7 @@ run_darwin_app () {
46− open -a "$dir" --args "$@"
46+ open -a "$dir" --args $@
49# Run FILE as a Freedesktop application
49# Run FILE as a Freedesktop application
@@ -53,16 +53,14 @@ run_linux_desktop_app () {
56− cmd=$(grep '^Exec' "$file" | tail -1 | \
56+ cmd=$(grep '^Exec' $file | tail -1 | \
57− sed 's/Exec=//;s/^"//;s/" *$//')
57+ sed 's/Exec=//;s/^"//;s/" *$/')
59− if [ "$#" -gt 0 ]; then
59+ if ! [ -z "$@" ]; then
60− cmd=$(echo "$cmd" | sed "s/%[fu]/$1/;s/%[FU]/$*/")
60+ cmd=$(echo "$cmd" | sed "s/%[fu]/$1/;s/%[FU]/$@/")
63 cmd=$(echo "$cmd" | sed "s/%k/$desktop/;s/%.//")
63 cmd=$(echo "$cmd" | sed "s/%k/$desktop/;s/%.//")
68# Run FILE as an ordinary binary
66# Run FILE as an ordinary binary
@@ -70,30 +68,30 @@ run_bin () {
73− "$file" "$@"
71+ $file $@
76if [ -x "$out/nix-support/run" ]; then
74if [ -x "$out/nix-support/run" ]; then
77− run_bin "$out/nix-support/run" "$@"
75+ run_bin "$out/nix-support/run" $@
78elif [ -x "$out/bin/run" ]; then
76elif [ -x "$out/bin/run" ]; then
79− run_bin "$out/bin/run" "$@"
77+ run_bin "$out/bin/run" $@
80elif [ "$(uname)" = Darwin ] && [ -d "$out/Applications/$name.app" ]; then
78elif [ "$(uname)" = Darwin ] && [ -d "$out/Applications/$name.app" ]; then
81− run_darwin_app "$out/Applications/$name.app" "$@"
79+ run_darwin_app "$out/Applications/$name.app" $@
82−elif [ "$(uname)" = Darwin ] && [ -d "$out"/Applications/*.app ]; then
80+elif [ "$(uname)" = Darwin ] && [ -d $out/Applications/*.app ]; then
83− for f in "$out"/Applications/*.app; do
81+ for f in $out/Applications/*.app; do
84− run_darwin_app "$f" "$@"
82+ run_darwin_app "$f" $@
86elif [ -f "$out/share/applications/$name.desktop" ]; then
84elif [ -f "$out/share/applications/$name.desktop" ]; then
87− run_linux_desktop_app "$out/share/applications/$name.desktop" "$@"
85+ run_linux_desktop_app "$out/share/applications/$name.desktop" $@
88−elif [ -d "$out"/share/applications ]; then
86+elif [ -d $out/share/applications ]; then
89− for f in "$out"/share/applications/*.desktop; do
87+ for f in $out/share/applications/*.desktop; do
90 run_linux_desktop_app "$f"
88 run_linux_desktop_app "$f"
92elif [ -x "$out/bin/$name" ]; then
90elif [ -x "$out/bin/$name" ]; then
93− run_bin "$out/bin/$name" "$@"
91+ run_bin "$out/bin/$name" $@
94elif [ -d "$out/bin" ]; then
92elif [ -d "$out/bin" ]; then
95− for bin in "$out"/bin/*; do
93+ for bin in $out/bin/*; do
96− run_bin "$bin" "$@"
94+ run_bin "$bin" $@
99 >&2 echo "Cannot find a way to run path $out."
97 >&2 echo "Cannot find a way to run path $out."