Skip to content

Instantly share code, notes, and snippets.

@Zash
Zash / .gitattributes
Created July 23, 2024 11:50
git diff yaml with gron
*.json diff=gron
*.yaml diff=ygron
@Zash
Zash / git-grondiff.bash
Last active March 1, 2024 12:44
git-diff json
#!/bin/bash
set -euo pipefail
case $# in
1)
diff -u --color --label="$1 @ HEAD" --label="$1" <(git show "HEAD:$1" | yq4 -oj | gron) <(yq4 -oj "$1" | gron)
;;
2)
diff -u --color --label="$1 @ $2^" --label="$1 @ $2" <(git show "$2^:$1" | yq4 -oj | gron) <(git show "$2:$1" | yq4 -oj | gron)
;;
@Zash
Zash / xkb-symbols-zdvorak
Created September 16, 2023 12:35
My custom keyboard layout
// Zashs Swedish Dvorak
// setxkbmap -I$HOME/.xkb prog -print | xkbcomp -I$HOME/.xkb - $DISPLAY
partial alphanumeric_keys
xkb_symbols "zdvorak" {
include "se"
include "se(dvorak)"
name[Group1]="Sweden - Zashs Dvorak";
@Zash
Zash / darkmode.sh
Created June 10, 2023 09:34
Scripts for switching between dark and light theme
#!/bin/sh
THEME=Materia-dark-compact
if type xfconf-query >/dev/null ; then
xfconf-query -c xsettings -p /Net/ThemeName -s $THEME
fi
if type gsettings >/dev/null ; then
gsettings set org.gnome.desktop.interface gtk-theme $THEME
fi
@Zash
Zash / yedit.sh
Last active November 9, 2024 01:10
In-place editing of json/yaml
#!/bin/bash
# Yaml EDIT
# Uses https://github.com/mikefarah/yq/ installed as yq4
# Optionally uses https://github.com/junegunn/fzf
set -euo pipefail
declare file=""
declare editformat="yaml"
declare origformat=""
declare editsuffix=""
@Zash
Zash / get-xmpp-cert.sh
Created May 30, 2023 14:08
Extract XMPP certificate
#!/bin/sh -e
if [ -z "$1" ]; then
echo "usage: $1 example.com [client|server]"
exit 1
fi
xmppdomain="$1"
adomain="$1"
if type idn2 >/dev/null 2>/dev/null ; then
@Zash
Zash / update-sshfp.sh
Created May 15, 2023 16:53
Update SSHFP records
#!/bin/bash
set -eo pipefail
ZONE="$(hostname -d)"
FQDN="$(hostname -f)"
UPDATES="$(mktemp --suffix .nsupdate)"
trap 'rm -- "$UPDATES"' EXIT
{
@Zash
Zash / .gitconfig
Last active June 26, 2023 11:20
git config, aliases etc
[pull]
ff = only
[commit]
verbose = true
[alias]
amend = commit --amend --no-edit
ci = commit
co = checkout
each = submodule foreach git
fa = fetch --all -p
@Zash
Zash / get-oauth2-client.sh
Last active May 18, 2023 12:42
OAuth2 testing scripts
#!/bin/bash
# RFC 7591 OAuth 2.0 Dynamic Client Registration Protocol
set -euo pipefail
BASE_DOMAIN="$1"
OAUTH_META="$(curl -sSfL "https://$BASE_DOMAIN/.well-known/oauth-authorization-server" -H Accept:application/json)"
ISSUER="$(echo "$OAUTH_META" | jq -r '.issuer')"
REGISTRATION_ENDPOINT="$(echo "$OAUTH_META" | jq -r '.registration_endpoint')"
@Zash
Zash / dns-update.sh
Last active June 1, 2023 14:27
nsupdate wrapper thing
#!/bin/bash
set -eo pipefail
ZONE="$1";
if ! shift; then
echo "Usage: $0 ZONE"
exit
fi