summaryrefslogtreecommitdiffstats
path: root/krebs
diff options
context:
space:
mode:
Diffstat (limited to 'krebs')
-rw-r--r--krebs/5pkgs/simple/dic/default.nix6
-rw-r--r--krebs/5pkgs/simple/fzfmenu/default.nix130
-rw-r--r--krebs/5pkgs/simple/red.nix23
3 files changed, 112 insertions, 47 deletions
diff --git a/krebs/5pkgs/simple/dic/default.nix b/krebs/5pkgs/simple/dic/default.nix
index 6533a1b9b..a74899630 100644
--- a/krebs/5pkgs/simple/dic/default.nix
+++ b/krebs/5pkgs/simple/dic/default.nix
@@ -4,9 +4,9 @@ stdenv.mkDerivation {
name = "dic";
src = fetchgit {
- url = http://cgit.ni.krebsco.de/dic;
- rev = "refs/tags/v1.1.0";
- sha256 = "1xzn20b9kfz96nvjli8grpi11v80jbl0dmifksmirwcj5v81ndav";
+ url = https://cgit.ni.krebsco.de/dic;
+ rev = "refs/tags/v1.1.1";
+ sha256 = "1gbj967a5hj53fdkkxijqgwnl9hb8kskz0cmpjq7v65ffz3v6vag";
};
phases = [
diff --git a/krebs/5pkgs/simple/fzfmenu/default.nix b/krebs/5pkgs/simple/fzfmenu/default.nix
index 64e95d233..537b90f42 100644
--- a/krebs/5pkgs/simple/fzfmenu/default.nix
+++ b/krebs/5pkgs/simple/fzfmenu/default.nix
@@ -1,55 +1,97 @@
-{ pkgs, ... }:
+with import <stockholm/lib>;
+{ pkgs, ... }@args:
+
+let
+ # config cannot be declared in the input attribute set because that would
+ # cause callPackage to inject the wrong config. Instead, get it from ...
+ # via args.
+ config = args.config or {};
+
+ cfg = eval.config;
+
+ eval = evalModules {
+ modules = singleton {
+ _file = toString ./profile.nix;
+ imports = singleton config;
+ options = {
+ appName = mkOption {
+ default = "fzfmenu";
+ type = types.label;
+ };
+ defaultPrompt = mkOption {
+ default = ">";
+ type = types.str;
+ };
+ printQuery = mkOption {
+ default = true;
+ type = types.bool;
+ };
+ reverse = mkOption {
+ default = true;
+ type = types.bool;
+ };
+ windowTitle = mkOption {
+ default = "fzfmenu";
+ type = types.str;
+ };
+ };
+ };
+ };
+in
pkgs.writeDashBin "fzfmenu" ''
set -efu
- PROMPT=">"
- for i in "$@"
- do
- case $i in
+
+ # Spawn terminal if called without one, like e.g. from a window manager.
+ if [ -z ''${TERM+x} ]; then
+ exec 3<&0
+ exec 4>&1
+ export FZFMENU_INPUT_FD=3
+ export FZFMENU_OUTPUT_FD=4
+ exec ${pkgs.rxvt_unicode}/bin/urxvt \
+ -name ${cfg.appName} \
+ -title ${shell.escape cfg.windowTitle} \
+ -e "$0" "$@"
+ else
+ exec 0<&''${FZFMENU_INPUT_FD-0}
+ exec 1>&''${FZFMENU_OUTPUT_FD-1}
+ fi
+
+ PROMPT=${shell.escape cfg.defaultPrompt}
+ for i in "$@"; do
+ case $i in
-p)
- PROMPT="$2"
- shift
- shift
- break
- ;;
+ PROMPT=$2
+ shift 2
+ break
+ ;;
-l)
- # no reason to filter number of lines
- LINES="$2"
- shift
- shift
- break
- ;;
+ # no reason to filter number of lines
+ LINES=$2
+ shift 2
+ break
+ ;;
-i)
- # we do this anyway
- shift
- break
- ;;
+ # we do this anyway
+ shift
+ break
+ ;;
*)
- echo "Unknown option $1" >&2
- shift
- ;;
- esac
+ echo "Unknown option $1" >&2
+ shift
+ ;;
+ esac
done
- INPUT=$(${pkgs.coreutils}/bin/cat)
- OUTPUT="$(${pkgs.coreutils}/bin/mktemp)"
- if [ -z ''${TERM+x} ]; then #check if we can print fzf in the shell
- ${pkgs.rxvt_unicode}/bin/urxvt \
- -name fzfmenu -title fzfmenu \
- -e ${pkgs.dash}/bin/dash -c \
- "echo \"$INPUT\" | ${pkgs.fzf}/bin/fzf \
- --history=/dev/null \
- --print-query \
- --prompt=\"$PROMPT\" \
- --reverse \
- > \"$OUTPUT\"" 2>/dev/null
- else
- echo "$INPUT" | ${pkgs.fzf}/bin/fzf \
+
+ if test -n "''${FZFMENU_FZF_DEFAULT_OPTS-}"; then
+ FZF_DEFAULT_OPTS=''${FZFMENU_FZF_DEFAULT_OPTS-}
+ export FZF_DEFAULT_OPTS
+ fi
+
+ ${pkgs.fzf}/bin/fzf \
--history=/dev/null \
- --print-query \
--prompt="$PROMPT" \
- --reverse \
- > "$OUTPUT"
- fi
- ${pkgs.coreutils}/bin/tail -1 "$OUTPUT"
- ${pkgs.coreutils}/bin/rm "$OUTPUT"
+ ${optionalString cfg.reverse "--reverse"} \
+ ${optionalString cfg.printQuery "--print-query"} \
+ ${optionalString cfg.printQuery "| ${pkgs.coreutils}/bin/tail -1"}
''
diff --git a/krebs/5pkgs/simple/red.nix b/krebs/5pkgs/simple/red.nix
new file mode 100644
index 000000000..51f02aa5c
--- /dev/null
+++ b/krebs/5pkgs/simple/red.nix
@@ -0,0 +1,23 @@
+{ buildGoModule, fetchFromGitHub, lib }:
+
+buildGoModule rec {
+ pname = "red";
+ version = "g${lib.substring 0 7 src.rev}";
+
+ src = fetchFromGitHub {
+ owner = "antonmedv";
+ repo = "red";
+ rev = "0bfb499760f391d09c6addec2527b0f77eaacdd6";
+ sha256 = "0i8f8ih3z97zzbkjkwy4y8z75izm1fscq0rr1g77q7z3kz1lrgrx";
+ };
+
+ modSha256 = "0640x6p5hi7yp001cw13z5a17bi9vgd3gij5fxa1y06d3848cv7l";
+
+ meta = {
+ description = "Terminal log analysis tools";
+ homepage = https://github.com/analysis/red;
+ license = lib.licenses.mit;
+ maintainers = [ lib.maintainers.tv ];
+ platforms = lib.platforms.linux;
+ };
+}