1
0
mirror of https://github.com/kmein/niveum synced 2026-03-22 12:51:08 +01:00

feat(script): wrapper function

This commit is contained in:
Kierán Meinhardt
2020-04-15 00:10:30 +02:00
parent 4b5f5442f7
commit 99d11d94b9
7 changed files with 58 additions and 64 deletions

View File

@@ -110,7 +110,7 @@
scripts.literature-quote scripts.literature-quote
scripts.nav # json navigation scripts.nav # json navigation
scripts.n scripts.n
scripts.vf scripts.notetags
scripts.vg scripts.vg
scripts.emoji-menu scripts.emoji-menu
scripts.fkill scripts.fkill

View File

@@ -1,7 +1,9 @@
{ pkgs, lib, ... }: { pkgs, lib, ... }:
let let
inherit (lib.strings) makeBinPath; wrapScript = { packages ? [], name, script }: pkgs.writers.writeDashBin name ''
makeScript = { binPath ? [], name, src }: pkgs.writeScriptBin name (builtins.readFile src); PATH=${lib.makeBinPath (packages ++ [pkgs.coreutils pkgs.findutils])}
${script} "$@"
'';
in in
{ {
# https://github.com/LukeSmithxyz/voidrice/blob/9fe6802122f6e0392c7fe20eefd30437771d7f8e/.local/bin/dmenuunicode # https://github.com/LukeSmithxyz/voidrice/blob/9fe6802122f6e0392c7fe20eefd30437771d7f8e/.local/bin/dmenuunicode
@@ -11,7 +13,7 @@ in
sha256 = "09m2rgb9d5jpiy8q4jz3dw36gkpb4ng2pl7xi7ppsrzzzdvq85qk"; sha256 = "09m2rgb9d5jpiy8q4jz3dw36gkpb4ng2pl7xi7ppsrzzzdvq85qk";
}; };
in with pkgs; writers.writeDashBin "emoji-menu" '' in with pkgs; writers.writeDashBin "emoji-menu" ''
PATH=${makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]} PATH=${lib.makeBinPath [ coreutils dmenu gnused libnotify xclip xdotool ]}
chosen=$(cut -d ';' -f1 ${emoji-file} | dmenu -i -l 10 | sed "s/ .*//") chosen=$(cut -d ';' -f1 ${emoji-file} | dmenu -i -l 10 | sed "s/ .*//")
[ "$chosen" != "" ] || exit [ "$chosen" != "" ] || exit
@@ -25,97 +27,91 @@ in
fi fi
''; '';
instaget = makeScript { instaget = wrapScript {
binPath = [ pkgs.jq pkgs.curl pkgs.gnugrep ]; packages = [ pkgs.jq pkgs.curl pkgs.gnugrep ];
src = ./instaget.sh; script = ./instaget.sh;
name = "instaget"; name = "instaget";
}; };
n = makeScript { n = wrapScript {
src = ./n.sh; script = ./n.sh;
name = "n"; name = "n";
}; };
dirmir = makeScript { dirmir = wrapScript {
name = "dirmir"; name = "dirmir";
src = ./dirmir.sh; script = ./dirmir.sh;
}; };
favicon = makeScript { favicon = wrapScript {
binPath = [ pkgs.imagemagick ]; packages = [ pkgs.imagemagick ];
name = "favicon"; name = "favicon";
src = ./favicon.sh; script = ./favicon.sh;
}; };
genius = makeScript { genius = wrapScript {
binPath = [ pkgs.curl pkgs.gnused pkgs.pandoc ]; packages = [ pkgs.curl pkgs.gnused pkgs.pandoc ];
name = "genius"; name = "genius";
src = ./genius.sh; script = ./genius.sh;
}; };
literature-quote = makeScript { literature-quote = wrapScript {
binPath = [ pkgs.xsv pkgs.curl pkgs.gnused ]; packages = [ pkgs.xsv pkgs.curl pkgs.gnused ];
name = "literature-quote"; name = "literature-quote";
src = ./literature-quote.sh; script = ./literature-quote.sh;
}; };
man-pdf = makeScript { man-pdf = wrapScript {
binPath = [ pkgs.man pkgs.ghostscript ]; packages = [ pkgs.man pkgs.ghostscript ];
name = "man-pdf"; name = "man-pdf";
src = ./man-pdf.sh; script = ./man-pdf.sh;
}; };
odyssey = makeScript { odyssey = wrapScript {
binPath = [ pkgs.curl pkgs.xmlstarlet ]; packages = [ pkgs.curl pkgs.xmlstarlet ];
name = "odyssey"; name = "odyssey";
src = ./odyssey.sh; script = ./odyssey.sh;
}; };
tolino-screensaver = makeScript { tolino-screensaver = wrapScript {
binPath = [ pkgs.imagemagick ]; packages = [ pkgs.imagemagick ];
name = "tolino-screensaver"; name = "tolino-screensaver";
src = ./tolino-screensaver.sh; script = ./tolino-screensaver.sh;
}; };
wttr = makeScript { wttr = wrapScript {
binPath = [ pkgs.curl ]; packages = [ pkgs.curl ];
name = "wttr"; name = "wttr";
src = ./wttr.sh; script = ./wttr.sh;
}; };
vf = makeScript { vg = wrapScript {
binPath = [ pkgs.fd pkgs.fzf ]; packages = [ pkgs.ripgrep pkgs.fzf pkgs.gawk ];
name = "vf";
src = ./vf.sh;
};
vg = makeScript {
binPath = [ pkgs.ripgrep pkgs.fzf pkgs.gawk ];
name = "vg"; name = "vg";
src = ./vg.sh; script = ./vg.sh;
}; };
fkill = makeScript { fkill = wrapScript {
binPath = [ pkgs.procps pkgs.gawk pkgs.gnused pkgs.fzf ]; packages = [ pkgs.procps pkgs.gawk pkgs.gnused pkgs.fzf pkgs.bash ];
src = ./fkill.sh; script = ./fkill.sh;
name = "fkill"; name = "fkill";
}; };
nix-git = makeScript { nix-git = wrapScript {
binPath = [ pkgs.nix-prefetch-git pkgs.jq ]; packages = [ pkgs.nix-prefetch-git pkgs.jq ];
src = ./nix-git.sh; script = ./nix-git.sh;
name = "nix-git"; name = "nix-git";
}; };
notetags = makeScript { notetags = wrapScript {
src = ./notetags.sh; script = ./notetags.sh;
name = "notetags"; name = "notetags";
}; };
fzfmenu = makeScript { fzfmenu = wrapScript {
src = ./fzfmenu.sh; script = ./fzfmenu.sh;
name = "fzfmenu"; name = "fzfmenu";
binPath = [ pkgs.st pkgs.fzf ]; packages = [ pkgs.st pkgs.fzf pkgs.dash ];
}; };
bvg = pkgs.callPackage ./bvg.nix {}; bvg = pkgs.callPackage ./bvg.nix {};

View File

@@ -10,7 +10,9 @@ mkfifo "$output"
chmod 600 "$input" "$output" chmod 600 "$input" "$output"
# it's better to use st here (starts a lot faster than pretty much everything else) # it's better to use st here (starts a lot faster than pretty much everything else)
st -c fzfmenu -n fzfmenu -g 85x15 -e sh -c "cat $input | fzf $* | tee $output" & disown st -c fzfmenu -n fzfmenu -g 85x10 \
-e dash \
-c "cat $input | fzf --print-query $* | tee $output" & disown
# handle ctrl+c outside child terminal window # handle ctrl+c outside child terminal window
trap 'kill $! 2>/dev/null; rm -f $input $output' EXIT trap 'kill $! 2>/dev/null; rm -f $input $output' EXIT

3
packages/scripts/nix-git.sh Normal file → Executable file
View File

@@ -1,2 +1,3 @@
#!/bin/sh #!/bin/sh
nix-prefetch-git "$@" 2> /dev/null | jq -r '"rev = \"\(.rev)\";\nsha256 = \"\(.sha256)\";"' nix-prefetch-git "$@" 2> /dev/null \
| jq -r '"rev = \"\(.rev)\";\nsha256 = \"\(.sha256)\";"'

View File

@@ -1,10 +1,10 @@
#!/usr/bin/env bash #!/bin/sh
# inspired by https://github.com/connermcd/bin/blob/1d38cb98812906d8b95dc6e51e1149e29261617d/notetags # inspired by https://github.com/connermcd/bin/blob/1d38cb98812906d8b95dc6e51e1149e29261617d/notetags
cd "$HOME/notes/" || exit cd "$HOME/notes/" || exit
[[ -f tags ]] && rm tags [ -f tags ] && rm tags
grep -r 'tags:' ./* | while read -r line; do grep -r 'tags:' ./* | while read -r line; do
file=$(echo "$line" | cut -d: -f1) file=$(echo "$line" | cut -d: -f1)
unparsed_tags=$(echo "$line" | cut -d: -f3) # unparsed_tags=$(echo "$line" | cut -d: -f3) #

View File

@@ -1,4 +0,0 @@
#!/bin/sh
fd -t f -H -I \
| fzf -m --preview="bat {}" \
| xargs -ro -d "\n" "$EDITOR" 2>&-

View File

@@ -1,7 +1,6 @@
#!/usr/bin/env bash #!/bin/sh
file="$(rg "$@" | fzf -0 -1 | awk -F: '{print $1}')" file="$(rg "$@" | fzf -0 -1 | awk -F: '{print $1}')"
if [[ -n $file ]] if [ -n "$file" ]; then
then ${EDITOR:-vim} "$file"
${EDITOR:-vim} "$file"
fi fi