mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-15 06:32:40 +00:00
Compare commits
21 Commits
b9f248926b
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
0a59fef11c
|
|||
|
fdf1ba6fb0
|
|||
|
17d83c347d
|
|||
|
c4faef634a
|
|||
|
2795a86441
|
|||
|
03244bd272
|
|||
|
37b97b00f5
|
|||
|
5d6cb3a843
|
|||
|
5561f3ccaf
|
|||
|
3a82ae15df
|
|||
|
d26ca008c0
|
|||
|
d29876b367
|
|||
|
24440f845b
|
|||
|
4a08de9573
|
|||
|
b1c3b16cc6
|
|||
|
b159565288
|
|||
|
df876d2cac
|
|||
|
e052f0c394
|
|||
|
0d916fe960
|
|||
|
1b504cca65
|
|||
|
fb0e4d705b
|
1
TODO.md
1
TODO.md
@@ -27,6 +27,7 @@ A list of in-progress and completed todo's.
|
||||
- [ ] Need to ensure ssh keys are setup before private submodules are loaded / installed,
|
||||
so I need to make sure that Yubikey setup runs early and works for ssh authentication.
|
||||
- [ ] Setup a new machine / virtual machine to test, as it's hard to test the scripts once a machine is setup.
|
||||
- [ ] Need to add `repos` script when bootstrapping.
|
||||
|
||||
### Keyboard / kanata
|
||||
|
||||
|
||||
76
devcontainer-env
Executable file
76
devcontainer-env
Executable file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# Intsalls appropriate dotfiles inside a devcontainer context.
|
||||
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-"$HOME/.config"}
|
||||
DEV_ENV=${DEV_ENV:-$(dirname "${BASH_SOURCE[0]}")}
|
||||
|
||||
if [ ! -d "$DEV_ENV" ]; then
|
||||
echo "[ERROR]: DEV_ENV variable does not exist."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
log() {
|
||||
echo "$*"
|
||||
}
|
||||
|
||||
copy_dir() {
|
||||
local dir=${1:-""}
|
||||
local path="${DEV_ENV}/${dir}"
|
||||
|
||||
if [ -z "$dir" ] || [ ! -d "$path" ]; then
|
||||
log "[ERROR]: Directory does not exist: $dir"
|
||||
exit 1
|
||||
else
|
||||
log "Copying dir: $dir"
|
||||
cp -R "$path" "$XDG_CONFIG_HOME"
|
||||
fi
|
||||
}
|
||||
|
||||
copy_file() {
|
||||
local file=${1:-""}
|
||||
|
||||
if [[ -z "$file" ]] || [[ ! -f "$file" ]]; then
|
||||
log "[ERROR]: file does not exist: $file"
|
||||
exit 1
|
||||
else
|
||||
log "Copying file: $file"
|
||||
cp "$DEV_ENV/$file" "$HOME"
|
||||
fi
|
||||
}
|
||||
|
||||
# MAIN
|
||||
dirs=(
|
||||
env/.config/eza
|
||||
env/.config/git
|
||||
env/.config/ripgrep
|
||||
env/.config/starship
|
||||
env/.config/yazi
|
||||
env/.config/zsh
|
||||
)
|
||||
|
||||
files=(
|
||||
env/.markdownlint.jsonc
|
||||
env/.prettierrc
|
||||
env/.tmux.conf
|
||||
env/.zshenv
|
||||
)
|
||||
|
||||
for dir in "${dirs[@]}"; do
|
||||
copy_dir "$dir"
|
||||
done
|
||||
|
||||
for file in "${files[@]}"; do
|
||||
copy_file "$file"
|
||||
done
|
||||
|
||||
# Install neovim config
|
||||
git submodule update --init --remote env/.config/nvim
|
||||
source env/.config/nvim/install.sh
|
||||
|
||||
# Install my scripts
|
||||
cp -R env/.local/scripts "$HOME/.local"
|
||||
75
env/.config/aap/config.toml
vendored
Normal file
75
env/.config/aap/config.toml
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
# This config is setup for running inside the docker container.
|
||||
#
|
||||
# NOTE:
|
||||
# Configuration settings for the `hpa` command line tool.
|
||||
# You can delete settings that are not applicable to your use case.
|
||||
|
||||
# Default arguments / options that get passed into `ansible-playbook` commands.
|
||||
# WARNING: Do not put arguments / options that contain spaces in the same string,
|
||||
# they should be separate strings, for example do not do something like
|
||||
# ['--tags debug'], instead use ['--tags', 'debug'].
|
||||
#
|
||||
args = ['--tags', 'debug']
|
||||
|
||||
# Set to true if you want to pass the vault args to `ansible-playbook` commands.
|
||||
useVaultArgs = true
|
||||
|
||||
# NOTE:
|
||||
# Configuration for running the generate command(s). This allows custimizations
|
||||
# to the files that get used to generate the final output (generally a pdf).
|
||||
# See `pandoc --help`. Below are the defaults that get used, which only need
|
||||
# adjusted if your template does not follow the default template design or if
|
||||
# you add extra files to your template that need to be included in the final
|
||||
# output. Also be aware that any of the files specified in the `files` or
|
||||
# `includeInHeader` options, need to be inside the `buildDirectory` when generating
|
||||
# the final output file.
|
||||
|
||||
# [generate]
|
||||
# this relative to the project directory.
|
||||
# buildDirectory = '.build'
|
||||
# pdfEngine = 'xelatex'
|
||||
# includeInHeader = [
|
||||
# 'head.tex',
|
||||
# 'footer.tex'
|
||||
# ]
|
||||
# files = [
|
||||
# 'Report.md',
|
||||
# 'Definitions.md'
|
||||
# ]
|
||||
# outputFileName = 'Report'
|
||||
|
||||
# NOTE:
|
||||
# These are more for local development of the ansible playbook and should not be needed
|
||||
# in most cases. Uncomment the lines if you want to customize the playbook and use it
|
||||
# instead of the provided / default playbook.
|
||||
|
||||
[playbook]
|
||||
directory = '/root/.local/share/hpa/playbook'
|
||||
inventory = '/root/.local/share/hpa/playbook/inventory.ini'
|
||||
version = 'main'
|
||||
|
||||
# NOTE:
|
||||
# These are to declare where your template files are either on your local system or
|
||||
# a remote git repository.
|
||||
[template]
|
||||
# The directory path on your local system to the template files.
|
||||
directory = '/root/.local/share/hpa/airflow-assessment-template'
|
||||
vars = 'repo_vars'
|
||||
|
||||
# The url to a git repository that contains your template files.
|
||||
# url = 'https://git.example.com/consult-template.git'
|
||||
|
||||
# The version, tag, branch, or sha of the template files to clone from the remote
|
||||
# template repository. In general it is best practice to use a version instead of a
|
||||
# branch.
|
||||
# version = '1.0.0'
|
||||
|
||||
# NOTE:
|
||||
# Holds settings for `ansible-vault` commands.
|
||||
[vault]
|
||||
# Arguments to pass to commands that use `ansible-vault`, such as encrypting or decrypting
|
||||
# files.
|
||||
args = ['--vault-password-file=/run/secrets/vault-pass']
|
||||
|
||||
# An id to use when encrypting `ansible-vault` files.
|
||||
#encryptId = 'myId'
|
||||
2
env/.config/hypr/hyprautostart.conf
vendored
2
env/.config/hypr/hyprautostart.conf
vendored
@@ -6,7 +6,7 @@
|
||||
# Autostart necessary processes (like notifications daemons, status bars, etc.)
|
||||
# Or execute your favorite apps at launch like this:
|
||||
|
||||
exec-once = pidof hyprpaper | uwsm app -- hyprpaper
|
||||
exec-once = uwsm app -- hyprpaper
|
||||
exec-once = pidof hypridle | uwsm app -- hypridle
|
||||
exec-once = pidof hyprlauncher | uwsm app -- hyprlauncher -d
|
||||
exec-once = pidof swaync | uwsm app -- swaync
|
||||
|
||||
2
env/.config/hypr/hyprmonitors.conf
vendored
2
env/.config/hypr/hyprmonitors.conf
vendored
@@ -4,7 +4,5 @@
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Monitors/
|
||||
monitor= ,preferred,auto,auto
|
||||
#monitor = HDMI-A-1, preferred, 0x0, auto
|
||||
#monitor = HDMI-A-1, preferred, 0x0, 1.66667
|
||||
|
||||
|
||||
|
||||
9
env/.config/hypr/hyprpaper.conf
vendored
9
env/.config/hypr/hyprpaper.conf
vendored
@@ -1,3 +1,6 @@
|
||||
preload = /home/michael/wallpapers/wall1.png
|
||||
wallpaper = ,/home/michael/wallpapers/wall1.png
|
||||
splash = true
|
||||
wallpaper {
|
||||
monitor =
|
||||
path = /home/michael/wallpapers/wall1.png
|
||||
fit_mode = cover
|
||||
}
|
||||
|
||||
|
||||
2
env/.config/hypr/hyprtoolkit.conf
vendored
2
env/.config/hypr/hyprtoolkit.conf
vendored
@@ -1,6 +1,6 @@
|
||||
background = rgb(1e1e2e)
|
||||
base = rgb(b4befe)
|
||||
alternate_base = rgb(cdd6f4))
|
||||
alternate_base = rgb(cdd6f4)
|
||||
text = rgb(cdd6f4)
|
||||
bright_text = rgb(89b4fa)
|
||||
accent = rgb(b4befe)
|
||||
|
||||
82
env/.config/hypr/hyprwindows.conf
vendored
82
env/.config/hypr/hyprwindows.conf
vendored
@@ -4,44 +4,44 @@
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
|
||||
windowrule = float, tag:floating-window
|
||||
windowrule = center, tag:floating-window
|
||||
windowrule = size 60% 60%, tag:floating-window
|
||||
|
||||
# Weather tui
|
||||
windowrule = float, class:^(com.ghostty.weather)$
|
||||
windowrule = center, class:^(com.ghostty.weather)$
|
||||
windowrule = size 90% 80%, class:^(com.ghostty.weather)$
|
||||
|
||||
# Force windows to be a floating window
|
||||
windowrule = tag +floating-window, class:^(blueberry.py|org.gnome.Nautilus|com.ghostty.float)$
|
||||
windowrule = tag +floating-window, class:^(com.ghostty.windowctl)$
|
||||
windowrule = tag +floating-window, class:^(com.ghostty.utils-launcher)$
|
||||
windowrule = tag +floating-window, class:^(com.ghostty.homelab-launcher)$
|
||||
|
||||
# Force to stay focused when visible.
|
||||
windowrule = stayfocused, class:(blueberry.py)
|
||||
windowrule = stayfocused, class:Pinentry.gtk
|
||||
windowrule = stayfocused, class:com.ghostty.float
|
||||
windowrule = stayfocused, class:com.ghostty.windowctl
|
||||
windowrule = stayfocused, class:^(com.ghostty.utils-launcher)$
|
||||
|
||||
# Clipboard history tui in floating window.
|
||||
windowrule = tag +floating-window, class:.*clipse.*
|
||||
windowrule = stayfocused, class:.*clipse.*
|
||||
|
||||
# Ignore maximize requests from apps. You'll probably like this.
|
||||
windowrule = suppressevent maximize, class:.*
|
||||
|
||||
# Just a dash of opacity by default.
|
||||
windowrule = opacity 0.97 0.92, class:.*
|
||||
# No opacity on youtube.
|
||||
windowrule = opacity 1.0, class:.*youtube.com.*
|
||||
|
||||
# Fix some dragging issues with XWayland
|
||||
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
|
||||
# To get more information about a window’s class, title, XWayland status or its size, you can use `hyprctl clients`. (From Hyprland Wiki)
|
||||
windowrulev2 = float,class:^(one.alynx.showmethekey)$
|
||||
windowrulev2 = float,class:^(showmethekey-gtk)$ # make window floating
|
||||
windowrulev2 = pin,class:^(showmethekey-gtk)$ # pin window
|
||||
# windowrule = float, tag:floating-window
|
||||
# windowrule = center, tag:floating-window
|
||||
# windowrule = size 60% 60%, tag:floating-window
|
||||
#
|
||||
# # Weather tui
|
||||
# windowrule = float, class:^(com.ghostty.weather)$
|
||||
# windowrule = center, class:^(com.ghostty.weather)$
|
||||
# windowrule = size 90% 80%, class:^(com.ghostty.weather)$
|
||||
#
|
||||
# # Force windows to be a floating window
|
||||
# windowrule = tag +floating-window, class:^(blueberry.py|org.gnome.Nautilus|com.ghostty.float)$
|
||||
# windowrule = tag +floating-window, class:^(com.ghostty.windowctl)$
|
||||
# windowrule = tag +floating-window, class:^(com.ghostty.utils-launcher)$
|
||||
# windowrule = tag +floating-window, class:^(com.ghostty.homelab-launcher)$
|
||||
#
|
||||
# # Force to stay focused when visible.
|
||||
# windowrule = stayfocused, class:(blueberry.py)
|
||||
# windowrule = stayfocused, class:Pinentry.gtk
|
||||
# windowrule = stayfocused, class:com.ghostty.float
|
||||
# windowrule = stayfocused, class:com.ghostty.windowctl
|
||||
# windowrule = stayfocused, class:^(com.ghostty.utils-launcher)$
|
||||
#
|
||||
# # Clipboard history tui in floating window.
|
||||
# windowrule = tag +floating-window, class:.*clipse.*
|
||||
# windowrule = stayfocused, class:.*clipse.*
|
||||
#
|
||||
# # Ignore maximize requests from apps. You'll probably like this.
|
||||
# windowrule = suppressevent maximize, class:.*
|
||||
#
|
||||
# # Just a dash of opacity by default.
|
||||
# windowrule = opacity 0.97 0.92, class:.*
|
||||
# # No opacity on youtube.
|
||||
# windowrule = opacity 1.0, class:.*youtube.com.*
|
||||
#
|
||||
# # Fix some dragging issues with XWayland
|
||||
# windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0
|
||||
#
|
||||
# # To get more information about a window’s class, title, XWayland status or its size, you can use `hyprctl clients`. (From Hyprland Wiki)
|
||||
# windowrulev2 = float,class:^(one.alynx.showmethekey)$
|
||||
# windowrulev2 = float,class:^(showmethekey-gtk)$ # make window floating
|
||||
# windowrulev2 = pin,class:^(showmethekey-gtk)$ # pin window
|
||||
|
||||
2
env/.config/kanata/voyager.kbd
vendored
2
env/.config/kanata/voyager.kbd
vendored
@@ -27,7 +27,7 @@
|
||||
;; Variables
|
||||
(defvar
|
||||
tap-higher 400
|
||||
tap-time 200
|
||||
tap-time 150
|
||||
tap-time-plus 300
|
||||
hold-time-plus 300
|
||||
hold-time 200
|
||||
|
||||
2
env/.config/nvim
vendored
2
env/.config/nvim
vendored
Submodule env/.config/nvim updated: d1d13fcc8f...da24092050
12
env/.config/starship/starship.toml
vendored
12
env/.config/starship/starship.toml
vendored
@@ -7,7 +7,9 @@ format = """
|
||||
$os\
|
||||
$username\
|
||||
$hostname\
|
||||
[](bg:color_pink fg:color_orange)\
|
||||
[](bg:color_lavender fg:color_orange)\
|
||||
${custom.devpod}\
|
||||
[](bg:color_pink fg:color_lavender)\
|
||||
$directory\
|
||||
[](fg:color_pink bg:color_bg1)\
|
||||
$git_branch\
|
||||
@@ -33,6 +35,14 @@ color_maroon = '#eba0ac'
|
||||
color_pink = '#f5c2e7'
|
||||
color_text = '#585b70'
|
||||
|
||||
[custom.devpod]
|
||||
description = "Displays the active Devpod workspace"
|
||||
command = "echo $(echo $DEVPOD_WORKSPACE_ID | sed 's/.*://')"
|
||||
when = "[[ -n $DEVPOD_WORKSPACE_ID ]]"
|
||||
style = "bold bg:color_lavender fg:color_text"
|
||||
format = "[ 📦 $output ]($style)"
|
||||
disabled = false
|
||||
|
||||
[os]
|
||||
disabled = false
|
||||
style = "bold bg:color_orange fg:color_fg0"
|
||||
|
||||
6
env/.config/zsh/.zshrc
vendored
6
env/.config/zsh/.zshrc
vendored
@@ -176,6 +176,7 @@ alias pc='gopass show --clip' # get an attribute of a password file and
|
||||
alias reload='exec zsh -l' # reload the shell, useful when making changes.
|
||||
alias s='swift' # shorthand to access swift commands
|
||||
alias st='swift test' # swift test
|
||||
alias ste='swift test --enable-code-coverage' # swift test with code coverage enabled.
|
||||
alias sb='swift build' # swift build
|
||||
alias syu='yay -Syu' # Update packages.
|
||||
alias t='tmux' # access tmux quickly
|
||||
@@ -207,6 +208,7 @@ source <(fzf --zsh)
|
||||
_source_if "$ZDOTDIR/.zshrc-local"
|
||||
_source_if "$LOCAL_ENV"
|
||||
_source_if "$SCRIPTS/catppuccin-colors"
|
||||
_source_if "$XDG_DATA_HOME/swiftly/env.sh"
|
||||
|
||||
# pnpm
|
||||
export PNPM_HOME="$XDG_DATA_HOME/pnpm"
|
||||
@@ -237,3 +239,7 @@ use-gpg-agent-for-ssh
|
||||
|
||||
command -v direnv >/dev/null 2>&1 && eval "$(direnv hook zsh)"
|
||||
command -v zoxide >/dev/null 2>&1 && eval "$(zoxide init --cmd cd zsh)"
|
||||
|
||||
if [[ -n "$DEVPOD_WORKSPACE_ID" ]]; then
|
||||
export TERM=xterm-256color
|
||||
fi
|
||||
|
||||
2
env/.config/zsh/functions/dp
vendored
2
env/.config/zsh/functions/dp
vendored
@@ -7,6 +7,6 @@ function dp() {
|
||||
local temperature=$1
|
||||
local humidity=$2
|
||||
|
||||
/opt/homebrew/bin/psychrometrics dew-point --dry-bulb "$temperature" --relative-humidity "$humidity"
|
||||
psychrometrics dew-point --dry-bulb "$temperature" --relative-humidity "$humidity"
|
||||
|
||||
}
|
||||
|
||||
47
env/.local/scripts/aap
vendored
Executable file
47
env/.local/scripts/aap
vendored
Executable file
@@ -0,0 +1,47 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# A wrapper script to run swift-hpa in a docker container and
|
||||
# mount the correct volumes, etc.
|
||||
#
|
||||
# Make sure to run 'hpa-init' first on this machine to setup
|
||||
# dependencies, if you have not done so already.
|
||||
#
|
||||
# To attach to a shell inside the container run:
|
||||
# `hpa bash`
|
||||
#
|
||||
# To run ansible vault commands inside the container run:
|
||||
# `hpa ansible-vault ...`
|
||||
#
|
||||
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
. "$SCRIPTS/utils/hpa/hpa.env"
|
||||
|
||||
############################## MAIN ##############################
|
||||
|
||||
# Don't pull images if they're prefixed with 'localhost'.
|
||||
if echo "$HPA_DOCKER_IMAGE" | grep -vq "localhost"; then
|
||||
|
||||
# Check if we should pull the image prior to running.
|
||||
last_pull="0"
|
||||
if [[ -f "$HPA_AIRFLOW_CONFIG_DIR/.lastpull" ]]; then
|
||||
last_pull=$(cat "$HPA_AIRFLOW_CONFIG_DIR/.lastpull")
|
||||
fi
|
||||
curr=$(date +%s)
|
||||
diff=$((curr - last_pull))
|
||||
|
||||
if [[ $HPA_AUTO_PULL == "1" ]] && [[ $diff -gt "$HPA_AUTO_PULL_INTERVAL" ]]; then
|
||||
. "$SCRIPTS/hpa-pull" "$HPA_AUTO_PULL_OPTS"
|
||||
fi
|
||||
fi
|
||||
|
||||
podman run --rm --interactive --tty \
|
||||
--volume "$HPA_AIRFLOW_CONFIG_DIR":/root/.config/hpa:ro \
|
||||
--volume "$HPA_DATA_DIR":/root/.local/share/hpa:ro \
|
||||
--volume "$HPA_CONSULTS_DIR":/consults \
|
||||
--volume "$PWD":/root/project \
|
||||
--secret "$HPA_VAULT_SECRET_KEY" \
|
||||
"$HPA_DOCKER_IMAGE:$HPA_DOCKER_TAG" "$@"
|
||||
2
env/.local/scripts/hpa
vendored
2
env/.local/scripts/hpa
vendored
@@ -38,6 +38,8 @@ if echo "$HPA_DOCKER_IMAGE" | grep -vq "localhost"; then
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "ARGS: $@"
|
||||
|
||||
podman run --rm --interactive --tty \
|
||||
--volume "$HPA_CONFIG_DIR":/root/.config/hpa:ro \
|
||||
--volume "$HPA_DATA_DIR":/root/.local/share/hpa:ro \
|
||||
|
||||
1
env/.local/scripts/hpa-create
vendored
1
env/.local/scripts/hpa-create
vendored
@@ -6,5 +6,6 @@ first_arg=${1:-""}
|
||||
if [[ $first_arg == "-h" ]] || [[ $first_arg == "--help" ]]; then
|
||||
. "$script" $*
|
||||
else
|
||||
# bash -c "$script $*" | tr -d '\r' | head -1
|
||||
gum spin --show-output --title "$title" -- bash -c "$script $*" | tr -d '\r' | head -1
|
||||
fi
|
||||
|
||||
1
env/.local/scripts/hpa-init
vendored
1
env/.local/scripts/hpa-init
vendored
@@ -94,4 +94,5 @@ else
|
||||
log "Cloning required template and playbook, if they don't exist"
|
||||
[[ ! -d "$HPA_PLAYBOOK_DIR" ]] && git clone "$HPA_PLAYBOOK_URL" "$HPA_PLAYBOOK_DIR"
|
||||
[[ ! -d "$HPA_CONSULT_TEMPLATE_DIR" ]] && git clone "$HPA_CONSULT_TEMPLATE_URL" "$HPA_CONSULT_TEMPLATE_DIR"
|
||||
[[ ! -d "$HPA_AIRFLOW_TEMPLATE_DIR" ]] && git clone "$HPA_AIRFLOW_TEMPLATE_URL" "$HPA_AIRFLOW_TEMPLATE_DIR"
|
||||
fi
|
||||
|
||||
4
env/.local/scripts/hpa-pull
vendored
4
env/.local/scripts/hpa-pull
vendored
@@ -63,6 +63,9 @@ pull-playbook() {
|
||||
pull-template() {
|
||||
log --echo "Pulling template: '$HPA_CONSULT_TEMPLATE_DIR'"
|
||||
pull-repo "$HPA_CONSULT_TEMPLATE_DIR"
|
||||
|
||||
log --echo "Pulling airflow assessment template: '$HPA_AIRFLOW_TEMPLATE_DIR'"
|
||||
pull-repo "$HPA_AIRFLOW_TEMPLATE_DIR"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
@@ -106,3 +109,4 @@ fi
|
||||
[[ $playbook_flag == "1" ]] && pull-playbook
|
||||
[[ $template_flag == "1" ]] && pull-template
|
||||
date +%s >"$HPA_CONFIG_DIR/.lastpull"
|
||||
date +%s >"$HPA_AIRFLOW_CONFIG_DIR/.lastpull"
|
||||
|
||||
32
env/.local/scripts/utils/hpa/hpa-create
vendored
32
env/.local/scripts/utils/hpa/hpa-create
vendored
@@ -17,7 +17,8 @@ LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
# Load environment / shared variables.
|
||||
. "$SCRIPTS/utils/hpa/hpa.env"
|
||||
|
||||
declare no_git_flag no_push_flag date_opt
|
||||
declare airflow_flag no_git_flag no_push_flag date_opt
|
||||
airflow_flag="0"
|
||||
no_git_flag="0"
|
||||
no_push_flag="0"
|
||||
date_opt=$(date '+%Y.%m.%d')
|
||||
@@ -25,7 +26,8 @@ date_opt=$(date '+%Y.%m.%d')
|
||||
usage() {
|
||||
cat <<EOF
|
||||
|
||||
A utility script to generate a new home performance assessment project.
|
||||
A utility script to generate a new home performance assessment project or
|
||||
airflow assessment project.
|
||||
|
||||
All output from the 'hpa' command get suppressed so that this script can
|
||||
be piped / used to automatically cd into the directory after creation to
|
||||
@@ -41,6 +43,7 @@ USAGE:
|
||||
$ $THIS <flags> <customer>
|
||||
|
||||
FLAGS:
|
||||
-a | --airflow: Generate using the airflow assessment project template.
|
||||
-d | --date: Override the date the project was started.
|
||||
-g | --no-git: Do not initialize a git repository for the project.
|
||||
-h | --help: Show this help page.
|
||||
@@ -62,21 +65,32 @@ log() {
|
||||
}
|
||||
|
||||
create() {
|
||||
local customer container_dir
|
||||
local customer container_dir script suffix
|
||||
customer=${1:-""}
|
||||
|
||||
[[ -z $customer ]] &&
|
||||
log --error "Must supply a customer name for the project" &&
|
||||
exit 1
|
||||
|
||||
[[ ! -f $SCRIPTS/hpa ]] &&
|
||||
log --error "Unable to find the 'hpa' script." &&
|
||||
exit 1
|
||||
|
||||
log "Generating project for: '$customer'"
|
||||
|
||||
# Setup approriate configuration and project suffix.
|
||||
if [[ $airflow_flag == "1" ]]; then
|
||||
suffix="AAP"
|
||||
script="$SCRIPTS/aap"
|
||||
else
|
||||
suffix="HPA"
|
||||
script="$SCRIPTS/hpa"
|
||||
fi
|
||||
|
||||
[[ ! -f $SCRIPTS/hpa ]] &&
|
||||
log --error "Unable to find the script: '$script'." &&
|
||||
exit 1
|
||||
|
||||
log "Using script: '$script'"
|
||||
|
||||
container_dir=$(
|
||||
"$SCRIPTS/hpa" create --quiet "/consults/$date_opt.$customer"
|
||||
"$script" create --quiet "/consults/$date_opt.$customer.$suffix"
|
||||
)
|
||||
echo "$HPA_CONSULTS_DIR/$(basename "$container_dir")"
|
||||
}
|
||||
@@ -129,6 +143,8 @@ declare customer output
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "-a" ]] || [[ $1 == "--airflow" ]]; then
|
||||
airflow_flag="1"
|
||||
elif [[ $1 == "-d" ]] || [[ $1 == "--date" ]]; then
|
||||
shift
|
||||
date_opt="$1"
|
||||
|
||||
8
env/.local/scripts/utils/hpa/hpa.env
vendored
8
env/.local/scripts/utils/hpa/hpa.env
vendored
@@ -33,6 +33,11 @@ HPA_CONSULT_ORIGIN_BASE_URL=${CONSULT_ORIGIN_BASE_URL:-"ssh://git@git.housh.dev:
|
||||
HPA_CONSULT_TEMPLATE_DIR=${HPA_DATA_DIR}/template
|
||||
HPA_CONSULT_TEMPLATE_URL="ssh://git@git.housh.dev:2222/hhe/consult-template.git"
|
||||
|
||||
# Airflow assessment vars.
|
||||
HPA_AIRFLOW_CONFIG_DIR="${XDG_CONFIG_HOME}/aap"
|
||||
HPA_AIRFLOW_TEMPLATE_DIR="${HPA_DATA_DIR}/airflow-assessment-template"
|
||||
HPA_AIRFLOW_TEMPLATE_URL="ssh://git@git.housh.dev:2222/hhe/airflow-assessment-template.git"
|
||||
|
||||
export HPA_AUTO_PULL
|
||||
export HPA_AUTO_PULL_INTERVAL
|
||||
export HPA_AUTO_PULL_OPTS
|
||||
@@ -47,3 +52,6 @@ export HPA_DOCKER_TAG
|
||||
export HPA_PLAYBOOK_URL
|
||||
export HPA_PLAYBOOK_DIR
|
||||
export HPA_VAULT_SECRET_KEY
|
||||
export HPA_AIRFLOW_CONFIG_DIR
|
||||
export HPA_AIRFLOW_TEMPLATE_DIR
|
||||
export HPA_AIRFLOW_TEMPLATE_URL
|
||||
|
||||
3
env/.zshenv
vendored
3
env/.zshenv
vendored
@@ -87,5 +87,8 @@ export STARSHIP_CONFIG="$XDG_CONFIG_HOME/starship/starship.toml"
|
||||
export _ZO_DATA_DIR="$XDG_DATA_HOME"
|
||||
unset _ZO_ECHO
|
||||
|
||||
# Suppress swift backtrace warnings.
|
||||
export SWIFT_BACTRACE=enable=no
|
||||
|
||||
[ -f "$LOCAL_ENV" ] && source "$LOCAL_ENV"
|
||||
[ -f "$ZDOTDIR/personal.env" ] && source "$ZDOTDIR/personal.env"
|
||||
|
||||
9
env/smbcredentials.gpg
vendored
Normal file
9
env/smbcredentials.gpg
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hF4DAAAAAAAAAAASAQdAvYM4C8bwyey5d33bXjxKnWe0dIsnk0j5KTpe3TzrLHUw
|
||||
xWF1m3TwpgyRA6LiRHukJ9McoNwRQ7xCdp6XSF+7crNBQWj64/fm1fVymBcv5EkK
|
||||
0ngBJ3I46PcNoVfjCh+1PmSzHFh3ahLU8u95FCL+IbvIrD0DdzntdNAthFSaiHuH
|
||||
DrXiHhGkxuRj0UHi95DF3xi6ODrvC56xTg1jWKzzB+/LuZ6GKSPYd3u/iYmPn76y
|
||||
wiFck8SezOvP0o71tcLa56SQgzSBiDTHL3A=
|
||||
=8OSr
|
||||
-----END PGP MESSAGE-----
|
||||
56
repos
Executable file
56
repos
Executable file
@@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
DEST="$HOME/dev"
|
||||
dry_run_flag="0"
|
||||
|
||||
log() {
|
||||
if [[ $dry_run_flag == "1" ]]; then
|
||||
echo "[DRY RUN]: $*"
|
||||
else
|
||||
echo "$*"
|
||||
fi
|
||||
}
|
||||
|
||||
clone() {
|
||||
local src=${1:-""}
|
||||
local dest=${2:-$DEST}
|
||||
log "Cloning '$src' in '$dest'"
|
||||
if [[ $dry_run_flag == "0" ]]; then
|
||||
pushd "$dest" || exit 1 &>/dev/null
|
||||
(
|
||||
git clone "$src"
|
||||
)
|
||||
popd &>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
install-psychrometrics() {
|
||||
log "Installing psychrometrics cli."
|
||||
if [[ $dry_run_flag == "0" ]]; then
|
||||
local src="$DEST/psychrometrics-cli"
|
||||
pushd "$src" || exit 1 &>/dev/null
|
||||
(
|
||||
./install-linux.sh
|
||||
)
|
||||
popd &>/dev/null
|
||||
rm -rf "$src"
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
##### MAIN #####
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 =~ ^-d ]] || [[ $1 =~ ^--dry ]]; then
|
||||
dry_run_flag="1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
mkdir -p "$DEST/sites" &>/dev/null
|
||||
clone "git@github.com:m-housh/mhoush.com.git" "$DEST/sites"
|
||||
clone "git@github.com:swift-psychrometrics/psychrometrics-cli.git" && install-psychrometrics
|
||||
@@ -8,25 +8,29 @@ set -o pipefail
|
||||
# installed yet.
|
||||
SCRIPTS="${DEV_ENV}/env/.local/scripts"
|
||||
|
||||
_ensure_mount() {
|
||||
local line=${1:-""}
|
||||
local mount=${2:-""}
|
||||
if [[ -n $line ]] && [[ -d $mount ]]; then
|
||||
if sudo cat /etc/fstab | grep -vq "$line"; then
|
||||
log " Setting up nas mount."
|
||||
# sudo mkdir -p $mount &>/dev/null
|
||||
echo "$line" | sudo tee --append /etc/fstab
|
||||
sudo systemctl daemon-reload
|
||||
sudo mount -a ||
|
||||
log --warning "You will need to make sure this computer's ip is in the allow list, then run 'sudo mount -a'"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_setup-mounts() {
|
||||
local line="nas.housh.dev:/var/nfs/shared/michael_share /mnt/michael nfs defaults 0 0"
|
||||
if sudo cat /etc/fstab | grep -vq "$line"; then
|
||||
log " Setting up nas mount."
|
||||
sudo mkdir -p /mnt/michael &>/dev/null
|
||||
echo "$line" | sudo tee --append /etc/fstab
|
||||
sudo systemctl daemon-reload
|
||||
sudo mount -a ||
|
||||
log --warning "You will need to make sure this computer's ip is in the allow list, then run 'sudo mount -a'"
|
||||
fi
|
||||
line="nas.housh.dev:/var/nfs/shared/Customer_Share /mnt/customers nfs defaults 0 0"
|
||||
if sudo cat /etc/fstab | grep -vq "$line"; then
|
||||
log " Setting up nas mount."
|
||||
sudo mkdir -p /mnt/customers &>/dev/null
|
||||
echo "$line" | sudo tee --append /etc/fstab
|
||||
sudo systemctl daemon-reload
|
||||
sudo mount -a ||
|
||||
log --warning "You will need to make sure this computer's ip is in the allow list, then run 'sudo mount -a'"
|
||||
fi
|
||||
|
||||
sudo mkdir -p /mnt/{michael,customers} &>/dev/null
|
||||
mkdir -p "$HOME/work" &>/dev/null
|
||||
|
||||
_ensure_mount "nas.housh.dev:/var/nfs/shared/michael_share /mnt/michael nfs defaults 0 0" /mnt/michael
|
||||
_ensure_mount "//nas.housh.dev/michael_share/work $HOME/work cifs credentials=$HOME/.config/.smbcredentials,uid=$(id -u),gid=$(id -g),iocharset=utf8 0 0" "$HOME/work"
|
||||
_ensure_mount "nas.housh.dev:/var/nfs/shared/Customer_Share /mnt/customers nfs defaults 0 0" /mnt/customers
|
||||
}
|
||||
|
||||
_setup-kanata() {
|
||||
@@ -65,7 +69,9 @@ _setup-home-dir() {
|
||||
log " Setting up home directory."
|
||||
rm -rf "$HOME/Desktop" &>/dev/null
|
||||
mkdir "$HOME/{containers,dev}" &>/dev/null
|
||||
mkdir -p "$HOME/work/consults" &>/dev/null
|
||||
mkdir -p "$HOME/work" &>/dev/null
|
||||
gpg --decrypt --output "$HOME/.config/.smbcredentials" "$DEV_ENV/env/smbcredentials.gpg"
|
||||
chmod 600 "$HOME/.config/.smbcredentials"
|
||||
}
|
||||
|
||||
install() {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
# Packages to install / uninstall with this run
|
||||
catppuccin-gtk-theme-mocha
|
||||
cifs-utils
|
||||
kanata
|
||||
nwg-look
|
||||
wl-clipboard
|
||||
|
||||
Reference in New Issue
Block a user