about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAlyssa Ross <hi@alyssa.is>2019-02-25 18:26:39 +0000
committerAlyssa Ross <hi@alyssa.is>2019-02-25 18:26:39 +0000
commit6f3cd4b6093b45253c92c715b2744858cf71d6a8 (patch)
treef0c65c9f8faffa6088da051e4615d1029d41e24c
parent0da874d0017790baa83771089a1c7a4642104c3c (diff)
downloadnixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.tar
nixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.tar.gz
nixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.tar.bz2
nixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.tar.lz
nixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.tar.xz
nixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.tar.zst
nixlib-6f3cd4b6093b45253c92c715b2744858cf71d6a8.zip
choose: init
-rw-r--r--nixpkgs-overlays/scripts/choose/choose.in20
-rw-r--r--nixpkgs-overlays/scripts/choose/choosebin.in17
-rw-r--r--nixpkgs-overlays/scripts/choose/default.nix8
-rw-r--r--nixpkgs-overlays/scripts/default.nix3
4 files changed, 48 insertions, 0 deletions
diff --git a/nixpkgs-overlays/scripts/choose/choose.in b/nixpkgs-overlays/scripts/choose/choose.in
new file mode 100644
index 000000000000..7f60b47386a3
--- /dev/null
+++ b/nixpkgs-overlays/scripts/choose/choose.in
@@ -0,0 +1,20 @@
+#! @execline@/bin/execlineb -S0
+
+define -s fzf_opts "--reverse"
+
+ifelse { importas -i _ DISPLAY }
+{
+  alacritty --class float -e
+  getpid my_pid
+  importas -i -u my_pid my_pid
+  backtick -i -n term_pid { awk "{print $4}" /proc/${my_pid}/stat }
+  importas -i -u term_pid term_pid
+  redirfd -r 0 /proc/${term_pid}/fd/0
+  redirfd -w 1 /proc/${term_pid}/fd/1
+  @fzf@/bin/fzf $fzf_opts $@
+}
+
+ifelse { importas -i _ TMUX }
+{ @fzf@/bin/fzf-tmux $fzf_opts $@ }
+
+@fzf@/bin/fzf $fzf_opts $@
diff --git a/nixpkgs-overlays/scripts/choose/choosebin.in b/nixpkgs-overlays/scripts/choose/choosebin.in
new file mode 100644
index 000000000000..7f8ea520c994
--- /dev/null
+++ b/nixpkgs-overlays/scripts/choose/choosebin.in
@@ -0,0 +1,17 @@
+#! @execline@/bin/execlineb -S0
+
+backtick -i entry_points {
+  importas PATH PATH
+  heredoc 0 $PATH
+  tr : " "
+}
+importas -s -i -u entry_points entry_points
+
+pipeline {
+  redirfd -w 2 /dev/null
+  find -L $entry_points -mindepth 1 -maxdepth 1 -executable -type f
+}
+
+pipeline { awk -F / "{print $NF}" }
+
+@out@/bin/choose --prompt "$ " $@
diff --git a/nixpkgs-overlays/scripts/choose/default.nix b/nixpkgs-overlays/scripts/choose/default.nix
new file mode 100644
index 000000000000..1091c84b647f
--- /dev/null
+++ b/nixpkgs-overlays/scripts/choose/default.nix
@@ -0,0 +1,8 @@
+{ runCommand, makeWrapper, execline, fzf }:
+
+in runCommand "choose" { inherit execline fzf; } ''
+  install -d $out/bin
+  substituteAll ${./choose.in} $out/bin/choose
+  substituteAll ${./choosebin.in} $out/bin/choosebin
+  chmod +x $out/bin/*
+''
diff --git a/nixpkgs-overlays/scripts/default.nix b/nixpkgs-overlays/scripts/default.nix
new file mode 100644
index 000000000000..983d32d867a4
--- /dev/null
+++ b/nixpkgs-overlays/scripts/default.nix
@@ -0,0 +1,3 @@
+self: super: {
+  choose = self.callPackage ./choose { };
+}