diff options
author | Jesse Luehrs <doy@tozt.net> | 2024-02-27 22:29:09 -0500 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2024-02-27 22:29:09 -0500 |
commit | d5e72ac1b3d1aacec097c1d41decbe748c035f06 (patch) | |
tree | e75f879e5cdf3b51eb23ab321eb6e8ec2ce6ea9a /bin | |
parent | 0179eebc614a5668048b510cb7a0776354c16dc3 (diff) | |
download | conf-d5e72ac1b3d1aacec097c1d41decbe748c035f06.tar.gz conf-d5e72ac1b3d1aacec097c1d41decbe748c035f06.zip |
rearrange some more things
Diffstat (limited to 'bin')
l--------- | bin/.bin/ag | 1 | ||||
-rwxr-xr-x | bin/.bin/cryptdir | 40 | ||||
-rwxr-xr-x | bin/.bin/cryptoloop | 30 | ||||
-rwxr-xr-x | bin/.bin/files-between | 14 | ||||
-rwxr-xr-x | bin/.bin/fm22avi | 8 | ||||
-rwxr-xr-x | bin/.bin/history-stats | 51 | ||||
-rwxr-xr-x | bin/.bin/hostcert | 8 | ||||
-rwxr-xr-x | bin/.bin/mem-usage | 5 | ||||
-rwxr-xr-x | bin/.bin/on-lock | 6 | ||||
-rwxr-xr-x | bin/.bin/pacman-dump | 6 | ||||
-rwxr-xr-x | bin/.bin/pdfcat | 7 | ||||
-rwxr-xr-x | bin/.bin/reply | 28 | ||||
-rwxr-xr-x | bin/.bin/rg | 7 | ||||
-rwxr-xr-x | bin/.bin/scanpdf | 4 | ||||
-rwxr-xr-x | bin/.bin/scratch | 5 | ||||
-rwxr-xr-x | bin/.bin/set-mac | 10 | ||||
-rwxr-xr-x | bin/.bin/show-colors | 29 | ||||
-rwxr-xr-x | bin/.bin/smt | 22 | ||||
-rwxr-xr-x | bin/.bin/sum | 8 | ||||
-rwxr-xr-x | bin/.bin/vimmanpager | 15 | ||||
-rwxr-xr-x | bin/.bin/web | 11 | ||||
-rw-r--r-- | bin/.gitignore | 1 |
22 files changed, 316 insertions, 0 deletions
diff --git a/bin/.bin/ag b/bin/.bin/ag new file mode 120000 index 0000000..5b2ddf3 --- /dev/null +++ b/bin/.bin/ag @@ -0,0 +1 @@ +rg
\ No newline at end of file diff --git a/bin/.bin/cryptdir b/bin/.bin/cryptdir new file mode 100755 index 0000000..eb63300 --- /dev/null +++ b/bin/.bin/cryptdir @@ -0,0 +1,40 @@ +#!/bin/sh +set -eu +set -o pipefail + +if [ -e /dev/mapper/cryptdir ]; then + echo "only one instance can run at a time" 1>&2 + exit 1 +fi + +sudo -v || exit 1 + +if [ -z "${1:-}" ]; then + size='16M' +else + size=$1 +fi + +cryptfile=$(mktemp) +cryptdir=$(mktemp -d) +pass=$(dd if=/dev/urandom bs=1 count=80 | base64) + +cleanup() { + set +e + cd + sudo umount "$cryptdir" + sudo cryptsetup close cryptdir + rm -f "$cryptfile" + rmdir "$cryptdir" +} + +trap cleanup EXIT + +dd if=/dev/urandom of="$cryptfile" bs="$size" count=1 +echo "$pass" | sudo cryptsetup luksFormat "$cryptfile" - +echo "$pass" | sudo cryptsetup open "$cryptfile" cryptdir --key-file - +sudo mkfs.ext2 /dev/mapper/cryptdir +sudo mount /dev/mapper/cryptdir "$cryptdir" +sudo chown "$USER" "$cryptdir" +cd "$cryptdir" +$SHELL diff --git a/bin/.bin/cryptoloop b/bin/.bin/cryptoloop new file mode 100755 index 0000000..493c74e --- /dev/null +++ b/bin/.bin/cryptoloop @@ -0,0 +1,30 @@ +#!/bin/sh +set -eu + +command="$1" +name="$2" +file="${HOME}/crypt/${name}.luks" +dev="/dev/mapper/$name" + +case "$command" in +create) + size=$3 + count=${4:-1} + dd if=/dev/urandom of="$file" bs="$size" count="$count" iflag=fullblock + sudo cryptsetup luksFormat "$file" + sudo cryptsetup open "$file" "$name" + sudo mkfs.ext4 "$dev" + sudo mount "$dev" /mnt + sudo chown "$USER" /mnt + sudo umount /mnt + sudo cryptsetup close "$name" + ;; +open) + sudo cryptsetup open "$file" "$name" + sudo mount "$dev" /mnt + ;; +close) + sudo umount /mnt + sudo cryptsetup close "$name" + ;; +esac diff --git a/bin/.bin/files-between b/bin/.bin/files-between new file mode 100755 index 0000000..634b61c --- /dev/null +++ b/bin/.bin/files-between @@ -0,0 +1,14 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.014; + +use File::Basename; + +my $first = $ARGV[0]; +my $second = $ARGV[1]; + +my $dirname = dirname($first); +die unless $dirname eq dirname($second); + +say for grep { /^\Q$first\E$/../^\Q$second\E$/ } sort <$dirname/*>; diff --git a/bin/.bin/fm22avi b/bin/.bin/fm22avi new file mode 100755 index 0000000..eebfb4f --- /dev/null +++ b/bin/.bin/fm22avi @@ -0,0 +1,8 @@ +#!/bin/bash +set -eu +set -o pipefail + +movie="$1" +rom="$2" + +fceux --playmov "$movie" --sound 1 --soundq 1 --soundrate 48000 --nospritelim 1 --pal 0 --xscale 1 --yscale 1 --opengl 0 --special 0 "$rom" --videolog "mencoder - -o ${movie/.fm2/.avi} -ovc x264 -x264encopts qp=0 -oac mp3lame -lameopts mode=3:preset=128 -noskip -nocache -mc 0 -aspect 4/3 NESVSETTINGS" diff --git a/bin/.bin/history-stats b/bin/.bin/history-stats new file mode 100755 index 0000000..0fead1f --- /dev/null +++ b/bin/.bin/history-stats @@ -0,0 +1,51 @@ +#!/usr/bin/env perl +use strict; +use warnings; + +use Getopt::Long; + +my $history_file = $ENV{SHELL} =~ m{/zsh} ? '.zsh_history' : '.bash_history'; + +open my $fh, '<', "$ENV{HOME}/$history_file" + or die "couldn't open $ENV{HOME}/$history_file: $!"; +my $n = 10; +my $subcommand; +GetOptions( + 'n=i' => \$n, + 'subcommand=s' => \$subcommand, +); + +my %cmds; +my %sudo_cmds; + +while (<$fh>) { + chomp; + + # strip zsh history timestamps + s/^[^;]*;// if /^:/; + + s/^\s*(.*?)\s*$/$1/; + my @words = split /\s+/; + next unless @words; + shift @words while @words && $words[0] =~ /^[A-Z][A-Z0-9_]*=/; + next unless @words; + my $sudo; + if ($words[0] eq 'sudo') { + $sudo = 1; + shift @words; + } + if ($subcommand) { + next unless $words[0] eq $subcommand; + shift @words; + shift @words while @words && $words[0] =~ /^-/; + } + $cmds{($words[0] || '')}++; + $sudo_cmds{$words[0]}++ if $sudo; +} + +for my $cmd (sort { $cmds{$b} <=> $cmds{$a} } keys %cmds) { + printf '%5d %s', $cmds{$cmd}, $subcommand ? "$subcommand $cmd" : $cmd; + printf ' (%d under sudo)', $sudo_cmds{$cmd} if $sudo_cmds{$cmd}; + print "\n"; + last unless --$n; +} diff --git a/bin/.bin/hostcert b/bin/.bin/hostcert new file mode 100755 index 0000000..61f519d --- /dev/null +++ b/bin/.bin/hostcert @@ -0,0 +1,8 @@ +#!/bin/sh +set -eu +set -o pipefail + +host="$1" +port="${2:-443}" + +openssl s_client -connect "$host:$port" </dev/null 2>/dev/null | perl -nle 'print if /BEGIN CERTIFICATE/../END CERTIFICATE/' | openssl x509 -text | perl -nle 'print unless /BEGIN CERTIFICATE/../END CERTIFICATE/' diff --git a/bin/.bin/mem-usage b/bin/.bin/mem-usage new file mode 100755 index 0000000..19e8c32 --- /dev/null +++ b/bin/.bin/mem-usage @@ -0,0 +1,5 @@ +#!/bin/sh +set -eu +set -o pipefail + +ps -eo rss,ucmd | sort -rn | head -n"${1:-20}" diff --git a/bin/.bin/on-lock b/bin/.bin/on-lock new file mode 100755 index 0000000..3de3724 --- /dev/null +++ b/bin/.bin/on-lock @@ -0,0 +1,6 @@ +#!/bin/sh + +sudo -K +ssh-add -D +echo RELOADAGENT | gpg-connect-agent +type rbw >/dev/null 2>&1 && rbw lock diff --git a/bin/.bin/pacman-dump b/bin/.bin/pacman-dump new file mode 100755 index 0000000..b32ed16 --- /dev/null +++ b/bin/.bin/pacman-dump @@ -0,0 +1,6 @@ +#!/bin/bash +set -eu +set -o pipefail + +echo base-devel +comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base-devel | sort) diff --git a/bin/.bin/pdfcat b/bin/.bin/pdfcat new file mode 100755 index 0000000..ff4edaa --- /dev/null +++ b/bin/.bin/pdfcat @@ -0,0 +1,7 @@ +#!/bin/sh +set -eu +set -o pipefail + +out="$1" +shift +gs -q -sPAPERSIZE=letter -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile="$out" "$@" diff --git a/bin/.bin/reply b/bin/.bin/reply new file mode 100755 index 0000000..412189f --- /dev/null +++ b/bin/.bin/reply @@ -0,0 +1,28 @@ +#!/bin/sh +set -eu + +DOCKERFILE="$(cat <<EOF +FROM docker.io/debian:stable-slim +RUN apt-get update && apt-get install -y --no-install-recommends \ + cpanminus \ + make \ + gcc \ + libreadline-dev +RUN cpanm -n \ + Reply \ + B::Keywords \ + Data::Dump \ + Carp::Always \ + Term::ReadLine::Gnu +EOF +)" +IMAGE="$(basename "$0"):$(echo "$DOCKERFILE" | sha256sum | cut -d' ' -f1)" + +if [ -z "$(podman images -q "$IMAGE")" ]; then + echo "$DOCKERFILE" | podman build -t "$IMAGE" -f - . +fi + +podman run --rm -it \ + -v "$HOME"/.replyrc:/root/.replyrc \ + "$IMAGE" \ + reply "$@" diff --git a/bin/.bin/rg b/bin/.bin/rg new file mode 100755 index 0000000..ea88361 --- /dev/null +++ b/bin/.bin/rg @@ -0,0 +1,7 @@ +#!/bin/sh + +if [ -t 1 ]; then + exec /usr/bin/rg --smart-case --no-ignore-messages -p "$@" | less -FR +else + exec /usr/bin/rg --smart-case --no-ignore-messages "$@" +fi diff --git a/bin/.bin/scanpdf b/bin/.bin/scanpdf new file mode 100755 index 0000000..31ebb14 --- /dev/null +++ b/bin/.bin/scanpdf @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +scanimage --format=png --device=pixma --resolution=150 | convert - scan.pdf diff --git a/bin/.bin/scratch b/bin/.bin/scratch new file mode 100755 index 0000000..0cca01c --- /dev/null +++ b/bin/.bin/scratch @@ -0,0 +1,5 @@ +#!/bin/sh +set -eu +set -o pipefail + +cat >/dev/null diff --git a/bin/.bin/set-mac b/bin/.bin/set-mac new file mode 100755 index 0000000..986d333 --- /dev/null +++ b/bin/.bin/set-mac @@ -0,0 +1,10 @@ +#!/bin/sh +set -eu + +link() { + sudo ip link set dev wlp0s20f3 "$@" +} + +link down +link address "$1" +link up diff --git a/bin/.bin/show-colors b/bin/.bin/show-colors new file mode 100755 index 0000000..47e0d32 --- /dev/null +++ b/bin/.bin/show-colors @@ -0,0 +1,29 @@ +#!/bin/sh +set -eu +set -o pipefail + +############################################################ +# Nico Golde <nico(at)ngolde.de> Homepage: http://www.ngolde.de +# Last change: Mon Feb 16 16:24:41 CET 2004 +############################################################ + +for attr in 0 1 2 3 4 5 6 7; do + echo "----------------------------------------------------------------" + printf 'ESC[%s;Foreground;Background - \n' $attr + for fore in 30 31 32 33 34 35 36 37; do + for back in 40 41 42 43 44 45 46 47; do + printf '\033[%s;%s;%sm %02s;%02s ' $attr $fore $back $fore $back + done + printf '\033[0m\n' + done + printf '\033[0m' +done + +printf '\n' +for color in $(seq 0 255); do + printf '\033[%s;%s;%sm \033[m' 48 5 "$color" + if [ "$color" -eq 15 ] || [ "$(echo "scale = 0; ($color - 15) % 36" | bc)" -eq 0 ]; then + printf '\n' + fi +done +printf '\033[0m\n' diff --git a/bin/.bin/smt b/bin/.bin/smt new file mode 100755 index 0000000..446197d --- /dev/null +++ b/bin/.bin/smt @@ -0,0 +1,22 @@ +#!/bin/sh +set -eu + +DOCKERFILE="$(cat <<EOF +FROM docker.io/debian:stable-slim +RUN apt-get update && apt-get install -y --no-install-recommends \ + cpanminus \ + make \ + gcc \ + libreadline-dev +RUN cpanm -n Games::SMTNocturne::Demons +EOF +)" +IMAGE="$(basename "$0"):$(echo "$DOCKERFILE" | sha256sum | cut -d' ' -f1)" + +if [ -z "$(podman images -q "$IMAGE")" ]; then + echo "$DOCKERFILE" | podman build -t "$IMAGE" -f - . +fi + +podman run --rm -it \ + "$IMAGE" \ + smt "$@" diff --git a/bin/.bin/sum b/bin/.bin/sum new file mode 100755 index 0000000..cf21bfd --- /dev/null +++ b/bin/.bin/sum @@ -0,0 +1,8 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use 5.014; + +use List::Util 'sum'; + +say sum map { s/^([-+\.\d]+).*/$1/r } <>; diff --git a/bin/.bin/vimmanpager b/bin/.bin/vimmanpager new file mode 100755 index 0000000..dfd36f3 --- /dev/null +++ b/bin/.bin/vimmanpager @@ -0,0 +1,15 @@ +#!/bin/sh +set -eu +set -o pipefail + +sed -e 's/\x1B\[[[:digit:]]\+m//g' | col -b | + vim \ + -c 'let no_plugin_maps = 1' \ + -c 'let g:rainbow_active = 0' \ + -c 'let g:airline#extensions#whitespace#checks = []' \ + -c "if exists('\$MAN_PN') | file \$MAN_PN | endif" \ + -c 'setlocal nolist nomod noswf ft=man' \ + -c 'runtime! macros/less.vim' \ + -c 'set ma' \ + -c 'setlocal noma' \ + - diff --git a/bin/.bin/web b/bin/.bin/web new file mode 100755 index 0000000..f8484c0 --- /dev/null +++ b/bin/.bin/web @@ -0,0 +1,11 @@ +#!/bin/sh +set -eu +set -o pipefail + +version="$(python -c "import sys; print(sys.version_info[0])")" +if [ "$version" = "2" ]; then + server=SimpleHTTPServer +else + server=http.server +fi +exec python -m "$server" "${1:-8000}" diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..550df27 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1 @@ +/.bin/local/* |