mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Compare commits
271 Commits
doc
...
2023-08-20
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
11ecbdaf04 | ||
|
|
bc9150b592 | ||
|
|
f81410cfc0 | ||
|
|
87239b2034 | ||
|
|
50011b1675 | ||
|
|
eb3392966a | ||
|
|
3188effbd3 | ||
|
|
80b119f6ad | ||
|
|
e87b4cb3d4 | ||
|
|
0c08d4ebe7 | ||
|
|
a7d59e971f | ||
|
|
233b3e7a7b | ||
|
|
691f64a477 | ||
|
|
670875f227 | ||
|
|
e90c014d88 | ||
|
|
d76a278a95 | ||
|
|
8eff002d55 | ||
|
|
3015e7a1c0 | ||
|
|
a286795570 | ||
|
|
99e8ff6f2b | ||
|
|
4a77c0e900 | ||
|
|
35f494c3d4 | ||
|
|
f650d12efb | ||
|
|
2c67b58ba6 | ||
|
|
ba9534577a | ||
|
|
193b22e0d1 | ||
|
|
b7353bd34e | ||
|
|
12b2ed211b | ||
|
|
ee5a78b578 | ||
|
|
25a9194480 | ||
|
|
f4ea05681c | ||
|
|
eb193fe1de | ||
|
|
e02dc0be80 | ||
|
|
6c3dea3721 | ||
|
|
cb3ba03c49 | ||
|
|
d7cc6fd508 | ||
|
|
b628453b10 | ||
|
|
157e6ee20e | ||
|
|
e375d7f472 | ||
|
|
373189f440 | ||
|
|
a719ca9972 | ||
|
|
4937a98ccc | ||
|
|
81093ab3d6 | ||
|
|
ab85cb5ecf | ||
|
|
cbb580fcdf | ||
|
|
aea9e50141 | ||
|
|
10ce6ff7f6 | ||
|
|
cd9bb5d6cc | ||
|
|
5cfbc4e88a | ||
|
|
44d981e3c3 | ||
|
|
3f509e17c1 | ||
|
|
af3365ad8e | ||
|
|
6888e8503f | ||
|
|
e52af2d21a | ||
|
|
a5a5c7d5df | ||
|
|
aca274d7df | ||
|
|
70cdfcdc07 | ||
|
|
9a38b456d7 | ||
|
|
a4196d7bc1 | ||
|
|
cbcc6e6fb6 | ||
|
|
f2ca693f7b | ||
|
|
da43e7533d | ||
|
|
9c9c56b030 | ||
|
|
747bc7becd | ||
|
|
c3c9714b8d | ||
|
|
5865f5130f | ||
|
|
6803ac2ce2 | ||
|
|
c512401acd | ||
|
|
dae254e240 | ||
|
|
2ab9bd3452 | ||
|
|
b68c1e2c65 | ||
|
|
3c8d8ca5e1 | ||
|
|
f6e6c42b26 | ||
|
|
7165e7c93f | ||
|
|
63f401c84b | ||
|
|
dea863ee35 | ||
|
|
d01a320de7 | ||
|
|
0564dbbb3d | ||
|
|
1efa61a9f4 | ||
|
|
77a01d2fda | ||
|
|
71711a5cc0 | ||
|
|
a49474fe60 | ||
|
|
2217cfb47b | ||
|
|
75b0c5db9e | ||
|
|
50174a4f72 | ||
|
|
04470627c6 | ||
|
|
e6318c4cc1 | ||
|
|
15b575c34d | ||
|
|
2db123c772 | ||
|
|
2de511f5f3 | ||
|
|
890a24ec07 | ||
|
|
a3aaed6c0c | ||
|
|
9f4fbfb06a | ||
|
|
273d6b495f | ||
|
|
d41703820d | ||
|
|
5748d014f1 | ||
|
|
2779322b24 | ||
|
|
50948acee4 | ||
|
|
670cf5c8dc | ||
|
|
d213b3b234 | ||
|
|
37d606cc49 | ||
|
|
8f57fad78c | ||
|
|
f8ddb56b02 | ||
|
|
1f59627da9 | ||
|
|
2c88a59188 | ||
|
|
9ec67f4c1c | ||
|
|
db3193e0bc | ||
|
|
9c83b8fc40 | ||
|
|
3da887ffad | ||
|
|
f56b7d0b7b | ||
|
|
e18e66391b | ||
|
|
8b66586fe8 | ||
|
|
ac4109cee6 | ||
|
|
99af2287c5 | ||
|
|
6adaaffabd | ||
|
|
c6f217d47c | ||
|
|
733093ee7a | ||
|
|
441a533e2a | ||
|
|
8d30879224 | ||
|
|
f94a4dc67c | ||
|
|
0bb950b053 | ||
|
|
4ec8f22ab8 | ||
|
|
ba0c734b06 | ||
|
|
f24e3ebb24 | ||
|
|
4af40de24b | ||
|
|
351b136cbc | ||
|
|
a5b0677903 | ||
|
|
ebf5c1cd22 | ||
|
|
94abfa2fe2 | ||
|
|
15f5f91e2a | ||
|
|
2b6229acc3 | ||
|
|
e05a6aa473 | ||
|
|
673fca3c05 | ||
|
|
f6a7b372b7 | ||
|
|
685fb22dd3 | ||
|
|
e788dedf69 | ||
|
|
a482092fdb | ||
|
|
b3eb8a8e44 | ||
|
|
3afee0505b | ||
|
|
50b74fc06e | ||
|
|
74bf253950 | ||
|
|
434120cc90 | ||
|
|
97e23b3669 | ||
|
|
f9f3dd05c8 | ||
|
|
6e095d9fbc | ||
|
|
c25540a398 | ||
|
|
fae178e8ac | ||
|
|
15ea12d54b | ||
|
|
291de7b2c1 | ||
|
|
bbba28e166 | ||
|
|
27dc8fb22c | ||
|
|
a5f55034fa | ||
|
|
062da36145 | ||
|
|
9e3b929a4b | ||
|
|
3170a41c4b | ||
|
|
b37f95383c | ||
|
|
e6e66b0d05 | ||
|
|
6e6b63cb28 | ||
|
|
20bb942ac6 | ||
|
|
d256cdf12b | ||
|
|
c20739472f | ||
|
|
66e6833623 | ||
|
|
bc5f9a2741 | ||
|
|
04d4ab4d25 | ||
|
|
ce1d4780b6 | ||
|
|
8e79910857 | ||
|
|
999ef09790 | ||
|
|
2f9841e2ac | ||
|
|
2879f63aff | ||
|
|
79a3e1f46c | ||
|
|
62392e3712 | ||
|
|
9717fef420 | ||
|
|
3c83cb1761 | ||
|
|
2a71557663 | ||
|
|
b6a2b65704 | ||
|
|
398e39b9eb | ||
|
|
f6b5cd90fc | ||
|
|
1d14f294eb | ||
|
|
f3cb3607db | ||
|
|
d117ee6b2e | ||
|
|
7e249843a6 | ||
|
|
465bfd37f1 | ||
|
|
5ad1ad4616 | ||
|
|
e82cad68e1 | ||
|
|
5e372e2b35 | ||
|
|
9e392af7d1 | ||
|
|
68bcf536cb | ||
|
|
698f2defa9 | ||
|
|
a42128f5c9 | ||
|
|
6559acbf90 | ||
|
|
a654a7747c | ||
|
|
d158a0a373 | ||
|
|
229d5353e3 | ||
|
|
20389cba90 | ||
|
|
aaf56b794d | ||
|
|
827665279a | ||
|
|
8467bfce20 | ||
|
|
116ae13896 | ||
|
|
0f08f9710a | ||
|
|
9c147af8c1 | ||
|
|
5e498f9bcd | ||
|
|
1cab41bfd5 | ||
|
|
3e225ae2ab | ||
|
|
cc15b17e28 | ||
|
|
7aa9e57a59 | ||
|
|
530b205b3d | ||
|
|
0bed0a80a3 | ||
|
|
244c5da0e7 | ||
|
|
e885afbff9 | ||
|
|
8a0e4cd774 | ||
|
|
5cf313140c | ||
|
|
f0c3ab8753 | ||
|
|
8cd3682a23 | ||
|
|
ee83a40686 | ||
|
|
7f9a3774ae | ||
|
|
8d7c76b227 | ||
|
|
0a92dd0ed7 | ||
|
|
eae69fe414 | ||
|
|
dcef7445b2 | ||
|
|
11d1086a68 | ||
|
|
a88d120b3c | ||
|
|
15479f3829 | ||
|
|
9178794de5 | ||
|
|
fc120b66fe | ||
|
|
57b181bd74 | ||
|
|
aa6a2e806d | ||
|
|
eec3c9ba7a | ||
|
|
d67b18f2ea | ||
|
|
72b82ff2e3 | ||
|
|
6492beb726 | ||
|
|
08142409f8 | ||
|
|
8225785dcc | ||
|
|
c7c97b84c5 | ||
|
|
f9ce8b3df8 | ||
|
|
69c1184b58 | ||
|
|
7e432287ac | ||
|
|
50cb109c99 | ||
|
|
c915b20450 | ||
|
|
f3ea935dd5 | ||
|
|
a6414425b7 | ||
|
|
ad73f12103 | ||
|
|
7d35ace5bb | ||
|
|
e4f2cc94b5 | ||
|
|
fcbe2e781b | ||
|
|
7a5abd73cb | ||
|
|
07926d6673 | ||
|
|
24690e8399 | ||
|
|
2232dce811 | ||
|
|
f6de62700a | ||
|
|
01272f4474 | ||
|
|
e176b0c136 | ||
|
|
67fad831e5 | ||
|
|
048d7fb1ba | ||
|
|
24c1c8edfb | ||
|
|
614adeed08 | ||
|
|
12a92703f0 | ||
|
|
288a9c3a7e | ||
|
|
2419693164 | ||
|
|
b8607f4bdc | ||
|
|
5c2289e283 | ||
|
|
deb8b62c12 | ||
|
|
8e984d3c3b | ||
|
|
eb0206575a | ||
|
|
44d273dd7c | ||
|
|
8029afc15a | ||
|
|
f5766e7661 | ||
|
|
88c096cd95 | ||
|
|
3005abff34 | ||
|
|
8b9c9581e4 | ||
|
|
693b349024 | ||
|
|
a82e0cdb37 |
Binary file not shown.
2
.gitignore
vendored
2
.gitignore
vendored
@@ -4,3 +4,5 @@ installed-prefs
|
|||||||
*~
|
*~
|
||||||
*.bak
|
*.bak
|
||||||
local_dotfiles
|
local_dotfiles
|
||||||
|
dotfile_overlays
|
||||||
|
!dotfile_overlays/.keep
|
||||||
|
|||||||
7
.gitmodules
vendored
7
.gitmodules
vendored
@@ -18,14 +18,7 @@
|
|||||||
path = dotfiles/vim/pack/matir/start/ctrlp
|
path = dotfiles/vim/pack/matir/start/ctrlp
|
||||||
url = https://github.com/ctrlpvim/ctrlp.vim.git
|
url = https://github.com/ctrlpvim/ctrlp.vim.git
|
||||||
fetchRecurseSubmodules = true
|
fetchRecurseSubmodules = true
|
||||||
[submodule "dotfiles/vim/pack/matir/start/vim-go"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/vim-go
|
|
||||||
url = https://github.com/fatih/vim-go.git
|
|
||||||
fetchRecurseSubmodules = true
|
|
||||||
[submodule "dotfiles/tmux/tmux-logging"]
|
[submodule "dotfiles/tmux/tmux-logging"]
|
||||||
path = dotfiles/tmux/tmux-logging
|
path = dotfiles/tmux/tmux-logging
|
||||||
url = https://github.com/tmux-plugins/tmux-logging.git
|
url = https://github.com/tmux-plugins/tmux-logging.git
|
||||||
fetchRecurseSubmodules = true
|
fetchRecurseSubmodules = true
|
||||||
[submodule "dotfiles/vim/pack/matir/start/syntastic"]
|
|
||||||
path = dotfiles/vim/pack/matir/start/syntastic
|
|
||||||
url = https://github.com/vim-syntastic/syntastic.git
|
|
||||||
|
|||||||
@@ -26,5 +26,8 @@ function verify_dest {
|
|||||||
|
|
||||||
verify_dest "$DEST"
|
verify_dest "$DEST"
|
||||||
|
|
||||||
exec nice rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
time nice rsync -Hax --delete --exclude-from="$HOME/.rsync_ignore" \
|
||||||
--delete-excluded "${HOME}/" "$DEST"
|
--delete-excluded "${HOME}/" "$DEST"
|
||||||
|
echo "Backup completed..."
|
||||||
|
time sync
|
||||||
|
echo "Run finished, safe to unmount."
|
||||||
|
|||||||
@@ -1,3 +1,21 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
CHROME_BINS="google-chrome-beta google-chrome"
|
||||||
|
for bin in ${CHROME_BINS} ; do
|
||||||
|
if command -v ${bin} >/dev/null 2>&1 ; then
|
||||||
|
CHROME=$(command -v ${bin})
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if test -z "${CHROME}" ; then
|
||||||
|
echo "Chrome not found!" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set alternate HOME to use alternate NSS DB
|
||||||
|
export HOME=${HOME}/.chrome-pentest
|
||||||
|
mkdir -p ${HOME}
|
||||||
|
|
||||||
# Launch chrome for burp
|
# Launch chrome for burp
|
||||||
exec /usr/bin/google-chrome-beta --ignore-certificate-errors --user-data-dir=${HOME}/.config/chrome-pentest --proxy-server=127.0.0.1:8080
|
exec ${CHROME} --user-data-dir=${HOME}/chrome-pentest --proxy-server=127.0.0.1:8080
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
LOCKTIME="${SCREENSAVER_MIN:-5}"
|
||||||
LOCKER="i3lock -c 000000"
|
LOCKER="i3lock -c 000000"
|
||||||
# intentionally want word splitting below
|
# intentionally want word splitting below
|
||||||
/usr/bin/xss-lock -- ${LOCKER} &
|
/usr/bin/xss-lock -- ${LOCKER} &
|
||||||
exec /usr/bin/xautolock \
|
exec /usr/bin/xautolock \
|
||||||
-time 5 \
|
-time "${LOCKTIME}" \
|
||||||
-detectsleep \
|
-detectsleep \
|
||||||
-locker "${LOCKER}" \
|
-locker "${LOCKER}" \
|
||||||
-notify 30 \
|
-notify 30 \
|
||||||
|
|||||||
450
bin/install_tool
450
bin/install_tool
@@ -5,7 +5,10 @@ set -ue
|
|||||||
REINSTALL=0
|
REINSTALL=0
|
||||||
PACKAGES=1
|
PACKAGES=1
|
||||||
|
|
||||||
|
export GO111MODULE=on
|
||||||
|
|
||||||
while getopts -- "-:" a ; do
|
while getopts -- "-:" a ; do
|
||||||
|
# shellcheck disable=SC2154
|
||||||
case "${a}" in
|
case "${a}" in
|
||||||
-)
|
-)
|
||||||
case "${OPTARG}" in
|
case "${OPTARG}" in
|
||||||
@@ -20,20 +23,33 @@ while getopts -- "-:" a ; do
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown short option ${OPTARG}" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
done
|
done
|
||||||
|
|
||||||
shift $(($OPTIND-1))
|
shift $((OPTIND-1))
|
||||||
|
|
||||||
|
function list_tools {
|
||||||
|
echo "Options:" >/dev/stderr
|
||||||
|
awk 'BEGIN {s=0;FS=")"};/main tool selection/{s=1};/^\s+\w+)$/{if(s==1){print $1}}' "$0" | sort | while read -r opt; do
|
||||||
|
echo -e "\\t${opt}" >/dev/stderr
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
if [ $# -ne 1 ] ; then
|
if [ $# -ne 1 ] ; then
|
||||||
echo "Usage: ${0} <tool>" >/dev/stderr
|
echo "Usage: ${0} <tool>" >/dev/stderr
|
||||||
|
list_tools
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
TOOL=${1}
|
TOOL=${1}
|
||||||
|
|
||||||
function die {
|
function die {
|
||||||
echo $* >/dev/stderr
|
echo "$@" >/dev/stderr
|
||||||
return 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
|
||||||
function install_pkgs {
|
function install_pkgs {
|
||||||
@@ -41,15 +57,15 @@ function install_pkgs {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
# TODO: check if packages are already installed
|
# TODO: check if packages are already installed
|
||||||
if [ `id -u` -ne "0" ] ; then
|
if [ "$(id -u)" -ne "0" ] ; then
|
||||||
sudo apt-get -y install $* || (
|
sudo apt-get -y install "$@" || (
|
||||||
echo -n "Unable to install packages, please ensure these " >/dev/stderr
|
echo -n "Unable to install packages, please ensure these " >/dev/stderr
|
||||||
echo "are installed, then run with --no-packages." >/dev/stderr
|
echo "are installed, then run with --no-packages." >/dev/stderr
|
||||||
echo $*
|
echo "$@"
|
||||||
false )
|
false )
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
apt-get -y install $*
|
apt-get -y install "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
function download {
|
function download {
|
||||||
@@ -57,7 +73,7 @@ function download {
|
|||||||
DST=${2}
|
DST=${2}
|
||||||
echo -n "Downloading ${SRC} to ${DST}..." >&2
|
echo -n "Downloading ${SRC} to ${DST}..." >&2
|
||||||
# TODO: consider curl instead?
|
# TODO: consider curl instead?
|
||||||
wget --no-server-response -q -O ${DST} --content-disposition ${SRC}
|
wget --no-server-response -q -O "${DST}" --content-disposition "${SRC}"
|
||||||
echo " done." >&2
|
echo " done." >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -67,192 +83,452 @@ function check_sudo {
|
|||||||
|
|
||||||
function add_bin_symlink {
|
function add_bin_symlink {
|
||||||
local TARGET NAME BINDIR
|
local TARGET NAME BINDIR
|
||||||
TARGET=${1}
|
TARGET="${1}"
|
||||||
NAME=${2:-$(basename ${1})}
|
NAME="${2:-$(basename "${1}")}"
|
||||||
BINDIR=${HOME}/bin/tools/
|
BINDIR="${HOME}/bin/tools/"
|
||||||
mkdir -p -- ${BINDIR}
|
mkdir -p -- "${BINDIR}"
|
||||||
ln -sf ${DESTDIR}/${TARGET} ${BINDIR}/${NAME}
|
ln -sf "${DESTDIR}/${TARGET}" "${BINDIR}/${NAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
mkdir -p "${HOME}/tools"
|
mkdir -p "${HOME}/tools"
|
||||||
|
|
||||||
DESTDIR="${HOME}/tools/${TOOL}"
|
DESTDIR="${HOME}/tools/${TOOL}"
|
||||||
|
|
||||||
if [ -d ${DESTDIR} ] ; then
|
function makedest {
|
||||||
if [ ${REINSTALL} -eq 1 ] ; then
|
if [ -d "${DESTDIR}" ] ; then
|
||||||
rm -ri ${DESTDIR}
|
if [ "${REINSTALL}" -eq 1 ] ; then
|
||||||
|
rm -ri "${DESTDIR}"
|
||||||
else
|
else
|
||||||
echo "${DESTDIR} exists but not reinstalling." >/dev/stderr
|
echo "${DESTDIR} exists but not reinstalling." >/dev/stderr
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
mkdir -p "${DESTDIR}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function makedest_or_die {
|
||||||
|
makedest || die "Aborting."
|
||||||
|
}
|
||||||
|
|
||||||
|
function deb_only {
|
||||||
|
# Error if not on a debian or derivative
|
||||||
|
if ! test -f /etc/debian_version ; then
|
||||||
|
echo "This tool only available for debian." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
}
|
||||||
|
|
||||||
|
function require_pipx {
|
||||||
|
command -v pipx >/dev/null 2>&1 || die "Requires pipx"
|
||||||
|
}
|
||||||
|
|
||||||
# Begin main tool selection
|
# Begin main tool selection
|
||||||
case ${TOOL} in
|
case ${TOOL} in
|
||||||
john)
|
john)
|
||||||
|
makedest_or_die
|
||||||
install_pkgs libssl-dev git build-essential yasm libgmp-dev libpcap-dev \
|
install_pkgs libssl-dev git build-essential yasm libgmp-dev libpcap-dev \
|
||||||
pkg-config libbz2-dev libopenmpi-dev openmpi-bin libnss3-dev \
|
pkg-config libbz2-dev libopenmpi-dev openmpi-bin libnss3-dev \
|
||||||
libkrb5-dev libgmp-dev
|
libkrb5-dev libgmp-dev
|
||||||
jtemp=`mktemp -d`
|
jtemp=$(mktemp -d)
|
||||||
git clone https://github.com/magnumripper/JohnTheRipper.git ${jtemp}/john
|
git clone https://github.com/magnumripper/JohnTheRipper.git "${jtemp}/john"
|
||||||
cd ${jtemp}/john/src
|
cd "${jtemp}/john/src"
|
||||||
./configure && make -sj2
|
./configure && make -sj2
|
||||||
mkdir -p ${DESTDIR}
|
cp -r "${jtemp}"/john/run/* "${DESTDIR}"
|
||||||
cp -r ${jtemp}/john/run/* ${DESTDIR}
|
rm -rf "${jtemp}"
|
||||||
rm -rf ${jtemp}
|
|
||||||
# Persistent files
|
# Persistent files
|
||||||
mkdir -p ${HOME}/.john
|
mkdir -p "${HOME}/.john"
|
||||||
touch ${HOME}/.john/john.pot
|
touch "${HOME}/.john/john.pot"
|
||||||
ln -sf ${HOME}/.john/* ${DESTDIR}
|
ln -sf "${HOME}/.john/*" "${DESTDIR}"
|
||||||
add_bin_symlink john
|
add_bin_symlink john
|
||||||
;;
|
;;
|
||||||
wordlists)
|
wordlists)
|
||||||
mkdir -p ${DESTDIR}
|
makedest
|
||||||
download \
|
download \
|
||||||
http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2 \
|
http://downloads.skullsecurity.org/passwords/rockyou.txt.bz2 \
|
||||||
${DESTDIR}/rockyou.txt.bz2
|
"${DESTDIR}/rockyou.txt.bz2"
|
||||||
bunzip2 ${DESTDIR}/rockyou.txt.bz2
|
bunzip2 "${DESTDIR}/rockyou.txt.bz2"
|
||||||
download \
|
download \
|
||||||
http://downloads.skullsecurity.org/passwords/phpbb.txt.bz2 \
|
http://downloads.skullsecurity.org/passwords/phpbb.txt.bz2 \
|
||||||
${DESTDIR}/phpbb.txt.bz2
|
"${DESTDIR}/phpbb.txt.bz2"
|
||||||
bunzip2 ${DESTDIR}/phpbb.txt.bz2
|
bunzip2 "${DESTDIR}/phpbb.txt.bz2"
|
||||||
download \
|
download \
|
||||||
http://downloads.skullsecurity.org/passwords/hak5.txt.bz2 \
|
http://downloads.skullsecurity.org/passwords/hak5.txt.bz2 \
|
||||||
${DESTDIR}/hak5.txt.bz2
|
"${DESTDIR}/hak5.txt.bz2"
|
||||||
bunzip2 ${DESTDIR}/hak5.txt.bz2
|
bunzip2 "${DESTDIR}/hak5.txt.bz2"
|
||||||
;;
|
;;
|
||||||
seclists)
|
seclists)
|
||||||
git clone https://github.com/danielmiessler/SecLists.git ${DESTDIR}
|
git clone https://github.com/danielmiessler/SecLists.git "${DESTDIR}"
|
||||||
|
;;
|
||||||
|
werdlists)
|
||||||
|
git clone --depth 1 https://github.com/decal/werdlists.git "${DESTDIR}"
|
||||||
;;
|
;;
|
||||||
gcloud)
|
gcloud)
|
||||||
mkdir -p ${DESTDIR}
|
makedest_or_die
|
||||||
gtemp=`mktemp -d`
|
|
||||||
gbase="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/"
|
gbase="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/"
|
||||||
# TODO: find a way to make this version independent
|
# TODO: find a way to make this version independent
|
||||||
gsdk="google-cloud-sdk-209.0.0-linux-x86_64.tar.gz"
|
gsdk="google-cloud-sdk-385.0.0-linux-x86_64.tar.gz"
|
||||||
download "${gbase}${gsdk}" /tmp/gcloud.tar.gz
|
download "${gbase}${gsdk}" /tmp/gcloud.tar.gz
|
||||||
tar zxf /tmp/gcloud.tar.gz --strip-components=1 -C ${DESTDIR}
|
tar zxf /tmp/gcloud.tar.gz --strip-components=1 -C "${DESTDIR}"
|
||||||
rm /tmp/gcloud.tar.gz
|
rm /tmp/gcloud.tar.gz
|
||||||
add_bin_symlink bin/gcloud
|
add_bin_symlink bin/gcloud
|
||||||
;;
|
;;
|
||||||
android-sdk)
|
android-sdk)
|
||||||
# TODO: find a way to make this version independent
|
# TODO: find a way to make this version independent
|
||||||
asdk="https://dl.google.com/android/repository/tools_r25.2.3-linux.zip"
|
asdk="https://dl.google.com/android/repository/platform-tools_r31.0.2-linux.zip"
|
||||||
download ${asdk} /tmp/android-tools.zip
|
download ${asdk} /tmp/android-tools.zip
|
||||||
unzip -d ${DESTDIR} /tmp/android-tools.zip
|
unzip -d "${DESTDIR}" /tmp/android-tools.zip
|
||||||
rm /tmp/android-tools.zip
|
rm /tmp/android-tools.zip
|
||||||
# Install components
|
# Install components
|
||||||
${DESTDIR}/tools/bin/sdkmanager "emulator" "platform-tools"
|
"${DESTDIR}/tools/bin/sdkmanager" "emulator" "platform-tools"
|
||||||
;;
|
;;
|
||||||
burp)
|
burp)
|
||||||
# Install latest burp free
|
# Install latest burp free
|
||||||
mkdir -p ${DESTDIR}
|
makedest
|
||||||
download \
|
if ! download \
|
||||||
https://portswigger.net/DownloadUpdate.ashx\?Product\=Free \
|
https://portswigger.net/DownloadUpdate.ashx\?Product=Free \
|
||||||
${DESTDIR}/burp-free.jar
|
"${DESTDIR}/burp-free.jar" ; then
|
||||||
if [ $? -ne 0 ] ; then
|
|
||||||
echo "Download failed." >&2
|
echo "Download failed." >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
if [ -x /usr/bin/jarwrapper ] ; then
|
if [ -x /usr/bin/jarwrapper ] ; then
|
||||||
# We have binfmt support for jar, so add to bin
|
# We have binfmt support for jar, so add to bin
|
||||||
chmod +x ${DESTDIR}/*.jar
|
chmod +x "${DESTDIR}"/*.jar
|
||||||
ln -sf ${DESTDIR}/*.jar ${HOME}/bin/burp
|
ln -sf "${DESTDIR}"/*.jar "${HOME}/bin/burp"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
mitmproxy)
|
mitmproxy)
|
||||||
ver=$(python -c 'import urllib2; import json; print(json.load(urllib2.urlopen("https://api.github.com/repos/mitmproxy/mitmproxy/releases/latest"))["name"].replace("v",""))')
|
makedest_or_die
|
||||||
download https://snapshots.mitmproxy.org/${ver}/mitmproxy-${ver}-linux.tar.gz /tmp/mitmproxy.tar.gz
|
ver=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/mitmproxy/mitmproxy/releases/latest"))["tag_name"].replace("v",""))')
|
||||||
mkdir -p ${DESTDIR}
|
download \
|
||||||
tar zx -C ${DESTDIR} -f /tmp/mitmproxy.tar.gz
|
"https://snapshots.mitmproxy.org/${ver}/mitmproxy-${ver}-linux.tar.gz" \
|
||||||
|
/tmp/mitmproxy.tar.gz
|
||||||
|
tar zx -C "${DESTDIR}" -f /tmp/mitmproxy.tar.gz
|
||||||
rm /tmp/mitmproxy.tar.gz
|
rm /tmp/mitmproxy.tar.gz
|
||||||
add_bin_symlink mitmproxy
|
add_bin_symlink mitmproxy
|
||||||
add_bin_symlink mitmweb
|
add_bin_symlink mitmweb
|
||||||
|
add_bin_symlink mitmdump
|
||||||
;;
|
;;
|
||||||
esp)
|
esp)
|
||||||
|
makedest_or_die
|
||||||
src="https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz"
|
src="https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-61-gab8375a-5.2.0.tar.gz"
|
||||||
download ${src} /tmp/esp32.tar.gz
|
download ${src} /tmp/esp32.tar.gz
|
||||||
mkdir -p ${DESTDIR}
|
tar zx -C "${DESTDIR}" -f /tmp/esp32.tar.gz
|
||||||
tar zx -C ${DESTDIR} -f /tmp/esp32.tar.gz
|
|
||||||
rm /tmp/esp32.tar.gz
|
rm /tmp/esp32.tar.gz
|
||||||
git clone --recursive https://github.com/espressif/esp-idf.git ${DESTDIR}/esp-idf
|
git clone --recursive https://github.com/espressif/esp-idf.git "${DESTDIR}/esp-idf"
|
||||||
;;
|
;;
|
||||||
dex2jar)
|
dex2jar)
|
||||||
|
makedest_or_die
|
||||||
src="https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip"
|
src="https://github.com/pxb1988/dex2jar/releases/download/2.0/dex-tools-2.0.zip"
|
||||||
download ${src} /tmp/dex2jar.zip
|
download ${src} /tmp/dex2jar.zip
|
||||||
tmpd=`mktemp -d`
|
tmpd=$(mktemp -d)
|
||||||
unzip -d ${tmpd} /tmp/dex2jar.zip
|
unzip -d "${tmpd}" /tmp/dex2jar.zip
|
||||||
mv ${tmpd}/* ${DESTDIR}
|
mv "${tmpd}"/* "${DESTDIR}"
|
||||||
rm /tmp/dex2jar.zip
|
rm /tmp/dex2jar.zip
|
||||||
rm -rf ${tmpd}
|
rm -rf "${tmpd}"
|
||||||
rm ${DESTDIR}/*.bat
|
rm "${DESTDIR}"/*.bat
|
||||||
chmod +x ${DESTDIR}/*.sh
|
chmod +x "${DESTDIR}"/*.sh
|
||||||
;;
|
;;
|
||||||
proxmark3)
|
proxmark3)
|
||||||
install_pkgs p7zip git build-essential libreadline5 libreadline-dev \
|
install_pkgs p7zip git build-essential libreadline5 libreadline-dev \
|
||||||
libusb-0.1-4 libusb-dev libqt4-dev perl pkg-config wget libncurses5-dev \
|
libusb-0.1-4 libusb-dev libqt4-dev perl pkg-config wget libncurses5-dev \
|
||||||
gcc-arm-none-eabi libstdc++-arm-none-eabi-newlib
|
gcc-arm-none-eabi libstdc++-arm-none-eabi-newlib
|
||||||
src="https://github.com/Proxmark/proxmark3.git"
|
src="https://github.com/Proxmark/proxmark3.git"
|
||||||
git clone ${src} ${DESTDIR}
|
git clone "${src}" "${DESTDIR}"
|
||||||
cd ${DESTDIR}
|
cd "${DESTDIR}"
|
||||||
make -sj2
|
make -sj2
|
||||||
check_sudo && sudo /bin/sh -c \
|
check_sudo && sudo /bin/sh -c \
|
||||||
"cp -rf driver/78-mm-usb-device-blacklist.rules \
|
"cp -rf driver/78-mm-usb-device-blacklist.rules \
|
||||||
/etc/udev/rules.d/77-mm-usb-device-blacklist.rules &&
|
/etc/udev/rules.d/77-mm-usb-device-blacklist.rules &&
|
||||||
udevadm control --reload-rules"
|
udevadm control --reload-rules"
|
||||||
;;
|
;;
|
||||||
|
pm3iceman)
|
||||||
|
install_pkgs git ca-certificates build-essential pkg-config \
|
||||||
|
libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev \
|
||||||
|
libbz2-dev libbluetooth-dev libpython3-dev libssl-dev
|
||||||
|
src="https://github.com/RfidResearchGroup/proxmark3.git"
|
||||||
|
git clone "${src}" "${DESTDIR}"
|
||||||
|
cd "${DESTDIR}"
|
||||||
|
make clean && make -sj2
|
||||||
|
check_sudo && sudo /bin/sh -c \
|
||||||
|
"cp -rf ./driver/77-pm3-usb-device-blacklist.rules \
|
||||||
|
/etc/udev/rules.d/77-pm3-usb-device-blacklist.rules &&
|
||||||
|
udevadm control --reload-rules"
|
||||||
|
add_bin_symlink pm3
|
||||||
|
;;
|
||||||
cyberchef)
|
cyberchef)
|
||||||
mkdir -p ${DESTDIR}
|
makedest
|
||||||
src=$(python -c 'import urllib2; import json; print(filter(lambda x: x["name"]=="cyberchef.htm", json.load(urllib2.urlopen("https://api.github.com/repos/gchq/CyberChef/releases/latest"))["assets"])[0]["browser_download_url"])')
|
cd "${DESTDIR}"
|
||||||
download ${src} ${DESTDIR}/cyberchef.html
|
src=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/gchq/CyberChef/releases/latest"))["assets"][0]["browser_download_url"])')
|
||||||
|
download "${src}" "${DESTDIR}/cyberchef.zip"
|
||||||
|
unzip -d "${DESTDIR}" "${DESTDIR}/cyberchef.zip"
|
||||||
|
ln -sf CyberChef*.html "${DESTDIR}/cyberchef.html"
|
||||||
;;
|
;;
|
||||||
apktool)
|
apktool)
|
||||||
mkdir -p ${DESTDIR}
|
makedest_or_die
|
||||||
download \
|
download \
|
||||||
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool \
|
https://raw.githubusercontent.com/iBotPeaches/Apktool/master/scripts/linux/apktool \
|
||||||
${DESTDIR}/apktool
|
"${DESTDIR}/apktool"
|
||||||
download \
|
download \
|
||||||
https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.3.3.jar \
|
https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.3.3.jar \
|
||||||
${DESTDIR}/apktool.jar
|
"${DESTDIR}/apktool.jar"
|
||||||
chmod +x ${DESTDIR}/apktool
|
chmod +x "${DESTDIR}/apktool"
|
||||||
add_bin_symlink apktool
|
add_bin_symlink apktool
|
||||||
;;
|
;;
|
||||||
ptf)
|
ptf)
|
||||||
|
makedest_or_die
|
||||||
src="https://github.com/trustedsec/ptf.git"
|
src="https://github.com/trustedsec/ptf.git"
|
||||||
git clone ${src} ${DESTDIR}
|
git clone "${src}" "${DESTDIR}"
|
||||||
;;
|
;;
|
||||||
pwndbg)
|
pwndbg)
|
||||||
if ! which gdb > /dev/null 2>&1 ; then
|
if ! command -v gdb > /dev/null 2>&1 ; then
|
||||||
echo 'No gdb available!' >/dev/stderr
|
echo 'No gdb available!' >/dev/stderr
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
git clone --depth 1 -b stable https://github.com/pwndbg/pwndbg.git ${DESTDIR}
|
git clone --depth 1 -b stable https://github.com/pwndbg/pwndbg.git "${DESTDIR}"
|
||||||
local PY_PACKAGES=${DESTDIR}/vendor
|
PY_PACKAGES=${DESTDIR}/vendor
|
||||||
mkdir -p ${PY_PACKAGES}
|
mkdir -p "${PY_PACKAGES}"
|
||||||
local PYVER=$(gdb -batch -q --nx -ex 'pi import platform; print(".".join(platform.python_version_tuple()[:2]))')
|
PYVER=$(gdb -batch -q --nx -ex 'pi import platform; print(".".join(platform.python_version_tuple()[:2]))')
|
||||||
local PYTHON=$(gdb -batch -q --nx -ex 'pi import sys; print(sys.executable)')
|
PYTHON=$(gdb -batch -q --nx -ex 'pi import sys; print(sys.executable)')
|
||||||
PYTHON="${PYTHON}${PYVER}"
|
PYTHON="${PYTHON}${PYVER}"
|
||||||
${PYTHON} -m pip install --target ${PY_PACKAGES} -Ur ${DESTDIR}/requirements.txt
|
"${PYTHON}" -m pip install --target "${PY_PACKAGES}" -Ur "${DESTDIR}/requirements.txt"
|
||||||
${PYTHON} -m pip install --target ${PY_PACKAGES} -U capstone unicorn
|
"${PYTHON}" -m pip install --target "${PY_PACKAGES}" -U capstone unicorn
|
||||||
# capstone package is broken
|
# capstone package is broken
|
||||||
cp ${PY_PACKAGES}/usr/lib/*/dist-packages/capstone/libcapstone.so ${PY_PACKAGES}/capstone
|
cp "${PY_PACKAGES}/usr/lib/*/dist-packages/capstone/libcapstone.so" "${PY_PACKAGES}/capstone"
|
||||||
;;
|
;;
|
||||||
gef)
|
gef)
|
||||||
if ! which gdb > /dev/null 2>&1 ; then
|
makedest_or_die
|
||||||
|
if ! command -v gdb > /dev/null 2>&1 ; then
|
||||||
echo 'No gdb available!' >/dev/stderr
|
echo 'No gdb available!' >/dev/stderr
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
mkdir -p ${DESTDIR}
|
|
||||||
download \
|
download \
|
||||||
https://github.com/hugsy/gef/raw/master/gef.py \
|
https://github.com/hugsy/gef/raw/master/gef.py \
|
||||||
${DESTDIR}/gef.py
|
"${DESTDIR}/gef.py"
|
||||||
|
;;
|
||||||
|
aflplusplus)
|
||||||
|
install_pkgs libtool-bin libglib2.0-dev libpixman-1-dev clang clang-tools \
|
||||||
|
llvm python3-setuptools
|
||||||
|
git clone "https://github.com/vanhauser-thc/AFLplusplus" "${DESTDIR}"
|
||||||
|
make -C "${DESTDIR}" distrib
|
||||||
|
;;
|
||||||
|
exploitdb)
|
||||||
|
if test -d "${DESTDIR}" ; then
|
||||||
|
echo "Already installed, updating instead..." >/dev/stderr
|
||||||
|
"${DESTDIR}/searchsploit" -u
|
||||||
|
else
|
||||||
|
git clone --depth 1 \
|
||||||
|
https://github.com/offensive-security/exploitdb.git \
|
||||||
|
"${DESTDIR}"
|
||||||
|
add_bin_symlink searchsploit
|
||||||
|
cp "${DESTDIR}/.searchsploit_rc" "${HOME}/.searchsploit_rc"
|
||||||
|
sed -i "s|/opt/exploitdb|${DESTDIR}|" "${HOME}/.searchsploit_rc"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
cura)
|
||||||
|
makedest
|
||||||
|
ver=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/Ultimaker/Cura/releases/latest"))["name"].replace("v",""))')
|
||||||
|
echo "Latest Cura is ${ver}"
|
||||||
|
download \
|
||||||
|
"https://github.com/Ultimaker/Cura/releases/download/${ver}/Cura-${ver}.AppImage" \
|
||||||
|
"${DESTDIR}/Cura.AppImage"
|
||||||
|
chmod +x "${DESTDIR}/Cura.AppImage"
|
||||||
|
add_bin_symlink "Cura.AppImage" cura
|
||||||
|
;;
|
||||||
|
rr)
|
||||||
|
deb_only
|
||||||
|
ver=$(python3 -c 'from urllib import request; import json; print(json.load(request.urlopen("https://api.github.com/repos/mozilla/rr/releases/latest"))["name"])')
|
||||||
|
echo "Latest rr is ${ver}"
|
||||||
|
download \
|
||||||
|
"https://github.com/mozilla/rr/releases/download/${ver}/rr-${ver}-Linux-$(uname -m).deb" \
|
||||||
|
"/tmp/rr.deb"
|
||||||
|
sudo dpkg -i /tmp/rr.deb
|
||||||
|
;;
|
||||||
|
nmap-parse-output)
|
||||||
|
git clone --depth 1 \
|
||||||
|
https://github.com/ernw/nmap-parse-output.git \
|
||||||
|
"${DESTDIR}"
|
||||||
|
add_bin_symlink nmap-parse-output
|
||||||
|
cat <<EOF >"${HOME}/.zshrc.d/99-nmap-parse-output.zsh"
|
||||||
|
if test -d ${DESTDIR} ; then
|
||||||
|
autoload bashcompinit
|
||||||
|
bashcompinit
|
||||||
|
source ${DESTDIR}/_nmap-parse-output
|
||||||
|
fi
|
||||||
|
EOF
|
||||||
|
;;
|
||||||
|
logiops)
|
||||||
|
install_pkgs cmake libevdev-dev libudev-dev libconfig++-dev checkinstall
|
||||||
|
git clone "https://github.com/PixlOne/logiops.git" "${DESTDIR}"
|
||||||
|
mkdir -p "${DESTDIR}/build"
|
||||||
|
cd "${DESTDIR}/build"
|
||||||
|
cmake ..
|
||||||
|
make
|
||||||
|
sudo checkinstall --pkgname logiops --maintainer "${USER}" -y
|
||||||
|
;;
|
||||||
|
aws)
|
||||||
|
DN=$(mktemp -d)
|
||||||
|
cd "${DN}"
|
||||||
|
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "${DN}/awscliv2.zip"
|
||||||
|
unzip "${DN}/awscliv2.zip"
|
||||||
|
mv "${DN}/aws/dist" "${DESTDIR}"
|
||||||
|
add_bin_symlink aws
|
||||||
|
rm -rf ${DN}
|
||||||
|
;;
|
||||||
|
tmpmail)
|
||||||
|
install_pkgs curl w3m jq
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
curl -L "https://git.io/tmpmail" > ${DESTDIR}/tmpmail
|
||||||
|
chmod +x ${DESTDIR}/tmpmail
|
||||||
|
add_bin_symlink tmpmail
|
||||||
|
;;
|
||||||
|
gf)
|
||||||
|
install_pkgs golang-go silversearcher-ag
|
||||||
|
go install github.com/tomnomnom/gf@latest
|
||||||
|
mkdir -p ${HOME}/.config
|
||||||
|
if test -d ${HOME}/.config/gf ; then
|
||||||
|
git -C ${HOME}/.config/gf pull
|
||||||
|
else
|
||||||
|
git clone https://github.com/Matir/gf-patterns.git ${HOME}/.config/gf
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
gron)
|
||||||
|
go install github.com/tomnomnom/gron@latest
|
||||||
|
;;
|
||||||
|
httprobe)
|
||||||
|
go install github.com/tomnomnom/httprobe@latest
|
||||||
|
;;
|
||||||
|
ffuf)
|
||||||
|
go install github.com/ffuf/ffuf@latest
|
||||||
|
;;
|
||||||
|
gobuster)
|
||||||
|
go install github.com/OJ/gobuster@latest
|
||||||
|
;;
|
||||||
|
amass)
|
||||||
|
go install github.com/OWASP/Amass/v3/...
|
||||||
|
;;
|
||||||
|
cht.sh)
|
||||||
|
install_pkgs rlwrap
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
curl https://cht.sh/:cht.sh > ${DESTDIR}/cht.sh
|
||||||
|
chmod +x ${DESTDIR}/cht.sh
|
||||||
|
add_bin_symlink cht.sh
|
||||||
|
;;
|
||||||
|
age)
|
||||||
|
go install filippo.io/age/cmd/age@latest
|
||||||
|
go install filippo.io/age/cmd/age-keygen@latest
|
||||||
|
;;
|
||||||
|
docker-compose)
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
curl -L \
|
||||||
|
"https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" \
|
||||||
|
-o "${DESTDIR}/docker-compose"
|
||||||
|
chmod +x "${DESTDIR}/docker-compose"
|
||||||
|
add_bin_symlink docker-compose
|
||||||
|
;;
|
||||||
|
tldr)
|
||||||
|
require_pipx
|
||||||
|
pipx install tldr
|
||||||
|
;;
|
||||||
|
blint)
|
||||||
|
require_pipx
|
||||||
|
pipx install blint
|
||||||
|
;;
|
||||||
|
dust)
|
||||||
|
if ! command -v cargo >/dev/null 2>&1 ; then
|
||||||
|
echo "This needs cargo (for rust)!" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cargo install du-dust
|
||||||
|
;;
|
||||||
|
bottom)
|
||||||
|
if ! command -v cargo >/dev/null 2>&1 ; then
|
||||||
|
echo "This needs cargo (for rust)!" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cargo install bottom
|
||||||
|
;;
|
||||||
|
delta)
|
||||||
|
deb_only
|
||||||
|
if ! check_sudo ; then
|
||||||
|
echo "Must be able to run as sudo."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
dpkg_url=$(curl https://api.github.com/repos/dandavison/delta/releases/latest | \
|
||||||
|
jq -r '.assets[] | select(.name|test(".*_amd64.deb")) | select(.name|test(".*musl.*")|not) | .browser_download_url')
|
||||||
|
dpkg_name="/tmp/delta_amd64.deb"
|
||||||
|
download "${dpkg_url}" "${dpkg_name}"
|
||||||
|
sudo dpkg -i "${dpkg_name}"
|
||||||
|
;;
|
||||||
|
ropper)
|
||||||
|
install_pkgs python3-z3
|
||||||
|
pip3 install --user pyvex ropper
|
||||||
|
;;
|
||||||
|
kubeconform)
|
||||||
|
go install github.com/yannh/kubeconform/cmd/kubeconform@latest
|
||||||
|
;;
|
||||||
|
kubectx)
|
||||||
|
git clone https://github.com/ahmetb/kubectx.git "${DESTDIR}"
|
||||||
|
add_bin_symlink kubectx
|
||||||
|
add_bin_symlink kubens
|
||||||
|
COMPDIR="${HOME}/.zshrc.completions"
|
||||||
|
mkdir -p "${COMPDIR}"
|
||||||
|
ln -sf "${DESTDIR}/completion/_kubectx.zsh" "${COMPDIR}"
|
||||||
|
ln -sf "${DESTDIR}/completion/_kubens.zsh" "${COMPDIR}"
|
||||||
|
;;
|
||||||
|
starship)
|
||||||
|
mkdir -p ${DESTDIR}
|
||||||
|
download \
|
||||||
|
"https://github.com/starship/starship/releases/latest/download/starship-x86_64-unknown-linux-musl.tar.gz" \
|
||||||
|
/tmp/starship.tar.gz
|
||||||
|
tar -C ${DESTDIR} -zxf /tmp/starship.tar.gz starship
|
||||||
|
add_bin_symlink starship
|
||||||
|
;;
|
||||||
|
arduino-cli)
|
||||||
|
mkdir -p "${DESTDIR}"
|
||||||
|
download \
|
||||||
|
"https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_64bit.tar.gz" \
|
||||||
|
/tmp/arduino-cli.tar.gz
|
||||||
|
tar -C "${DESTDIR}" -zxf /tmp/arduino-cli.tar.gz arduino-cli
|
||||||
|
add_bin_symlink arduino-cli
|
||||||
|
;;
|
||||||
|
ghidra)
|
||||||
|
zip_url=$(curl https://api.github.com/repos/NationalSecurityAgency/ghidra/releases/latest | \
|
||||||
|
jq -r '.assets[] | select(.name|test(".*.zip")) | .browser_download_url')
|
||||||
|
download "${zip_url}" /tmp/ghidra.zip
|
||||||
|
unzip -d "${DESTDIR}" /tmp/ghidra.zip
|
||||||
|
mv ${DESTDIR}/*/* ${DESTDIR}
|
||||||
|
add_bin_symlink ghidraRun ghidra
|
||||||
|
;;
|
||||||
|
doctl)
|
||||||
|
# TODO: other architectures
|
||||||
|
tar_url=$(curl https://api.github.com/repos/digitalocean/doctl/releases/latest | \
|
||||||
|
jq -r '.assets[] | select(.name|test(".*linux-amd64\\.tar\\.gz")) | .browser_download_url')
|
||||||
|
download "${tar_url}" /tmp/doctl.tar.gz
|
||||||
|
mkdir -p "${DESTDIR}"
|
||||||
|
tar -C "${DESTDIR}" -zxf /tmp/doctl.tar.gz "doctl"
|
||||||
|
add_bin_symlink doctl
|
||||||
|
;;
|
||||||
|
rustup)
|
||||||
|
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \
|
||||||
|
sh -s -- --no-modify-path -y
|
||||||
|
;;
|
||||||
|
igrep)
|
||||||
|
if ! command -v cargo >/dev/null 2>&1 ; then
|
||||||
|
echo "This needs cargo (for rust)!" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
cargo install igrep
|
||||||
|
;;
|
||||||
|
unblob)
|
||||||
|
require_pipx
|
||||||
|
pipx install unblob
|
||||||
|
;;
|
||||||
|
fq)
|
||||||
|
go install github.com/wader/fq@latest
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "Unknown tool: ${TOOL}" >/dev/stderr
|
echo "Unknown tool: ${TOOL}" >/dev/stderr
|
||||||
echo "Options:" >/dev/stderr
|
list_tools
|
||||||
for opt in $(awk 'BEGIN {s=0;FS=")"};/main tool selection/{s=1};/^\s+\w+)$/{if(s==1){print $1}}' $0|sort); do
|
|
||||||
echo -e "\t${opt}" >/dev/stderr
|
|
||||||
done
|
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|||||||
22
bin/nvidia_hold.sh
Executable file
22
bin/nvidia_hold.sh
Executable file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function list_nvidia_installed {
|
||||||
|
dpkg-query -l '*nvidia*' | grep '^[hi]i' | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function hold_or_unhold {
|
||||||
|
apt-mark "${1:-hold}" $(list_nvidia_installed)
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
hold|h)
|
||||||
|
hold_or_unhold hold
|
||||||
|
;;
|
||||||
|
unhold|u)
|
||||||
|
hold_or_unhold unhold
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$0 <hold|unhold>" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
46
bin/pactl_helper
Executable file
46
bin/pactl_helper
Executable file
@@ -0,0 +1,46 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function get_active_sink {
|
||||||
|
pactl list short sinks | grep RUNNING | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_active_source {
|
||||||
|
pactl list short sources | grep RUNNING | awk '{print $2}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_default_sink {
|
||||||
|
pactl info | grep '^Default Sink:' | awk '{print $NF}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_default_source {
|
||||||
|
pactl info | grep '^Default Source:' | awk '{print $NF}'
|
||||||
|
}
|
||||||
|
|
||||||
|
function micmute {
|
||||||
|
MODE=${1:-toggle}
|
||||||
|
pactl set-source-mute $(get_default_source) ${MODE}
|
||||||
|
}
|
||||||
|
|
||||||
|
function mute {
|
||||||
|
MODE=${1:-toggle}
|
||||||
|
pactl set-sink-mute $(get_default_sink) ${MODE}
|
||||||
|
}
|
||||||
|
|
||||||
|
function volume {
|
||||||
|
VOL="${1}"
|
||||||
|
if test -z "${VOL}" ; then
|
||||||
|
echo "Need volume spec!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
pactl set-sink-volume $(get_default_sink) "${VOL}"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "$1" in
|
||||||
|
mute|micmute|volume)
|
||||||
|
$*
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown command!"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
48
bin/qdisc_span.sh
Executable file
48
bin/qdisc_span.sh
Executable file
@@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
ACTION="add"
|
||||||
|
|
||||||
|
if [ "${1}" == "-d" ] ; then
|
||||||
|
ACTION="del"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
|
||||||
|
BRIDGE="${1}"
|
||||||
|
DEST="${2}"
|
||||||
|
|
||||||
|
function setup_span {
|
||||||
|
if tc qdisc show dev "${1}" | grep -q 'qdisc ingress ffff' ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
tc qdisc add dev "${1}" ingress
|
||||||
|
tc filter add dev "${1}" parent ffff: protocol all u32 match u8 0 0 action mirred egress mirror dev "${DEST}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function del_span {
|
||||||
|
tc qdisc del dev "${1}" ingress
|
||||||
|
}
|
||||||
|
|
||||||
|
function handle_iface {
|
||||||
|
case "${ACTION}" in
|
||||||
|
add)
|
||||||
|
setup_span "${1}"
|
||||||
|
;;
|
||||||
|
del)
|
||||||
|
del_span "${1}"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Unknown action!"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_bridge_ifaces {
|
||||||
|
bridge link | grep "master ${1}" | cut -d: -f2 | cut -d@ -f1
|
||||||
|
}
|
||||||
|
|
||||||
|
for iface in $(get_bridge_ifaces "${BRIDGE}") ; do
|
||||||
|
handle_iface "$iface"
|
||||||
|
done
|
||||||
62
bin/screenshot.sh
Executable file
62
bin/screenshot.sh
Executable file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Screenshot tool to try a few different tools
|
||||||
|
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
TOOLS="flameshot scrot"
|
||||||
|
SCREENDIR=${SCREENDIR:-${HOME}/Pictures/Screenshots}
|
||||||
|
SCROT_FORMAT="%F-%T.png"
|
||||||
|
|
||||||
|
function default_screenshot_command {
|
||||||
|
for tool in ${TOOLS} ; do
|
||||||
|
if which "${tool}" >/dev/null 2>&1 ; then
|
||||||
|
echo "${tool}"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
TOOL=${SHOT:-$(default_screenshot_command)}
|
||||||
|
CMD=${1:-region}
|
||||||
|
|
||||||
|
function flameshot_gui_capture {
|
||||||
|
flameshot gui -p "${SCREENDIR}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function flameshot_region_capture {
|
||||||
|
flameshot_gui_capture
|
||||||
|
}
|
||||||
|
|
||||||
|
function flameshot_window_capture {
|
||||||
|
flameshot_gui_capture
|
||||||
|
}
|
||||||
|
|
||||||
|
function flameshot_full_capture {
|
||||||
|
flameshot full -p "${SCREENDIR}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrot_region_capture {
|
||||||
|
scrot -s "${SCREENDIR}/${SCROT_FORMAT}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrot_window_capture {
|
||||||
|
scrot -u "${SCREENDIR}/${SCROT_FORMAT}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function scrot_full_capture {
|
||||||
|
scrot "${SCREENDIR}/${SCROT_FORMAT}"
|
||||||
|
}
|
||||||
|
|
||||||
|
case "${CMD}" in
|
||||||
|
region|window|full)
|
||||||
|
mkdir -p "${SCREENDIR}"
|
||||||
|
${TOOL}_${CMD}_capture
|
||||||
|
exit $?
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Usage: $0 [region|window|full]" >/dev/stderr
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
26
bin/setup/nerdfonts.sh
Executable file
26
bin/setup/nerdfonts.sh
Executable file
@@ -0,0 +1,26 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
VER="v2.2.2"
|
||||||
|
|
||||||
|
FONTS=(
|
||||||
|
https://github.com/ryanoasis/nerd-fonts/releases/download/${VER}/DejaVuSansMono.zip
|
||||||
|
https://github.com/ryanoasis/nerd-fonts/releases/download/${VER}/FiraCode.zip
|
||||||
|
https://github.com/ryanoasis/nerd-fonts/releases/download/${VER}/FiraMono.zip
|
||||||
|
https://github.com/ryanoasis/nerd-fonts/releases/download/${VER}/Hack.zip
|
||||||
|
https://github.com/ryanoasis/nerd-fonts/releases/download/${VER}/Inconsolata.zip
|
||||||
|
https://github.com/ryanoasis/nerd-fonts/releases/download/${VER}/OpenDyslexic.zip
|
||||||
|
)
|
||||||
|
|
||||||
|
FPATH=${HOME}/.fonts/nerdfonts
|
||||||
|
mkdir -p ${FPATH}
|
||||||
|
cd ${FPATH}
|
||||||
|
|
||||||
|
for f in ${FONTS[@]}; do
|
||||||
|
BN=$(basename $f)
|
||||||
|
wget -O ${FPATH}/${BN} ${f}
|
||||||
|
unzip -o -d ${FPATH} ${FPATH}/${BN}
|
||||||
|
done
|
||||||
|
|
||||||
|
fc-cache -v
|
||||||
24
clone.sh
Executable file
24
clone.sh
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -ue
|
||||||
|
|
||||||
|
# Script to clone and install
|
||||||
|
|
||||||
|
# Wrapped in a function to prevent incomplete execution if download is
|
||||||
|
# interrupted
|
||||||
|
function installer_main {
|
||||||
|
if ! command -v git >/dev/null 2>&1 ; then
|
||||||
|
( if [ "$EUID" != 0 ] ; then
|
||||||
|
sudo apt install -y git
|
||||||
|
else
|
||||||
|
apt install -y git
|
||||||
|
fi ) || ( echo 'Failed to install git!' >/dev/stderr; false)
|
||||||
|
fi
|
||||||
|
|
||||||
|
git clone https://github.com/Matir/skel.git ${HOME}/.skel
|
||||||
|
|
||||||
|
${HOME}/.skel/install.sh
|
||||||
|
${HOME}/.skel/install.sh packages minimal
|
||||||
|
}
|
||||||
|
|
||||||
|
installer_main
|
||||||
10
conf/logid.cfg
Normal file
10
conf/logid.cfg
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
devices: ({
|
||||||
|
name: "Wireless Mouse MX Master 3";
|
||||||
|
|
||||||
|
smartshift: {
|
||||||
|
on: true;
|
||||||
|
threshold: 30;
|
||||||
|
};
|
||||||
|
|
||||||
|
dpi: 1500;
|
||||||
|
});
|
||||||
1
dotfiles/Xkbmap
Normal file
1
dotfiles/Xkbmap
Normal file
@@ -0,0 +1 @@
|
|||||||
|
-option ctrl:nocaps -option compose:ralt
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
|
||||||
|
|
||||||
# Cryptsetup alias
|
# Cryptsetup alias
|
||||||
alias luksFormat='cryptsetup luksFormat -s 512 -c aes-xts-plain64 -h sha256 -i 15000'
|
alias luksFormat='cryptsetup luksFormat --type=luks2 --pbkdf-memory=2560000 --pbkdf=argon2id -i 15000 -s 512 -h sha256 -c aes-xts-plain64'
|
||||||
|
|
||||||
# Colors
|
# Colors
|
||||||
if ls --version >/dev/null 2>&1 ; then
|
if ls --version >/dev/null 2>&1 ; then
|
||||||
@@ -37,4 +37,31 @@ alias dircount="for d in * ; do find \$d -type d | wc -l | tr -d '\n' ; echo ' '
|
|||||||
alias drop_caches="echo 3 | sudo /usr/bin/tee /proc/sys/vm/drop_caches"
|
alias drop_caches="echo 3 | sudo /usr/bin/tee /proc/sys/vm/drop_caches"
|
||||||
|
|
||||||
# dump acpi temperature
|
# dump acpi temperature
|
||||||
alias temp='printf "%02.2f\n" "$(cat /sys/class/thermal/thermal_zone0/temp)e-3"'
|
alias gettemp='printf "%02.2f\n" "$(cat /sys/class/thermal/thermal_zone0/temp)e-3"'
|
||||||
|
|
||||||
|
# get git working directory
|
||||||
|
alias gitroot="git rev-parse --show-toplevel"
|
||||||
|
|
||||||
|
# SSH without host key checking
|
||||||
|
alias sshanon="ssh -oUserKnownHostsFile=/dev/null -oStrictHostKeyChecking=no"
|
||||||
|
|
||||||
|
# Straight to ipython
|
||||||
|
alias ipy="ipython3"
|
||||||
|
|
||||||
|
# Skip the header on bc
|
||||||
|
alias bc="command bc -q"
|
||||||
|
|
||||||
|
# Get a decently readable df
|
||||||
|
alias dfh="df -h -x tmpfs -x devtmpfs"
|
||||||
|
|
||||||
|
# Clear the GPG agent
|
||||||
|
alias clear-gpg-agent="echo RELOADAGENT | gpg-connect-agent"
|
||||||
|
|
||||||
|
# Battery details
|
||||||
|
alias bat-details='upower -i $(upower -e | grep battery)'
|
||||||
|
|
||||||
|
# Nvidia refresh rate
|
||||||
|
alias nvidia-refresh-rate='nvidia-settings --display=:0 -q RefreshRate -t'
|
||||||
|
|
||||||
|
# Earthly ssh
|
||||||
|
alias earthly='earthly --ssh-auth-sock ""'
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
# Load env first
|
# Load env first
|
||||||
if [ -f $HOME/.env ] ; then source $HOME/.env ; fi
|
if [ -f $HOME/.shenv ] ; then source $HOME/.shenv ; fi
|
||||||
|
|
||||||
# History settings
|
# History settings
|
||||||
HISTCONTROL=ignoredups:ignorespace
|
HISTCONTROL=ignoredups:ignorespace
|
||||||
|
|||||||
34
dotfiles/config/fish/fish_variables
Normal file
34
dotfiles/config/fish/fish_variables
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
# This file contains fish universal variable definitions.
|
||||||
|
# VERSION: 3.0
|
||||||
|
SETUVAR EDITOR:vim
|
||||||
|
SETUVAR __fish_initialized:3400
|
||||||
|
SETUVAR fish_color_autosuggestion:586e75
|
||||||
|
SETUVAR fish_color_cancel:\x2dr
|
||||||
|
SETUVAR fish_color_command:93a1a1
|
||||||
|
SETUVAR fish_color_comment:586e75
|
||||||
|
SETUVAR fish_color_cwd:green
|
||||||
|
SETUVAR fish_color_cwd_root:red
|
||||||
|
SETUVAR fish_color_end:268bd2
|
||||||
|
SETUVAR fish_color_error:dc322f
|
||||||
|
SETUVAR fish_color_escape:00a6b2
|
||||||
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
|
SETUVAR fish_color_host:normal
|
||||||
|
SETUVAR fish_color_host_remote:yellow
|
||||||
|
SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
|
||||||
|
SETUVAR fish_color_normal:normal
|
||||||
|
SETUVAR fish_color_operator:00a6b2
|
||||||
|
SETUVAR fish_color_param:839496
|
||||||
|
SETUVAR fish_color_quote:657b83
|
||||||
|
SETUVAR fish_color_redirection:6c71c4
|
||||||
|
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dblack
|
||||||
|
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
|
SETUVAR fish_color_status:red
|
||||||
|
SETUVAR fish_color_user:brgreen
|
||||||
|
SETUVAR fish_color_valid_path:\x2d\x2dunderline
|
||||||
|
SETUVAR fish_greeting:Welcome\x20to\x20fish\x2c\x20the\x20friendly\x20interactive\x20shell\x0aType\x20\x60help\x60\x20for\x20instructions\x20on\x20how\x20to\x20use\x20fish
|
||||||
|
SETUVAR fish_key_bindings:fish_default_key_bindings
|
||||||
|
SETUVAR fish_pager_color_completion:B3A06D
|
||||||
|
SETUVAR fish_pager_color_description:B3A06D
|
||||||
|
SETUVAR fish_pager_color_prefix:cyan\x1e\x2d\x2dunderline
|
||||||
|
SETUVAR fish_pager_color_progress:brwhite\x1e\x2d\x2dbackground\x3dcyan
|
||||||
|
SETUVAR fish_pager_color_selected_background:\x2dr
|
||||||
11
dotfiles/config/gh/config.yml
Normal file
11
dotfiles/config/gh/config.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# What protocol to use when performing git operations. Supported values: ssh, https
|
||||||
|
git_protocol: https
|
||||||
|
# What editor gh should run when creating issues, pull requests, etc. If blank, will refer to environment.
|
||||||
|
editor: !!null vim
|
||||||
|
# When to interactively prompt. This is a global config that cannot be overridden by hostname. Supported values: enabled, disabled
|
||||||
|
prompt: enabled
|
||||||
|
# A pager program to send command output to, e.g. "less". Set the value to "cat" to disable the pager.
|
||||||
|
pager: !!null less -R
|
||||||
|
# Aliases allow you to create nicknames for gh commands
|
||||||
|
aliases:
|
||||||
|
co: pr checkout
|
||||||
63
dotfiles/config/htop/htoprc
Normal file
63
dotfiles/config/htop/htoprc
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||||
|
# The parser is also very primitive, and not human-friendly.
|
||||||
|
htop_version=3.2.2
|
||||||
|
config_reader_min_version=3
|
||||||
|
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||||
|
hide_kernel_threads=1
|
||||||
|
hide_userland_threads=1
|
||||||
|
hide_running_in_container=0
|
||||||
|
shadow_other_users=0
|
||||||
|
show_thread_names=0
|
||||||
|
show_program_path=1
|
||||||
|
highlight_base_name=0
|
||||||
|
highlight_deleted_exe=1
|
||||||
|
shadow_distribution_path_prefix=0
|
||||||
|
highlight_megabytes=1
|
||||||
|
highlight_threads=1
|
||||||
|
highlight_changes=0
|
||||||
|
highlight_changes_delay_secs=5
|
||||||
|
find_comm_in_cmdline=1
|
||||||
|
strip_exe_from_cmdline=1
|
||||||
|
show_merged_command=0
|
||||||
|
header_margin=1
|
||||||
|
screen_tabs=0
|
||||||
|
detailed_cpu_time=0
|
||||||
|
cpu_count_from_one=1
|
||||||
|
show_cpu_usage=1
|
||||||
|
show_cpu_frequency=0
|
||||||
|
show_cpu_temperature=0
|
||||||
|
degree_fahrenheit=0
|
||||||
|
update_process_names=0
|
||||||
|
account_guest_in_cpu_meter=0
|
||||||
|
color_scheme=6
|
||||||
|
enable_mouse=1
|
||||||
|
delay=15
|
||||||
|
hide_function_bar=0
|
||||||
|
header_layout=two_50_50
|
||||||
|
column_meters_0=AllCPUs Memory Swap
|
||||||
|
column_meter_modes_0=1 1 1
|
||||||
|
column_meters_1=Tasks LoadAverage Uptime
|
||||||
|
column_meter_modes_1=2 2 2
|
||||||
|
tree_view=0
|
||||||
|
sort_key=46
|
||||||
|
tree_sort_key=0
|
||||||
|
sort_direction=-1
|
||||||
|
tree_sort_direction=1
|
||||||
|
tree_view_always_by_pid=0
|
||||||
|
all_branches_collapsed=0
|
||||||
|
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||||
|
.sort_key=PERCENT_CPU
|
||||||
|
.tree_sort_key=PID
|
||||||
|
.tree_view=0
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=1
|
||||||
|
.all_branches_collapsed=0
|
||||||
|
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
|
||||||
|
.sort_key=IO_RATE
|
||||||
|
.tree_sort_key=PID
|
||||||
|
.tree_view=0
|
||||||
|
.tree_view_always_by_pid=0
|
||||||
|
.sort_direction=-1
|
||||||
|
.tree_sort_direction=1
|
||||||
|
.all_branches_collapsed=0
|
||||||
@@ -87,6 +87,10 @@ bindsym $mod+Shift+8 move container to workspace 8
|
|||||||
bindsym $mod+Shift+9 move container to workspace 9
|
bindsym $mod+Shift+9 move container to workspace 9
|
||||||
bindsym $mod+Shift+0 move container to workspace 10
|
bindsym $mod+Shift+0 move container to workspace 10
|
||||||
|
|
||||||
|
# do some scratchpad
|
||||||
|
bindsym $mod+Shift+minus move scratchpad
|
||||||
|
bindsym $mod+minus scratchpad show
|
||||||
|
|
||||||
# Move workspaces between monitors
|
# Move workspaces between monitors
|
||||||
bindsym $mod+Shift+greater move workspace to output right
|
bindsym $mod+Shift+greater move workspace to output right
|
||||||
bindsym $mod+Shift+less move workspace to output left
|
bindsym $mod+Shift+less move workspace to output left
|
||||||
@@ -135,6 +139,8 @@ bindsym $mod+l exec \
|
|||||||
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
||||||
bindsym $alt+Control+l exec \
|
bindsym $alt+Control+l exec \
|
||||||
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
bash -c "i3lock -c 000000 && (sleep 2 && xset dpms force off) &"
|
||||||
|
# suspend under systemd
|
||||||
|
bindsym $mod+Control+s exec --no-startup-id systemctl suspend
|
||||||
|
|
||||||
# things to start quickly
|
# things to start quickly
|
||||||
bindsym $mod+g exec /usr/bin/google-chrome-beta --password-store=gnome
|
bindsym $mod+g exec /usr/bin/google-chrome-beta --password-store=gnome
|
||||||
@@ -146,39 +152,33 @@ bindsym --whole-window $mod+button3 floating toggle
|
|||||||
|
|
||||||
# media keys
|
# media keys
|
||||||
# Pulse Audio controls
|
# Pulse Audio controls
|
||||||
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume 0 +5%
|
bindsym XF86AudioRaiseVolume exec --no-startup-id ~/bin/pactl_helper volume +5%
|
||||||
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume 0 -5%
|
bindsym XF86AudioLowerVolume exec --no-startup-id ~/bin/pactl_helper volume -5%
|
||||||
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute 0 toggle
|
bindsym XF86AudioMute exec --no-startup-id ~/bin/pactl_helper mute toggle
|
||||||
|
bindsym XF86AudioMicMute exec --no-startup-id ~/bin/pactl_helper micmute toggle
|
||||||
|
bindsym F13 exec --no-startup-id ~/bin/pactl_helper micmute toggle
|
||||||
# Screen brightness controls
|
# Screen brightness controls
|
||||||
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10
|
bindsym XF86MonBrightnessUp exec --no-startup-id xbacklight -inc 10
|
||||||
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10
|
bindsym XF86MonBrightnessDown exec --no-startup-id xbacklight -dec 10
|
||||||
|
|
||||||
# screenshots
|
# screenshots
|
||||||
set $scrotformat %F-%T.png
|
# region/selection
|
||||||
set $screendir ~/Pictures/Screenshots
|
|
||||||
# whole screen
|
|
||||||
bindsym --release Print exec --no-startup-id \
|
bindsym --release Print exec --no-startup-id \
|
||||||
mkdir -p $screendir && \
|
~/bin/screenshot.sh region
|
||||||
/usr/bin/scrot $screendir/$scrotformat
|
# full screen
|
||||||
# current window
|
|
||||||
bindsym --release Shift+Print exec --no-startup-id \
|
bindsym --release Shift+Print exec --no-startup-id \
|
||||||
mkdir -p $screendir && \
|
~/bin/screenshot.sh full
|
||||||
/usr/bin/scrot -u $screendir/$scrotformat
|
# single window
|
||||||
# selection
|
|
||||||
bindsym --release $alt+Sys_Req exec --no-startup-id \
|
bindsym --release $alt+Sys_Req exec --no-startup-id \
|
||||||
mkdir -p $screendir && \
|
~/bin/screenshot.sh window
|
||||||
/usr/bin/scrot -s $screendir/$scrotformat
|
|
||||||
|
|
||||||
# useful utilities
|
# useful utilities
|
||||||
#exec --no-startup-id \
|
|
||||||
# (which xss-lock >/dev/null || /usr/bin/cinnamon-settings-daemon) &
|
|
||||||
exec --no-startup-id gnome-keyring-daemon --start --components=pkcs11,secrets
|
exec --no-startup-id gnome-keyring-daemon --start --components=pkcs11,secrets
|
||||||
# Make GTK fonts look great again
|
|
||||||
#exec --no-startup-id gnome-settings-daemon
|
|
||||||
#exec --no-startup-id (sleep 2; nm-applet) &
|
|
||||||
exec --no-startup-id xset r rate 200 20
|
exec --no-startup-id xset r rate 200 20
|
||||||
#exec --no-startup-id ~/bin/autostart.py
|
#exec --no-startup-id ~/bin/autostart.py
|
||||||
exec --no-startup-id dex --autostart --environment x-cinnamon
|
exec --no-startup-id dex --autostart --environment x-cinnamon
|
||||||
|
# Solaar for mouse
|
||||||
|
exec --no-startup-id sh -c 'command solaar -w hide || true'
|
||||||
|
|
||||||
# customize windows
|
# customize windows
|
||||||
for_window [window_role="pop-up"] floating enable
|
for_window [window_role="pop-up"] floating enable
|
||||||
|
|||||||
4
dotfiles/config/nvim/init.vim
Normal file
4
dotfiles/config/nvim/init.vim
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
" nvim config
|
||||||
|
set runtimepath^=~/.vim runtimepath+=~/.vim/after
|
||||||
|
let &packpath = &runtimepath
|
||||||
|
source ~/.vimrc
|
||||||
19
dotfiles/config/starship.toml
Normal file
19
dotfiles/config/starship.toml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
"$schema" = 'https://starship.rs/config-schema.json'
|
||||||
|
|
||||||
|
[directory]
|
||||||
|
fish_style_pwd_dir_length = 1
|
||||||
|
|
||||||
|
[gcloud]
|
||||||
|
# This is just too noisy
|
||||||
|
disabled = true
|
||||||
|
symbol = "️🇬️ "
|
||||||
|
|
||||||
|
[status]
|
||||||
|
disabled = false
|
||||||
|
symbol = "⛌"
|
||||||
|
|
||||||
|
[username]
|
||||||
|
show_always = true
|
||||||
|
|
||||||
|
[ruby]
|
||||||
|
detect_variables = []
|
||||||
15
dotfiles/config/user-dirs.dirs
Normal file
15
dotfiles/config/user-dirs.dirs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
# This file is written by xdg-user-dirs-update
|
||||||
|
# If you want to change or add directories, just edit the line you're
|
||||||
|
# interested in. All local changes will be retained on the next run
|
||||||
|
# Format is XDG_xxx_DIR="$HOME/yyy", where yyy is a shell-escaped
|
||||||
|
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
|
||||||
|
# absolute path. No other format is supported.
|
||||||
|
#
|
||||||
|
XDG_DESKTOP_DIR="$HOME/Desktop"
|
||||||
|
XDG_DOWNLOAD_DIR="$HOME/Downloads"
|
||||||
|
XDG_TEMPLATES_DIR="$HOME/"
|
||||||
|
XDG_PUBLICSHARE_DIR="$HOME/Shared"
|
||||||
|
XDG_DOCUMENTS_DIR="$HOME/Documents"
|
||||||
|
XDG_MUSIC_DIR="$HOME/Music"
|
||||||
|
XDG_PICTURES_DIR="$HOME/Pictures"
|
||||||
|
XDG_VIDEOS_DIR="$HOME/Videos"
|
||||||
@@ -0,0 +1,195 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfce4-keyboard-shortcuts" version="1.0">
|
||||||
|
<property name="commands" type="empty">
|
||||||
|
<property name="default" type="empty">
|
||||||
|
<property name="<Alt>F1" type="empty"/>
|
||||||
|
<property name="<Alt>F2" type="empty">
|
||||||
|
<property name="startup-notify" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Alt>F3" type="empty">
|
||||||
|
<property name="startup-notify" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Primary><Alt>Delete" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>l" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>t" type="empty"/>
|
||||||
|
<property name="XF86Display" type="empty"/>
|
||||||
|
<property name="<Super>p" type="empty"/>
|
||||||
|
<property name="<Primary>Escape" type="empty"/>
|
||||||
|
<property name="XF86WWW" type="empty"/>
|
||||||
|
<property name="HomePage" type="empty"/>
|
||||||
|
<property name="XF86Mail" type="empty"/>
|
||||||
|
<property name="Print" type="empty"/>
|
||||||
|
<property name="<Alt>Print" type="empty"/>
|
||||||
|
<property name="<Shift>Print" type="empty"/>
|
||||||
|
<property name="<Super>e" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>f" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Escape" type="empty"/>
|
||||||
|
<property name="<Primary><Shift>Escape" type="empty"/>
|
||||||
|
<property name="<Super>r" type="empty">
|
||||||
|
<property name="startup-notify" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Alt><Super>s" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="custom" type="empty">
|
||||||
|
<property name="<Alt>F2" type="string" value="xfce4-appfinder --collapsed">
|
||||||
|
<property name="startup-notify" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Super>r" type="string" value="xfce4-appfinder -c">
|
||||||
|
<property name="startup-notify" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="XF86WWW" type="string" value="exo-open --launch WebBrowser"/>
|
||||||
|
<property name="XF86Mail" type="string" value="exo-open --launch MailReader"/>
|
||||||
|
<property name="<Alt>F3" type="string" value="xfce4-appfinder">
|
||||||
|
<property name="startup-notify" type="bool" value="true"/>
|
||||||
|
</property>
|
||||||
|
<property name="<Primary>Escape" type="string" value="xfdesktop --menu"/>
|
||||||
|
<property name="<Primary><Alt>Delete" type="string" value="xfce4-session-logout"/>
|
||||||
|
<property name="<Primary><Alt>t" type="string" value="exo-open --launch TerminalEmulator"/>
|
||||||
|
<property name="<Primary><Alt>f" type="string" value="thunar"/>
|
||||||
|
<property name="<Primary><Alt>l" type="string" value="xflock4"/>
|
||||||
|
<property name="<Alt>F1" type="string" value="xfce4-popup-applicationsmenu"/>
|
||||||
|
<property name="<Super>p" type="string" value="xfce4-display-settings --minimal"/>
|
||||||
|
<property name="<Primary><Shift>Escape" type="string" value="xfce4-taskmanager"/>
|
||||||
|
<property name="<Super>e" type="string" value="thunar"/>
|
||||||
|
<property name="<Primary><Alt>Escape" type="string" value="xkill"/>
|
||||||
|
<property name="HomePage" type="string" value="exo-open --launch WebBrowser"/>
|
||||||
|
<property name="XF86Display" type="string" value="xfce4-display-settings --minimal"/>
|
||||||
|
<property name="override" type="bool" value="true"/>
|
||||||
|
<property name="<Super>l" type="string" value="xflock4"/>
|
||||||
|
<property name="Print" type="string" value="flameshot gui"/>
|
||||||
|
<property name="<Shift>Print" type="string" value="flameshot full"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="xfwm4" type="empty">
|
||||||
|
<property name="default" type="empty">
|
||||||
|
<property name="<Alt>Insert" type="empty"/>
|
||||||
|
<property name="Escape" type="empty"/>
|
||||||
|
<property name="Left" type="empty"/>
|
||||||
|
<property name="Right" type="empty"/>
|
||||||
|
<property name="Up" type="empty"/>
|
||||||
|
<property name="Down" type="empty"/>
|
||||||
|
<property name="<Alt>Tab" type="empty"/>
|
||||||
|
<property name="<Alt><Shift>Tab" type="empty"/>
|
||||||
|
<property name="<Alt>Delete" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Down" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Left" type="empty"/>
|
||||||
|
<property name="<Shift><Alt>Page_Down" type="empty"/>
|
||||||
|
<property name="<Alt>F4" type="empty"/>
|
||||||
|
<property name="<Alt>F6" type="empty"/>
|
||||||
|
<property name="<Alt>F7" type="empty"/>
|
||||||
|
<property name="<Alt>F8" type="empty"/>
|
||||||
|
<property name="<Alt>F9" type="empty"/>
|
||||||
|
<property name="<Alt>F10" type="empty"/>
|
||||||
|
<property name="<Alt>F11" type="empty"/>
|
||||||
|
<property name="<Alt>F12" type="empty"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Left" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>End" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Home" type="empty"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Right" type="empty"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Up" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_1" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_2" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_3" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_4" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_5" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_6" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_7" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_8" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>KP_9" type="empty"/>
|
||||||
|
<property name="<Alt>space" type="empty"/>
|
||||||
|
<property name="<Shift><Alt>Page_Up" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Right" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>d" type="empty"/>
|
||||||
|
<property name="<Primary><Alt>Up" type="empty"/>
|
||||||
|
<property name="<Super>Tab" type="empty"/>
|
||||||
|
<property name="<Primary>F1" type="empty"/>
|
||||||
|
<property name="<Primary>F2" type="empty"/>
|
||||||
|
<property name="<Primary>F3" type="empty"/>
|
||||||
|
<property name="<Primary>F4" type="empty"/>
|
||||||
|
<property name="<Primary>F5" type="empty"/>
|
||||||
|
<property name="<Primary>F6" type="empty"/>
|
||||||
|
<property name="<Primary>F7" type="empty"/>
|
||||||
|
<property name="<Primary>F8" type="empty"/>
|
||||||
|
<property name="<Primary>F9" type="empty"/>
|
||||||
|
<property name="<Primary>F10" type="empty"/>
|
||||||
|
<property name="<Primary>F11" type="empty"/>
|
||||||
|
<property name="<Primary>F12" type="empty"/>
|
||||||
|
<property name="<Super>KP_Left" type="empty"/>
|
||||||
|
<property name="<Super>KP_Right" type="empty"/>
|
||||||
|
<property name="<Super>KP_Down" type="empty"/>
|
||||||
|
<property name="<Super>KP_Up" type="empty"/>
|
||||||
|
<property name="<Super>KP_Page_Up" type="empty"/>
|
||||||
|
<property name="<Super>KP_Home" type="empty"/>
|
||||||
|
<property name="<Super>KP_End" type="empty"/>
|
||||||
|
<property name="<Super>KP_Next" type="empty"/>
|
||||||
|
</property>
|
||||||
|
<property name="custom" type="empty">
|
||||||
|
<property name="<Primary>F12" type="string" value="workspace_12_key"/>
|
||||||
|
<property name="<Alt>F4" type="string" value="close_window_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_3" type="string" value="move_window_workspace_3_key"/>
|
||||||
|
<property name="<Primary><Alt>Down" type="string" value="down_workspace_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_9" type="string" value="move_window_workspace_9_key"/>
|
||||||
|
<property name="<Primary><Alt>End" type="string" value="move_window_next_workspace_key"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Left" type="string" value="move_window_left_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_4" type="string" value="move_window_workspace_4_key"/>
|
||||||
|
<property name="Right" type="string" value="right_key"/>
|
||||||
|
<property name="Down" type="string" value="down_key"/>
|
||||||
|
<property name="<Shift><Alt>Page_Down" type="string" value="lower_window_key"/>
|
||||||
|
<property name="<Alt>Tab" type="string" value="cycle_windows_key"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Right" type="string" value="move_window_right_key"/>
|
||||||
|
<property name="<Primary><Alt>Right" type="string" value="right_workspace_key"/>
|
||||||
|
<property name="<Alt>F6" type="string" value="stick_window_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_5" type="string" value="move_window_workspace_5_key"/>
|
||||||
|
<property name="<Primary>F11" type="string" value="workspace_11_key"/>
|
||||||
|
<property name="<Alt>F10" type="string" value="maximize_window_key"/>
|
||||||
|
<property name="<Alt>Delete" type="string" value="del_workspace_key"/>
|
||||||
|
<property name="<Super>Tab" type="string" value="switch_window_key"/>
|
||||||
|
<property name="<Primary><Alt>d" type="string" value="show_desktop_key"/>
|
||||||
|
<property name="<Super>KP_Page_Up" type="string" value="tile_up_right_key"/>
|
||||||
|
<property name="<Alt>F7" type="string" value="move_window_key"/>
|
||||||
|
<property name="Up" type="string" value="up_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_6" type="string" value="move_window_workspace_6_key"/>
|
||||||
|
<property name="<Alt>F11" type="string" value="fullscreen_key"/>
|
||||||
|
<property name="<Alt>space" type="string" value="popup_menu_key"/>
|
||||||
|
<property name="<Super>KP_Home" type="string" value="tile_up_left_key"/>
|
||||||
|
<property name="Escape" type="string" value="cancel_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_1" type="string" value="move_window_workspace_1_key"/>
|
||||||
|
<property name="<Shift><Alt>Page_Up" type="string" value="raise_window_key"/>
|
||||||
|
<property name="<Primary><Alt>Home" type="string" value="move_window_prev_workspace_key"/>
|
||||||
|
<property name="<Alt><Shift>Tab" type="string" value="cycle_reverse_windows_key"/>
|
||||||
|
<property name="<Primary><Alt>Left" type="string" value="left_workspace_key"/>
|
||||||
|
<property name="<Alt>F12" type="string" value="above_key"/>
|
||||||
|
<property name="<Primary><Shift><Alt>Up" type="string" value="move_window_up_key"/>
|
||||||
|
<property name="<Alt>F8" type="string" value="resize_window_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_7" type="string" value="move_window_workspace_7_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_2" type="string" value="move_window_workspace_2_key"/>
|
||||||
|
<property name="<Super>KP_End" type="string" value="tile_down_left_key"/>
|
||||||
|
<property name="<Primary><Alt>Up" type="string" value="up_workspace_key"/>
|
||||||
|
<property name="<Alt>F9" type="string" value="hide_window_key"/>
|
||||||
|
<property name="Left" type="string" value="left_key"/>
|
||||||
|
<property name="<Primary><Alt>KP_8" type="string" value="move_window_workspace_8_key"/>
|
||||||
|
<property name="<Alt>Insert" type="string" value="add_workspace_key"/>
|
||||||
|
<property name="override" type="bool" value="true"/>
|
||||||
|
<property name="<Super>1" type="string" value="workspace_1_key"/>
|
||||||
|
<property name="<Super>2" type="string" value="workspace_2_key"/>
|
||||||
|
<property name="<Super>3" type="string" value="workspace_3_key"/>
|
||||||
|
<property name="<Super>4" type="string" value="workspace_4_key"/>
|
||||||
|
<property name="<Super>5" type="string" value="workspace_5_key"/>
|
||||||
|
<property name="<Super>6" type="string" value="workspace_6_key"/>
|
||||||
|
<property name="<Super>7" type="string" value="workspace_7_key"/>
|
||||||
|
<property name="<Super>8" type="string" value="workspace_8_key"/>
|
||||||
|
<property name="<Super>9" type="string" value="workspace_9_key"/>
|
||||||
|
<property name="<Super>0" type="string" value="workspace_10_key"/>
|
||||||
|
<property name="<Super>Left" type="string" value="tile_left_key"/>
|
||||||
|
<property name="<Super>Right" type="string" value="tile_right_key"/>
|
||||||
|
<property name="<Super>Up" type="string" value="tile_down_key"/>
|
||||||
|
<property name="<Super>Down" type="string" value="tile_up_key"/>
|
||||||
|
<property name="<Super>Page_Down" type="string" value="tile_down_right_key"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
<property name="providers" type="array">
|
||||||
|
<value type="string" value="xfwm4"/>
|
||||||
|
<value type="string" value="commands"/>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
93
dotfiles/config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
Normal file
93
dotfiles/config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
|
||||||
|
<channel name="xfwm4" version="1.0">
|
||||||
|
<property name="general" type="empty">
|
||||||
|
<property name="activate_action" type="string" value="switch"/>
|
||||||
|
<property name="borderless_maximize" type="bool" value="true"/>
|
||||||
|
<property name="box_move" type="bool" value="false"/>
|
||||||
|
<property name="box_resize" type="bool" value="false"/>
|
||||||
|
<property name="button_layout" type="string" value="O|SHMC"/>
|
||||||
|
<property name="button_offset" type="int" value="0"/>
|
||||||
|
<property name="button_spacing" type="int" value="0"/>
|
||||||
|
<property name="click_to_focus" type="bool" value="false"/>
|
||||||
|
<property name="cycle_apps_only" type="bool" value="false"/>
|
||||||
|
<property name="cycle_draw_frame" type="bool" value="true"/>
|
||||||
|
<property name="cycle_raise" type="bool" value="false"/>
|
||||||
|
<property name="cycle_hidden" type="bool" value="true"/>
|
||||||
|
<property name="cycle_minimum" type="bool" value="true"/>
|
||||||
|
<property name="cycle_minimized" type="bool" value="false"/>
|
||||||
|
<property name="cycle_preview" type="bool" value="true"/>
|
||||||
|
<property name="cycle_tabwin_mode" type="int" value="0"/>
|
||||||
|
<property name="cycle_workspaces" type="bool" value="false"/>
|
||||||
|
<property name="double_click_action" type="string" value="maximize"/>
|
||||||
|
<property name="double_click_distance" type="int" value="5"/>
|
||||||
|
<property name="double_click_time" type="int" value="250"/>
|
||||||
|
<property name="easy_click" type="string" value="Alt"/>
|
||||||
|
<property name="focus_delay" type="int" value="316"/>
|
||||||
|
<property name="focus_hint" type="bool" value="true"/>
|
||||||
|
<property name="focus_new" type="bool" value="true"/>
|
||||||
|
<property name="frame_opacity" type="int" value="100"/>
|
||||||
|
<property name="frame_border_top" type="int" value="0"/>
|
||||||
|
<property name="full_width_title" type="bool" value="true"/>
|
||||||
|
<property name="horiz_scroll_opacity" type="bool" value="false"/>
|
||||||
|
<property name="inactive_opacity" type="int" value="100"/>
|
||||||
|
<property name="maximized_offset" type="int" value="0"/>
|
||||||
|
<property name="mousewheel_rollup" type="bool" value="true"/>
|
||||||
|
<property name="move_opacity" type="int" value="100"/>
|
||||||
|
<property name="placement_mode" type="string" value="center"/>
|
||||||
|
<property name="placement_ratio" type="int" value="20"/>
|
||||||
|
<property name="popup_opacity" type="int" value="100"/>
|
||||||
|
<property name="prevent_focus_stealing" type="bool" value="false"/>
|
||||||
|
<property name="raise_delay" type="int" value="250"/>
|
||||||
|
<property name="raise_on_click" type="bool" value="true"/>
|
||||||
|
<property name="raise_on_focus" type="bool" value="false"/>
|
||||||
|
<property name="raise_with_any_button" type="bool" value="true"/>
|
||||||
|
<property name="repeat_urgent_blink" type="bool" value="false"/>
|
||||||
|
<property name="resize_opacity" type="int" value="100"/>
|
||||||
|
<property name="scroll_workspaces" type="bool" value="true"/>
|
||||||
|
<property name="shadow_delta_height" type="int" value="0"/>
|
||||||
|
<property name="shadow_delta_width" type="int" value="0"/>
|
||||||
|
<property name="shadow_delta_x" type="int" value="0"/>
|
||||||
|
<property name="shadow_delta_y" type="int" value="-3"/>
|
||||||
|
<property name="shadow_opacity" type="int" value="50"/>
|
||||||
|
<property name="show_app_icon" type="bool" value="false"/>
|
||||||
|
<property name="show_dock_shadow" type="bool" value="true"/>
|
||||||
|
<property name="show_frame_shadow" type="bool" value="true"/>
|
||||||
|
<property name="show_popup_shadow" type="bool" value="false"/>
|
||||||
|
<property name="snap_resist" type="bool" value="false"/>
|
||||||
|
<property name="snap_to_border" type="bool" value="true"/>
|
||||||
|
<property name="snap_to_windows" type="bool" value="false"/>
|
||||||
|
<property name="snap_width" type="int" value="10"/>
|
||||||
|
<property name="vblank_mode" type="string" value="auto"/>
|
||||||
|
<property name="theme" type="string" value="Default"/>
|
||||||
|
<property name="tile_on_move" type="bool" value="true"/>
|
||||||
|
<property name="title_alignment" type="string" value="center"/>
|
||||||
|
<property name="title_font" type="string" value="Sans Bold 9"/>
|
||||||
|
<property name="title_horizontal_offset" type="int" value="0"/>
|
||||||
|
<property name="titleless_maximize" type="bool" value="false"/>
|
||||||
|
<property name="title_shadow_active" type="string" value="false"/>
|
||||||
|
<property name="title_shadow_inactive" type="string" value="false"/>
|
||||||
|
<property name="title_vertical_offset_active" type="int" value="0"/>
|
||||||
|
<property name="title_vertical_offset_inactive" type="int" value="0"/>
|
||||||
|
<property name="toggle_workspaces" type="bool" value="false"/>
|
||||||
|
<property name="unredirect_overlays" type="bool" value="true"/>
|
||||||
|
<property name="urgent_blink" type="bool" value="false"/>
|
||||||
|
<property name="use_compositing" type="bool" value="true"/>
|
||||||
|
<property name="workspace_count" type="int" value="6"/>
|
||||||
|
<property name="wrap_cycle" type="bool" value="true"/>
|
||||||
|
<property name="wrap_layout" type="bool" value="true"/>
|
||||||
|
<property name="wrap_resistance" type="int" value="10"/>
|
||||||
|
<property name="wrap_windows" type="bool" value="false"/>
|
||||||
|
<property name="wrap_workspaces" type="bool" value="false"/>
|
||||||
|
<property name="zoom_desktop" type="bool" value="true"/>
|
||||||
|
<property name="zoom_pointer" type="bool" value="true"/>
|
||||||
|
<property name="workspace_names" type="array">
|
||||||
|
<value type="string" value="Workspace 1"/>
|
||||||
|
<value type="string" value="Workspace 2"/>
|
||||||
|
<value type="string" value="Workspace 3"/>
|
||||||
|
<value type="string" value="Workspace 4"/>
|
||||||
|
<value type="string" value="Workspace 5"/>
|
||||||
|
<value type="string" value="Workspace 6"/>
|
||||||
|
</property>
|
||||||
|
</property>
|
||||||
|
</channel>
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
[user]
|
[user]
|
||||||
name = David Tomaschik
|
name = David Tomaschik
|
||||||
email = david@systemoverlord.com
|
|
||||||
signingKey = 0x5DEA789B
|
signingKey = 0x5DEA789B
|
||||||
|
|
||||||
[core]
|
[core]
|
||||||
excludesfile = ~/.gitignore
|
excludesfile = ~/.gitignore
|
||||||
editor = vim
|
editor = vim
|
||||||
whitespace = trailing-space,space-before-tab
|
whitespace = trailing-space,space-before-tab
|
||||||
|
pager = command -v delta >/dev/null 2>&1 && delta || less -eFiJM~ -j3
|
||||||
|
|
||||||
[color]
|
[color]
|
||||||
diff = auto
|
diff = auto
|
||||||
@@ -14,6 +14,7 @@
|
|||||||
|
|
||||||
[diff]
|
[diff]
|
||||||
tool = vimdiff
|
tool = vimdiff
|
||||||
|
colorMoved = default
|
||||||
|
|
||||||
[difftool]
|
[difftool]
|
||||||
prompt = false
|
prompt = false
|
||||||
@@ -23,9 +24,12 @@
|
|||||||
last = log -1 HEAD
|
last = log -1 HEAD
|
||||||
# Thanks to
|
# Thanks to
|
||||||
# http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
|
# http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/
|
||||||
ls = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
logs = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate
|
||||||
|
lg = log -p
|
||||||
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
ll = log --pretty=format:"%C(yellow)%h%Cred%d\\ %Creset%s%Cblue\\ [%cn]" --decorate --numstat
|
||||||
files = ls-files
|
files = ls-files
|
||||||
|
ls = ls-files
|
||||||
|
lol = log --graph --pretty=format:'%C(yellow)%h%Creset %an: %s - %Creset %C(yellow)%d%Creset %Cblue(%cr)%Creset' --abbrev-commit --date=relative
|
||||||
f = "!git ls-files | grep -i"
|
f = "!git ls-files | grep -i"
|
||||||
logtree = log --graph --oneline --decorate --all
|
logtree = log --graph --oneline --decorate --all
|
||||||
|
|
||||||
@@ -39,7 +43,7 @@
|
|||||||
user = matir
|
user = matir
|
||||||
|
|
||||||
# Site specific config
|
# Site specific config
|
||||||
[url "https://github.com./"]
|
[url "https://github.com/"]
|
||||||
insteadOf = "github:"
|
insteadOf = "github:"
|
||||||
insteadOf = "github://"
|
insteadOf = "github://"
|
||||||
|
|
||||||
@@ -56,10 +60,29 @@
|
|||||||
|
|
||||||
[credential]
|
[credential]
|
||||||
helper = cache --timeout=36000
|
helper = cache --timeout=36000
|
||||||
|
|
||||||
[receive]
|
[receive]
|
||||||
denyCurrentBranch = updateInstead
|
denyCurrentBranch = updateInstead
|
||||||
|
|
||||||
[merge]
|
[merge]
|
||||||
tool = vimdiff
|
tool = vimdiff
|
||||||
conflictstyle = diff3
|
conflictstyle = diff3
|
||||||
|
|
||||||
[mergetool]
|
[mergetool]
|
||||||
prompt = false
|
prompt = false
|
||||||
|
|
||||||
|
[include]
|
||||||
|
path = ~/.gitconfig.local
|
||||||
|
|
||||||
|
[pull]
|
||||||
|
rebase = false
|
||||||
|
|
||||||
|
[init]
|
||||||
|
defaultBranch = main
|
||||||
|
|
||||||
|
[interactive]
|
||||||
|
diffFilter = command -v delta >/dev/null 2>&1 && delta || cat
|
||||||
|
|
||||||
|
[delta]
|
||||||
|
navigate = true
|
||||||
|
line-numbers = true
|
||||||
|
|||||||
@@ -17,6 +17,13 @@ Thumbs.db
|
|||||||
# Try to avoid accidentally checking in private keys
|
# Try to avoid accidentally checking in private keys
|
||||||
id_rsa
|
id_rsa
|
||||||
id_ecdsa
|
id_ecdsa
|
||||||
|
id_ed25519
|
||||||
|
|
||||||
# Kicad backup files
|
# Kicad backup files
|
||||||
*.kicad_pcb-bak
|
*.kicad_pcb-bak
|
||||||
|
|
||||||
|
# Mypy cache path
|
||||||
|
.mypy_cache
|
||||||
|
|
||||||
|
# These files should basically never be committed
|
||||||
|
.env
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use-agent
|
use-agent
|
||||||
# HKPS requires gnupg-curl for gpg1
|
# HKPS requires gnupg-curl for gpg1
|
||||||
keyserver hkps://keys.openpgp.org
|
keyserver hkps://keyserver.ubuntu.com
|
||||||
keyserver-options auto-key-retrieve no-honor-keyserver-url
|
keyserver-options auto-key-retrieve no-honor-keyserver-url
|
||||||
auto-key-locate keyserver
|
auto-key-locate keyserver
|
||||||
personal-digest-preferences SHA256
|
personal-digest-preferences SHA256
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
# Should only use POSIX constructs.
|
# Should only use POSIX constructs.
|
||||||
|
|
||||||
# Always load ENV
|
# Always load ENV
|
||||||
test -f "$HOME/.env" && . "$HOME/.env"
|
test -f "$HOME/.shenv" && . "$HOME/.shenv"
|
||||||
|
|
||||||
# Setup GREP_COLORS
|
# Setup GREP_COLORS
|
||||||
export GREP_COLOR='01;31'
|
export GREP_COLOR='01;31'
|
||||||
@@ -26,4 +26,17 @@ if [ "$(uname)" = "Darwin" ] ; then
|
|||||||
export CLICOLOR
|
export CLICOLOR
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Setup for libvirt
|
||||||
|
if [ -z "${LIBVIRT_DEFAULT_URI}" ] ; then
|
||||||
|
if [ "$(id -u)" = "0" ] || (id -g -n | grep -q "\blibvirt\b") ; then
|
||||||
|
LIBVIRT_DEFAULT_URI="qemu:///system"
|
||||||
|
export LIBVIRT_DEFAULT_URI
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Got rust? (gvim, etc.)
|
||||||
|
if test -d "${HOME}/.cargo/bin" ; then
|
||||||
|
PATH="${PATH}:${HOME}/.cargo/bin"
|
||||||
|
fi
|
||||||
|
|
||||||
test -f "${HOME}/.profile.local" && . "${HOME}/.profile.local"
|
test -f "${HOME}/.profile.local" && . "${HOME}/.profile.local"
|
||||||
|
|||||||
@@ -1,13 +1,45 @@
|
|||||||
tmp
|
.AndroidStudio*
|
||||||
Downloads
|
.Genymobile
|
||||||
|
.Ticket to Ride*
|
||||||
|
.android*
|
||||||
|
.ansible
|
||||||
|
.arduino*
|
||||||
|
.aws
|
||||||
|
.bundle
|
||||||
.cache
|
.cache
|
||||||
.local/share/Trash
|
.cargo
|
||||||
.wine
|
.config/discord
|
||||||
.thumbnails
|
.config/gcloud/logs
|
||||||
|
.config/google-chrome
|
||||||
|
.config/google-chrome-beta
|
||||||
|
.config/unity3d/cache
|
||||||
|
.dropbox-dist
|
||||||
|
.gnupg.bak
|
||||||
|
.gradle
|
||||||
.histfile
|
.histfile
|
||||||
|
.kube/cache
|
||||||
|
.local/lib
|
||||||
|
.local/share/Steam
|
||||||
|
.local/share/Trash
|
||||||
|
.m2
|
||||||
|
.minikube
|
||||||
|
.npm
|
||||||
|
.p2
|
||||||
|
.platformio
|
||||||
|
.rustup
|
||||||
|
.rvm*
|
||||||
|
.sliver
|
||||||
|
.sqlite_history
|
||||||
|
.thumbnails
|
||||||
|
.virtualenvs
|
||||||
|
.wine
|
||||||
|
.xsession-errors*
|
||||||
.zcompdump
|
.zcompdump
|
||||||
.zcompdump*
|
.zcompdump*
|
||||||
.sqlite_history
|
|
||||||
VirtualBox VMs
|
|
||||||
Audits
|
Audits
|
||||||
|
Downloads
|
||||||
SpiderOak Hive
|
SpiderOak Hive
|
||||||
|
Unity
|
||||||
|
VirtualBox VMs
|
||||||
|
tmp
|
||||||
|
tools
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ umask 027
|
|||||||
|
|
||||||
# Paths and preferences
|
# Paths and preferences
|
||||||
export PYTHONPATH="$HOME/.python:$PYTHONPATH"
|
export PYTHONPATH="$HOME/.python:$PYTHONPATH"
|
||||||
export GOPATH="$HOME/Projects/Go:/usr/share/gocode"
|
export GOPATH="$HOME/go:$HOME/Projects/Go:/usr/share/gocode"
|
||||||
export PATH="$HOME/bin:/sbin:/usr/sbin:$PATH:$GOPATH/bin"
|
export PATH="$HOME/bin:$HOME/bin/tools:/sbin:/usr/sbin:$PATH:$HOME/go/bin"
|
||||||
export VISUAL=vim
|
export VISUAL=vim
|
||||||
export EDITOR=vim
|
export EDITOR=vim
|
||||||
export DEBEMAIL="david@systemoverlord.com"
|
export DEBEMAIL="david@systemoverlord.com"
|
||||||
@@ -34,20 +34,20 @@ if [ -z "${BROWSER}" ] ; then
|
|||||||
for t in google-chrome-beta google-chrome firefox ; do
|
for t in google-chrome-beta google-chrome firefox ; do
|
||||||
if BROWSER=$(command -v ${t}); then
|
if BROWSER=$(command -v ${t}); then
|
||||||
export BROWSER
|
export BROWSER
|
||||||
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# For virtualenvwrapper
|
# For virtualenvwrapper
|
||||||
export WORKON_HOME=$HOME/.virtualenvs
|
export WORKON_HOME=$HOME/.virtualenvs
|
||||||
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
|
|
||||||
|
|
||||||
# GPG full key id
|
# GPG full key id
|
||||||
export GPG_ID=7FD58D9A196DCEEEAD671F94F4D7A7915DEA789B
|
export GPG_ID=7FD58D9A196DCEEEAD671F94F4D7A7915DEA789B
|
||||||
|
|
||||||
# Setup locale
|
# Setup locale
|
||||||
if test -x /usr/bin/locale ; then
|
if test -x /usr/bin/locale ; then
|
||||||
for l in en_US.utf8 C.UTF-8 C ; do
|
for l in en_US.utf8 en_US.UTF-8 C.UTF-8 C.utf8 C ; do
|
||||||
if /usr/bin/locale -a | grep -q "${l}" ; then
|
if /usr/bin/locale -a | grep -q "${l}" ; then
|
||||||
export LC_CTYPE=${l}
|
export LC_CTYPE=${l}
|
||||||
export LC_NUMERIC=${l}
|
export LC_NUMERIC=${l}
|
||||||
@@ -78,5 +78,14 @@ else
|
|||||||
fi
|
fi
|
||||||
export LC_COLLATE=C
|
export LC_COLLATE=C
|
||||||
|
|
||||||
|
# Opt out of .net telemetry
|
||||||
|
export DOTNET_CLI_TELEMETRY_OPTOUT=1
|
||||||
|
|
||||||
|
# Suppress lvm warnings
|
||||||
|
export LVM_SUPPRESS_FD_WARNINGS=1
|
||||||
|
|
||||||
|
# Default disable SSH forwarding in EARTHLY
|
||||||
|
export EARTHLY_SSH_AUTH_SOCK=""
|
||||||
|
|
||||||
# shellcheck source=/dev/null
|
# shellcheck source=/dev/null
|
||||||
test -e "$HOME/.localenv" && . "$HOME/.localenv"
|
test -e "$HOME/.localenv" && . "$HOME/.localenv"
|
||||||
@@ -4,6 +4,9 @@ Protocol 2
|
|||||||
# Permit Local Overrides
|
# Permit Local Overrides
|
||||||
Include ~/.ssh/config.d/*
|
Include ~/.ssh/config.d/*
|
||||||
|
|
||||||
|
# SSH known host hashing doesn't buy much with shell history, etc.
|
||||||
|
HashKnownHosts no
|
||||||
|
|
||||||
# Enable canonicalization, unless overridden
|
# Enable canonicalization, unless overridden
|
||||||
CanonicalizeHostname yes
|
CanonicalizeHostname yes
|
||||||
CanonicalizeFallbackLocal yes
|
CanonicalizeFallbackLocal yes
|
||||||
@@ -14,6 +17,10 @@ CanonicalizeMaxDots 0
|
|||||||
Host *.*
|
Host *.*
|
||||||
CheckHostIP yes
|
CheckHostIP yes
|
||||||
|
|
||||||
|
Host *.cloudshell.dev
|
||||||
|
# Cloudshell hostnames are too long for unix sockets
|
||||||
|
ControlMaster no
|
||||||
|
|
||||||
Match canonical all
|
Match canonical all
|
||||||
CheckHostIP no
|
CheckHostIP no
|
||||||
ControlMaster auto
|
ControlMaster auto
|
||||||
@@ -22,7 +29,8 @@ Match canonical all
|
|||||||
ForwardAgent no
|
ForwardAgent no
|
||||||
ForwardX11 no
|
ForwardX11 no
|
||||||
ForwardX11Trusted no
|
ForwardX11Trusted no
|
||||||
ServerAliveInterval 120
|
ServerAliveInterval 30
|
||||||
|
ServerAliveCountMax 3
|
||||||
UpdateHostKeys yes
|
UpdateHostKeys yes
|
||||||
User david
|
User david
|
||||||
VerifyHostKeyDNS yes
|
VerifyHostKeyDNS yes
|
||||||
|
|||||||
7
dotfiles/ssh/config.d/hak5_config
Normal file
7
dotfiles/ssh/config.d/hak5_config
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Host hak5squirrel
|
||||||
|
Hostname 172.16.32.1
|
||||||
|
User root
|
||||||
|
StrictHostKeyChecking no
|
||||||
|
UserKnownHostsFile /dev/null
|
||||||
|
HostKeyAlgorithms +ssh-rsa
|
||||||
|
PubkeyAcceptedAlgorithms +ssh-rsa
|
||||||
@@ -1,7 +1,27 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
REMOTE_LINK="${HOME}/.ssh/remote_agent.sock"
|
# Roughly based on this article:
|
||||||
|
# https://werat.github.io/2017/02/04/tmux-ssh-agent-forwarding.html
|
||||||
|
|
||||||
if test \! -L "${REMOTE_LINK}" -a -n "${SSH_AUTH_SOCK}" ; then
|
REMOTE_LINK="${HOME}/.ssh/ssh_auth_sock"
|
||||||
|
|
||||||
|
if [ "${1:-}" = "force" ] && [ -S "${SSH_AUTH_SOCK}" ] ; then
|
||||||
|
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test \! -S "${REMOTE_LINK}" -a -S "${SSH_AUTH_SOCK}" ; then
|
||||||
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
ln -sf "${SSH_AUTH_SOCK}" "${REMOTE_LINK}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Handle X forwarding, per sshd(8)
|
||||||
|
if read proto cookie && [ -n "$DISPLAY" ]; then
|
||||||
|
if [ `echo $DISPLAY | cut -c1-10` = 'localhost:' ]; then
|
||||||
|
# X11UseLocalhost=yes
|
||||||
|
echo add unix:`echo $DISPLAY |
|
||||||
|
cut -c11-` $proto $cookie
|
||||||
|
else
|
||||||
|
# X11UseLocalhost=no
|
||||||
|
echo add $DISPLAY $proto $cookie
|
||||||
|
fi | xauth -q -
|
||||||
|
fi
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
# Update environment on reconnect
|
# Update environment on reconnect
|
||||||
set -g update-environment "DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
|
set -g update-environment "DISPLAY WINDOWID SSH_ASKPASS SSH_AGENT_PID SSH_CONNECTION"
|
||||||
|
|
||||||
|
# Use symlink socket
|
||||||
|
set-environment -g 'SSH_AUTH_SOCK' ~/.ssh/ssh_auth_sock
|
||||||
|
|
||||||
# Custom binds
|
# Custom binds
|
||||||
bind K confirm kill-server
|
bind K confirm kill-server
|
||||||
bind X confirm kill-window
|
bind X confirm kill-window
|
||||||
@@ -66,3 +69,10 @@ bind C-v run "tmux set-buffer -- \"$(xsel -o -b)\"; tmux paste-buffer"
|
|||||||
|
|
||||||
# Enable logging module, if available
|
# Enable logging module, if available
|
||||||
run-shell "~/.tmux/tmux-logging/logging.tmux || true"
|
run-shell "~/.tmux/tmux-logging/logging.tmux || true"
|
||||||
|
|
||||||
|
# Enable TMUX Plugin Manager
|
||||||
|
# install with:
|
||||||
|
# git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
||||||
|
set -g @plugin 'tmux-plugins/tpm'
|
||||||
|
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||||
|
run-shell "~/.tmux/plugins/tpm/tpm || true"
|
||||||
|
|||||||
Submodule dotfiles/tmux/tmux-logging updated: b085ad423b...4717cbd4c8
Submodule dotfiles/vim/pack/matir/opt/solarized8 updated: 9afbe12f68...7b6399093c
Submodule dotfiles/vim/pack/matir/start/ctrlp deleted from 2e773fd8c7
Submodule dotfiles/vim/pack/matir/start/editorconfig updated: c718cefc51...8f6eba5fd6
Submodule dotfiles/vim/pack/matir/start/fugitive updated: 35f1095f9b...2a53d79248
Submodule dotfiles/vim/pack/matir/start/surround updated: fab8621670...f51a26d371
Submodule dotfiles/vim/pack/matir/start/syntastic deleted from 0336c35c0b
Submodule dotfiles/vim/pack/matir/start/vim-go deleted from 13128e5f30
@@ -23,12 +23,33 @@ set expandtab
|
|||||||
set shiftround
|
set shiftround
|
||||||
set backspace=indent,eol,start
|
set backspace=indent,eol,start
|
||||||
" Shift-tab to go backwards in insert mode
|
" Shift-tab to go backwards in insert mode
|
||||||
imap <S-Tab> <Esc><<A
|
" Does not work with YCM
|
||||||
|
inoremap <S-Tab> <C-d>
|
||||||
|
|
||||||
" Line numbering, ruler
|
" Line numbering, ruler
|
||||||
set number
|
set number
|
||||||
set ruler
|
set ruler
|
||||||
|
|
||||||
|
" Setup viminfo for recording positions, etc.
|
||||||
|
if !has('nvim')
|
||||||
|
set viminfo='10,\"100,:20,%,n~/.viminfo
|
||||||
|
endif
|
||||||
|
" Jump back when editing a file
|
||||||
|
function! ResCur()
|
||||||
|
" Don't jump in git commits since they're generated.
|
||||||
|
if &ft == 'gitcommit'
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
if line("'\"") <= line("$")
|
||||||
|
normal! g`"
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
endfunction
|
||||||
|
augroup resCur
|
||||||
|
autocmd!
|
||||||
|
autocmd BufWinEnter * call ResCur()
|
||||||
|
augroup END
|
||||||
|
|
||||||
" File options
|
" File options
|
||||||
set encoding=utf-8
|
set encoding=utf-8
|
||||||
" Syntax highlighting, look and feel
|
" Syntax highlighting, look and feel
|
||||||
@@ -72,7 +93,6 @@ imap <silent> <F4> <ESC>:set invpaste<CR>:set paste?<CR>
|
|||||||
" Mediocre Hex editing in vim
|
" Mediocre Hex editing in vim
|
||||||
" Source: http://vim.wikia.com/wiki/Improved_hex_editing
|
" Source: http://vim.wikia.com/wiki/Improved_hex_editing
|
||||||
" TODO: move to an include
|
" TODO: move to an include
|
||||||
nnoremap <C-H> :Hexmode<CR>
|
|
||||||
command -bar Hexmode call ToggleHex()
|
command -bar Hexmode call ToggleHex()
|
||||||
function ToggleHex()
|
function ToggleHex()
|
||||||
" hex mode should be considered a read-only operation
|
" hex mode should be considered a read-only operation
|
||||||
@@ -114,17 +134,60 @@ endfunction
|
|||||||
" Options for syntastic
|
" Options for syntastic
|
||||||
let g:syntastic_enable_signs = 1
|
let g:syntastic_enable_signs = 1
|
||||||
let g:syntastic_auto_loc_list = 2
|
let g:syntastic_auto_loc_list = 2
|
||||||
|
let g:syntastic_check_on_wq = 0
|
||||||
let g:syntastic_go_checkers = ['govet', 'errcheck', 'go']
|
let g:syntastic_go_checkers = ['govet', 'errcheck', 'go']
|
||||||
let g:syntastic_python_checkers=['flake8']
|
let g:syntastic_python_checkers=['flake8']
|
||||||
|
" Because XXE
|
||||||
|
let g:syntastic_xml_checkers=['']
|
||||||
|
let g:syntastic_xslt_checkers=['']
|
||||||
|
autocmd BufReadPost *
|
||||||
|
\ if &readonly
|
||||||
|
\| let b:syntastic_mode = 'passive'
|
||||||
|
\| else
|
||||||
|
\| silent! unlet b:syntastic_mode
|
||||||
|
\| endif
|
||||||
|
|
||||||
" Have F5 run the tests and display errors
|
" Have F5 run the tests and display errors
|
||||||
nnoremap <silent> <F5> :SyntasticCheck<CR> :Errors<CR>
|
nnoremap <silent> <F5> :SyntasticCheck<CR> :Errors<CR>
|
||||||
|
|
||||||
" Load vim-ycm if installed on the system level
|
" Load vim-ycm if installed on the system level
|
||||||
if isdirectory("/usr/share/vim-youcompleteme")
|
" Currently only works on debian-based systems...
|
||||||
let g:ycm_autoclose_preview_window_after_insertion=1
|
" It also does not play nicely with virtual envs, so we skip it then
|
||||||
|
if isdirectory("/usr/share/vim-youcompleteme") && empty($VIRTUAL_ENV)
|
||||||
set runtimepath+=/usr/share/vim-youcompleteme
|
set runtimepath+=/usr/share/vim-youcompleteme
|
||||||
endif
|
endif
|
||||||
|
let g:ycm_autoclose_preview_window_after_insertion=1
|
||||||
|
" Add rust settings
|
||||||
|
let g:tmp_rust_path=trim(system("rustc --print sysroot"))
|
||||||
|
if isdirectory(g:tmp_rust_path)
|
||||||
|
let g:ycm_rust_toolchain_root=g:tmp_rust_path
|
||||||
|
endif
|
||||||
|
unlet! g:tmp_rust_path
|
||||||
|
|
||||||
|
" Enable vim-bracketed-paste mode
|
||||||
|
" From
|
||||||
|
" https://github.com/ConradIrwin/vim-bracketed-paste/blob/master/plugin/bracketed-paste.vim
|
||||||
|
if exists("g:loaded_bracketed_paste")
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
let g:loaded_bracketed_paste = 1
|
||||||
|
|
||||||
|
let &t_ti .= "\<Esc>[?2004h"
|
||||||
|
let &t_te = "\e[?2004l" . &t_te
|
||||||
|
|
||||||
|
function! XTermPasteBegin(ret)
|
||||||
|
set pastetoggle=<f29>
|
||||||
|
set paste
|
||||||
|
return a:ret
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
execute "set <f28>=\<Esc>[200~"
|
||||||
|
execute "set <f29>=\<Esc>[201~"
|
||||||
|
map <expr> <f28> XTermPasteBegin("i")
|
||||||
|
imap <expr> <f28> XTermPasteBegin("")
|
||||||
|
vmap <expr> <f28> XTermPasteBegin("c")
|
||||||
|
cmap <f28> <nop>
|
||||||
|
cmap <f29> <nop>
|
||||||
|
|
||||||
" Include a .vimrc.local if it exists
|
" Include a .vimrc.local if it exists
|
||||||
if filereadable(glob("~/.vimrc.local"))
|
if filereadable(glob("~/.vimrc.local"))
|
||||||
@@ -157,3 +220,6 @@ autocmd BufRead,BufNewFile Makefile* set noexpandtab
|
|||||||
" Enable filetype support
|
" Enable filetype support
|
||||||
" Needs to be at end of vimrc
|
" Needs to be at end of vimrc
|
||||||
filetype plugin indent on
|
filetype plugin indent on
|
||||||
|
|
||||||
|
" Disable bell
|
||||||
|
set belloff=all
|
||||||
|
|||||||
@@ -6,7 +6,8 @@ content_disposition = on
|
|||||||
# Recursive download options
|
# Recursive download options
|
||||||
no_parent = on
|
no_parent = on
|
||||||
follow_ftp = on
|
follow_ftp = on
|
||||||
adjust_extension = on
|
# Good for HTML, not for other things
|
||||||
|
adjust_extension = off
|
||||||
robots = off
|
robots = off
|
||||||
|
|
||||||
# Show responses
|
# Show responses
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
setxkbmap -option ctrl:nocaps -option compose:ralt
|
setxkbmap -option ctrl:nocaps -option compose:ralt
|
||||||
test -x /usr/bin/xsettingsd && /usr/bin/xsettingsd &
|
test -x /usr/bin/xsettingsd && /usr/bin/xsettingsd &
|
||||||
test -f "$HOME/.env" && "$HOME/.env"
|
test -f "$HOME/.env" && "$HOME/.env"
|
||||||
|
test -f "$HOME/.shenv" && "$HOME/.shenv"
|
||||||
test -f "$HOME/.profile" && . "$HOME/.profile"
|
test -f "$HOME/.profile" && . "$HOME/.profile"
|
||||||
|
|||||||
@@ -66,7 +66,8 @@ zstyle ':completion::complete:*' use-cache on
|
|||||||
zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
|
zstyle ':completion::complete:*' cache-path "${ZDOTDIR:-$HOME}/.zcompcache"
|
||||||
|
|
||||||
# .profile is universal
|
# .profile is universal
|
||||||
. ~/.profile
|
emulate sh -c '. /etc/profile'
|
||||||
|
emulate sh -c '. ~/.profile'
|
||||||
# Deduplicate the path
|
# Deduplicate the path
|
||||||
typeset -U path
|
typeset -U path
|
||||||
|
|
||||||
@@ -83,36 +84,39 @@ bindkey '^h' backward-delete-char
|
|||||||
# ok, a few emacs convenience bindings
|
# ok, a few emacs convenience bindings
|
||||||
bindkey '^w' backward-kill-word
|
bindkey '^w' backward-kill-word
|
||||||
bindkey '^r' history-incremental-search-backward
|
bindkey '^r' history-incremental-search-backward
|
||||||
|
# delete really deletes
|
||||||
|
bindkey "^[[3~" delete-char
|
||||||
|
|
||||||
# Source extras and aliases if interactive
|
# Source extras and aliases if interactive
|
||||||
if [[ $- == *i* ]] ; then
|
if [[ $- == *i* ]] ; then
|
||||||
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
if [[ -e $HOME/.aliases ]] ; then source $HOME/.aliases ; fi
|
||||||
|
if [[ -e $HOME/.aliases.local ]] ; then source $HOME/.aliases.local ; fi
|
||||||
# zsh-only-ism to avoid error if glob doesn't expand
|
# zsh-only-ism to avoid error if glob doesn't expand
|
||||||
for file in $HOME/.zshrc.d/[a-zA-Z0-9]*.zsh(N) ; do
|
for file in $HOME/.zshrc.d/[a-zA-Z0-9]*.zsh(N) ; do
|
||||||
source "$file"
|
source "$file"
|
||||||
done
|
done
|
||||||
# extra completions, prompt
|
# extra completions, prompt
|
||||||
fpath=(~/.zshrc.completions ~/.zshrc.d/matir_prompt $fpath)
|
fpath=(~/.zshrc.completions ~/.zshrc.d/matir_prompt ~/.zshrc.d/agnoster_prompt $fpath)
|
||||||
# Completion
|
# Completion
|
||||||
zstyle ':compinstall' filename "${HOME}/.zshrc"
|
zstyle ':compinstall' filename "${HOME}/.zshrc"
|
||||||
zstyle ':completion:*' users root ${USER}
|
zstyle ':completion:*' users root ${USER}
|
||||||
# Modules after fpath
|
# Modules after fpath
|
||||||
autoload -Uz compinit && compinit -i
|
autoload -Uz compinit && compinit -i
|
||||||
autoload -Uz promptinit && promptinit
|
autoload -Uz promptinit && promptinit
|
||||||
# Prompt
|
|
||||||
prompt matir
|
|
||||||
# Virtualenvwrapper
|
# Virtualenvwrapper
|
||||||
if test -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ; then
|
if test -f /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh ; then
|
||||||
source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh
|
source /usr/share/virtualenvwrapper/virtualenvwrapper_lazy.sh
|
||||||
|
elif test -f /usr/bin/virtualenvwrapper_lazy.sh ; then
|
||||||
|
source /usr/bin/virtualenvwrapper_lazy.sh
|
||||||
fi
|
fi
|
||||||
# Enable grc if we have it
|
if command ls --version >/dev/null 2>&1 ; then
|
||||||
if ls --version 2>&1 >/dev/null ; then
|
alias ls="$(whence -p ls) --color=auto"
|
||||||
alias ls='ls --color -C'
|
|
||||||
fi
|
fi
|
||||||
[[ -s "/etc/grc.zsh" ]] && source /etc/grc.zsh
|
|
||||||
# Syntax highlighting and substring search
|
# Syntax highlighting and substring search
|
||||||
if test -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ; then
|
if test -f /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ; then
|
||||||
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
|
elif test -f /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh ; then
|
||||||
|
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
|
||||||
fi
|
fi
|
||||||
if test -f ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh ; then
|
if test -f ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh ; then
|
||||||
source ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh
|
source ${HOME}/.zshrc.d/_zsh-history-substring-search.zsh
|
||||||
@@ -121,6 +125,21 @@ if [[ $- == *i* ]] ; then
|
|||||||
bindkey -M vicmd 'k' history-substring-search-up
|
bindkey -M vicmd 'k' history-substring-search-up
|
||||||
bindkey -M vicmd 'j' history-substring-search-down
|
bindkey -M vicmd 'j' history-substring-search-down
|
||||||
fi
|
fi
|
||||||
|
# Suggestions
|
||||||
|
for sugg_path in /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh /usr/share/zsh-autosuggestions/zsh-autosuggestions.zsh ; do
|
||||||
|
if test -f "${sugg_path}"; then
|
||||||
|
# Works well for solarized
|
||||||
|
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE="fg=10"
|
||||||
|
# Strategy -- note that 'completion' is slow AF
|
||||||
|
ZSH_AUTOSUGGEST_STRATEGY=(history)
|
||||||
|
source "${sugg_path}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
unset sugg_path
|
||||||
|
# History
|
||||||
|
alias fullhist="history 1"
|
||||||
|
alias longhist="history -1000"
|
||||||
fi # End interactive-only block
|
fi # End interactive-only block
|
||||||
|
|
||||||
# In case ack is named ack-grep
|
# In case ack is named ack-grep
|
||||||
@@ -128,13 +147,25 @@ if [ -x /usr/bin/ack-grep ] ; then
|
|||||||
alias ack='/usr/bin/ack-grep'
|
alias ack='/usr/bin/ack-grep'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Setup PATH for tools
|
# Got rust?
|
||||||
PATH=${PATH}:${HOME}/bin/tools
|
if test -d ${HOME}/.cargo/bin ; then
|
||||||
|
PATH=${PATH}:${HOME}/.cargo/bin
|
||||||
|
fi
|
||||||
|
|
||||||
# Most is nice, if we have it
|
# Pip packages
|
||||||
if command -v most >/dev/null 2>&1; then
|
if test -d ${HOME}/.local/bin ; then
|
||||||
export PAGER="most"
|
PATH=${PATH}:${HOME}/.local/bin
|
||||||
|
fi
|
||||||
|
|
||||||
|
if test -z "${PAGER}" && command -v less >/dev/null 2>&1; then
|
||||||
|
export PAGER="less"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Load any local settings
|
# Load any local settings
|
||||||
if [ -e $HOME/.zshrc.local ] ; then source $HOME/.zshrc.local ; fi
|
if [ -e $HOME/.zshrc.local ] ; then source $HOME/.zshrc.local ; fi
|
||||||
|
|
||||||
|
# Set prompt based on local settings
|
||||||
|
if test -f "${HOME}/.zprompt" ; then
|
||||||
|
THEME=${THEME:=$(cat "${HOME}/.zprompt")}
|
||||||
|
fi
|
||||||
|
prompt "${THEME:-matir}" >/dev/null 2>&1
|
||||||
|
|||||||
5
dotfiles/zshrc.completions/_gf
Normal file
5
dotfiles/zshrc.completions/_gf
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
#compdef gf
|
||||||
|
|
||||||
|
function _gf {
|
||||||
|
_arguments "1: :($(gf -list))"
|
||||||
|
}
|
||||||
173
dotfiles/zshrc.d/agnoster_prompt/prompt_agnoster_setup
Normal file
173
dotfiles/zshrc.d/agnoster_prompt/prompt_agnoster_setup
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
# vim:ft=zsh ts=2 sw=2 sts=2
|
||||||
|
#
|
||||||
|
# agnoster's Theme - https://gist.github.com/3712874
|
||||||
|
# A Powerline-inspired theme for ZSH
|
||||||
|
#
|
||||||
|
# # README
|
||||||
|
#
|
||||||
|
# In order for this theme to render correctly, you will need a
|
||||||
|
# [Powerline-patched font](https://gist.github.com/1595572).
|
||||||
|
#
|
||||||
|
# In addition, I recommend the
|
||||||
|
# [Solarized theme](https://github.com/altercation/solarized/) and, if you're
|
||||||
|
# using it on Mac OS X, [iTerm 2](http://www.iterm2.com/) over Terminal.app -
|
||||||
|
# it has significantly better color fidelity.
|
||||||
|
#
|
||||||
|
# # Goals
|
||||||
|
#
|
||||||
|
# The aim of this theme is to only show you *relevant* information. Like most
|
||||||
|
# prompts, it will only show git information when in a git working directory.
|
||||||
|
# However, it goes a step further: everything from the current user and
|
||||||
|
# hostname to whether the last call exited with an error to whether background
|
||||||
|
# jobs are running in this shell will all be displayed automatically when
|
||||||
|
# appropriate.
|
||||||
|
|
||||||
|
### Segments of the prompt, default order declaration
|
||||||
|
|
||||||
|
typeset -aHg AGNOSTER_PROMPT_SEGMENTS=(
|
||||||
|
prompt_status
|
||||||
|
prompt_context
|
||||||
|
prompt_virtualenv
|
||||||
|
prompt_dir
|
||||||
|
prompt_git
|
||||||
|
prompt_end
|
||||||
|
)
|
||||||
|
|
||||||
|
### Segment drawing
|
||||||
|
# A few utility functions to make it easy and re-usable to draw segmented prompts
|
||||||
|
|
||||||
|
CURRENT_BG='NONE'
|
||||||
|
if [[ -z "$PRIMARY_FG" ]]; then
|
||||||
|
PRIMARY_FG=black
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Characters
|
||||||
|
SEGMENT_SEPARATOR="\ue0b0"
|
||||||
|
PLUSMINUS="\u00b1"
|
||||||
|
BRANCH="\ue0a0"
|
||||||
|
DETACHED="\u27a6"
|
||||||
|
CROSS="\u2718"
|
||||||
|
LIGHTNING="\u26a1"
|
||||||
|
GEAR="\u2699"
|
||||||
|
|
||||||
|
# Begin a segment
|
||||||
|
# Takes two arguments, background and foreground. Both can be omitted,
|
||||||
|
# rendering default background/foreground.
|
||||||
|
prompt_segment() {
|
||||||
|
local bg fg
|
||||||
|
[[ -n $1 ]] && bg="%K{$1}" || bg="%k"
|
||||||
|
[[ -n $2 ]] && fg="%F{$2}" || fg="%f"
|
||||||
|
if [[ $CURRENT_BG != 'NONE' && $1 != $CURRENT_BG ]]; then
|
||||||
|
print -n "%{$bg%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR%{$fg%}"
|
||||||
|
else
|
||||||
|
print -n "%{$bg%}%{$fg%}"
|
||||||
|
fi
|
||||||
|
CURRENT_BG=$1
|
||||||
|
[[ -n $3 ]] && print -n $3
|
||||||
|
}
|
||||||
|
|
||||||
|
# End the prompt, closing any open segments
|
||||||
|
prompt_end() {
|
||||||
|
if [[ -n $CURRENT_BG ]]; then
|
||||||
|
print -n "%{%k%F{$CURRENT_BG}%}$SEGMENT_SEPARATOR"
|
||||||
|
else
|
||||||
|
print -n "%{%k%}"
|
||||||
|
fi
|
||||||
|
print -n "%{%f%}"
|
||||||
|
CURRENT_BG=''
|
||||||
|
}
|
||||||
|
|
||||||
|
### Prompt components
|
||||||
|
# Each component will draw itself, and hide itself if no information needs to be shown
|
||||||
|
|
||||||
|
# Context: user@hostname (who am I and where am I)
|
||||||
|
prompt_context() {
|
||||||
|
local user=`whoami`
|
||||||
|
|
||||||
|
if [[ "$user" != "$DEFAULT_USER" || -n "$SSH_CONNECTION" ]]; then
|
||||||
|
prompt_segment $PRIMARY_FG default " %(!.%{%F{yellow}%}.)$user@%m "
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Git: branch/detached head, dirty status
|
||||||
|
prompt_git() {
|
||||||
|
local color ref
|
||||||
|
is_dirty() {
|
||||||
|
test -n "$(git status --porcelain --ignore-submodules)"
|
||||||
|
}
|
||||||
|
ref="$vcs_info_msg_0_"
|
||||||
|
if [[ -n "$ref" ]]; then
|
||||||
|
if is_dirty; then
|
||||||
|
color=yellow
|
||||||
|
ref="${ref} $PLUSMINUS"
|
||||||
|
else
|
||||||
|
color=green
|
||||||
|
ref="${ref} "
|
||||||
|
fi
|
||||||
|
if [[ "${ref/.../}" == "$ref" ]]; then
|
||||||
|
ref="$BRANCH $ref"
|
||||||
|
else
|
||||||
|
ref="$DETACHED ${ref/.../}"
|
||||||
|
fi
|
||||||
|
prompt_segment $color $PRIMARY_FG
|
||||||
|
print -n " $ref"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Dir: current working directory
|
||||||
|
prompt_dir() {
|
||||||
|
prompt_segment blue $PRIMARY_FG ' %~ '
|
||||||
|
}
|
||||||
|
|
||||||
|
# Status:
|
||||||
|
# - was there an error
|
||||||
|
# - am I root
|
||||||
|
# - are there background jobs?
|
||||||
|
prompt_status() {
|
||||||
|
local symbols
|
||||||
|
symbols=()
|
||||||
|
[[ $RETVAL -ne 0 ]] && symbols+="%{%F{red}%}$CROSS"
|
||||||
|
[[ $UID -eq 0 ]] && symbols+="%{%F{yellow}%}$LIGHTNING"
|
||||||
|
[[ $(jobs -l | wc -l) -gt 0 ]] && symbols+="%{%F{cyan}%}$GEAR"
|
||||||
|
|
||||||
|
[[ -n "$symbols" ]] && prompt_segment $PRIMARY_FG default " $symbols "
|
||||||
|
}
|
||||||
|
|
||||||
|
# Display current virtual environment
|
||||||
|
prompt_virtualenv() {
|
||||||
|
if [[ -n $VIRTUAL_ENV ]]; then
|
||||||
|
color=cyan
|
||||||
|
prompt_segment $color $PRIMARY_FG
|
||||||
|
print -Pn " $(basename $VIRTUAL_ENV) "
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## Main prompt
|
||||||
|
prompt_agnoster_main() {
|
||||||
|
RETVAL=$?
|
||||||
|
CURRENT_BG='NONE'
|
||||||
|
for prompt_segment in "${AGNOSTER_PROMPT_SEGMENTS[@]}"; do
|
||||||
|
[[ -n $prompt_segment ]] && $prompt_segment
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_agnoster_precmd() {
|
||||||
|
vcs_info
|
||||||
|
PROMPT='%{%f%b%k%}$(prompt_agnoster_main) '
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_agnoster_setup() {
|
||||||
|
autoload -Uz add-zsh-hook
|
||||||
|
autoload -Uz vcs_info
|
||||||
|
|
||||||
|
prompt_opts=(cr subst percent)
|
||||||
|
|
||||||
|
add-zsh-hook precmd prompt_agnoster_precmd
|
||||||
|
|
||||||
|
zstyle ':vcs_info:*' enable git
|
||||||
|
zstyle ':vcs_info:*' check-for-changes false
|
||||||
|
zstyle ':vcs_info:git*' formats '%b'
|
||||||
|
zstyle ':vcs_info:git*' actionformats '%b (%a)'
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_agnoster_setup "$@"
|
||||||
17
dotfiles/zshrc.d/aliases.zsh
Normal file
17
dotfiles/zshrc.d/aliases.zsh
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env zsh
|
||||||
|
|
||||||
|
# On some systems, bat is batcat
|
||||||
|
if ! command -v bat >/dev/null 2>&1 ; then
|
||||||
|
if command -v batcat >/dev/null 2>&1 ; then
|
||||||
|
alias bat=$(command -v batcat)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# FFUF aliases
|
||||||
|
if command -v ffuf >/dev/null 2>&1 ; then
|
||||||
|
if test -d $HOME/tools/seclists ; then
|
||||||
|
alias ffuf-files="ffuf -c -w $HOME/tools/seclists/Discovery/Web-Content/raft-large-files.txt"
|
||||||
|
alias ffuf-dirs="ffuf -c -w $HOME/tools/seclists/Discovery/Web-Content/raft-large-directories.txt"
|
||||||
|
alias ffuf-quick="ffuf -c -w $HOME/tools/seclists/Discovery/Web-Content/quickhits.txt"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
4
dotfiles/zshrc.d/cnf.zsh
Normal file
4
dotfiles/zshrc.d/cnf.zsh
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# TODO: this is horribly unportable. Fix it.
|
||||||
|
if test -r /etc/zsh_command_not_found && test -r /var/lib/command-not-found/commands.db ; then
|
||||||
|
source /etc/zsh_command_not_found
|
||||||
|
fi
|
||||||
9
dotfiles/zshrc.d/dmesg.zsh
Normal file
9
dotfiles/zshrc.d/dmesg.zsh
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
function dmesg {
|
||||||
|
if [ $(id -u) -eq 0 ] ; then
|
||||||
|
command dmesg "$@"
|
||||||
|
elif id | grep -q '(sudo)' ; then
|
||||||
|
sudo dmesg "$@"
|
||||||
|
else
|
||||||
|
command dmesg "$@"
|
||||||
|
fi
|
||||||
|
}
|
||||||
27
dotfiles/zshrc.d/functions.zsh
Normal file
27
dotfiles/zshrc.d/functions.zsh
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
function dumpenv {
|
||||||
|
tr '\0' '\n' < /proc/${1}/environ
|
||||||
|
}
|
||||||
|
|
||||||
|
if test -x "/sbin/starship" ; then
|
||||||
|
_STARSHIP_PATH="/sbin/starship"
|
||||||
|
function starship_prompt {
|
||||||
|
eval $(/sbin/starship init zsh)
|
||||||
|
}
|
||||||
|
elif test -x "${HOME}/tools/starship/starship" ; then
|
||||||
|
_STARSHIP_PATH="${HOME}/tools/starship/starship"
|
||||||
|
function starship_prompt {
|
||||||
|
eval $($HOME/tools/starship/starship init zsh)
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
if test -f ${HOME}/.zprompt ; then
|
||||||
|
if test "$(cat ${HOME}/.zprompt)" = "starship" ; then
|
||||||
|
if test -n "${_STARSHIP_PATH:-}" ; then
|
||||||
|
eval $(${_STARSHIP_PATH} init zsh)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
unset _STARSHIP_PATH
|
||||||
|
|
||||||
|
function hashall {
|
||||||
|
tee >(md5sum) | tee >(sha1sum) | sha256sum
|
||||||
|
}
|
||||||
@@ -2,16 +2,23 @@
|
|||||||
|
|
||||||
GCL=${HOME}/tools/gcloud
|
GCL=${HOME}/tools/gcloud
|
||||||
|
|
||||||
if [ ! -d ${GCL} ] ; then
|
if [ -d "${GCL}" ] ; then
|
||||||
return
|
# Add bin to path
|
||||||
|
export PATH="${PATH}:${GCL}/bin"
|
||||||
|
|
||||||
|
# Load completion
|
||||||
|
source "${GCL}/completion.zsh.inc"
|
||||||
|
elif [ -f /usr/share/google-cloud-sdk/completion.zsh.inc ] ; then
|
||||||
|
source /usr/share/google-cloud-sdk/completion.zsh.inc
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add bin to path
|
|
||||||
export PATH="${PATH}:${GCL}/bin"
|
|
||||||
|
|
||||||
# Load completion
|
|
||||||
source ${GCL}/completion.zsh.inc
|
|
||||||
|
|
||||||
which kubectl 2>/dev/null >&2 && \
|
which kubectl 2>/dev/null >&2 && \
|
||||||
source <(kubectl completion zsh) || \
|
function kubectl() {
|
||||||
|
if ! type __start_kubectl >/dev/null 2>&1; then
|
||||||
|
source <(command kubectl completion zsh)
|
||||||
|
fi
|
||||||
|
|
||||||
|
command kubectl "$@"
|
||||||
|
} || \
|
||||||
true
|
true
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ if ! which gpg-agent >/dev/null 2>&1 ; then
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
if test -f ${HOME}/.no-gpg-agent ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
# Set the default paths to gpg-agent files.
|
# Set the default paths to gpg-agent files.
|
||||||
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
|
_gpg_agent_conf="${GNUPGHOME:-$HOME/.gnupg}/gpg-agent.conf"
|
||||||
_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID"
|
_gpg_agent_env="${TMPDIR:-/tmp}/gpg-agent.env.$UID"
|
||||||
@@ -20,13 +24,19 @@ fi
|
|||||||
# Inform gpg-agent of the current TTY for user prompts.
|
# Inform gpg-agent of the current TTY for user prompts.
|
||||||
export GPG_TTY="$(tty)"
|
export GPG_TTY="$(tty)"
|
||||||
|
|
||||||
# Integrate with the SSH module.
|
# Setup SSH agent support
|
||||||
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
|
if grep '^enable-ssh-support' "$_gpg_agent_conf" &> /dev/null; then
|
||||||
# Load required functions.
|
# Load required functions.
|
||||||
autoload -Uz add-zsh-hook
|
autoload -Uz add-zsh-hook
|
||||||
|
|
||||||
# Override the ssh-agent environment file default path.
|
if test -z "$SSH_AUTH_SOCK" ; then
|
||||||
_ssh_agent_env="$_gpg_agent_env"
|
SSH_AUTH_SOCK="/run/user/$(id -u)/gnupg/S.gpg-agent.ssh"
|
||||||
|
if test -S "$SSH_AUTH_SOCK" ; then
|
||||||
|
export SSH_AUTH_SOCK
|
||||||
|
else
|
||||||
|
unset SSH_AUTH_SOCK
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# Updates the GPG-Agent TTY before every command since SSH does not set it.
|
# Updates the GPG-Agent TTY before every command since SSH does not set it.
|
||||||
function _gpg-agent-update-tty {
|
function _gpg-agent-update-tty {
|
||||||
|
|||||||
@@ -24,3 +24,11 @@ histmode() {
|
|||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
histsearch() {
|
||||||
|
fc -l -m "${1}" 1
|
||||||
|
}
|
||||||
|
|
||||||
|
histbrowse() {
|
||||||
|
fc -l 1
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
if which ipython >/dev/null 2>/dev/null ; then
|
if command -v ipython >/dev/null || command -v ipython3 >/dev/null ; then
|
||||||
export PYTHONSTARTUP="${HOME}/.ipython.py"
|
export PYTHONSTARTUP="${HOME}/.ipython.py"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -80,6 +80,7 @@ function jekyll {
|
|||||||
tr -c -s -- a-z0-9 - | # Replace non-alphanums with dashes
|
tr -c -s -- a-z0-9 - | # Replace non-alphanums with dashes
|
||||||
sed 's/^-*\([^-].*[^-]\)-*$/\1/' # Remove leading and trailing slashes
|
sed 's/^-*\([^-].*[^-]\)-*$/\1/' # Remove leading and trailing slashes
|
||||||
)
|
)
|
||||||
|
TITLE=$(echo ${TITLE} | sed 's/\\/\\\\/g;s/"/\\"/g')
|
||||||
DATE=`date +%Y-%m-%d`
|
DATE=`date +%Y-%m-%d`
|
||||||
|
|
||||||
case "${1:-help}" in
|
case "${1:-help}" in
|
||||||
@@ -141,10 +142,10 @@ function jekyll {
|
|||||||
${EDITOR} "${FILENAME}"
|
${EDITOR} "${FILENAME}"
|
||||||
;;
|
;;
|
||||||
dev)
|
dev)
|
||||||
command jekyll serve -D -I "$@"
|
command bundle exec jekyll serve -D -I "$@"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
command jekyll "$@"
|
command bundle exec jekyll "$@"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|||||||
8
dotfiles/zshrc.d/lesshighlight.zsh
Normal file
8
dotfiles/zshrc.d/lesshighlight.zsh
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
test -f /usr/share/source-highlight/src-hilite-lesspipe.sh && \
|
||||||
|
function srcless {
|
||||||
|
if [ $# -ne 1 ] ; then
|
||||||
|
echo "$0 <what>" > /dev/stderr
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
/usr/share/source-highlight/src-hilite-lesspipe.sh $1 | less -R
|
||||||
|
}
|
||||||
39
dotfiles/zshrc.d/logging.zsh
Normal file
39
dotfiles/zshrc.d/logging.zsh
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
LOGGER_ENV=""
|
||||||
|
LOGGER_DIR="${LOGGER_DIR:-${HOME}/.zlogs}"
|
||||||
|
|
||||||
|
function _logger_now {
|
||||||
|
print -P "%D{%Y%m%d-%H%M%S}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function logenv {
|
||||||
|
LOGGER_ENV="${1:-}"
|
||||||
|
if test -z "${LOGGER_ENV}" ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
mkdir -p "${LOGGER_DIR}/${LOGGER_ENV}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Executed on prompt
|
||||||
|
function _logger_precmd {
|
||||||
|
_RV="$?"
|
||||||
|
if test -z "${LOGGER_ENV}" ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
_LOGGER_STOP="$(_logger_now)"
|
||||||
|
_LOGGER_DATE="$(print -P '%D{%Y%m%d}')"
|
||||||
|
echo "$_LOGGER_START $_LOGGER_STOP $$ $_RV $_LOGGER_CMD" >>| \
|
||||||
|
"${LOGGER_DIR}/${LOGGER_ENV}/${_LOGGER_DATE}.log"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
# Executed on command entry
|
||||||
|
function _logger_preexec {
|
||||||
|
_LOGGER_CMD="${2}"
|
||||||
|
_LOGGER_START="$(_logger_now)"
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
typeset -a precmd_functions
|
||||||
|
precmd_functions+=_logger_precmd
|
||||||
|
typeset -a preexec_functions
|
||||||
|
preexec_functions+=_logger_preexec
|
||||||
@@ -34,6 +34,9 @@ function prompt_matir_setup {
|
|||||||
RPROMPT+='%? '
|
RPROMPT+='%? '
|
||||||
RPROMPT+='%{$reset_color%})'
|
RPROMPT+='%{$reset_color%})'
|
||||||
RPROMPT+='${PROMPT_VIMODE}'
|
RPROMPT+='${PROMPT_VIMODE}'
|
||||||
|
|
||||||
|
# Disable virtualenv's own python info
|
||||||
|
VIRTUAL_ENV_DISABLE_PROMPT="yes"
|
||||||
}
|
}
|
||||||
|
|
||||||
function zle-keymap-select {
|
function zle-keymap-select {
|
||||||
@@ -46,7 +49,7 @@ zle -N zle-keymap-select
|
|||||||
zle -N zle-line-init zle-keymap-select
|
zle -N zle-line-init zle-keymap-select
|
||||||
|
|
||||||
function prompt_matir_precmd {
|
function prompt_matir_precmd {
|
||||||
vcs_info
|
vcs_info 2>/dev/null
|
||||||
if [ $VIRTUAL_ENV ] ; then
|
if [ $VIRTUAL_ENV ] ; then
|
||||||
VIRTUAL_ENV_SHORT=" (py:$(basename $VIRTUAL_ENV))"
|
VIRTUAL_ENV_SHORT=" (py:$(basename $VIRTUAL_ENV))"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ prune-broken-symlinks() {
|
|||||||
ASK=1
|
ASK=1
|
||||||
fi
|
fi
|
||||||
DIR=${1:-.}
|
DIR=${1:-.}
|
||||||
FINDCMD=(find ${DIR} -type l -xtype l)
|
FINDCMD=(find -L ${DIR} -xdev -type l)
|
||||||
if (($ASK)) ; then
|
if (($ASK)) ; then
|
||||||
local FILES
|
local FILES
|
||||||
FILES=`${FINDCMD} -print`
|
FILES=`${FINDCMD} -print`
|
||||||
|
|||||||
@@ -1,14 +1 @@
|
|||||||
# Enable RVM if available
|
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
|
||||||
if [[ -s ${HOME}/.rvm/scripts/rvm ]] ; then
|
|
||||||
source ${HOME}/.rvm/scripts/rvm
|
|
||||||
else
|
|
||||||
function install_rvm {
|
|
||||||
export rvm_ignore_dotfiles=yes
|
|
||||||
pushd `mktemp -d`
|
|
||||||
curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer
|
|
||||||
curl -O https://raw.githubusercontent.com/rvm/rvm/master/binscripts/rvm-installer.asc
|
|
||||||
gpg --verify rvm-installer.asc && \
|
|
||||||
bash rvm-installer stable
|
|
||||||
popd
|
|
||||||
}
|
|
||||||
fi
|
|
||||||
|
|||||||
43
dotfiles/zshrc.d/skelify.zsh
Normal file
43
dotfiles/zshrc.d/skelify.zsh
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/zsh
|
||||||
|
#
|
||||||
|
# Skelify -- move a file to my .skel and setup symlinks
|
||||||
|
|
||||||
|
function skelify {
|
||||||
|
local target
|
||||||
|
local whichdir
|
||||||
|
local relhome
|
||||||
|
local fname
|
||||||
|
local fulltarget
|
||||||
|
for target in $~@; do
|
||||||
|
if test -d ${target} ; then
|
||||||
|
skelify ${target}/* || return 1
|
||||||
|
elif test -f ${target} ; then
|
||||||
|
if ! whichdir=$(cd $(dirname $target) && pwd); then
|
||||||
|
echo Could not find directory for $target >/dev/stderr
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fname=$(basename ${target})
|
||||||
|
relhome=${whichdir#${HOME}/}
|
||||||
|
fulltarget="${whichdir}/${fname}"
|
||||||
|
if [[ ${relhome} == ${whichdir} ]] ; then
|
||||||
|
echo ${whichdir} is not in home >/dev/stderr
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if [[ ${relhome:0:1} == "." ]] ; then
|
||||||
|
relhome=${relhome:1}
|
||||||
|
elif [[ ${fname:0:1} == "." ]] ; then
|
||||||
|
fname=${fname:1}
|
||||||
|
else
|
||||||
|
echo skelify only supports dotfiles >/dev/stderr
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
echo ${target}
|
||||||
|
mkdir -p ${HOME}/.skel/${relhome}
|
||||||
|
mv ${target} ${HOME}/.skel/${relhome}/${fname}
|
||||||
|
ln -s ${fulltarget} ${HOME}/.skel/${relhome}/${fname}
|
||||||
|
else
|
||||||
|
echo ${target} is not a directory or file. >/dev/stderr
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
@@ -10,8 +10,8 @@ zstyle ':completion:*:(ssh|scp):*:hosts-domain' ignored-patterns '<->.<->.<->.<-
|
|||||||
zstyle ':completion:*:(ssh|scp):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
|
zstyle ':completion:*:(ssh|scp):*:hosts-ipaddr' ignored-patterns '^<->.<->.<->.<->' '127.0.0.<->'
|
||||||
zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns adm bin daemon halt lp named shutdown sync
|
zstyle ':completion:*:(ssh|scp):*:users' ignored-patterns adm bin daemon halt lp named shutdown sync
|
||||||
zstyle -e ':completion:*:(ssh|scp):*' hosts 'reply=(
|
zstyle -e ':completion:*:(ssh|scp):*' hosts 'reply=(
|
||||||
${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) \
|
${=${${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) \
|
||||||
/dev/null)"}%%[# ]*}//,/ }
|
/dev/null)"}%%[# ]*}##\|*}//,/ }
|
||||||
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
|
${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*}
|
||||||
${=${${${${(@M)${(f)"$(<~/.ssh/config)"}:#Host *}#Host }:#*\**}:#*\?*}}
|
${=${${${${(@M)${(f)"$(<~/.ssh/config)"}:#Host *}#Host }:#*\**}:#*\?*}}
|
||||||
)'
|
)'
|
||||||
|
|||||||
3
dotfiles/zshrc.d/usage.zsh
Normal file
3
dotfiles/zshrc.d/usage.zsh
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
function duh {
|
||||||
|
du -sk "$@" | sort -n | while read size fname; do for unit in K M G T P E Z Y; do if [ $size -lt 1024 ]; then echo -e "${size}${unit}\t${fname}"; break; fi; size=$((size/1024)); done; done
|
||||||
|
}
|
||||||
7
dotfiles/zshrc.d/vmstat.zsh
Normal file
7
dotfiles/zshrc.d/vmstat.zsh
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
function vmstat {
|
||||||
|
local _extra_args
|
||||||
|
if [ "$(tput cols)" -gt 80 ] ; then
|
||||||
|
_extra_args="-w"
|
||||||
|
fi
|
||||||
|
command vmstat ${_extra_args} "$@"
|
||||||
|
}
|
||||||
249
install.sh
249
install.sh
@@ -1,9 +1,14 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# shellcheck disable=SC2155,SC2223
|
||||||
|
|
||||||
set -o nounset
|
set -o nounset
|
||||||
set -o errexit
|
set -o errexit
|
||||||
set -o shwordsplit 2>/dev/null || true # Make zsh behave like bash
|
set -o shwordsplit 2>/dev/null || true # Make zsh behave like bash
|
||||||
|
|
||||||
|
USER=${USER:-$(id -un)}
|
||||||
|
HOME=${HOME:-$(cd ~ && pwd)}
|
||||||
|
|
||||||
case $(uname) in
|
case $(uname) in
|
||||||
Linux)
|
Linux)
|
||||||
FINDTYPE="-xtype"
|
FINDTYPE="-xtype"
|
||||||
@@ -18,7 +23,7 @@ case $(uname) in
|
|||||||
esac
|
esac
|
||||||
|
|
||||||
is_comment() {
|
is_comment() {
|
||||||
if [ $(echo "${1}" | cut -c1-1) = '#' ] ; then
|
if [ "$(echo "${1}" | cut -c1-1)" = '#' ] ; then
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
false
|
false
|
||||||
@@ -26,17 +31,17 @@ is_comment() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
prerequisites() {
|
prerequisites() {
|
||||||
if which zsh > /dev/null 2>&1 ; then
|
if command -v zsh > /dev/null 2>&1 ; then
|
||||||
case $- in
|
case $- in
|
||||||
*i*)
|
*i*)
|
||||||
case `getent passwd $USER | cut -d: -f7` in
|
case "$(getent passwd "${USER}" | cut -d: -f7)" in
|
||||||
*/zsh)
|
*/zsh)
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
if [ `id` -ne 0 ] ; then
|
if [ "$(id)" -ne 0 ] ; then
|
||||||
echo 'Enter password to change shell.' >&2
|
echo 'Enter password to change shell.' >&2
|
||||||
fi
|
fi
|
||||||
chsh -s `which zsh`
|
chsh -s "$(command -v zsh)"
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
@@ -51,9 +56,10 @@ install_dotfile_dir() {
|
|||||||
local dotfile
|
local dotfile
|
||||||
local submodule_prune="$(git -C "${BASEDIR}" submodule status -- "${SRCDIR}" 2>/dev/null | \
|
local submodule_prune="$(git -C "${BASEDIR}" submodule status -- "${SRCDIR}" 2>/dev/null | \
|
||||||
awk '{print $2}' | \
|
awk '{print $2}' | \
|
||||||
while read submod ; do
|
while read -r submod ; do
|
||||||
echo -n " -o -path ${BASEDIR}/${submod}"
|
echo -n " -o -path ${BASEDIR}/${submod}"
|
||||||
done)"
|
done)"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
find "${SRCDIR}" \( -name .git -o \
|
find "${SRCDIR}" \( -name .git -o \
|
||||||
-path "${SRCDIR}/private_dotfiles" -o \
|
-path "${SRCDIR}/private_dotfiles" -o \
|
||||||
-name install.sh -o \
|
-name install.sh -o \
|
||||||
@@ -61,17 +67,17 @@ install_dotfile_dir() {
|
|||||||
-name .gitignore \
|
-name .gitignore \
|
||||||
${submodule_prune} \) \
|
${submodule_prune} \) \
|
||||||
-prune -o ${FINDTYPE} f -print | \
|
-prune -o ${FINDTYPE} f -print | \
|
||||||
while read dotfile ; do
|
while read -r dotfile ; do
|
||||||
local TARGET="${HOME}/.${dotfile#${SRCDIR}/}"
|
local TARGET="${HOME}/.${dotfile#"${SRCDIR}"/}"
|
||||||
mkdir -p $(dirname "${TARGET}")
|
mkdir -p "$(dirname "${TARGET}")"
|
||||||
ln -s -f "${dotfile}" "${TARGET}"
|
ln -s -f "${dotfile}" "${TARGET}"
|
||||||
done
|
done
|
||||||
git submodule status -- "${SRCDIR}" 2>/dev/null | \
|
git -C "${BASEDIR}" submodule status -- "${SRCDIR}" 2>/dev/null | \
|
||||||
awk '{print $2}' | \
|
awk '{print $2}' | \
|
||||||
while read submodule ; do
|
while read -r submodule ; do
|
||||||
local FULLNAME="${BASEDIR}/${submodule}"
|
local FULLNAME="${BASEDIR}/${submodule}"
|
||||||
local TARGET="${HOME}/.${FULLNAME#${SRCDIR}/}"
|
local TARGET="${HOME}/.${FULLNAME#"${SRCDIR}"/}"
|
||||||
mkdir -p $(dirname "${TARGET}")
|
mkdir -p "$(dirname "${TARGET}")"
|
||||||
if test -L "${TARGET}" ; then
|
if test -L "${TARGET}" ; then
|
||||||
if [ "$(readlink "${TARGET}")" != "${FULLNAME}" ] ; then
|
if [ "$(readlink "${TARGET}")" != "${FULLNAME}" ] ; then
|
||||||
echo "${TARGET} points to $(readlink "${TARGET}") not ${FULLNAME}!" >/dev/stderr
|
echo "${TARGET} points to $(readlink "${TARGET}") not ${FULLNAME}!" >/dev/stderr
|
||||||
@@ -89,39 +95,39 @@ install_basic_dir() {
|
|||||||
local DESTDIR="${2}"
|
local DESTDIR="${2}"
|
||||||
local file
|
local file
|
||||||
find "${SRCDIR}" ${FINDTYPE} f -print | \
|
find "${SRCDIR}" ${FINDTYPE} f -print | \
|
||||||
while read file ; do
|
while read -r file ; do
|
||||||
local TARGET="${2}/${file#${SRCDIR}/}"
|
local TARGET="${2}/${file#"${SRCDIR}"/}"
|
||||||
mkdir -p `dirname "${TARGET}"`
|
mkdir -p "$(dirname "${TARGET}")"
|
||||||
ln -s -f "${file}" "${TARGET}"
|
ln -s -f "${file}" "${TARGET}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_git() {
|
install_git() {
|
||||||
# Install or update a git repository
|
# Install or update a git repository
|
||||||
if ! which git > /dev/null ; then
|
if ! command -v git > /dev/null 2>&1 ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
local REPO="${*: -2:1}"
|
local REPO="${*: -2:1}"
|
||||||
local DESTDIR="${*: -1:1}"
|
local DESTDIR="${*: -1:1}"
|
||||||
set -- ${@:1:$(($#-2))}
|
set -- "${@:1:$(($#-2))}"
|
||||||
if [ -d ${DESTDIR}/.git ] ; then
|
if [ -d "${DESTDIR}/.git" ] ; then
|
||||||
( cd ${DESTDIR} ; git pull -q )
|
( cd "${DESTDIR}" ; git pull -q )
|
||||||
else
|
else
|
||||||
if [ ${MINIMAL} -eq 1 ] ; then
|
if [ "${MINIMAL}" -eq 1 ] ; then
|
||||||
git clone --depth 1 $* ${REPO} ${DESTDIR}
|
git clone --depth 1 "$@" "${REPO}" "${DESTDIR}"
|
||||||
else
|
else
|
||||||
git clone $* ${REPO} ${DESTDIR}
|
git clone "$@" "${REPO}" "${DESTDIR}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
add_bin_symlink() {
|
add_bin_symlink() {
|
||||||
local LINKNAME=${HOME}/bin/${2:-`basename $1`}
|
local LINKNAME="${HOME}/bin/${2:-$(basename "$1")}"
|
||||||
if [ -e ${LINKNAME} -a ! -h ${LINKNAME} ] ; then
|
if [ -e "${LINKNAME}" ] && ! [ -h "${LINKNAME}" ] ; then
|
||||||
echo "Refusing to overwrite ${LINKNAME}" >&2
|
echo "Refusing to overwrite ${LINKNAME}" >&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
ln -sf ${1} ${LINKNAME}
|
ln -sf "${1}" "${LINKNAME}"
|
||||||
}
|
}
|
||||||
|
|
||||||
postinstall() {
|
postinstall() {
|
||||||
@@ -131,24 +137,24 @@ postinstall() {
|
|||||||
ssh_key_already_installed() {
|
ssh_key_already_installed() {
|
||||||
# Return 1 if the key isn't already installed, 0 if it is
|
# Return 1 if the key isn't already installed, 0 if it is
|
||||||
local AK="${HOME}/.ssh/authorized_keys"
|
local AK="${HOME}/.ssh/authorized_keys"
|
||||||
if [ ! -f $AK ] ; then
|
if [ ! -f "$AK" ] ; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
local KEYFP=`ssh-keygen -l -f $1 2>/dev/null | awk '{print $2}'`
|
local KEYFP="$(ssh-keygen -l -f "$1" 2>/dev/null | awk '{print $2}')"
|
||||||
local TMPF=`mktemp`
|
local TMPF="$(mktemp)"
|
||||||
local key
|
local key
|
||||||
while read key ; do
|
while read -r key ; do
|
||||||
if is_comment "${key}" ; then
|
if is_comment "${key}" ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
echo "$key" > $TMPF
|
echo "$key" > "$TMPF"
|
||||||
local EFP=`ssh-keygen -l -f ${TMPF} 2>/dev/null | awk '{print $2}'`
|
local EFP="$(ssh-keygen -l -f "${TMPF}" 2>/dev/null | awk '{print $2}')"
|
||||||
if [ "$EFP" = "$KEYFP" ] ; then
|
if [ "$EFP" = "$KEYFP" ] ; then
|
||||||
rm $TMPF 2>/dev/null
|
rm "$TMPF" 2>/dev/null
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
done < ${AK}
|
done < "${AK}"
|
||||||
rm $TMPF 2>/dev/null
|
rm "$TMPF" 2>/dev/null
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -158,30 +164,30 @@ install_ssh_keys() {
|
|||||||
local AK="${HOME}/.ssh/authorized_keys"
|
local AK="${HOME}/.ssh/authorized_keys"
|
||||||
local key
|
local key
|
||||||
local keydir
|
local keydir
|
||||||
if test ${TRUST_ALL_KEYS} = 1 ; then
|
if test "${TRUST_ALL_KEYS}" = 1 ; then
|
||||||
keydir=${BASEDIR}/keys/ssh
|
keydir="${BASEDIR}/keys/ssh"
|
||||||
else
|
else
|
||||||
keydir=${BASEDIR}/keys/ssh/trusted
|
keydir="${BASEDIR}/keys/ssh/trusted"
|
||||||
fi
|
fi
|
||||||
for key in ${keydir}/* ; do
|
for key in "${keydir}"/* ; do
|
||||||
if [ ! -f "${key}" ] ; then
|
if [ ! -f "${key}" ] ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if ssh_key_already_installed "${key}" ; then
|
if ssh_key_already_installed "${key}" ; then
|
||||||
verbose "Key `basename ${key}` already installed..."
|
verbose "Key $(basename "${key}") already installed..."
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
echo "# `basename ${key}` added from skel on `date +%Y-%m-%d`" >> ${AK}
|
echo "# $(basename "${key}") added from skel on $(date +%Y-%m-%d)" >> "${AK}"
|
||||||
cat ${key} >> ${AK}
|
cat "${key}" >> "${AK}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
install_gpg_keys() {
|
install_gpg_keys() {
|
||||||
which gpg >/dev/null 2>&1 || \
|
command -v gpg >/dev/null 2>&1 || \
|
||||||
return 0
|
return 0
|
||||||
local key
|
local key
|
||||||
for key in ${BASEDIR}/keys/gpg/* ; do
|
for key in "${BASEDIR}"/keys/gpg/* ; do
|
||||||
gpg --import < ${key} >/dev/null
|
gpg --import < "${key}" >/dev/null 2>&1
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -190,13 +196,14 @@ install_known_hosts() {
|
|||||||
if [ ! -f "${BASEDIR}/keys/known_hosts" ] ; then
|
if [ ! -f "${BASEDIR}/keys/known_hosts" ] ; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
mkdir -p ${HOME}/.ssh
|
mkdir -p "${HOME}/.ssh"
|
||||||
if [ -f "${HOME}/.ssh/known_hosts" ] ; then
|
if [ -f "${HOME}/.ssh/known_hosts" ] ; then
|
||||||
local tmpf=`mktemp`
|
local tmpf="$(mktemp)"
|
||||||
cat ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts | sort -u > $tmpf
|
cat "${BASEDIR}"/keys/known_hosts "${HOME}"/.ssh/known_hosts \
|
||||||
mv $tmpf ${HOME}/.ssh/known_hosts
|
| sort -u > "$tmpf"
|
||||||
|
mv "$tmpf" "${HOME}"/.ssh/known_hosts
|
||||||
else
|
else
|
||||||
cp ${BASEDIR}/keys/known_hosts ${HOME}/.ssh/known_hosts
|
cp "${BASEDIR}"/keys/known_hosts "${HOME}"/.ssh/known_hosts
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -212,10 +219,10 @@ is_deb_system() {
|
|||||||
|
|
||||||
run_as_root() {
|
run_as_root() {
|
||||||
# Attempt to run as root
|
# Attempt to run as root
|
||||||
if [ ${USER} = "root" ] ; then
|
if [ "${USER}" = "root" ] ; then
|
||||||
"$@"
|
"$@"
|
||||||
return $?
|
return $?
|
||||||
elif test -x $(which sudo 2>/dev/null) ; then
|
elif test -x "$(command -v sudo 2>/dev/null)" ; then
|
||||||
verbose "Using sudo to run ${1}..."
|
verbose "Using sudo to run ${1}..."
|
||||||
sudo "$@"
|
sudo "$@"
|
||||||
return $?
|
return $?
|
||||||
@@ -227,24 +234,25 @@ install_pkg_set() {
|
|||||||
local pkg_file=${BASEDIR}/${1}
|
local pkg_file=${BASEDIR}/${1}
|
||||||
local pkg_list=""
|
local pkg_list=""
|
||||||
if [ ! -f "${pkg_file}" ] ; then
|
if [ ! -f "${pkg_file}" ] ; then
|
||||||
echo "Package set $(basename ${pkg_file}) does not exist." 1>&2
|
echo "Package set $(basename "${pkg_file}") does not exist." 1>&2
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
while read line ; do
|
while read -r line ; do
|
||||||
if is_comment "${line}" ; then
|
if is_comment "${line}" ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if [ -z "${line}" ] ; then
|
if [ -z "${line}" ] ; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
if [ "$(apt-cache -q show ${line} 2>/dev/null)" != "" ] ; then
|
if [ "$(apt-cache -q show "${line}" 2>/dev/null)" != "" ] ; then
|
||||||
pkg_list="${pkg_list} ${line}"
|
pkg_list="${pkg_list} ${line}"
|
||||||
else
|
else
|
||||||
echo "Warning: package ${line} not found." >&2
|
echo "Warning: package ${line} not found." >&2
|
||||||
fi
|
fi
|
||||||
done < ${pkg_file}
|
done < "${pkg_file}"
|
||||||
if [ -n "${pkg_list}" ] ; then
|
if [ -n "${pkg_list}" ] ; then
|
||||||
verbose "Installing ${pkg_list}"
|
verbose "Installing ${pkg_list}"
|
||||||
|
# shellcheck disable=SC2086
|
||||||
run_as_root apt-get install -qqy ${pkg_list}
|
run_as_root apt-get install -qqy ${pkg_list}
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@@ -254,55 +262,76 @@ install_apt_pkgs() {
|
|||||||
( echo "Can't run apt-get commands" >&2 && \
|
( echo "Can't run apt-get commands" >&2 && \
|
||||||
return 1 )
|
return 1 )
|
||||||
install_pkg_set packages.minimal
|
install_pkg_set packages.minimal
|
||||||
if test $MINIMAL = 1 ; then
|
if test "$MINIMAL" = 1 ; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
test $HAVE_X = 1 && install_pkg_set packages.X
|
test "$HAVE_X" = 1 && install_pkg_set packages.X
|
||||||
test $IS_KALI = 1 && install_pkg_set packages.kali
|
test "$IS_KALI" = 1 && install_pkg_set packages.kali
|
||||||
install_pkg_set packages.${ARCH}
|
install_pkg_set "packages.${ARCH}"
|
||||||
test $HAVE_X = 1 && install_chrome
|
test "$HAVE_X" = 1 && install_chrome
|
||||||
}
|
}
|
||||||
|
|
||||||
install_chrome() {
|
install_chrome() {
|
||||||
local TMPD=`mktemp -d`
|
local TMPD="$(mktemp -d)"
|
||||||
local CHROME_ARCH=`echo ${ARCH} | sed 's/x86_64/amd64/'`
|
local CHROME_ARCH="${ARCH/x86_64/amd64}"
|
||||||
dpkg-query -l 'google-chrome*' >/dev/null 2>&1 && return 0
|
dpkg-query -l 'google-chrome*' >/dev/null 2>&1 && return 0
|
||||||
/usr/bin/wget --quiet -O ${TMPD}/google-chrome.deb \
|
/usr/bin/wget --quiet -O "${TMPD}/google-chrome.deb" \
|
||||||
https://dl.google.com/linux/direct/google-chrome-beta_current_${CHROME_ARCH}.deb
|
"https://dl.google.com/linux/direct/google-chrome-beta_current_${CHROME_ARCH}.deb"
|
||||||
run_as_root /usr/bin/dpkg -i ${TMPD}/google-chrome.deb || \
|
run_as_root /usr/bin/dpkg -i "${TMPD}/google-chrome.deb" || \
|
||||||
run_as_root /usr/bin/apt-get install -qq -f -y || \
|
run_as_root /usr/bin/apt-get install -qq -f -y || \
|
||||||
( echo "Could not install chrome." >&2 && return 1 )
|
( echo "Could not install chrome." >&2 && return 1 )
|
||||||
rm -rf ${TMPD}
|
rm -rf "${TMPD}"
|
||||||
|
}
|
||||||
|
|
||||||
|
setup_git_email() {
|
||||||
|
local gc_local="${HOME}/.gitconfig.local"
|
||||||
|
if test -f "${gc_local}" ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
if [ "${USER:0:5}" != "david" ] ; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
local domain="$(hostname -f | grep -E -o '[a-z0-9-]+\.[a-z0-9-]+$')"
|
||||||
|
case "$(echo "${domain}" | md5sum | awk '{print $1}')" in
|
||||||
|
b21a24d528346ef7d3932306ed96ede5|a5ed434a3f5089b489576cceab824f25)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
echo -e "[user]\n email=${USER}@${domain}" > "${gc_local}"
|
||||||
}
|
}
|
||||||
|
|
||||||
read_saved_prefs() {
|
read_saved_prefs() {
|
||||||
# Can't use basedir here as we don't have it yet
|
# Can't use basedir here as we don't have it yet
|
||||||
local old_pref_file=`dirname $0`/installed-prefs
|
local old_pref_file="$(dirname "$0")/installed-prefs"
|
||||||
local pref_file=`dirname $0`/.installed-prefs
|
local pref_file="$(dirname "$0")/.installed-prefs"
|
||||||
if [ -f ${old_pref_file} -a ! -f ${pref_file} ] ; then
|
if [ -f "${old_pref_file}" ] && ! [ -f "${pref_file}" ] ; then
|
||||||
mv ${old_pref_file} ${pref_file}
|
mv "${old_pref_file}" "${pref_file}"
|
||||||
fi
|
fi
|
||||||
if [ -f ${pref_file} ] ; then
|
if [ -f "${pref_file}" ] ; then
|
||||||
verbose "Loading saved skel preferences from ${pref_file}"
|
verbose "Loading saved skel preferences from ${pref_file}"
|
||||||
# source is a bashism
|
# source is a bashism
|
||||||
. ${pref_file}
|
# shellcheck disable=SC1090
|
||||||
|
. "${pref_file}"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
save_prefs() {
|
save_prefs() {
|
||||||
test $SAVE = 1 || return 0
|
test "$SAVE" = 1 || return 0
|
||||||
local pref_file=${BASEDIR}/.installed-prefs
|
local pref_file=${BASEDIR}/.installed-prefs
|
||||||
(echo_pref BASEDIR
|
(echo_pref BASEDIR
|
||||||
echo_pref MINIMAL
|
echo_pref MINIMAL
|
||||||
echo_pref INSTALL_KEYS
|
echo_pref INSTALL_KEYS
|
||||||
echo_pref TRUST_ALL_KEYS
|
echo_pref TRUST_ALL_KEYS
|
||||||
echo_pref INSTALL_PKGS
|
echo_pref INSTALL_PKGS
|
||||||
echo_pref VERBOSE) > $pref_file
|
echo_pref VERBOSE) > "$pref_file"
|
||||||
}
|
}
|
||||||
|
|
||||||
echo_pref() {
|
echo_pref() {
|
||||||
eval "local val=\${$1}"
|
eval "local val=\${$1}"
|
||||||
echo "$1=\${$1:-${val}}"
|
# shellcheck disable=SC2154
|
||||||
|
echo ": \${$1:=${val}}"
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup() {
|
cleanup() {
|
||||||
@@ -318,39 +347,51 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
verbose() {
|
verbose() {
|
||||||
test ${VERBOSE:-0} = 1 && echo "$@" >&2 || return 0
|
test "${VERBOSE:-0}" = 1 && echo "$@" >&2 || return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
# Operations
|
# Operations
|
||||||
|
|
||||||
install_dotfiles() {
|
install_dotfiles() {
|
||||||
install_dotfile_dir "${BASEDIR}/dotfiles"
|
install_dotfile_dir "${BASEDIR}/dotfiles"
|
||||||
test -d "${BASEDIR}/private_dotfiles" && \
|
if test -d "${BASEDIR}/private_dotfiles" && \
|
||||||
test -d "${BASEDIR}/.git/git-crypt" && \
|
test -d "${BASEDIR}/.git/git-crypt" ; then
|
||||||
install_dotfile_dir "${BASEDIR}/private_dotfiles" || \
|
install_dotfile_dir "${BASEDIR}/private_dotfiles"
|
||||||
true
|
fi
|
||||||
test -d "${BASEDIR}/local_dotfiles" && \
|
if test -d "${BASEDIR}/local_dotfiles" ; then
|
||||||
install_dotfile_dir "${BASEDIR}/local_dotfiles" || \
|
install_dotfile_dir "${BASEDIR}/local_dotfiles"
|
||||||
true
|
fi
|
||||||
|
if test -d "${BASEDIR}/dotfile_overlays" ; then
|
||||||
|
for dotfiledir in "${BASEDIR}/dotfile_overlays/"* ; do
|
||||||
|
if test -d "${dotfiledir}" ; then
|
||||||
|
install_dotfile_dir "${dotfiledir}"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install_main() {
|
install_main() {
|
||||||
test $MINIMAL = 1 || command -v git >/dev/null 2>&1 && \
|
if test -d "${BASEDIR}/.git" ; then
|
||||||
git -C ${BASEDIR} submodule update --init --recursive
|
command -v git >/dev/null 2>&1 && \
|
||||||
test $MINIMAL = 1 || prerequisites
|
git -C "${BASEDIR}" pull --ff-only
|
||||||
test $INSTALL_PKGS = 1 && is_deb_system && install_apt_pkgs
|
test "$MINIMAL" = 1 || ( command -v git >/dev/null 2>&1 && \
|
||||||
|
git -C "${BASEDIR}" submodule update --init --recursive )
|
||||||
|
fi
|
||||||
|
test "$MINIMAL" = 1 || prerequisites
|
||||||
|
test "$INSTALL_PKGS" = 1 && is_deb_system && install_apt_pkgs
|
||||||
install_dotfiles
|
install_dotfiles
|
||||||
install_basic_dir "${BASEDIR}/bin" "${HOME}/bin"
|
install_basic_dir "${BASEDIR}/bin" "${HOME}/bin"
|
||||||
test $MINIMAL = 1 || postinstall
|
test "$MINIMAL" = 1 || postinstall
|
||||||
test $INSTALL_KEYS = 1 && install_keys
|
test "$INSTALL_KEYS" = 1 && install_keys
|
||||||
save_prefs
|
save_prefs
|
||||||
|
setup_git_email
|
||||||
cleanup
|
cleanup
|
||||||
}
|
}
|
||||||
|
|
||||||
install_dconf() {
|
install_dconf() {
|
||||||
which dconf >/dev/null 2>&1 || return 1
|
command -v dconf >/dev/null 2>&1 || return 1
|
||||||
find "${BASEDIR}/dconf" -type f -printf '/%P\n' | while read dcpath ; do
|
find "${BASEDIR}/dconf" -type f -printf '/%P\n' | while read -r dcpath ; do
|
||||||
dconf load ${dcpath}/ < "${BASEDIR}/dconf/${dcpath}"
|
dconf load "${dcpath}/" < "${BASEDIR}/dconf/${dcpath}"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -359,21 +400,21 @@ read_saved_prefs
|
|||||||
|
|
||||||
# Defaults if not passed in or saved.
|
# Defaults if not passed in or saved.
|
||||||
# TODO: use flags instead of environment variables.
|
# TODO: use flags instead of environment variables.
|
||||||
BASEDIR=${BASEDIR:-$HOME/.skel}
|
: ${BASEDIR:=$HOME/.skel}
|
||||||
MINIMAL=${MINIMAL:-0}
|
: ${MINIMAL:=0}
|
||||||
INSTALL_KEYS=${INSTALL_KEYS:-1}
|
: ${INSTALL_KEYS:=1}
|
||||||
TRUST_ALL_KEYS=${TRUST_ALL_KEYS:-0}
|
: ${TRUST_ALL_KEYS:=0}
|
||||||
INSTALL_PKGS=${INSTALL_PKGS:-0}
|
: ${INSTALL_PKGS:=0}
|
||||||
VERBOSE=${VERBOSE:-0}
|
: ${VERBOSE:=0}
|
||||||
SAVE=${SAVE:-1}
|
: ${SAVE:=1}
|
||||||
|
|
||||||
# Check prerequisites
|
# Check prerequisites
|
||||||
if [ ! -d $BASEDIR ] ; then
|
if [ ! -d "$BASEDIR" ] ; then
|
||||||
echo "Please install to $BASEDIR!" 1>&2
|
echo "Please install to $BASEDIR!" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if which dpkg-query > /dev/null 2>&1 ; then
|
if command -v dpkg-query > /dev/null 2>&1 ; then
|
||||||
HAVE_X=$(dpkg-query -s xserver-xorg 2>/dev/null | \
|
HAVE_X=$(dpkg-query -s xserver-xorg 2>/dev/null | \
|
||||||
grep -c 'Status.*installed' \
|
grep -c 'Status.*installed' \
|
||||||
|| true)
|
|| true)
|
||||||
@@ -395,7 +436,7 @@ case $OPERATION in
|
|||||||
;;
|
;;
|
||||||
package*)
|
package*)
|
||||||
PKG_SET=${2:-minimal}
|
PKG_SET=${2:-minimal}
|
||||||
install_pkg_set packages.${PKG_SET}
|
install_pkg_set "packages.${PKG_SET}"
|
||||||
;;
|
;;
|
||||||
test)
|
test)
|
||||||
# Do nothing, just sourcing
|
# Do nothing, just sourcing
|
||||||
@@ -410,3 +451,5 @@ case $OPERATION in
|
|||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
echo "OK"
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
Version: GnuPG v1
|
|
||||||
|
|
||||||
mQINBE0NehoBEACyWRyVfB97KKqHHEBYOZVwApwMEQb/nR+iyF8iXLlE9j+Tv86n
|
mQINBE0NehoBEACyWRyVfB97KKqHHEBYOZVwApwMEQb/nR+iyF8iXLlE9j+Tv86n
|
||||||
n0a2IP/NFIrDLm5QgyB1QW1TomIUut523tKps/Okvj6bQqgrekEQNvbBgxBEJhlP
|
n0a2IP/NFIrDLm5QgyB1QW1TomIUut523tKps/Okvj6bQqgrekEQNvbBgxBEJhlP
|
||||||
@@ -12,891 +11,97 @@ Nw0IlAbY5XB4Ix83VfDXoBLRYPsBKG4PZGOnysefZPHsoKNBlUhdr/0pFM0TtYJS
|
|||||||
pYxeWa+dmPGedIQf/N6R24ITCryi2Vu1bH5VfBpL+p+Lf2Vl/TthsaqtR+2k6KbX
|
pYxeWa+dmPGedIQf/N6R24ITCryi2Vu1bH5VfBpL+p+Lf2Vl/TthsaqtR+2k6KbX
|
||||||
o2/L6UvZGqU5ZWm2uTmSPl+FUKfATyRIuJcwYsSECv6qD0049t2UlD+a4hT/OOsn
|
o2/L6UvZGqU5ZWm2uTmSPl+FUKfATyRIuJcwYsSECv6qD0049t2UlD+a4hT/OOsn
|
||||||
ePFmRuIvZ6osmG9hQz0u2OLZBC8M47GQLU0IJ5LXEg6xAoObP6r9scOHswARAQAB
|
ePFmRuIvZ6osmG9hQz0u2OLZBC8M47GQLU0IJ5LXEg6xAoObP6r9scOHswARAQAB
|
||||||
tCpEYXZpZCBUb21hc2NoaWsgPGRhdmlkQHN5c3RlbW92ZXJsb3JkLmNvbT6JAjgE
|
tCpEYXZpZCBUb21hc2NoaWsgPGRhdmlkQHN5c3RlbW92ZXJsb3JkLmNvbT6JAjkE
|
||||||
EwEKACIFAk0NehoCGwEGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPTXp5Fd
|
EwEKACMCGwECHgECF4AFAk0NkpYGCwkIBwMCBhUKCQgLAgUWAgMBAAAKCRD016eR
|
||||||
6nibCVoP/2K4nwaVjlLuObT/9WordoVdQu/5zLAUnX2LmgWH0a+Hc/Vi5UIn3brP
|
Xep4m7M4D/9XXAWJtTw353Ee/9NEALTP+SxW8B+u8KHcNAon4WPsdknauC9y7yyq
|
||||||
d9bJazuJNFjiFZmhrghHSxJFDYQlPr/b6JudPg8HzFAb2fsBFCB0/Q+oNfDHM1Qn
|
YlDpSEFCSyH93yjbqmAdUl6BmxgxlAt8RXlAZ5mYXlI4y04iN/JsVv58llwzVB75
|
||||||
Pe6E+R7fapOAJb/h435ytyib3bdKvP31xgfKUc3OgfKNygEuw8SOeASu0shqlwMr
|
eZfV7Z56IUyPh6cZz0g2XwMDDCOZvnhJkgkxS+O6T7fz8PaHdt1Q7MRoglFYNKBD
|
||||||
/TQQJJv5eHtIc6n1W4fu5EsyfGLD/5SyknvcIpJmc4rqUqAALhhcfXuQEMEbrK3h
|
/Zqyv2LouhW7r0oEHxQuM0Pr98M097+mvoOcx+sP5D/JbuM3DJxME0rkZn4zodrq
|
||||||
S6aNOtHonGiXOkK8+RQMq+dvTPFs9bOXWy+fqUai4KD73UVd0dQUi1QlAKxoIo7H
|
250td6a7vrE6RBYjLOaYFC2ebVgF95EpTr/vBU2Lnk1fgJIuv/ZfQBOQ6v9mnFyn
|
||||||
lyOsNy1uoFvODD01clig6fqNWlrIIGjCFVYJd3e8w994X/fIicAK/getOJn10/li
|
4QWUzhfr37ZLPx/CIcEMah5IHGFBWI5Kj52CNwL/OoFkyxWTDI0QgwlRSimolfHF
|
||||||
ZhcYK5JrB5uui+qwQ8FWHrwSrGyyJwHmVIQgw8YuXb8lKsUotybAoUq/Fa/KYJct
|
uYc1b3HYua23P+2izNHmlX5Lc5UOseIX7Jbf7UiEJmS9IuWPhkyZCNLSVP38SWVH
|
||||||
kOQOclAw+BU2+w2EXd93Q4bO/yxccjTLP5IGuURq1zxrCn3kYEsffo2hPBw7bjQt
|
NVH2OmzuXS94ZmLVLkgNEhkMSvRY6XXkWRm/8qwNTjXyTgTnNED4r6AHK2rtyQtK
|
||||||
qK9Z5iE0lkvhIAxW1Eamekxhq0CkIsjY7ZkIDdMofm+h9vw1Ea7Cql/ez0XwK10m
|
4IfJnOnmBeIqUVUdaKGSf4LDXVhq1EuRnqIKguzJpbx3efkIHztrNOF/Qt7BX3Aj
|
||||||
aMfxLL83G8iCudpdNEkgxeBsbNs1bnbPDSb3k729JFrSjPgglrfzjFMCvF0xe+uY
|
76A08Z37x+3/Ted/8Jsxs11ZsUFOoiHLR1M8GaYqB4d51LD+nWnxsO65/rTJhALV
|
||||||
N7uKqa55ztz4Useme3lqzpY/MHWFiEuAt8l2KwTsi77OniedxEX5iEYEEBECAAYF
|
EpgK3rhy2vxBw74f6IKibgC608kNSxlymuW4HqrH/LOJgvMvrYHW1LkBjQRNDY/7
|
||||||
Ak1efPcACgkQ0kE/IBnFmjBVDwCfVF7VDQ4vL9e62Wq6fgub3u9LiPAAnAhtckz4
|
AQwA28c6b9y1jE6PpKOYut3vuBymq3gIwLQ1Y8nXJzj4CeFnoxcYN5oIph3TV290
|
||||||
72njqRKKQWNohpKDzaQUiQIcBBABCgAGBQJNDZrkAAoJEIjVcBRtQoaVwmoQAMDK
|
MXLL+i8GOOSQ3GhM5PVCyciXdnOwfEFnc4Y/gaCVu5wrXW2MFJYeR7NM5TaSZnB2
|
||||||
t5sUNF8V4rtxAuKr19H9Fh9ZrDmoSUAiNQTRGqqm+EteQqbMYw34obKAPZpsyK/6
|
437lBBmVGfT9j3kPkJSlxG2U6Z5b0Zlv7jiuOAQAjNfYUvepGyg6OaI7QoaNK+QL
|
||||||
R9iI+kRWpc1/hJMORO6q5Z6svpKyltRCAU6sQ+A2OPwjWTY1DeNgH9f1ERN7EmzH
|
ij09+F/7KajzqaOmCrnsGadY0gMv1Np8h0vwqT5Si9rAtdxy9gY5tQ2+12P2DHXB
|
||||||
lne3F1LM45/jLl23zvbApPVkUh+XDFKe1j7A6rGDlC4Zse9xyRW8VTrCrPU00pfU
|
ObKr0Fewc2IFGnCbXTD3tpYcov+OY0ZSLG/t3NgWkKkxE182KlNfv4C3vvKCKrSI
|
||||||
/QfKRbO45kyG0RkyaQ9EREzCJN+xY0jqncEkfhTqykUKNRwNjDUgPqyNHIc+sWsL
|
mf+HQh862UBbVbxQZiIOJznyB7PF6RK9CjdDnwgpO9P6SR0AarEyKl17j1O7QTi9
|
||||||
9bCEu1Xo9vw1U4CtyRabt42XiLp4KDPfkfZsRdMG8x6jI6X6/ZBNLJY6OjAY2fos
|
OdKGHPptmoLYXCeraTfS6edQvNUMoWf2gGWIKE40lkAZQZWZ32nBXeLff3amRcih
|
||||||
q7nx8nHcf9TznL+s0Xa00xXZ+zsHI6lrCXP1X2XL9uIK6jAP5EpCjAzDzNy+NuWl
|
amns9Deo95MxkQIMgFiOhVxBXkVjZA97GX730QPf2T57af+4kmghd/Ue7vxuSbFk
|
||||||
c5+7n3KeFTeDQVU0pnozfOvSSoNmPUk2O1E6sBdbUghCUJnhHFd2ieNBFB4GBVCQ
|
5mQpABEBAAGJAiUEGAEKAA8CGwwFAlSY+iIFCQtN0SUACgkQ9NenkV3qeJsMXA//
|
||||||
xTTdTRYt/KWrSG7b8PDJ27PHB+ISCUJeDuAO+z7w1IyGyLsiPApnUzRN4/XfsvOy
|
fm+CHlTVKFeMzEhHQNs5lcYdtCoIJMUUY/GcllLntKlqIsfqakjxgBpifSYHcSyZ
|
||||||
+ulv7KiYOyeRbS6z1ngylFLIxAHsNkl+8K6s6MEsegMZ1PKlBz4sOEUPpyxrylm1
|
6lRNNRMFyKS+oaSNimh5UWWQlserUFOTWLLseZtaZa2NX9/8/Hbm0jm0Mgk3mnfN
|
||||||
K/1ekhkipioIfgQKpe/JG2QzsIKqpXNeMayJhlWyTr19O27MsCI3272LFMK/uyJ0
|
1qPu6g6EfaUNEDNoZAFvPxDy9OU83sjaEg5wKh39iswvoqiqyoknAL4DRV0FYRke
|
||||||
5/4plsqlraam0h6ji3nBh/JtKuReBlt52I5WDk+/iQIgBBABCgAKBQJNDZuZAwUK
|
gsrC+vXv8T5DojNYNPpUb2C119g3rDuIju/AYP7I0sT2HrK4EfSu02az2ydFFmTA
|
||||||
eAAKCRCI1XAUbUKGlZWzD/0XUqeEBFCBDf5/Is3hUB0OBM3fRKxV6STBdYd789Pi
|
Vko5kDv8TYFi0LA3F27oO8NBsSopW8vfvLHyUSelreQuljZEGJdTp+Vk7nwnjZQ4
|
||||||
YMHH5fCM2JyXbfm1FaqFXmWOtQgcUSFr/UyGA/j+6NNM956tPY3Fq2KH+1RPiQwx
|
Ye6xW69YvM03M6s+WLE0kUBLzud+LcJCwfhBQYjlMvcrmyY1REs8XYKOnjzgtdre
|
||||||
BrYTI5Yj2LaFZ+IwcSVpITolCftXlR1oVvtBnJbpGaYktdv04+GfpRHS8aXCwnCQ
|
kQHX8DXASnrX97FpRePS1a0b7K5Zn6HnZxXOPFrbRCfc9USrT5RlnpUw94L+Lqf1
|
||||||
WVgwjvIn+48UGt99OMGoKVXQurSV1Aq4qr3zwdLCw/XKb+0GMaji1LZ/yuHv9Arf
|
fWdeAgUy3j40Fym8xc/lGfA1b7eNBRaptp7IYh7mATKzMvQqyHZWziG9gg9FYmZi
|
||||||
rKliWYSsJuJ9Xpx1kINjDYViE64y0TrlL7MU+j2dzFLwcYWURMtymTKeXbjjQlZy
|
fszHLY7ZAoxKxnL8bntMYSFtVc4zPqmFXG5KA9jFI/U+w0c7oJ+v+HCvPQ+pB5iq
|
||||||
GhEvSd7Pt+ZZNl4xIvFrOp6bS+yr0bBi+Y+0m4IgBX236mjBLyT2TYwurCXM30nB
|
bsiDRH+CtXBvUSUcf08Ze9XRrah0w9kfO188bIrJCkfFzR14rfZr7f1YzbQQPHgv
|
||||||
/ThLY9/p91SsWhFAdKJJ2FgPV94TwOpyrko+G2gQG5WSrqm17UW4/PL5oqd/kZ4d
|
7kNqfiLNOyOJz5u7fsIAqLhA5Wv+xDy9dHXR/AxWWu6JAkAEKAEIACoFAlYy7NUj
|
||||||
sYNl9EEUXOEnDSNSvgw1yR6cbEyhMXke995TyYtFXBu0o8jkCd6TPVwDtB0KHHzP
|
HQFNb3ZpbmcgdG8gMjA0OCBiaXQgZm9yIHNtYXJ0Y2FyZC4ACgkQ9NenkV3qeJt2
|
||||||
UNF44lVCNlSbNZPKIPDMU/ReeEFh4Erdc8L7C3QrpNejxtMV9xQKs5L/LFemSy7I
|
7A//ccdD7ZGxSuPhJJkm/0XommGe9uf/YpqsqTsavv2tUe/zIZKyxlFydoU6RNA+
|
||||||
IVvtZkGwmnzv2XvvsGM71hH+IwzZLPpQFshDHtW/tCVB9QbTzPkGV8W8tmzJLfO9
|
4lg1/v38mT5hpcM90D3D2LYsX84sJ5z9QjAYZ6Lz5T+qhQBsbwMJ1HSe5R4SAFRV
|
||||||
8YSV/5Ba7D/7h7eWSOg8M/B+0I8uNMPEb92cZ8nWGhZ2rQNHBRuIQCnqRsYoaf4b
|
KW/gi5SZNlLQ1ht8gJUqOndbRFSyGPVRrtaCdpoFsgpdFDUev/b8AoHWKhsyO+T1
|
||||||
uYkCOQQTAQoAIwIbAQIeAQIXgAUCTQ2SlgYLCQgHAwIGFQoJCAsCBRYCAwEAAAoJ
|
RgoH0GzdVh/0vOrvKUX6ZmFpz4GIttzWZhlLDAdnS6hfAaSEnv8IVX/iPdoSAFYR
|
||||||
EPTXp5Fd6nibszgP/1dcBYm1PDfncR7/00QAtM/5LFbwH67wodw0CifhY+x2Sdq4
|
mQSq50+bTbzD7ALQcJ/ySHrd5l/7lZ1Tn71zAtrqb31Spcfu0k2DfDVTl4kVtYhf
|
||||||
L3LvLKpiUOlIQUJLIf3fKNuqYB1SXoGbGDGUC3xFeUBnmZheUjjLTiI38mxW/nyW
|
Yp5rAp6FwFyU76IMPYxHZuYhjGZ38zFYWkMM9pk6t6GvyzdLVCkd+GPzJqcQGEL7
|
||||||
XDNUHvl5l9XtnnohTI+HpxnPSDZfAwMMI5m+eEmSCTFL47pPt/Pw9od23VDsxGiC
|
bdS7iH5jonXSB8eAf0EzC5DFYUoOK49duJDWGx+NuaG/4iXGSYJRc1c5vy95spMx
|
||||||
UVg0oEP9mrK/Yui6FbuvSgQfFC4zQ+v3wzT3v6a+g5zH6w/kP8lu4zcMnEwTSuRm
|
VKSjmLV8aFWtHMrG7saZnn6nkm3ryUhCkRPBrsKhgHODnWzWKreeOlN457hMALDJ
|
||||||
fjOh2urbnS13pru+sTpEFiMs5pgULZ5tWAX3kSlOv+8FTYueTV+Aki6/9l9AE5Dq
|
PIVwhPqPujnLUVM62fOrWdjWBcSVwZE7I1wvY8XSfIlO2YfqhA+hLUcuQVbRVLnF
|
||||||
/2acXKfhBZTOF+vftks/H8IhwQxqHkgcYUFYjkqPnYI3Av86gWTLFZMMjRCDCVFK
|
Fn/ZcWqTzB/Ym6S8T5UTuv6RSDDQCwMPzkpK9MUy0Q8qWB+CPdZLDgP+kjYP4kX9
|
||||||
KaiV8cW5hzVvcdi5rbc/7aLM0eaVfktzlQ6x4hfslt/tSIQmZL0i5Y+GTJkI0tJU
|
928gEV3AJPnuGoYAeaSvxzavKGbWLU4iOycYg78bqjubIAO5AQ0EVjLs+AEIAL9a
|
||||||
/fxJZUc1UfY6bO5dL3hmYtUuSA0SGQxK9FjpdeRZGb/yrA1ONfJOBOc0QPivoAcr
|
P593SAsrpANYz/GblUZUa9WeO/QGejLS13vO/Y5EQIuHULQxl0SPkIU6rSgwepa5
|
||||||
au3JC0rgh8mc6eYF4ipRVR1ooZJ/gsNdWGrUS5GeogqC7MmlvHd5+QgfO2s04X9C
|
8A589wPbNR5PcbOGsjVhhaGdD7nNkIDWHzoIJR5fyHFfH+nXEde1aOl98bDLtE7Q
|
||||||
3sFfcCPvoDTxnfvH7f9N53/wmzGzXVmxQU6iIctHUzwZpioHh3nUsP6dafGw7rn+
|
Lf4gFWuci7kKC4rCavqEDvOkrEhd9llbBrvUFx6KnIw13cVo70OeNjjXW07zfn9u
|
||||||
tMmEAtUSmAreuHLa/EHDvh/ogqJuALrTyQ1LGXKa5bgeqsf8s4mC8y+tgdbUiEYE
|
3T5nYC3nCqo27q7qHmEqZ/NDKuWi5adySKhskIPP/axmP7nn5hNd5vuGDGxb6/Bb
|
||||||
EBECAAYFAk3YMGUACgkQMyG7U7lo69NbJQCfUtbh985gNtJvJ65mpg46hzqjlWYA
|
mzzxySJ9o5YKGFJ4+U4YEemcdyG5OXjgg2mOIOIrbLPizvAabS8LvzFe6+TGdlrP
|
||||||
oMq5jzwv7PSRB2P+tpGOqw+/VWuhiEYEExECAAYFAk3Y/jcACgkQA9JM75YE0+QB
|
7IQN/NHG7GL6ra6fVQkAEQEAAYkCPAQYAQgAJgIbDBYhBH/VjZoZbc7urWcflPTX
|
||||||
igCfTthelj437QeGKeSExjmdhjiF62sAnRHcU2iYJQc/+TK3sgevQRzSUEKwiEYE
|
p5Fd6nibBQJd2Z4aBQkLaRgiAAoJEPTXp5Fd6nibHzcP/23EhJQvkuK4TR06Ge30
|
||||||
ExECAAYFAk3ZAc4ACgkQKFGf6YjtZRC09ACgin8NtHRHr6soqTs6fT02s5x53D8A
|
8wxXTiL6bK0XoVU3pWz2rL+whtsXRlkCqNROYL3yEtk16pHAKxX5cuHTbECAcFdc
|
||||||
nR/2hk10CSFu1SdMh2xlr+q6zFHNiQEcBBABAgAGBQJN2COFAAoJEBfCX3cKL/0g
|
ndyHWVyFh0vdnIrD/4JqymmW62s2kV9A+zvwLeXIiJ+wTtI2i3VhkdR0ubi7C8WW
|
||||||
V2sIAMeZklY7Pww+GE47c9Khgt4xf7/CbeBCDGv9eVGpgkRVNcAXHiwFr1yQizUm
|
OTxRQzO++rm3bJwVfMPzkjReJ2xLLURHDXlg4X5LUMMlQPNC2rAjgsCdv4nypuSx
|
||||||
m+W+yyqoyaGwl6EnEU22mZ+PY27H0W8XZJPR/W5zsfaBxssMCxgscau22ytGmHFQ
|
6wXziEyWJP0ZDZIO0576IxElED8AFCNJfnHqHx1lnIxLIrErgB8Agx7mueQi5zTx
|
||||||
eKKwBbgVMMA0Y8uj2phjGX5mIb6EUCEX15lq2lwOICn3hIMDzJpUJZR+j/8VrmWS
|
TasveQ5qNhnDUrnJKf374J1B9tKvk+Mpty+izFjYtQc+Rzn4KnEyXnj110CvMUTb
|
||||||
vdn9W3To51sbXk8EDqDRsren84SG6rGV6hiHGrS7gSLKTJv0qke/4+KTUHXcQ2sV
|
sO3FxYxsk13DBpDjQIAlP/6yDeyLOtfPQX4Mw0HdWHe9Z/O+LZgZOhpnT3ifv57D
|
||||||
NNEIGhdYPuVJk6WvPZIATwO2iDVg6gSy0hLggfT7DE2hZBh2dMbKXU/MhzGqre+p
|
LNg321pUVY1fTypTrW0UjyVHys50L2L3MWNGqrmPzS7z/0Xc53PRDJKdyrfiGnUD
|
||||||
QYDyALZvxD0C69QCMz6xxYcz/N+JAhwEEAECAAYFAk3YPsUACgkQoEF/14o9oqXe
|
1oZ+vBWQjmTTDkAoimntXsqRNmi8llDhMD5fIXKJr7MomZbWdU2kMHx9hAZbeZmS
|
||||||
tRAAu++SUfSD1c3hWqEUdHdsJPz/RzCu7K0Z/BV7scHIOtyJRN/Cv7epADPXq5o+
|
4JXlDXuZzELySgEyJ1QCvAjydjsBUYSO4I4caIqLQUIOvuWiiMMchCCeJ3AlQAf/
|
||||||
LoVFwYwyf0MXN9F4UxlNXsEHAXoxf2pho6S6MpbVSkvuH828eCOzoVrVsT7qvFSq
|
rem0/u6b00Z2DHwO1DQAXxXgvI/jAQvGGq5rCvZ9YBNbs5sqIjRWTAPOOu9Ts20z
|
||||||
2G/y/DCtMz6bejVZ/rRUFuqFUIjZ7yFdDBwIfrzhCPnko9PIMW0UyLR1DAp27SXc
|
Z6AP3O56IgEAmrqh/7OfVT2OuQGNBFn2f/wBDADYQOAB5bJ9DjMXyY67GEI99kK1
|
||||||
5YEsS87gwpcKo10f4RRMeTM5cvB0ozl0mOZMjQ/ah8fOq0hXuHc/GmKQNR8f+GhW
|
LG8XF+cWJ4md52rPnOeJd0da7l26bn9NtXCma6DP5gZQArfxHsPh7I4SbYJRYxTC
|
||||||
bE0WbSdta1EJFlaR3+yrel/AmNExNHNCfsne1cKch8vKt/Ey+4D48TUsc5zXQ1Dn
|
CCE/Jsd8mLB22DcoeY+MqPA2g71j3KrYsvuJC++9GHK2Xc7ZRmhAugEmC/NAdtOR
|
||||||
NR7VpyiXaFsvrKuo3oLx2PLOJUWzG8YHwIdHLqcJb7w2Fk3/PtDC9Xia+LxWwWKP
|
BVhtBSAUgyCmUczKHoCAqHmq8j54En8kRYjbvlHPpDsNoRuhcH5uDGBIVkbV7UtB
|
||||||
sjopScqhRc8nfe3rHB7Q2pjBf04K+3M/9BUXKnzv6K67SsYIF+5jbTw3re+md/Uz
|
l2oUlRNVw7grs6XS7cPU2zCQSxcrRRuAfV4hmGG2eKaPpieNg0MAAbR0G5ssWW3I
|
||||||
BEiHdJcJaVbzsLkd5F14uHv/gK/bMUR6UBE0xL69RcCOsHfM2Esteo7iKNO+W5Hd
|
uYwd1ys5wA0YQuWUhxadUuYc46/cqyyoVIFlfjxCVTX+2w3900SDPOF/YrOwctAb
|
||||||
ftH/IMXQ83ipbbeEZh1P/p/WZYaEbva6c/iV8bIYGfrgKKfRUtZ+h6dPYqDqmlTK
|
23+78WN6GPnAmmS3zcmXTGsJiw/mmyBlqYI/JdSgrgI+COlcP0rlF/uklzEywfD9
|
||||||
0LdYr7DVVKG1MkTb6jhZpGqnAsgGLqekRYP/3k+KvN8A69DGv6h61hOfrnzSsNE/
|
1m1lno1u2IApdAumZWHR8aFnpHQXfI6rWc1o/V+RBpz5Xe6D2h9CPT3AE303BV09
|
||||||
xYp52LXAp6GeOSQT9gAyzR93stIs35qV95UuYCJG32DFLNSJAhwEEAECAAYFAk3Y
|
HGmidb0t6bCKoabTDwvE+KojIcbKBji6g8V6KTMAEQEAAYkD8gQYAQgAJgIbIhYh
|
||||||
cwIACgkQRtvu2qsJ6XBE5g/+MwGWvmRxADXpG4A90JWplnB4pC+GGUsONw51WsoL
|
BH/VjZoZbc7urWcflPTXp5Fd6nibBQJd2Z4DBQkHpYUHAcDA9CAEGQEKAB0WIQSU
|
||||||
EFHRmnyqEjPIvQO4URHVLcK4gHvlLJYRdhvdO6R4ZkdA8V5v3U7BT9AtlM2Dp+mV
|
XFOKi78TklOo++cIyPoKQ4xDRQUCWfZ//AAKCRAIyPoKQ4xDRfLeC/9n+PFIKVEs
|
||||||
CDcXUV0pfYusvhp88ly7NQxqYCeRZ7xh0QDa/rOjcCz9IrGKxbu0Jul2ai7qhsUa
|
GpHm9R/NJpoOuDUT6fzRj4dQrPe+ehjIaolct1+S6O19VczKg3EnglbcH0MNxBeP
|
||||||
Yv4q+t425mGQYzsdm8yvDyou4VGFszI5in2H0EkEXo5DMyhYBuQHfSsgRnv30AVC
|
r74UM4s0c1xyot6DQREq9lZyoGnXjhDAUMDg8funTszEQ63PPoWIJhGVfre+GU0T
|
||||||
B0tHMcQMyiCBjDVcRy2yYlgjcPRdCjuArGuAIOMM+4wIM3Tb+SAgKnKNvdXm+yTT
|
rOCi2K+xpgeryBChXUeCcs86IVGQUnHHgz5H1jfKKkw8TUJYwsyFJpJ1LdY77JcA
|
||||||
ErkvPzP5/8YOGh7mck2WIpW2R30wL0owvgou3Wofjreb9ECcMfkFMk67UKOnvQiH
|
396682FsBoxcw029uAUd0p2Heg3oAww2Y7GObpuIJvjeYAJNnWIN/DS8Fugk0cMa
|
||||||
aAwr44JBXaZvqz66puTJ8OXMLmz8VNNtZW7Q6AxG+VM1w+Oi4EVkgIDclecE14BX
|
Kg/ed/WcNQ8+A8bU5nWOVaRIRg8vSz08H42FqmoQzlsKcVJeT1PEAS7G7jXsLbtw
|
||||||
WPJFzdy3yQ8VPZGXQFpPLvqoOxGTx88TeRABNEFZU1RjwIZ3E08BG6ji3ZT403TS
|
ArE+QcXJ0PjvsDs9yh4YnC0WFeiOCLtpf5+Mc7dc/svf0MRDSA+6uXWTd13vzlq+
|
||||||
pE0vQAN8Vg3Bmm/7ph8Vq5Cyhf7tqOr284TuMA+9r+juhlSkFh21CNzllyJ2IhCf
|
30jYg87zYGJhhR6I0gQl7yJV2X+nRxnl8MEYIxjqXFEdnPm3yN23eozOs1ZHr0Ra
|
||||||
ouu0dqA6ml3C4MfvQ8Huo/vem4nPgVwRlwaQ5umLd32YMyQ0dtQVObEZ2DWj3KYE
|
JR8xaFVJIsQ5q/opjwvOqrSsRNG7lHZKoGk6tpJB627RTaQFrPpmBB8JEPTXp5Fd
|
||||||
sn4391GV6XQ8pQOFmHQXcJ6lEvAaSpccFT2C4Lq3gVwFzezRb6mBxuaAVLR2oVAh
|
6nibm6QP/15mMVlGUEdOrPmZexUM2FP/deXB7tBv6CLCoeXnqpr7T1R3URogQfNX
|
||||||
Eo+JAh8EEAECAAkFAk3YQ3UCBwAACgkQ0IA5blwDUsvySQ//UFqoX146dOt2r4av
|
9H1o1lM5j5mxnBBstIWMY8NRrtioKhrWqPH6sICCqNG7WKyIt+nHkNHeeMDLHqEh
|
||||||
z5HoS5uYFArfGVal9Rmi+qqLM0kCc+vECTHSHVaZLMYthn/kd0zC8mevSkmLiT/1
|
pgA1R+1VYa62XCxXk5lwMfWrpU2yNPWzLK9AnqJwDBaJfAV8SuyjpBk85FSCfskG
|
||||||
Sj+lLh8F0T3fugUciauG4HkwnxbiS5LbNsSbheGTekjJczDHMjiTkgWxea+GdUwF
|
rjK6pLb1U+7tht3T6bO/CuMvdg/9VLsUfThgOOMBQLxT3vcDkSyqZXOCG59P/jyA
|
||||||
RnRg/4mU1l/lJf/ODDbFO9YQA2SGdn3ziczD1WxNkz/OxUJSA79bzsXWQe53M87I
|
HeJnZefkQRwp1+RjSSEwlIqSFvTwAnA/f4MwjHJ+fjgKryIaFgFkIRFAVDC1q6nD
|
||||||
CYZLcK4ca9kzd1XgURpVlE0RVydkzAL+F21eMcNQpZwQjGtahnIro5E950r9cnbZ
|
Na0O7OBQy+TjCkYLAqczIQoJQm0m2fqzBH+SGYyGx0POhH+FowwBuPBm34Hum0Av
|
||||||
RzhRG3rhpHIXnh78jN18karF08+8czn0WRDhzN3LXVxFZdPj1XcghFDjVWm87HY8
|
T8Oi5E77hcTOiprY0D1ub3yBHikb2bLNqtyYKJhCOTiauPfku+nKaGSLkBiHPTfL
|
||||||
yskLBtERt7dhF3rPdhNmXJwXW7Xok1JnNQTxUxlFi7aqI9ax3XOQnn95Iw5oXjCz
|
U43st+s+hOSpk18Q2ZPKPj9R4HkwfirL9rofTZK6LN+zhmAIo9o7U352gDMGWGHC
|
||||||
2eGt1a0YLOCz1hT443JR13/9wSt07KdsnoVe0piUAbG4J+OjWiQxCh3qDKvZJlTk
|
9aoNYRKjuqYfJ5Ab/yU6IGYpiGcEg2Fb5VHjybx/Na7ma9iGfKAGRY3YbPC28vqv
|
||||||
Wyq+46Iva2J3XFld6cdQvRUZXN9JRNi8CJnEtXGKM8EhiCE7OdclpJaTk8PAk9uD
|
73MSwY7RSnHyfM4UZGhI+dUUluldZ6NdWmaLd8AtL59r+SopiV/55aY5bTrqUGvA
|
||||||
r3dJhyGhYI2s/Js5P0Pzzxx3FFiAcL4TNvH4/QBce/vyprL4NRjhBbLCYtf5lB9I
|
bVZBmS0kpUHZiye9fzTqRZOJx4tQvG2nhVUmIZ2keTtOiS321PcI
|
||||||
XjxWzILONWwE5vSURaFDslrU7owhBdROca0c07t3lu9JE7pKVvGTa0B+b/ONPCao
|
=VmF5
|
||||||
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
|
|
||||||
bC9ncGcvcG9saWN5LzIwMDkxMTIxLzczMjNiODIzNTkwYWNkOGRlY2YxMjliNzU0
|
|
||||||
ZWNmOGUxMDA2NjkyNDQ0MzJiMGQyMjY3MjA5MDQyMGRlYTI3MjkACgkQ1XPVsSmr
|
|
||||||
TN3SmwCgyOp2DP2eHA+2E4lmwDANPbF8YNoAnR90yzUdQhTItRMai9mV4lAqckz7
|
|
||||||
iLcEEBECAHcFAk7isFpwGmh0dHA6Ly91bmRlcmdyaWQubmV0L2xlZ2FsL2dwZy9w
|
|
||||||
b2xpY3kvMjAwOTExMjEvNzMyM2I4MjM1OTBhY2Q4ZGVjZjEyOWI3NTRlY2Y4ZTEw
|
|
||||||
MDY2OTI0NDQzMmIwZDIyNjcyMDkwNDIwZGVhMjcyOQAKCRBUTEhoYtvfYiagAJ9T
|
|
||||||
n0b2Hf6+9NNsuWZYpk1d/etgmgCfRpakvv6yk4Gp3EexASjfgKYlaOKInAQQAQIA
|
|
||||||
BgUCTuI+VwAKCRDhyUtG3x3UcZxXA/4iIgD9yvpIVzfGu1m/aDXEcACpsO8QgT+J
|
|
||||||
ESFrxYjMFaQhJKrVxNOhp7Sp6bQzU59wpuYAVMxHi0X7d7pMyyAUUSkDu00gI8/g
|
|
||||||
NLqaMvtjEhhEwpwMD+Yd915uxB7CrSIilVt5PMJAkdy6xBiJryCTakMNItmPb59C
|
|
||||||
E4/VbHWodYkBHAQQAQIABgUCTuI+YwAKCRDA65Z1Z0Yn/7I3B/4yIEze4ru+jkvS
|
|
||||||
vH1bOsTbr9SoiDppDvkU+ISUCnIidRYv83sRyNuc2THULakC4Ram3F7JNTO0F1+2
|
|
||||||
gkR3l1tjW1ToWo2TudB9kW7VxrXDT59jmUti2xaQQ5zewv79eQv52irFPm2UYR5q
|
|
||||||
toFlZYzaN8TD7Kw8z5t+ZQk03GSmg+NxVoB7bOC22LEcF6M7jVOAfoAEp3HseHAd
|
|
||||||
3IopY7KjvduXzcbEXwFVbuacwKlCYAekmO2QvVgPuzf3lJvOOgfbAEXqq/JPN7Bq
|
|
||||||
gTrHpuQZtKk62oMJ7XXPQoIezKSAnN/TI7ARje4PPxTPV2QvNhSpu/xKECP2Tha+
|
|
||||||
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
|
|
||||||
aXI/Maioszm5pco=
|
|
||||||
=wlrV
|
|
||||||
-----END PGP PUBLIC KEY BLOCK-----
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
|||||||
36
keys/sjca_cert.pem
Normal file
36
keys/sjca_cert.pem
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
||||||
@@ -1 +0,0 @@
|
|||||||
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBIsFYLEsalNh/l6PtMZhi0f/eZ22uoMw/xYpgPy6vBU6OlpN2FjW7R0pwX29fZjjVQoF0eEG0K/9/CcYcnxtspw= chronos@localhost
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBPee2Rw1yiE9RIrXzslop9dnYgIc3shhXVk5+bPv/BrC8swklnYUSjQOU/lJuAjJJ9X7rx9kvgmL337Taa7dGao= davidtomaschik@gibson
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBKI+CwNBBoC1G9M2rRR0P0lWAU9uvEZpvDg+CpD+I9NQOLuy80YJMRwIYgTZVTWo8OUqsKSMzYywP6NdMKVdVGg= david@human
|
|
||||||
1
keys/ssh/id_ecdsa_kion.pub
Normal file
1
keys/ssh/id_ecdsa_kion.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJzWFHQZm6jsh2V+ATJPlEKEQdt3tWNojc2elz3hDs5Q9TPHUolE0/R66osFra5Qr/jonEwqzqwRIduxFYSIATc= david@kion
|
||||||
1
keys/ssh/id_ecdsa_zazu.pub
Normal file
1
keys/ssh/id_ecdsa_zazu.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBOP0EQthckpi83EoFXtbPnn4Ytd7FYW6Nb3W9ZahqOKhNAqv1owot957ihKHtGKFnYr0Jwgp0TNOdpz6nV9wwCo= david@zazu
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIHPlKI3Mt2Hm4YZ0WNOET7SEoXmAABR+eEZ3hnJnA9AJ davidtomaschik@davidtomaschik-glaptop3
|
|
||||||
1
keys/ssh/id_ed25519_glaptop6.pub
Normal file
1
keys/ssh/id_ed25519_glaptop6.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJSM/GRj76roLHo0KV9SgNGNlFmnsiWpRm9r51XqSsnu davidtomaschik@davidtomaschik-glaptop6
|
||||||
1
keys/ssh/id_ed25519_wfh_chromebox.pub
Normal file
1
keys/ssh/id_ed25519_wfh_chromebox.pub
Normal file
@@ -0,0 +1 @@
|
|||||||
|
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICvHatAcnYEJ2BXWGN+MaE40avyghYeEZDgfQD8WcRti david@wfh_chromebook
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQClvMvarQvGaFYhUazA+GN0C2XaU4vHmsvD3G99PJqmd9SGrzSvWw2ZuJwYWQCag4Ft5Zy/A3NZ0/a4ohPbWFF4iX9LnAqSKgMDPv3R3VokW04bFm5uDhXF0lJDOWb8aJuFl56SP2lnbWyP8P8d+3MaFCcuw3F23CS/0ZO5w7CsPsHkvWkmykCB6z/Ju/kqvXK5qYKjAVkZ80LMDNppjN5zZhFZs721zuuMmpFevcfG5c43KujcR/yDfB+t3yfWmaWi21KDapdHXk5lQoxsg6OZe6Wuj7jQq+Zol+ElxD+gn7z2LWXq8a3wyyvGSoKyBfHBjrwzEuUEFbvn5iatPJVX davidtomaschik@davidtomaschik-glaptop2
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDi2AoHzzSd/xidvRKS1OE7Pe+aGgyEY1WmWJGJ3POHuaQSbGrp4g1En4QurhXwonPiLBtQ0w6Nbbi/3vrXxSnAkJJKd9LXQtjyXVN68285lRr3DWuWnyokhO3B5aGOb5/4b6Dn8YDRrTRefezjbVavgrTFarZ19PmPmJxH9h+ZPV/hNQ6rZjBjrvGerxpmB6CjgXbIxRdsUcnao3+gyPueBOkyHbfiy7QjQT+SgPjIqT/rza4Q0OqFBTk4D7Y96biE5yY31eNs8H7uvR3PfX0NN5zvP/EqJECPYr/B3vOzAr7B8BsqYbA5UFexrp6gYn+LDzr6jAILhEUp8SsC8UFn davidtomaschik@davidtomaschik-glaptop3
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDXvqt73qAqS8C597u1wjz0Cvfo1IpiQFE4OKxTBR0mUhhi9UsGXkjZd/EYnqfWQRLcKaQSqN9QcXW7zHrfXtdmcjr3dDZrwXGgCiJnvLTeLecLqYwgaIMMNTmgaTQ3OFB74VCeD496pMbnhmlsN2+WaxNjIxoX+Qadsq/iHtBBt+tSOm5E1x0/ynEGmvO1W0L+8FyV/xnZWQIbBHTrJ931Gt8RDKtt7Y24XYMm5REye40adbxeS4kBwexvp2nTKwkr8sC26dmOz/RgJG3Km1194r0RXsH7iCYYlUBT23f4KOcmVxUlxkSu5d0u2viEID++cN6LT/4rHPdgqMZaVhaB root@uber
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZ5FLvZsfIfNV8NcUK6+wJ8pDapgu8QAZMX5zuz+fYxsf3KeHlDS0nPojmDLCXaAdd4TUO7KlRyo8BhpsWP8yUwpxUeRgvtYjjWfDgSxXCsGpQzbmTABu8eIaSya00Fao/WeIV1k+2p6S80knmllrBVideGW9ws4zrVQnhOcgKVXskuFBEs3IOQczNPMfI+OnO+qca0rjUh1Z6k3tD6tN6pxh//5CZBgqYf4G1DLnCLIep7tDkTuYjgqH237r6v4WHH87sLRy21yFRzfMWUGPesJvuc8X4Ol822BuQWTCDYy+QYZ9qGDWPcLOLCg7MLP9IVKzIJOrAdOYyp6p2brzj davidtomaschik@uber.g
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC3CLK0KLup0y8nb1l5X9LTVsvJG1scc7qbLJZIdGC0TlFeAbzUwXmxxJUY/dl/2JKGj9Ai3h393WzxH//tMY4jYLhMLqV487YvteVF+2yVS+q0YtO4RgM6TVOvdp1b4Fgj4EB5hTaO0hB51PxTqnVAK0ZMAuUxQRygpARnB+xwhLU2l0K07RHgpMirWODzzlgD3Y9I+3WIpmAwzubaoS1/R0Frf81ZWQmgvwac6PKsPwvGLygS1ounOwD2PJScP+sE/t2MEYjtqmmAytqsp5kLVkb82fJSkdj1DuHblgZr4aX9r04bVV1ju19CN57VyhbZtf+fBqQQW1lnjMYm9Kjn matir_pvj
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../id_ecdsa_chromebook.pub
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
../id_ecdsa_human.pub
|
|
||||||
1
keys/ssh/trusted/id_ecdsa_zazu.pub
Symbolic link
1
keys/ssh/trusted/id_ecdsa_zazu.pub
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../id_ecdsa_zazu.pub
|
||||||
@@ -1 +0,0 @@
|
|||||||
../id_rsa_human.pub
|
|
||||||
1
keys/ssh/trusted/id_rsa_scar.pub
Symbolic link
1
keys/ssh/trusted/id_rsa_scar.pub
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
../id_rsa_scar.pub
|
||||||
@@ -1,10 +1,14 @@
|
|||||||
audacity
|
audacity
|
||||||
cinnamon
|
cinnamon
|
||||||
codequery
|
codequery
|
||||||
|
flameshot
|
||||||
fonts-inconsolata
|
fonts-inconsolata
|
||||||
|
fonts-powerline
|
||||||
gimp
|
gimp
|
||||||
keepassx
|
keepassx
|
||||||
|
meld
|
||||||
network-manager-openvpn-gnome
|
network-manager-openvpn-gnome
|
||||||
|
solaar
|
||||||
vim-gtk
|
vim-gtk
|
||||||
wireshark
|
wireshark
|
||||||
wkhtmltopdf
|
wkhtmltopdf
|
||||||
|
|||||||
14
packages.cli
14
packages.cli
@@ -1,15 +1,21 @@
|
|||||||
|
bat
|
||||||
binfmt-support
|
binfmt-support
|
||||||
build-essential
|
build-essential
|
||||||
cryptsetup
|
cryptsetup
|
||||||
dsniff
|
dsniff
|
||||||
|
duf
|
||||||
ecryptfs-utils
|
ecryptfs-utils
|
||||||
|
exa
|
||||||
exuberant-ctags
|
exuberant-ctags
|
||||||
grc
|
fd-find
|
||||||
|
fzf
|
||||||
|
httpie
|
||||||
iftop
|
iftop
|
||||||
iptraf
|
iptraf
|
||||||
ipython
|
ipython
|
||||||
ipython3
|
ipython3
|
||||||
jarwrapper
|
jarwrapper
|
||||||
|
jc
|
||||||
jq
|
jq
|
||||||
kpartx
|
kpartx
|
||||||
ldap-utils
|
ldap-utils
|
||||||
@@ -17,6 +23,7 @@ lvm2
|
|||||||
most
|
most
|
||||||
msitools
|
msitools
|
||||||
nasm
|
nasm
|
||||||
|
nvim
|
||||||
opensc
|
opensc
|
||||||
openvpn
|
openvpn
|
||||||
p7zip-full
|
p7zip-full
|
||||||
@@ -35,9 +42,12 @@ python3-scapy
|
|||||||
python3-pip
|
python3-pip
|
||||||
python3-virtualenv
|
python3-virtualenv
|
||||||
radare2
|
radare2
|
||||||
|
ripgrep
|
||||||
scapy
|
scapy
|
||||||
scdaemon
|
scdaemon
|
||||||
socat
|
socat
|
||||||
|
source-highlight
|
||||||
sqlite3
|
sqlite3
|
||||||
ufw
|
ugrep
|
||||||
|
vim-youcompleteme
|
||||||
zsh-syntax-highlighting
|
zsh-syntax-highlighting
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ fonts-anonymous-pro
|
|||||||
fonts-dejavu
|
fonts-dejavu
|
||||||
fonts-dseg
|
fonts-dseg
|
||||||
fonts-elusive-icons
|
fonts-elusive-icons
|
||||||
|
fonts-firacode
|
||||||
fonts-font-awesome
|
fonts-font-awesome
|
||||||
fonts-freefont-otf
|
fonts-freefont-otf
|
||||||
fonts-hack
|
fonts-hack
|
||||||
@@ -14,6 +15,7 @@ fonts-ocr-a
|
|||||||
fonts-ocr-b
|
fonts-ocr-b
|
||||||
fonts-open-sans
|
fonts-open-sans
|
||||||
fonts-oxygen
|
fonts-oxygen
|
||||||
|
fonts-powerline
|
||||||
fonts-roboto
|
fonts-roboto
|
||||||
fonts-stix
|
fonts-stix
|
||||||
fonts-ubuntu
|
fonts-ubuntu
|
||||||
|
|||||||
@@ -1,17 +1,25 @@
|
|||||||
ack
|
ack
|
||||||
|
bat
|
||||||
curl
|
curl
|
||||||
dnsutils
|
dnsutils
|
||||||
|
exa
|
||||||
|
fzf
|
||||||
gdb
|
gdb
|
||||||
git
|
git
|
||||||
git-crypt
|
git-crypt
|
||||||
|
git-delta
|
||||||
|
glances
|
||||||
gnupg2
|
gnupg2
|
||||||
gnupg-agent
|
gnupg-agent
|
||||||
|
httpie
|
||||||
ltrace
|
ltrace
|
||||||
mosh
|
mosh
|
||||||
ngrep
|
ngrep
|
||||||
nmap
|
nmap
|
||||||
|
ripgrep
|
||||||
strace
|
strace
|
||||||
tcpdump
|
tcpdump
|
||||||
|
tldr-py
|
||||||
tmux
|
tmux
|
||||||
traceroute
|
traceroute
|
||||||
tshark
|
tshark
|
||||||
|
|||||||
BIN
private_dotfiles/config/gcloud/configurations/config_bsidessf
Normal file
BIN
private_dotfiles/config/gcloud/configurations/config_bsidessf
Normal file
Binary file not shown.
BIN
private_dotfiles/config/gcloud/configurations/config_default
Executable file
BIN
private_dotfiles/config/gcloud/configurations/config_default
Executable file
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user