mirror of
https://github.com/m-housh/dotfiles.git
synced 2026-02-15 14:42:37 +00:00
Compare commits
75 Commits
af7b46efa5
...
arch
| Author | SHA1 | Date | |
|---|---|---|---|
|
5d6cb3a843
|
|||
|
5561f3ccaf
|
|||
|
3a82ae15df
|
|||
|
d26ca008c0
|
|||
|
d29876b367
|
|||
|
24440f845b
|
|||
|
4a08de9573
|
|||
|
b1c3b16cc6
|
|||
|
b159565288
|
|||
|
df876d2cac
|
|||
|
e052f0c394
|
|||
|
0d916fe960
|
|||
|
1b504cca65
|
|||
|
fb0e4d705b
|
|||
|
b9f248926b
|
|||
|
f798ef2e4e
|
|||
|
fa47fcaed7
|
|||
|
f39a9113d6
|
|||
|
207e4469b2
|
|||
|
047c241df8
|
|||
|
b8bf70f117
|
|||
|
bec884f866
|
|||
|
943427b3e1
|
|||
|
eae3bfbc90
|
|||
|
6621475808
|
|||
|
090a0681ca
|
|||
|
3acaf486c0
|
|||
|
80c6eefe8c
|
|||
|
0c80780ade
|
|||
|
5ea0ef74e4
|
|||
|
5bad99f712
|
|||
|
44aec09d62
|
|||
|
a0dcba3810
|
|||
|
7356d129cc
|
|||
|
eece231724
|
|||
|
3446460827
|
|||
|
1e60f88ec4
|
|||
|
45666a5911
|
|||
|
46186e2741
|
|||
|
fe25f1bf19
|
|||
|
c8212b7587
|
|||
|
4b674c40c9
|
|||
|
8daa596205
|
|||
|
9977a8806b
|
|||
|
c667bfb8ee
|
|||
|
2ed9208e6a
|
|||
|
0be8bcd1a2
|
|||
|
dcb186393e
|
|||
|
b7ce95dc66
|
|||
|
358b9719f1
|
|||
|
89b12fc5fa
|
|||
|
23a27446df
|
|||
|
c44c2cf5ea
|
|||
|
9d6b99206a
|
|||
|
d19a33f4f0
|
|||
|
9c7d395c6b
|
|||
|
2f9c68acfb
|
|||
|
df109c3803
|
|||
|
cbe53484fa
|
|||
|
2aa9f4e839
|
|||
|
ad593bc25f
|
|||
|
790ba581aa
|
|||
|
e57262b4d3
|
|||
|
e63e4f4fab
|
|||
|
86d3a54e3b
|
|||
|
cf05f11759
|
|||
|
059dba6f18
|
|||
|
00c9c77bcc
|
|||
|
52cbe2ad89
|
|||
|
f1b65e955e
|
|||
|
3c98a008c8
|
|||
|
74011a46bc
|
|||
|
e972dd331c
|
|||
|
9c007c9434
|
|||
|
381a0450e5
|
4
.prettierrc
Normal file
4
.prettierrc
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"proseWrap": "always"
|
||||
"printWidth": 100
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
proseWrap: always
|
||||
printWidth: 120
|
||||
38
TODO.md
38
TODO.md
@@ -1,5 +1,7 @@
|
||||
# TODO
|
||||
|
||||
A list of in-progress and completed todo's.
|
||||
|
||||
## Arch Todos
|
||||
|
||||
- [ ] Update README, it's way out of date.
|
||||
@@ -10,28 +12,48 @@
|
||||
config in the dotfiles, but works if I use the default config. Need to explore
|
||||
why (current thoughts are it has to do with creating the
|
||||
clipboard_history.json file and not letting clipse do it automatically).
|
||||
- [ ] Need to confirm bootstrap does things properly with git submodules.
|
||||
- [x] Need to add the following system packages for neovim/render-markdown.nvim
|
||||
- [x] `libtexprintf`
|
||||
- [ ] Add pipewire-zeroconf to runs.
|
||||
- [ ] Setup pipewire config to allow streaming output to homepod's.
|
||||
- [See arch.wiki](https://wiki.archlinux.org/title/PipeWire)
|
||||
|
||||
### Bootstrapping a new machine
|
||||
|
||||
- [ ] Need to confirm bootstrap does things properly with git submodules. Currently the
|
||||
system run handles installing packages needed for my yubikey, probably need to automate
|
||||
installing the public key into the keyring.
|
||||
- [x] Add gpg public key import into `runs/after/system`
|
||||
- [ ] 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.
|
||||
- [ ] Need to add the following system packages for neovim/render-markdown.nvim
|
||||
- [ ] `libtexprintf`
|
||||
- [ ] 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
|
||||
|
||||
- [ ] Move keyboard (kanata) systemd service to be started as a '--user' service, as
|
||||
- [x] Move keyboard (kanata) systemd service to be started as a '--user' service, as
|
||||
it seems to not work when used on a desktop (mac mini) vs. laptop.
|
||||
- [ ] Need to update kanatactl to generate udev rules, etc. (see
|
||||
- [x] Need to update kanatactl to generate udev rules, etc. (see
|
||||
here)[https://github.com/jtroo/kanata/blob/main/docs/setup-linux.md]
|
||||
- [ ] Need to rethink symbol / number keyboard layers.
|
||||
- [ ] Move symbols to their own layer.
|
||||
- [ ] I would like to have a symbols layer that I can hold modifier keys with a symbol
|
||||
and would also like to possibly pass through underlying key / experiment so that
|
||||
I can use default keybinds in certain applications (i.e. neovim `[b`, etc.).
|
||||
- [x] Remove pkg sub-commands from kanatactl, it is available via package manager now.
|
||||
|
||||
### Runs (package installs)
|
||||
|
||||
- [ ] Should runs just export / echo a list of packages, then the `run` script can handle the package
|
||||
- [x] Should runs just export / echo a list of packages, then the `run` script can handle the package
|
||||
manager options / command.
|
||||
- [ ] Think about adding an `after` directory for runs, so that they can perform setup tasks after
|
||||
- [x] Think about adding a `before` and an `after` directory for runs, so that they can perform setup tasks after
|
||||
the packages are installed.
|
||||
- [ ] The `after` file should have the same name as the `run` file.
|
||||
- [x] The `before` and `after` file should have the same name as the `run` file.
|
||||
- [ ] This could allow to remove / move the `system` script into the `after` directory.
|
||||
- [ ] Look into install packages with `nvim --headless`, not sure if this possible when using the new package
|
||||
manager builtin to neovim as it prompts for user input to install packages.
|
||||
- With lazy this was done with `nvim --headless "+Lazy! sync" +qa`
|
||||
|
||||
### Mail
|
||||
|
||||
- [ ] Remove outlook / office email setup, this has been moved to proton.
|
||||
|
||||
@@ -23,7 +23,8 @@ done
|
||||
echo "Args to bootstrap scripts: $args"
|
||||
echo "Installing packages may require your password multiple times."
|
||||
|
||||
echo "Running packages" && $DEV_ENV/run "$args"
|
||||
echo "Installing configuration" && $DEV_ENV/dev-env "$args"
|
||||
# TODO: Need to run system run early, then once ssh keys are setup pull
|
||||
# git submodules, then run config install again.
|
||||
echo "Running packages" && $DEV_ENV/run "$args"
|
||||
echo "Installing webapps" && $DEV_ENV/webapp "$args"
|
||||
echo "Starting system services" && $DEV_ENV/system "$args"
|
||||
|
||||
7
dev-env
7
dev-env
@@ -119,11 +119,12 @@ update_dirs $DEV_ENV/env/.local $HOME/.local
|
||||
|
||||
# SCRIPTS
|
||||
mkdir -p ~/.local/scripts/{hypr,utils} >/dev/null 2>&1
|
||||
mkdir -p ~/.local/scripts/utils/{kanatactl,hpa} >/dev/null 2>&1
|
||||
mkdir -p ~/.local/scripts/utils/{kanatactl,hpa,shorten-url} >/dev/null 2>&1
|
||||
update_dirs $DEV_ENV/env/.local/scripts/hypr $HOME/.local/scripts/hypr
|
||||
copy_files $DEV_ENV/env/.local/scripts/hypr $HOME/.local/scripts/hypr
|
||||
copy_files "$DEV_ENV/env/.local/scripts/utils/kanatactl" "$HOME/.local/scripts/utils/kanatactl"
|
||||
copy_files "$DEV_ENV/env/.local/scripts/utils/hpa" "$HOME/.local/scripts/utils/hpa"
|
||||
copy_files "$DEV_ENV/env/.local/scripts/utils/shorten-url" "$HOME/.local/scripts/utils/shorten-url"
|
||||
copy_files $DEV_ENV/env/.local/scripts $HOME/.local/scripts
|
||||
|
||||
# SYSTEMD
|
||||
@@ -153,8 +154,8 @@ copy_files $DEV_ENV/env/wallpapers $HOME/wallpapers
|
||||
mkdir $HOME/Pictures >/dev/null 2>&1
|
||||
mkdir -p $XDG_DATA_HOME/clipse/tmp_files
|
||||
copy $DEV_ENV/dev-env $HOME/.local/scripts/dev-env
|
||||
copy $DEV_ENV/env/.markdownlint.jsonc $HOME/.makrdownlint.jsonc
|
||||
copy $DEV_ENV/env/.prettierrc.yaml $HOME/.prettierrc.yaml
|
||||
copy $DEV_ENV/env/.markdownlint.jsonc $HOME/.markdownlint.jsonc
|
||||
copy $DEV_ENV/env/.prettierrc $HOME/.prettierrc
|
||||
|
||||
mkdir -p $XDG_DATA_HOME/applications/icons
|
||||
copy_files $DEV_ENV/env/.local/share/applications $XDG_DATA_HOME/applications
|
||||
|
||||
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:-""}
|
||||
|
||||
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/ghostty/config
vendored
2
env/.config/ghostty/config
vendored
@@ -3,7 +3,7 @@ theme = Catppuccin Mocha
|
||||
confirm-close-surface = false
|
||||
|
||||
font-family = "Fira Code"
|
||||
font-size = 13
|
||||
font-size = 18
|
||||
font-thicken = false
|
||||
|
||||
window-save-state = always
|
||||
|
||||
4
env/.config/git/config
vendored
4
env/.config/git/config
vendored
@@ -30,6 +30,7 @@
|
||||
default = simple
|
||||
autoSetupRemote = true
|
||||
followTags = true
|
||||
recurseSubmodules = on-demand
|
||||
|
||||
[fetch]
|
||||
prune = true
|
||||
@@ -65,3 +66,6 @@
|
||||
autoSquash = true
|
||||
autoStash = true
|
||||
updateRefs = true
|
||||
|
||||
[submodule]
|
||||
recurse = true
|
||||
|
||||
7
env/.config/hpa/config.toml
vendored
7
env/.config/hpa/config.toml
vendored
@@ -44,8 +44,8 @@ useVaultArgs = true
|
||||
# instead of the provided / default playbook.
|
||||
|
||||
[playbook]
|
||||
directory = '~/.local/share/hpa/playbook'
|
||||
inventory = '~/.local/share/hpa/playbook/inventory.ini'
|
||||
directory = '/root/.local/share/hpa/playbook'
|
||||
inventory = '/root/.local/share/hpa/playbook/inventory.ini'
|
||||
version = 'main'
|
||||
|
||||
# NOTE:
|
||||
@@ -53,7 +53,8 @@ version = 'main'
|
||||
# a remote git repository.
|
||||
[template]
|
||||
# The directory path on your local system to the template files.
|
||||
directory = '~/.local/share/hpa/template'
|
||||
directory = '/root/.local/share/hpa/template'
|
||||
vars = 'repo_vars'
|
||||
|
||||
# The url to a git repository that contains your template files.
|
||||
# url = 'https://git.example.com/consult-template.git'
|
||||
|
||||
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/hyprinput.conf
vendored
2
env/.config/hypr/hyprinput.conf
vendored
@@ -11,7 +11,7 @@ input {
|
||||
kb_rules =
|
||||
|
||||
repeat_rate = 50
|
||||
repeat_delay = 175
|
||||
repeat_delay = 200
|
||||
|
||||
follow_mouse = 2
|
||||
|
||||
|
||||
11
env/.config/hypr/hyprkeybinds.conf
vendored
11
env/.config/hypr/hyprkeybinds.conf
vendored
@@ -16,7 +16,7 @@ $fileManager = $terminal -e yazi
|
||||
$fileBrowser = uwsm app -- nautilus
|
||||
$menu = hyprlauncher
|
||||
$scripts = ~/.local/scripts/hypr
|
||||
$pwa = $scripts/launch-webapp
|
||||
$pwa = $scripts/webapp launch
|
||||
$tmuxSessionator = ~/.local/scripts/tmux-sessionator
|
||||
$clipboardHistory = com.ghostty.clipse $terminal --class=com.ghostty.clipse -e clipse
|
||||
$uninstallDesktop = $terminal --class=com.ghostty.float -e $scripts/uninstall-desktop-app
|
||||
@@ -41,9 +41,9 @@ bindd = $mainMod, A, [A]i - launch / focus, exec,
|
||||
bindd = $mainMod SHIFT, A, [A]i - new window, exec, $pwa "https://ollama.housh.dev"
|
||||
bindd = $mainMod, B, New [b]rowser, exec, $browser
|
||||
bindd = $mainMod SHIFT, B, New private [b]rowser, exec, $browser --incognito
|
||||
bindd = $mainMod, C, [C]alendar, exec, $pwa --or-focus "https://www.icloud.com/calendar"
|
||||
bindd = $mainMod, C, [C]alendar, togglespecialworkspace, calendar
|
||||
bindd = $mainMod SHIFT, C, [C]onfig folder in tmux session, exec, $terminal -e $tmuxSessionator ~/.config
|
||||
bindd = $mainMod, D, [D]ispatch app - special workspace, exec, $pwa --special dispatch $housecallPro
|
||||
bindd = $mainMod, D, [D]ispatch app - special workspace, togglespecialworkspace, dispatch
|
||||
bindd = $mainMod SHIFT, D, [D]ispatch app - new window, exec, $pwa --new $housecallPro
|
||||
bindd = $mainMod, E, [E]mail - personal, exec, $pwa --or-focus "https://mail.proton.me"
|
||||
bindd = $mainMod SHIFT, E, [E]mail - work, exec, $scripts/launch --or-focus thunderbird uwsm app -- thunderbird
|
||||
@@ -53,14 +53,15 @@ bindd = $mainMod, G, [G]itea, exec,
|
||||
bindd = $mainMod SHIFT, G, [G]ithub, exec, $pwa --or-focus "https://github.com"
|
||||
bindd = $mainMod, H, Focus window - left, movefocus, l # move window focus using vim keys
|
||||
bindd = $mainMod SHIFT, H, Workspace - back, workspace, -1
|
||||
bindd = $mainMod, I, Localsend, exec, $scripts/launch --or-close localsend uwsm app -- localsend
|
||||
bindd = $mainMod, J, Focus window - down, movefocus, d # move window focus using vim keys
|
||||
bindd = $mainMod, K, Focus window - up, movefocus, u # move window focus using vim keys
|
||||
bindd = $mainMod, L, Focus window - right, movefocus, r # move window focus using vim keys
|
||||
bindd = $mainMod SHIFT, L, Workspace - forward, workspace, +1
|
||||
bindd = $mainMod, M, [M]usic - apple, exec, $pwa --special music "https://music.apple.com"
|
||||
bindd = $mainMod, M, [M]usic - jellyfin-tui, togglespecialworkspace, music
|
||||
bindd = $mainMod SHIFT, M, [M]enu bar - toggle visible, exec, $scripts/waybarctl --toggle
|
||||
bindd = $mainMod, O, Purchase [o]rders, exec, $pwa --special dispatch "https://po.housh.dev"
|
||||
bindd = $mainMod, P, [P]assword manager, exec, $pwa --special pass "https://pass.proton.me"
|
||||
bindd = $mainMod, P, [P]assword manager, togglespecialworkspace, pass
|
||||
bindd = $mainMod SHIFT, P, [P]hotos, exec, $pwa --or-focus "https://photos.housh.dev"
|
||||
bindd = $mainMod SHIFT, R, [R]estart menu bar, exec, $scripts/waybarctl --restart
|
||||
bindd = $mainMod, S, Toggle [s]pecial workspace, togglespecialworkspace, magic # use $windowMod S to send window to the special workspace
|
||||
|
||||
1
env/.config/hypr/hyprland.conf
vendored
1
env/.config/hypr/hyprland.conf
vendored
@@ -9,6 +9,7 @@
|
||||
source = ~/.config/hypr/hyprenv.conf
|
||||
source = ~/.config/hypr/hyprmonitors.conf
|
||||
source = ~/.config/hypr/hyprwindows.conf
|
||||
source = ~/.config/hypr/hyprworkspaces.conf
|
||||
source = ~/.config/hypr/hyprkeybinds.conf
|
||||
source = ~/.config/hypr/hyprinput.conf
|
||||
source = ~/.config/hypr/hyprautostart.conf
|
||||
|
||||
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
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
89
env/.config/hypr/hyprwindows.conf
vendored
89
env/.config/hypr/hyprwindows.conf
vendored
@@ -1,48 +1,47 @@
|
||||
##############################
|
||||
### WINDOWS AND WORKSPACES ###
|
||||
##############################
|
||||
###############
|
||||
### WINDOWS ###
|
||||
###############
|
||||
|
||||
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# windowrule = float, tag:floating-window
|
||||
# windowrule = center, tag:floating-window
|
||||
# windowrule = size 60% 60%, tag:floating-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
|
||||
|
||||
workspace = special:hidden, invisible
|
||||
workspace = special:pass, class:.*pass.proton.me.*
|
||||
workspace = special:dispatch, class:.*pro.housecallpro.com.*
|
||||
# # 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
|
||||
|
||||
25
env/.config/hypr/hyprworkspaces.conf
vendored
25
env/.config/hypr/hyprworkspaces.conf
vendored
@@ -1,14 +1,15 @@
|
||||
##################
|
||||
### WORKSPACES ###
|
||||
##################
|
||||
|
||||
# Set work spaces 1-5 to be on external monitor
|
||||
workspace = 1, monitor:1
|
||||
workspace = 2, monitor:1
|
||||
workspace = 3, monitor:1
|
||||
workspace = 4, monitor:1
|
||||
workspace = 5, monitor:1
|
||||
# See https://wiki.hyprland.org/Configuring/Workspace-Rules/ for workspace rules
|
||||
|
||||
# Set work spaces 6-10 to be on internal monitor
|
||||
workspace = 6, monitor:0
|
||||
workspace = 7, monitor:0
|
||||
workspace = 8, monitor:0
|
||||
workspace = 9, monitor:0
|
||||
workspace = 10, monitor:0
|
||||
$scripts = ~/.local/scripts/hypr
|
||||
$pwa = $scripts/webapp launch
|
||||
$housecallPro = $pwa "https://pro.housecallpro.com/app/calendar_new"
|
||||
|
||||
workspace = special:hidden, invisible
|
||||
workspace = special:pass,on-created-empty: $pwa "https://pass.proton.me"
|
||||
workspace = special:dispatch,on-created-empty: $housecallPro && $housecallPro
|
||||
workspace = special:music,on-created-empty: ghostty --class=com.ghostty.music -e jellyfin-tui
|
||||
workspace = special:calendar,on-created-empty: uwsm app -- gnome-calendar
|
||||
|
||||
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: 03aaaa6f74...5f3d1733e7
9
env/.config/waybar/config.jsonc
vendored
9
env/.config/waybar/config.jsonc
vendored
@@ -6,6 +6,7 @@
|
||||
"modules-center": ["clock"],
|
||||
"modules-right": [
|
||||
"pulseaudio",
|
||||
"idle_inhibitor",
|
||||
"tray",
|
||||
"cpu",
|
||||
"memory",
|
||||
@@ -75,5 +76,13 @@
|
||||
// "format-good": "", // An empty format will hide the module
|
||||
// "format-full": "",
|
||||
"format-icons": ["", "", "", "", ""],
|
||||
},
|
||||
"idle_inhibitor": {
|
||||
"format": "{icon}",
|
||||
"format-icons": {
|
||||
"activated": "",
|
||||
"deactivated": ""
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
9
env/.config/waybar/style.css
vendored
9
env/.config/waybar/style.css
vendored
@@ -54,7 +54,8 @@
|
||||
#cpu,
|
||||
#memory,
|
||||
#custom-lock,
|
||||
#custom-power {
|
||||
#custom-power,
|
||||
#idle_inhibitor {
|
||||
background-color: @background;
|
||||
padding: 0.5rem 1rem;
|
||||
margin: 5px 0;
|
||||
@@ -69,12 +70,18 @@
|
||||
font-weight: 900;
|
||||
}
|
||||
|
||||
|
||||
#pulseaudio {
|
||||
color: @red;
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
border-radius: 0px;
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
color: @blue;
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
|
||||
3
env/.config/zsh/.zshrc
vendored
3
env/.config/zsh/.zshrc
vendored
@@ -176,7 +176,9 @@ 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
|
||||
alias tka='tmux kill-server' # kill tmux server and all sessions.
|
||||
alias ts='$SCRIPTS/tmux-sessionator' # create new tmux session, fuzzy finding common locations.
|
||||
@@ -206,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"
|
||||
|
||||
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"
|
||||
|
||||
}
|
||||
|
||||
10
env/.gnupg/gpg-agent.conf
vendored
10
env/.gnupg/gpg-agent.conf
vendored
@@ -2,13 +2,5 @@
|
||||
# https://www.gnupg.org/documentation/manuals/gnupg/Agent-Options.html
|
||||
enable-ssh-support
|
||||
ttyname $GPG_TTY
|
||||
default-cache-ttl 60
|
||||
default-cache-ttl 120
|
||||
max-cache-ttl 120
|
||||
#pinentry-program /usr/bin/pinentry-curses
|
||||
#pinentry-program /usr/bin/pinentry-gnome3
|
||||
#pinentry-program /bin/pinentry-tty
|
||||
#pinentry-program /usr/bin/pinentry-x11
|
||||
#pinentry-program /usr/local/bin/pinentry-curses
|
||||
#pinentry-program /bin/pinentry-dmenu
|
||||
|
||||
#pinentry-program /opt/homebrew/bin/pinentry-mac
|
||||
|
||||
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" "$@"
|
||||
68
env/.local/scripts/backup-logger
vendored
Executable file
68
env/.local/scripts/backup-logger
vendored
Executable file
@@ -0,0 +1,68 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
LOG_DIR="/tmp/logs"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
|
||||
Utility for logging backup runs.
|
||||
|
||||
USAGE:
|
||||
$ $THIS <flags> <msg...>
|
||||
|
||||
FLAGS:
|
||||
-h | --help: Show this help page.
|
||||
-s | --show: Show the log messages.
|
||||
--rm: Remove the log file
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Logging utility function, use in place of echo.
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" "$@"
|
||||
}
|
||||
|
||||
show() {
|
||||
[[ ! -f "$LOG_DIR/$LOG_FILE" ]] &&
|
||||
log --warning "Empty log file." &&
|
||||
exit 0
|
||||
|
||||
bat "$LOG_DIR/$LOG_FILE"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
declare -a msg
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "-s" ]] || [[ $1 == "--show" ]]; then
|
||||
show && exit 0
|
||||
elif [[ $1 == "--rm" ]]; then
|
||||
rm "$LOG_DIR/$LOG_FILE" && exit 0
|
||||
else
|
||||
msg+=("$1")
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
[[ -z "${msg[*]}" ]] && log --error "No message passed to log." && exit 1
|
||||
|
||||
log "${msg[@]}"
|
||||
16
env/.local/scripts/hpa
vendored
16
env/.local/scripts/hpa
vendored
@@ -10,22 +10,22 @@ set -o pipefail
|
||||
# Make sure to run 'hpa-init' first on this machine to setup
|
||||
# dependencies, if you have not done so already.
|
||||
#
|
||||
# This will mount my home directory inside the container, so
|
||||
# it should somewhat mirror like commands are run on the host os.
|
||||
#
|
||||
# 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_CONFIG_DIR/.lastpull" ]]; then
|
||||
last_pull=$(cat "$HPA_CONFIG_DIR/.lastpull")
|
||||
@@ -36,8 +36,14 @@ 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
|
||||
|
||||
echo "ARGS: $@"
|
||||
|
||||
podman run --rm --interactive --tty \
|
||||
--volume "$HOME":/root \
|
||||
--volume "$HPA_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" "$@"
|
||||
|
||||
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"
|
||||
|
||||
4
env/.local/scripts/hypr/launch
vendored
4
env/.local/scripts/hypr/launch
vendored
@@ -110,8 +110,8 @@ toggle_special() {
|
||||
|
||||
launch_application() {
|
||||
log "Launching..."
|
||||
log "'${launch_cmd[@]}'"
|
||||
eval exec ${launch_cmd[@]}
|
||||
log "'${launch_cmd[*]}'"
|
||||
eval exec "${launch_cmd[*]}"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
|
||||
@@ -3,7 +3,9 @@
|
||||
# Adapted from https://github.com/basecamp/omarchy/tree/master?tab=readme-ov-file
|
||||
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
THIS=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$(basename "$THIS_FILE")}
|
||||
LOG_FILE=${LOG_FILE:-"$THIS.log"}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
|
||||
function usage() {
|
||||
cat <<EOF
|
||||
@@ -237,7 +239,7 @@ EOF
|
||||
|
||||
# Setup logging file and label
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$THIS.log" "$THIS"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
export LOG_ENABLE_DRY_RUN="$dry_run"
|
||||
|
||||
if [[ -z "$XDG_DATA_HOME" ]]; then
|
||||
@@ -287,7 +289,7 @@ set_icon_ref
|
||||
|
||||
# Check that an exec command is set, or default to the 'launch-webapp' script.
|
||||
if [[ -z $exec_cmd ]]; then
|
||||
exec_cmd="$SCRIPTS/hypr/launch-webapp $app_url"
|
||||
exec_cmd="$SCRIPTS/hypr/webapp launch $app_url"
|
||||
fi
|
||||
|
||||
log "\e[032mCreating web app:\e[0m $desktop_file"
|
||||
@@ -4,7 +4,7 @@
|
||||
SCRIPTS="${SCRIPTS:-$HOME/.local/scripts}"
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$(basename "$THIS_FILE")}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
|
||||
usage() {
|
||||
@@ -29,7 +29,7 @@ NOTES:
|
||||
|
||||
Any extra arguments after '--' get passed directly to the browser invocation.
|
||||
|
||||
$ launch-webapp https://example.com -- --some-random-flag-for-browser=1
|
||||
$ $THIS https://example.com -- --some-random-flag-for-browser=1
|
||||
|
||||
Any options passed in prior to the '--' get sent to the 'launch' script, so you can pass
|
||||
options that are not specifically shown here, but the ones shown would be the most commonly
|
||||
@@ -94,7 +94,7 @@ fi
|
||||
# Any left over args after "--"
|
||||
app_args="$@"
|
||||
|
||||
log "URL: $url"
|
||||
log "Launching URL: $url"
|
||||
log " Launch args: ${launch_args[@]}"
|
||||
log " App args: ${app_args}"
|
||||
|
||||
57
env/.local/scripts/hypr/webapp
vendored
Executable file
57
env/.local/scripts/hypr/webapp
vendored
Executable file
@@ -0,0 +1,57 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Utility for launching or installing a progressive web app.
|
||||
|
||||
USAGE:
|
||||
$ $THIS <flags> <command>
|
||||
|
||||
FLAGS:
|
||||
-h | --help: Show this help page.
|
||||
|
||||
COMMANDS:
|
||||
install: Generate a '.desktop' file for a web app.
|
||||
launch: Launch a url as a web app.
|
||||
|
||||
RUN '$THIS <command> --help' for more information about a command.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Logging utility function, use in place of echo.
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" "$@"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage
|
||||
elif [[ $1 == "install" ]]; then
|
||||
shift
|
||||
THIS="$THIS install" "$SCRIPTS/hypr/utils/webapp/install" "$@"
|
||||
elif [[ $1 == "launch" ]]; then
|
||||
shift
|
||||
THIS="$THIS launch" "$SCRIPTS/hypr/utils/webapp/launch" "$@"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
21
env/.local/scripts/kanatactl
vendored
21
env/.local/scripts/kanatactl
vendored
@@ -17,8 +17,7 @@ KBD=${KBD:-""} # Keyboard config to use, either "voyager" or "macbook"
|
||||
usage() {
|
||||
cat <<EOF
|
||||
|
||||
Manages kanata qmk keyboard program, which needs to be built locally. Currently the linux builds
|
||||
are only for x86. Also manages the kanata systemd service.
|
||||
Manages kanata qmk keyboard program, which needs to be built locally. Also manages the kanata systemd service.
|
||||
|
||||
USAGE:
|
||||
|
||||
@@ -30,8 +29,6 @@ FLAGS:
|
||||
COMMANDS:
|
||||
config: Commands for the kanata keyboard configuration file(s).
|
||||
service: Commands for the kanata systemd service.
|
||||
pkg: Commands for the kanata package.
|
||||
bootstrap: Bootstrap a new machine, performs installation, enables, and starts kanata systemd service.
|
||||
logs: View the log file.
|
||||
|
||||
Run "$THIS <command> --help" for more information about a command.
|
||||
@@ -44,16 +41,6 @@ log() {
|
||||
logging log --source "$THIS_FILE" "$@"
|
||||
}
|
||||
|
||||
# Bootstrap a new machine, by building and installing the kanata executable,
|
||||
# installing the systemd service files, and enable / start the service.
|
||||
bootstrap() {
|
||||
log "Bootstrapping new system..."
|
||||
$THIS_FILE pkg install
|
||||
$THIS_FILE service install
|
||||
$THIS_FILE service enable
|
||||
$THIS_FILE service start
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
@@ -65,8 +52,6 @@ setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "bootstrap" ]]; then
|
||||
bootstrap && exit 0
|
||||
elif [[ $1 == "config" ]]; then
|
||||
shift
|
||||
THIS="$THIS config" $SCRIPTS/utils/kanatactl/config "$@"
|
||||
@@ -75,10 +60,6 @@ while [[ $# -gt 0 ]]; do
|
||||
shift
|
||||
THIS="$THIS service" $SCRIPTS/utils/kanatactl/service "$@"
|
||||
exit $?
|
||||
elif [[ $1 == "pkg" ]]; then
|
||||
shift
|
||||
THIS="$THIS pkg" $SCRIPTS/utils/kanatactl/pkg "$@"
|
||||
exit $?
|
||||
elif [[ $1 == "logs" ]]; then
|
||||
bat ${LOG_DIR:-/tmp/logs}/$LOG_FILE && exit 0
|
||||
elif [[ $1 == "update" ]]; then
|
||||
|
||||
96
env/.local/scripts/shorten-url
vendored
Executable file
96
env/.local/scripts/shorten-url
vendored
Executable file
@@ -0,0 +1,96 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# Global variables
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"} && export LOG_FILE
|
||||
|
||||
# Local variables
|
||||
declare -a args
|
||||
no_spin_flag="0"
|
||||
create_flag="0"
|
||||
logs_flag="0"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Shorten url utility script.
|
||||
|
||||
USAGE:
|
||||
$THIS <flags> <command>
|
||||
|
||||
FLAGS:
|
||||
--no-spin: Disable spinners for commands.
|
||||
-h | --help: Show this help page.
|
||||
|
||||
COMMANDS:
|
||||
create: Create a new shortened url.
|
||||
logs: View or remove the logs.
|
||||
|
||||
Run '$THIS <command> --help' for more information on a command.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Logging utility function, use in place of echo.
|
||||
#
|
||||
# This gets exported for subcommands to use.
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" "$@"
|
||||
} && export -f log
|
||||
|
||||
create() {
|
||||
script="$SCRIPTS/utils/shorten-url/create"
|
||||
export THIS="${THIS} create"
|
||||
|
||||
if [[ $no_spin_flag == "1" ]]; then
|
||||
bash -c "$script ${args[*]}"
|
||||
else
|
||||
title="Generating short url..."
|
||||
gum spin --show-output --title="$title" -- bash -c "$script ${args[*]}"
|
||||
fi
|
||||
}
|
||||
|
||||
logs() {
|
||||
script="$SCRIPTS/utils/shorten-url/logs"
|
||||
export THIS="$THIS logs"
|
||||
source "$script" "${args[*]}"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "--no-spin" ]]; then
|
||||
no_spin_flag="1"
|
||||
elif [[ $1 == "create" ]]; then
|
||||
create_flag="1"
|
||||
elif [[ $1 == "logs" ]]; then
|
||||
logs_flag="1"
|
||||
elif [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
no_spin_flag="1"
|
||||
args+=("$1")
|
||||
else
|
||||
args+=("$1")
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
if [[ $create_flag == "1" ]]; then
|
||||
create
|
||||
elif [[ $logs_flag == "1" ]]; then
|
||||
logs
|
||||
else
|
||||
# If we made it here, no subcommands were executed.
|
||||
usage
|
||||
fi
|
||||
107
env/.local/scripts/swift-dev
vendored
Executable file
107
env/.local/scripts/swift-dev
vendored
Executable file
@@ -0,0 +1,107 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
|
||||
IMAGE="git.housh.dev/michael/swift-dev-container"
|
||||
IMAGE_TAG="latest"
|
||||
|
||||
declare cmd dir pull_flag run_flag
|
||||
cmd=""
|
||||
dir=""
|
||||
pull_flag="0"
|
||||
run_flag="1"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Runs neovim inside swift-dev-container docker container for working on swift projects.
|
||||
|
||||
Currently I'm unable to get swift to install on arch linux, so this gives me working lsp, etc.
|
||||
|
||||
USAGE:
|
||||
$ $THIS <flags> <command> -- <docker comand>
|
||||
|
||||
FLAGS:
|
||||
-h | --help: Show this help page.
|
||||
-p | --pull: Used with run command, to pull/update image before running.
|
||||
-t | --tag <tag>: Used with run command to specify the image tag to use.
|
||||
|
||||
COMMANDS:
|
||||
pull <tag>: Pull the dev container image, tag is optional (default; 'latest').
|
||||
run <dir> (default): Run the dev container in the directory, if directory not supplied it
|
||||
will default to PWD.
|
||||
|
||||
NOTES:
|
||||
Run command is implied / default, so it's not required to be passed if you just want to run the
|
||||
container. For example in your swift project directory you can run 'swift-dev' and a container
|
||||
will start.
|
||||
|
||||
This will properly mount '~/.config/nvim' and '~/.local/share/nvim' inside the container.
|
||||
|
||||
If you would like to run a custom command / not run neovim in the container then it MUST follow
|
||||
'--'. For example, 'swift-dev -- /bin/bash'.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
# Logging utility function, use in place of echo.
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" "$@"
|
||||
}
|
||||
|
||||
pull() {
|
||||
log "Pulling image: '$IMAGE:$IMAGE_TAG'"
|
||||
podman pull "$IMAGE:$IMAGE_TAG"
|
||||
}
|
||||
|
||||
run() {
|
||||
[[ -z $dir ]] && dir="$PWD"
|
||||
[[ -z $cmd ]] && cmd="/root/.local/share/bob/nvim-bin/nvim"
|
||||
log "Running '$IMAGE:$IMAGE_TAG', in: '$dir'"
|
||||
podman run -it --rm \
|
||||
--volume "$XDG_CONFIG_HOME/nvim":/root/.config/nvim \
|
||||
--volume "$XDG_DATA_HOME/nvim":/root/.local/share/nvim \
|
||||
--volume "$dir":/root/dev \
|
||||
"$IMAGE:$IMAGE_TAG" "$cmd"
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "-p" ]] || [[ $1 == "--pull" ]]; then
|
||||
pull_flag="1"
|
||||
elif [[ $1 == "-t" ]] || [[ $1 == "--tag" ]]; then
|
||||
[[ -n ${2:-""} ]] || (log --error "Must supply a tag" && exit 1)
|
||||
IMAGE_TAG=$2
|
||||
shift
|
||||
elif [[ $1 == "pull" ]]; then
|
||||
run_flag="0"
|
||||
pull_flag="1"
|
||||
elif [[ $1 == "--" ]]; then
|
||||
shift
|
||||
cmd="$*"
|
||||
elif [[ ! $1 == "run" ]]; then
|
||||
dir="$1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
[[ $pull_flag = "1" ]] && pull
|
||||
[[ $run_flag = "1" ]] && run
|
||||
37
env/.local/scripts/utils/hpa/hpa-create
vendored
37
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,13 +43,14 @@ 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.
|
||||
-p | --no-push: Do not push project to remote repository.
|
||||
|
||||
ENVIRONMENT:
|
||||
CONSULTS_DIR: Sets the location of new porjects
|
||||
CONSULTS_DIR: Sets the location of new projects
|
||||
(default: ~/work/consults)
|
||||
|
||||
CONSULT_ORIGIN_BASE_URL: Sets the base url for the project git origin.
|
||||
@@ -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")"
|
||||
}
|
||||
@@ -98,6 +112,9 @@ initialize-git() {
|
||||
pushd "$dir" &>/dev/null || exit 1
|
||||
(
|
||||
git init
|
||||
git lfs install
|
||||
git lfs track '*.png'
|
||||
git lfs track '*.pdf'
|
||||
git add .
|
||||
git commit --all --message="Initial commit"
|
||||
git remote add origin "$HPA_CONSULT_ORIGIN_BASE_URL/$(basename "$dir")"
|
||||
@@ -126,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"
|
||||
|
||||
10
env/.local/scripts/utils/hpa/hpa.env
vendored
10
env/.local/scripts/utils/hpa/hpa.env
vendored
@@ -12,7 +12,7 @@ XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
|
||||
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
|
||||
|
||||
# Docker vars.
|
||||
HPA_DOCKER_IMAGE="git.housh.dev/michael/swift-hpa"
|
||||
HPA_DOCKER_IMAGE=${HPA_DOCKER_IMAGE:-"git.housh.dev/michael/swift-hpa"}
|
||||
HPA_DOCKER_TAG=${HPA_DOCKER_TAG:-"latest"}
|
||||
|
||||
# Auto pull options to be ran before running the hpa docker
|
||||
@@ -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
|
||||
|
||||
193
env/.local/scripts/utils/kanatactl/pkg
vendored
193
env/.local/scripts/utils/kanatactl/pkg
vendored
@@ -1,193 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache}
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Manage the kanata package / crate.
|
||||
|
||||
USAGE:
|
||||
|
||||
$ $THIS <command> <flags> <args...>
|
||||
|
||||
FLAGS:
|
||||
-h | --help: Show this help page.
|
||||
|
||||
COMMANDS:
|
||||
install: Install the kanata package.
|
||||
update: Updates the kanata package.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
kanata_dir="$XDG_CACHE_HOME/kanata"
|
||||
kanata_url="https://github.com/jtroo/kanata.git"
|
||||
kanata_current_version=""
|
||||
|
||||
install_mode="0"
|
||||
update_mode="0"
|
||||
|
||||
# Logging utility function, use in place of echo.
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" "$@"
|
||||
}
|
||||
|
||||
get_current_version() {
|
||||
if [[ $(command -v /usr/bin/kanata) ]]; then
|
||||
kanata_current_version=$(/usr/bin/kanata --version)
|
||||
# Remove 'kanata ' from output of the version command.
|
||||
kanata_current_version="${kanata_current_version#kanata *}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Get's kanat versions by git tag and filter's out versions that are less than our
|
||||
# current version number.
|
||||
get_versions() {
|
||||
get_current_version
|
||||
local rows=()
|
||||
local tag=""
|
||||
local has_seen_current="0"
|
||||
for tag in $(git tag --list 'v*' | sort --version-sort); do
|
||||
if [[ $has_seen_current == "1" ]] || [[ -z $kanata_current_version ]]; then
|
||||
rows+=("$tag\n")
|
||||
elif [[ $tag =~ $kanata_current_version ]]; then
|
||||
has_seen_current="1"
|
||||
fi
|
||||
done
|
||||
echo "$(echo -e "${rows[@]}" | sort --version-sort --reverse | tr -d ' ')"
|
||||
}
|
||||
|
||||
# Present an fzf menu to choose a version to install / update to.
|
||||
prompt_for_version_to_install() {
|
||||
local rows=$(get_versions)
|
||||
if [[ -z $rows ]]; then
|
||||
log --error "No versions to select." && exit 1
|
||||
else
|
||||
echo $(printf '%s\n' "${rows[@]}" | fzf --header='Which version would you like to install?')
|
||||
fi
|
||||
}
|
||||
|
||||
# Compares the selected version to the installed version.
|
||||
compare_versions() {
|
||||
# An example selection at this point: 'v1.9.0'
|
||||
local selection=""
|
||||
read -r selection
|
||||
|
||||
if [[ $(command -v /usr/bin/kanata) ]] && [[ -n $selection ]]; then
|
||||
|
||||
[[ -z $kanata_current_version ]] && get_current_version
|
||||
local selected_version=${selection#v*} # remove the 'v' from selected version.
|
||||
|
||||
log "Comparing selected: '$selected_version' to installed '$kanata_current_version'"
|
||||
if [[ $selected_version == $kanata_current_version ]]; then
|
||||
log --warn "Selected version matches the currently installed version." && exit 1
|
||||
fi
|
||||
fi
|
||||
echo "$selection"
|
||||
}
|
||||
|
||||
# Check's out the selected version tag and builds the kanata executable.
|
||||
build_selection() {
|
||||
# An example selection at this point: 'v1.9.0'
|
||||
local selection=""
|
||||
read -r selection
|
||||
|
||||
if [[ -z $selection ]]; then
|
||||
log --error "Selection is empty." && exit 1
|
||||
# Handle logged messages instead of an actual selection.
|
||||
elif [[ $selection =~ "[WARN]" ]] || [[ $selection =~ "[ERROR]" ]]; then
|
||||
echo $selection && exit 1
|
||||
fi
|
||||
|
||||
if [[ $selection =~ ^v ]]; then
|
||||
log "Building kanata..."
|
||||
# checkout the selected version tag and build.
|
||||
git checkout $selection
|
||||
cargo build --release --features cmd
|
||||
echo "done"
|
||||
fi
|
||||
}
|
||||
|
||||
# Copies the most recently built kanata executable to the '/usr/bin' directory.
|
||||
#
|
||||
copy_to_usr_bin() {
|
||||
|
||||
# This is the end of the install / update pipe, so it loops over output of
|
||||
# the other commands in the pipe printing it to the console, while waiting on the
|
||||
# build to be done.
|
||||
while read line; do
|
||||
if [[ $line == "done" ]]; then
|
||||
log "Copying to '/usr/bin/kanata'" && echo "Copying to '/usr/bin/kanata'"
|
||||
sudo cp target/release/kanata /usr/bin
|
||||
echo "Done!"
|
||||
else
|
||||
echo "$line"
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
title() {
|
||||
if [[ $update_mode == "1" ]]; then
|
||||
echo "Updating"
|
||||
else
|
||||
echo "Installing"
|
||||
fi
|
||||
}
|
||||
|
||||
# Handles both install or update commands, as they do the same thing.
|
||||
install_or_update() {
|
||||
local mode=$(title)
|
||||
|
||||
log "$mode kanata..."
|
||||
local should_pull="1"
|
||||
|
||||
if [[ ! -d $kanata_dir ]]; then
|
||||
log "Cloning repo."
|
||||
should_pull="0"
|
||||
git clone $kanata_url $kanata_dir
|
||||
fi
|
||||
|
||||
pushd $kanata_dir &>/dev/null
|
||||
(
|
||||
[[ $should_pull == "1" ]] && git pull origin main >/dev/null 2>&1
|
||||
prompt_for_version_to_install | compare_versions | build_selection | copy_to_usr_bin
|
||||
)
|
||||
popd &>/dev/null
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "install" ]]; then
|
||||
shift
|
||||
install_mode="1"
|
||||
install_or_update "$@"
|
||||
exit $?
|
||||
elif [[ $1 == "update" ]]; then
|
||||
shift
|
||||
update_mode="1"
|
||||
install_or_update "$@"
|
||||
exit $?
|
||||
fi
|
||||
done
|
||||
|
||||
# If we made it here, then none of the commands handled the arguments, so show the
|
||||
# usage and exit
|
||||
usage && exit 1
|
||||
98
env/.local/scripts/utils/kanatactl/service
vendored
98
env/.local/scripts/utils/kanatactl/service
vendored
@@ -11,6 +11,13 @@ THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
DEV_ENV=${DEV_ENV:-""}
|
||||
|
||||
declare user_flag system_flag prompt_flag mode
|
||||
declare -a args
|
||||
user_flag="1"
|
||||
system_flag="0"
|
||||
prompt_flag="0"
|
||||
mode=""
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Manages the kanata systemd service.
|
||||
@@ -21,6 +28,9 @@ USAGE:
|
||||
|
||||
FLAGS:
|
||||
-h | --help: Show this help page.
|
||||
--user: Setup systemd service as a user service (default).
|
||||
--system: Setup systemd service as a system service.
|
||||
--prompt: Prompt the user to install service as system or user service.
|
||||
|
||||
COMMANDS:
|
||||
enable: Enable the kanata service.
|
||||
@@ -45,7 +55,11 @@ log() {
|
||||
|
||||
enable_service() {
|
||||
log "Enabling kanata service..."
|
||||
sudo systemctl enable kanata.service
|
||||
if [[ $user_flag == "1" ]]; then
|
||||
systemctl --user enable --now kanata.service
|
||||
else
|
||||
sudo systemctl enable --now kanata.service
|
||||
fi
|
||||
}
|
||||
|
||||
get_status() {
|
||||
@@ -53,18 +67,52 @@ get_status() {
|
||||
systemctl status kanata.service
|
||||
}
|
||||
|
||||
prompt_user() {
|
||||
log "Prompting user for how they would like to setup kanata systemd service..."
|
||||
local choice
|
||||
choice=$(echo -e "user\nsystem" | fzf --header "How would you like to setup the kanata systemd service?")
|
||||
if [[ $choice == "system" ]]; then
|
||||
user_flag="0"
|
||||
system_flag="1"
|
||||
elif [[ $choice == "user" ]]; then
|
||||
user_flag="1"
|
||||
system_flag="0"
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
install_service() {
|
||||
local service_dir="user"
|
||||
|
||||
if [[ -z $DEV_ENV ]]; then
|
||||
log --error "DEV_ENV is not set properly." && exit 1
|
||||
fi
|
||||
log "Starting install service..."
|
||||
|
||||
# Ensure the configuration is copied / setup otherwise the keyboard may not work.
|
||||
"$SCRIPTS/kanatactl" config install "$@"
|
||||
|
||||
log "Installing kanata service..."
|
||||
# Prompt the user for how they would like to install the systemd service, if the
|
||||
# prompt flag is set.
|
||||
[[ $prompt_flag == "1" ]] && prompt_user || exit 1
|
||||
|
||||
[[ $system_flag == "1" ]] && service_dir="system"
|
||||
|
||||
log "Installing kanata service as: '$service_dir' service..."
|
||||
|
||||
if [[ $service_dir == "system" ]]; then
|
||||
[[ -f /etc/systemd/system/kanata.service ]] && sudo rm -rf /etc/systemd/system/kanata.service
|
||||
sudo cp "$DEV_ENV/env/etc/systemd/system/kanata.service" /etc/systemd/system
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now kanata.service
|
||||
else
|
||||
[[ -f ~/.config/systemd/user/kanata.service ]] && rm -rf ~/.config/systemd/user/kanata.service
|
||||
mkdir -p ~/.config/systemd/user &>/dev/null
|
||||
cp "$DEV_ENV/env/etc/systemd/user/kanata.service" ~/.config/systemd/user
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now kanata.service
|
||||
fi
|
||||
}
|
||||
|
||||
start_service() {
|
||||
@@ -96,26 +144,42 @@ restart_service() {
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
# Parse flags / arguments.
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "disable" ]]; then
|
||||
disable_service && exit $?
|
||||
elif [[ $1 == "enable" ]]; then
|
||||
enable_service && exit $?
|
||||
elif [[ $1 == "install" ]]; then
|
||||
shift
|
||||
install_service "$@" && exit $?
|
||||
elif [[ $1 == "start" ]]; then
|
||||
start_service && exit $?
|
||||
elif [[ $1 == "status" ]]; then
|
||||
get_status && exit $?
|
||||
elif [[ $1 == "stop" ]]; then
|
||||
stop_service && exit $?
|
||||
elif [[ $1 == "restart" ]]; then
|
||||
restart_service && exit $?
|
||||
elif [[ $1 == "--user" ]]; then
|
||||
user_flag="1"
|
||||
elif [[ $1 == "--system" ]]; then
|
||||
system_flag="1"
|
||||
elif [[ $1 == "--prompt" ]]; then
|
||||
prompt_flag="1"
|
||||
# Set first non-flag to the mode / subcommand.
|
||||
elif [[ -z $mode ]]; then
|
||||
mode="$1"
|
||||
# Add any other arguments to the 'args' array.
|
||||
else
|
||||
args+=("$1")
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
# Handle mode.
|
||||
if [[ $mode == "disable" ]]; then
|
||||
disable_service && exit $?
|
||||
elif [[ $mode == "enable" ]]; then
|
||||
enable_service && exit $?
|
||||
elif [[ $mode == "install" ]]; then
|
||||
install_service "${args[@]}" && exit $?
|
||||
elif [[ $mode == "start" ]]; then
|
||||
start_service && exit $?
|
||||
elif [[ $mode == "status" ]]; then
|
||||
get_status && exit $?
|
||||
elif [[ $mode == "stop" ]]; then
|
||||
stop_service && exit $?
|
||||
elif [[ $mode == "restart" ]]; then
|
||||
restart_service && exit $?
|
||||
else
|
||||
# If we made it here, then none of the subcommands handled the args.
|
||||
usage && exit 1
|
||||
fi
|
||||
|
||||
112
env/.local/scripts/utils/shorten-url/create
vendored
Executable file
112
env/.local/scripts/utils/shorten-url/create
vendored
Executable file
@@ -0,0 +1,112 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# Global variables.
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]} && export THIS_FILE # Export for log function to work properly.
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
# Setup environment
|
||||
source "$SCRIPTS/utils/shorten-url/env"
|
||||
|
||||
# Local variables.
|
||||
declare -a tags
|
||||
url=""
|
||||
shortCode=""
|
||||
expire=""
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
Create a shortened url, returns / echo's the generated url.
|
||||
|
||||
USAGE:
|
||||
$THIS <flags> <url>
|
||||
|
||||
FLAGS:
|
||||
-c | --code: Set a custom short-code for the link.
|
||||
-e | --expire <time>: Set the expiration for the link.
|
||||
-t | --tag <tag>: Add tag(s) to the link (can be passed multiple times).
|
||||
-h | --help: Show this help page.
|
||||
|
||||
EXMAPLES:
|
||||
|
||||
Generate a link and set the expiration for 30 days from now:
|
||||
$ $THIS --expire 30 days https://example.com
|
||||
|
||||
Generate a link with multiple tags:
|
||||
$ $THIS --tag consult --tag test https://example.com
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
generate_json() {
|
||||
local tagsJson
|
||||
tagsJson=$(printf '%s\n' "${tags[@]}" | jq -R . | jq -s .)
|
||||
log "Generating json data..."
|
||||
if [[ -n $expire ]]; then
|
||||
expire="$(date --iso-8601=seconds -d "+ $expire")"
|
||||
log "Set valid until date: $expire"
|
||||
# NB: 'validUntil' can not be set to an empty string, or it immediately expires the link.
|
||||
jq -n --arg longUrl "$url" --arg shortCode "$shortCode" --argjson tags "$tagsJson" \
|
||||
--arg validUntil "$expire" \
|
||||
'{longUrl: $longUrl, shortCode: $shortCode, tags: $tags, findIfExists: true, validUntil: $validUntil}'
|
||||
else
|
||||
jq -n --arg longUrl "$url" --arg shortCode "$shortCode" --argjson tags "$tagsJson" \
|
||||
'{longUrl: $longUrl, customSlug: $shortCode, tags: $tags, findIfExists: true}'
|
||||
fi
|
||||
}
|
||||
|
||||
create_url() {
|
||||
local json
|
||||
|
||||
[[ -z $url ]] &&
|
||||
log --error "Url not supplied." &&
|
||||
exit 1
|
||||
|
||||
json="$(generate_json)"
|
||||
|
||||
log "Creating url: '$url' with json: $json"
|
||||
|
||||
curl "$BASE_URL/short-urls" \
|
||||
--request 'POST' \
|
||||
--header 'Content-Type: application/json' \
|
||||
--header 'accept: application/json' \
|
||||
--header "X-Api-Key: $API_KEY" \
|
||||
--no-progress-meter \
|
||||
--data "$json" | jq '.shortUrl'
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
log "Creating url with args: $*"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
elif [[ $1 == "-c" ]] || [[ $1 == "--code" ]]; then
|
||||
shift
|
||||
shortCode="$1"
|
||||
elif [[ $1 == "-t" ]] || [[ $1 == "--tag" ]]; then
|
||||
shift
|
||||
tags+=("$1")
|
||||
elif [[ $1 == "-e" ]] || [[ $1 == "--expire" ]]; then
|
||||
shift
|
||||
expire="$1 $2"
|
||||
shift
|
||||
else
|
||||
url="$1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
create_url
|
||||
7
env/.local/scripts/utils/shorten-url/env
vendored
Executable file
7
env/.local/scripts/utils/shorten-url/env
vendored
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
API_KEY=$(/bin/gopass show --password Keys/shlink/api-key)
|
||||
BASE_URL="https://l.housh.dev/rest/v3"
|
||||
|
||||
export API_KEY
|
||||
export BASE_URL
|
||||
64
env/.local/scripts/utils/shorten-url/logs
vendored
Executable file
64
env/.local/scripts/utils/shorten-url/logs
vendored
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
SCRIPTS=${SCRIPTS:-$HOME/.local/scripts}
|
||||
THIS_FILE=${BASH_SOURCE[0]} && export THIS_FILE
|
||||
LOG_LABEL=$(basename "$THIS_FILE")
|
||||
THIS=${THIS:-$LOG_LABEL}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
|
||||
rm_flag="0"
|
||||
|
||||
usage() {
|
||||
cat <<EOF
|
||||
View or remove the logs.
|
||||
|
||||
USAGE:
|
||||
$THIS <flags> <command>
|
||||
|
||||
FLAGS:
|
||||
-h | --help: Show this help page.
|
||||
|
||||
COMMAND:
|
||||
show: Show the logs (default).
|
||||
rm | remove: Remove the log file.
|
||||
|
||||
EOF
|
||||
}
|
||||
|
||||
################################################################################
|
||||
# MAIN
|
||||
################################################################################
|
||||
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
[[ -z ${LOG_DIR:-""} ]] &&
|
||||
log --error "Log directory not set." &&
|
||||
exit 1
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
if [[ $1 == "rm" ]] || [[ $1 == "remove" ]]; then
|
||||
rm_flag="1"
|
||||
elif [[ $1 == "-h" ]] || [[ $1 == "--help" ]]; then
|
||||
usage && exit 0
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
file="$LOG_DIR/$LOG_FILE"
|
||||
|
||||
[[ ! -f "$file" ]] &&
|
||||
echo "No log file at: '$file'" &&
|
||||
exit 0
|
||||
|
||||
if [[ $rm_flag == "1" ]]; then
|
||||
log --echo "Removing logs..."
|
||||
rm -f "$file"
|
||||
else
|
||||
log "Showing logs"
|
||||
bat "$file"
|
||||
fi
|
||||
4
env/.prettierrc
vendored
Normal file
4
env/.prettierrc
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"proseWrap": "always"
|
||||
"printWidth": 100
|
||||
}
|
||||
2
env/.prettierrc.yaml
vendored
2
env/.prettierrc.yaml
vendored
@@ -1,2 +0,0 @@
|
||||
proseWrap: always
|
||||
printWidth: 120
|
||||
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"
|
||||
|
||||
12
env/etc/systemd/user/kanata.service
vendored
Normal file
12
env/etc/systemd/user/kanata.service
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
[Unit]
|
||||
Description=Kanata Service
|
||||
Documentation=https://github.com/jtroo/kanata
|
||||
|
||||
[Service]
|
||||
Environment=PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/bin
|
||||
Type=simple
|
||||
ExecStart=/bin/sh -c 'exec /usr/bin/kanata --cfg /home/michael/.config/kanata/config.kbd'
|
||||
Restart=no
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
11
env/jellyfin-tui/config.gpg
vendored
Normal file
11
env/jellyfin-tui/config.gpg
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hF4DAAAAAAAAAAASAQdATOWmZnUO2KsVWqDMIPkJPBvEskExyaYdpYxcl4xqwyUw
|
||||
8rPCTjCdJSbB36d7ly5+UaayXBZFn2IrGXfai7+IP11G92ocj4a8xHSwKZX9mSd8
|
||||
0sABAVlTrLOO4BVWBpGnAsagfzXMGyYPi843KdnZg43b4IAx3hdR46NnjfjGjAZc
|
||||
Ggf4kC+DuTT+Y0BRH8qRLU6kizxRvi13GEnxt0sTQqhNRA+hLbkXYWlZ3fLnf6YD
|
||||
CIpMYowZmqwd6KH3ofFeNr+E5+HAaygU/61VH2pkZRzwwltiEZ4aQ+eWULELs6BF
|
||||
z7nIB49nOZi2m7boSVVnfmknD6Z/QwZSmqakySZRlNNC19IqEoDl02H5cgHCNbQV
|
||||
cTnyHQ==
|
||||
=LRvL
|
||||
-----END PGP MESSAGE-----
|
||||
12
env/qcal/config.json.gpg
vendored
Normal file
12
env/qcal/config.json.gpg
vendored
Normal file
@@ -0,0 +1,12 @@
|
||||
-----BEGIN PGP MESSAGE-----
|
||||
|
||||
hF4DAAAAAAAAAAASAQdAuiXPHaZd/bWttw/D3LtIXio0V9z5aKrqAKDCHofqDmow
|
||||
F90ZOG8wwm3wsmoTSswSifiUUE8AK96ATgphvlxIf/bH+X9pVUPlgZRCPYR7hteI
|
||||
0sBbAWWIYpJA43P5ndpuIUGiGwthRyxQLwWRVFkfZ5v5HLsf0FMVfO2f1azzape9
|
||||
i+0Dz6XoTkDzmApQO46NrOHoI83RUQ7Tbe+AElnDfJT6tj2YaajkCPnvnqO55z54
|
||||
38XOIP3t3eOt+JFugiJDblZCAI/fdzhxCAmqzyU0QZOR3Yl8B/d/8g1PQjPAObiG
|
||||
F+spskYpIXZ0U+YNne4PWThhk0tMgq2rJUovQ6kCGjCnPnRR41UWBkGciXfvOR39
|
||||
BbrBK4wsBTRmrM3Hvs41sZlYkIc6mS/PEs1H7gId8vKt3BGqTHN39+qv6aoSwbi8
|
||||
GaNSRSuuMRsQnnUXBzgilXEnWA2oYncSD8pcorPDAe/gaRNV5+/dpQJrYjbYig==
|
||||
=8rxb
|
||||
-----END PGP MESSAGE-----
|
||||
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-----
|
||||
2
mail
2
mail
Submodule mail updated: 013f3c7c18...28ff91ffe5
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
|
||||
103
run
103
run
@@ -2,81 +2,58 @@
|
||||
|
||||
# Adapted from https://github.com/ThePrimeagen/dev/blob/master/run
|
||||
#
|
||||
# Runs scripts in the `./runs` directory, which will install or uninstall
|
||||
# packages. It either runs a single script given an argument (filename in runs)
|
||||
# or all scripts in the runs directory.
|
||||
# Installs packages declared in the 'runs' directory, will run scripts matching the
|
||||
# file name in the 'runs/before' and 'runs/after', respectively, to handle setting up or
|
||||
# tearing down based on the run mode.
|
||||
#
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
if [ -z "$DEV_ENV" ]; then
|
||||
echo "env var DEV_ENV needs to be present"
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=$(basename $THIS_FILE)
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
|
||||
declare dry_run grepstr mode
|
||||
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" --echo "$@"
|
||||
} && export -f log
|
||||
|
||||
############################## MAIN ##############################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
[ -z "$DEV_ENV" ] &&
|
||||
log --error "env var DEV_ENV needs to be present" &&
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# if i just did DEV_ENV=$(pwd) ./run then this is needed for the rest of the
|
||||
# scripts
|
||||
export DEV_ENV="$DEV_ENV"
|
||||
|
||||
grep=""
|
||||
grepstr=""
|
||||
dry_run="0"
|
||||
uninstall="0"
|
||||
mode="install"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
echo "ARG: \"$1\""
|
||||
|
||||
# Handle a --dry or --dry-run argument
|
||||
if [[ "$1" =~ ^--dry ]]; then
|
||||
dry_run="1"
|
||||
# Handle an --uninstall argument
|
||||
elif [[ "$1" =~ ^--u ]]; then
|
||||
uninstall="1"
|
||||
# Handle an --install argument (default)
|
||||
elif [[ ! "$1" =~ ^--i ]]; then
|
||||
grep="$1"
|
||||
elif [[ "$1" == "uninstall" ]]; then
|
||||
mode="uninstall"
|
||||
elif [[ ! "$1" == "install" ]]; then
|
||||
grepstr="$1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
log() {
|
||||
if [[ $dry_run == "1" ]]; then
|
||||
echo "[DRY_RUN]: $1"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
export DEV_ENV="$DEV_ENV"
|
||||
export LOG_ENABLE_DRY_RUN="$dry_run"
|
||||
export RUN_GREP_STR="$grepstr"
|
||||
export RUN_MODE="$mode"
|
||||
|
||||
run() {
|
||||
local script=$1
|
||||
local flag=$2
|
||||
log "running script: $script $flag"
|
||||
log "RUN: -- grep: '$grepstr'"
|
||||
|
||||
local actual_flags="-S --noconfirm"
|
||||
|
||||
if [[ $flag == "--uninstall" ]]; then
|
||||
actual_flags="-Rns"
|
||||
fi
|
||||
log "ok, here's the actual script:: $s $actual_flags"
|
||||
|
||||
if [[ $dry_run == "0" ]]; then
|
||||
$script $actual_flags
|
||||
fi
|
||||
|
||||
}
|
||||
|
||||
############################## MAIN ##############################
|
||||
|
||||
log "RUN: env: $env -- grep: $grep"
|
||||
|
||||
runs_dir=$(find $DEV_ENV/runs -mindepth 1 -maxdepth 1 -executable)
|
||||
|
||||
for s in $runs_dir; do
|
||||
if basename $s | grep -vq "$grep"; then
|
||||
log "grep \"$grep\" filtered out $s"
|
||||
continue
|
||||
fi
|
||||
|
||||
if [[ $uninstall == "1" ]]; then
|
||||
run $s --uninstall
|
||||
else
|
||||
run $s --install
|
||||
fi
|
||||
done
|
||||
find "$DEV_ENV/runs" \
|
||||
-mindepth 1 \
|
||||
-maxdepth 1 \
|
||||
-type f \
|
||||
-exec bash -xc "$DEV_ENV/runs/utils/run-handler {}" \;
|
||||
|
||||
31
runs/after/calendar
Executable file
31
runs/after/calendar
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEV_ENV=${DEV_ENV:-""}
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-"$HOME/.config"}
|
||||
|
||||
install() {
|
||||
|
||||
[[ -z $DEV_ENV ]] && echo -e "\e[031m[ERROR]:\e[0m 'DEV_ENV' not set." && exit 1
|
||||
|
||||
# Clone and build qcal locally, as it didn't work for me when downloading from the aur.
|
||||
mkdir ~/pkgbuilds &>/dev/null
|
||||
git clone https://github.com/psic4t/qcal.git ~/pkgbuilds/qcal
|
||||
pushd ~/pkgbuilds/qcal &>/dev/null || exit 1
|
||||
(
|
||||
make && sudo make install
|
||||
)
|
||||
popd &>/dev/null || exit 1
|
||||
|
||||
# Decrypt and copy configuration file for qcal.
|
||||
mkdir "$XDG_CONFIG_HOME"/qcal &>/dev/null
|
||||
gpg --output "$XDG_CONFIG_HOME"/qcal/config.json --decrypt "$DEV_ENV"/env/qcal/config.json.gpg
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
sudo rm /usr/local/bin/qcal
|
||||
rm -rf ~/pkgbuilds/qcal
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install
|
||||
[[ $arg == "uninstall" ]] && uninstall
|
||||
18
runs/after/clipse
Executable file
18
runs/after/clipse
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
|
||||
|
||||
install() {
|
||||
log " Ensure clipse data directory exists, and start clipse."
|
||||
mkdir -p "$XDG_DATA_HOME/clipse" &>/dev/null
|
||||
setsid uwsm app -- clipse -listen
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
log " Removing clipse data directory."
|
||||
rm -rf "$XDG_DATA_HOME/clipse"
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install && exit $?
|
||||
[[ $arg == "uninstall" ]] && uninstall && exit $?
|
||||
23
runs/after/dev
Executable file
23
runs/after/dev
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
install() {
|
||||
# TODO: Handle install / uninstall.
|
||||
bob install nightly &&
|
||||
bob install stable &&
|
||||
bob use nightly
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
echo "FIX ME!"
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
|
||||
if [[ $arg == "install" ]]; then
|
||||
install && exit $?
|
||||
elif [[ $arg == "uninstall" ]]; then
|
||||
uninstall && exit $?
|
||||
else
|
||||
# TODO: Using logging.
|
||||
echo "Error, invalid option" && exit 1
|
||||
fi
|
||||
16
runs/after/espanso
Executable file
16
runs/after/espanso
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
install() {
|
||||
log " Setting up espanso."
|
||||
sudo setcap "cap_dac_override+p" "$(which espanso)"
|
||||
espanso service register
|
||||
systemctl --user daemon-reload
|
||||
espanso service start
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install && exit 0
|
||||
16
runs/after/gopass
Executable file
16
runs/after/gopass
Executable file
@@ -0,0 +1,16 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
XDG_DATA_HOME=${XDG_DATA_HOME:-"$HOME"/.local/share}
|
||||
|
||||
install() {
|
||||
[[ ! -d "$XDG_DATA_HOME/gopass/stores/root" ]] &&
|
||||
gopass clone ssh://git@git.housh.dev:2222/michael/passwordstore.git
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
[[ -d "$XDG_DATA_HOME/gopass" ]] && rm -rf "$XDG_DATA_HOME/gopass"
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install
|
||||
[[ $arg == "uninstall" ]] && uninstall
|
||||
18
runs/after/jellyfin-tui
Executable file
18
runs/after/jellyfin-tui
Executable file
@@ -0,0 +1,18 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
DEV_ENV=${DEV_ENV:-""}
|
||||
XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-"$HOME/.config"}
|
||||
|
||||
install() {
|
||||
[[ -z $DEV_ENV ]] && echo "[ERROR]: DEV_ENV not set" && exit 1
|
||||
mkdir -p "$XDG_CONFIG_HOME"/jellyfin-tui &>/dev/null
|
||||
gpg --output "$XDG_CONFIG_HOME"/jellyfin-tui/config.yaml --decrypt "$DEV_ENV"/env/jellyfin-tui/config.gpg
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
rm -rf ~/.config/jellyfin-tui
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install
|
||||
[[ $arg == "uninstall" ]] && uninstall
|
||||
17
runs/after/localsend
Executable file
17
runs/after/localsend
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
install() {
|
||||
sudo firewall-cmd --zone=public --permanent --add-port=53317/tcp
|
||||
sudo firewall-cmd --zone=public --permanent --add-port=53317/udp
|
||||
sudo firewall-cmd --reload
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
sudo firewall-cmd --zone=public --permanent --remove-port=53317/tcp
|
||||
sudo firewall-cmd --zone=public --permanent --remove-port=53317/udp
|
||||
sudo firewall-cmd --reload
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install
|
||||
[[ $arg == "uninstall" ]] && uninstall
|
||||
94
runs/after/system
Executable file
94
runs/after/system
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
# Set scripts to be in the DEV_ENV folder encase they have not been
|
||||
# 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() {
|
||||
|
||||
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() {
|
||||
log " Setting up kanata udev rules."
|
||||
sudo groupadd --system uinput
|
||||
sudo usermod -aG input "$USER"
|
||||
sudo usermod -aG uinput "$USER"
|
||||
[[ ! -f /etc/udev/rules.d/99-input.rules ]] &&
|
||||
(
|
||||
echo 'KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"' |
|
||||
sudo tee /etc/udev/rules.d/99-input.rules
|
||||
) &&
|
||||
sudo udevadm control --reload-rules &&
|
||||
sudo udevadm trigger &&
|
||||
sudo modprobe uinput
|
||||
log " Setting up kanata, using kanatactl."
|
||||
SCRIPTS="$SCRIPTS" "$SCRIPTS/kanatactl" service install --prompt
|
||||
}
|
||||
|
||||
_setup-gpg() {
|
||||
log " Setting up gpg."
|
||||
mkdir -p ~/{.gnupg,.ssh} &>/dev/null
|
||||
chmod 700 ~/.gnupg
|
||||
chmod 700 ~/.ssh
|
||||
local dir=/tmp/gpg-public-key
|
||||
git clone https://git.housh.dev/michael/gpg-public-key.git "$dir"
|
||||
pushd "$dir" &>/dev/null || exit 1
|
||||
(
|
||||
source ./import
|
||||
)
|
||||
popd &>/dev/null || exit 1
|
||||
rm -rf "$dir"
|
||||
}
|
||||
|
||||
_setup-home-dir() {
|
||||
log " Setting up home directory."
|
||||
rm -rf "$HOME/Desktop" &>/dev/null
|
||||
mkdir "$HOME/{containers,dev}" &>/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() {
|
||||
log " Setting user shell to 'zsh'."
|
||||
sudo chsh --shell "$(which zsh)"
|
||||
log " Enabling systemd services."
|
||||
sudo systemctl daemon-reload
|
||||
sudo systemctl enable --now pcscd.service
|
||||
sudo systemctl enable --now firewalld.service
|
||||
systemctl --user enable --now logout-task.service
|
||||
systemctl --user enable --now battery-monitor.timer
|
||||
systemctl --user enable --now tmux-kill-sessions.timer
|
||||
_setup-kanata
|
||||
_setup-mounts
|
||||
_setup-gpg
|
||||
_setup-home-dir
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install
|
||||
17
runs/after/zathura
Executable file
17
runs/after/zathura
Executable file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
install() {
|
||||
xdg-mime default org.pwmt.zathura.desktop application/pdf
|
||||
}
|
||||
|
||||
uninstall() {
|
||||
xdg-mime default brave-browser.desktop application/pdf
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "install" ]] && install
|
||||
[[ $arg == "uninstall" ]] && uninstall
|
||||
13
runs/audio
Executable file → Normal file
13
runs/audio
Executable file → Normal file
@@ -1,8 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} pipewire \
|
||||
pavucontrol \
|
||||
wireplumber \
|
||||
pipewire-jack \
|
||||
pipewire-pulse \
|
||||
# Packages to install / uninstall with this run.
|
||||
pipewire
|
||||
pavucontrol
|
||||
wireplumber
|
||||
pipewire-jack
|
||||
pipewire-pulse
|
||||
blueberry-wayland
|
||||
|
||||
4
runs/before/dev
Executable file
4
runs/before/dev
Executable file
@@ -0,0 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# yay -S --noconfirm --needed rustup
|
||||
# rustup default stable
|
||||
13
runs/before/espanso
Executable file
13
runs/before/espanso
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
uninstall() {
|
||||
log " Tearing down espanso."
|
||||
espanso service stop
|
||||
espanso service unregister
|
||||
}
|
||||
|
||||
arg=${1:-""}
|
||||
[[ $arg == "uninstall" ]] && uninstall && exit 0
|
||||
9
runs/before/yay
Executable file
9
runs/before/yay
Executable file
@@ -0,0 +1,9 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if ! command -v yay >/dev/null 2>&1; then
|
||||
sudo pacman -S --noconfirm --needed git base-devel
|
||||
git clone https://aur.archlinux.org/yay.git ~/yay
|
||||
cd ~/yay
|
||||
makepkg -si
|
||||
rm -rf ~/yay
|
||||
fi
|
||||
5
runs/brave
Executable file → Normal file
5
runs/brave
Executable file → Normal file
@@ -1,3 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} brave-bin
|
||||
# Packages to install / uninstall with this run.
|
||||
brave-bin
|
||||
|
||||
3
runs/calendar
Normal file
3
runs/calendar
Normal file
@@ -0,0 +1,3 @@
|
||||
go
|
||||
gnome-calendar
|
||||
gnome-keyring
|
||||
7
runs/clipse
Executable file → Normal file
7
runs/clipse
Executable file → Normal file
@@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} clipse
|
||||
# Packages to install / uninstall with this run.
|
||||
#
|
||||
# Clipse manages clipboard history.
|
||||
clipse
|
||||
|
||||
56
runs/dev
Executable file → Normal file
56
runs/dev
Executable file → Normal file
@@ -1,36 +1,26 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if ! command -v yay >/dev/null 2>&1; then
|
||||
sudo pacman -S --noconfirm --needed git base-devel
|
||||
git clone https://aur.archlinux.org/yay.git ~/yay
|
||||
cd ~/yay
|
||||
makepkg -si
|
||||
rm -rf ~/yay
|
||||
fi
|
||||
|
||||
# Packages
|
||||
yay -S --noconfirm --needed \
|
||||
bat \
|
||||
bob \
|
||||
eza \
|
||||
fastfetch \
|
||||
fzf \
|
||||
git-lfs \
|
||||
gum \
|
||||
jq \
|
||||
neovim \
|
||||
nodejs \
|
||||
npm \
|
||||
pcre2 \
|
||||
ripgrep \
|
||||
starship \
|
||||
tldr \
|
||||
tmux \
|
||||
tree-sitter-cli \
|
||||
bat
|
||||
bob
|
||||
eza
|
||||
fastfetch
|
||||
fzf
|
||||
git-lfs
|
||||
github-cli
|
||||
gum
|
||||
jq
|
||||
libtexprintf
|
||||
neovim
|
||||
nodejs
|
||||
npm
|
||||
pcre2
|
||||
ripgrep
|
||||
starship
|
||||
tldr
|
||||
tmux
|
||||
tree-sitter-cli
|
||||
yazi
|
||||
zoxide
|
||||
|
||||
# Fonts
|
||||
yay -S --noconfirm \
|
||||
ttf-jetbrains-mono-nerd \
|
||||
ttf-firacode \
|
||||
ttf-inconsolata-nerd
|
||||
ttf-jetbrains-mono-nerd
|
||||
ttf-firacode
|
||||
ttf-inconsolata-ne
|
||||
|
||||
5
runs/espanso
Executable file → Normal file
5
runs/espanso
Executable file → Normal file
@@ -1,3 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} espanso-wayland-git
|
||||
# Packages to install / uninstall with this run.
|
||||
espanso-wayland-git
|
||||
|
||||
8
runs/ghostty
Executable file → Normal file
8
runs/ghostty
Executable file → Normal file
@@ -1,6 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Flags get passed in from the run script, but if
|
||||
# ran directly the default is going to be to install.
|
||||
|
||||
yay "${1:-"-S --noconfirm --needed"}" ghostty
|
||||
# Packages to install / uninstall with this run.
|
||||
ghostty-git
|
||||
|
||||
6
runs/gopass
Executable file → Normal file
6
runs/gopass
Executable file → Normal file
@@ -1,3 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm --needed"} gopass-git git-credential-gopass
|
||||
# Packages to install / uninstall with this run.
|
||||
gopass-git
|
||||
git-credential-gopass
|
||||
|
||||
17
runs/hyprland
Executable file → Normal file
17
runs/hyprland
Executable file → Normal file
@@ -1,9 +1,10 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} hyprland-git \
|
||||
hyprpaper-git \
|
||||
hypridle-git \
|
||||
hyprlock-git \
|
||||
hyprlauncher-git \
|
||||
xdg-desktop-portal-hyprland-git \
|
||||
# Packages to install / uninstall with this run.
|
||||
hyprland
|
||||
hyprpaper
|
||||
hypridle
|
||||
hyprlock
|
||||
hyprlauncher
|
||||
hyprshot
|
||||
xdg-desktop-portal-hyprland-git
|
||||
bc # used for some scripts.
|
||||
waybar
|
||||
|
||||
1
runs/jellyfin-tui
Executable file
1
runs/jellyfin-tui
Executable file
@@ -0,0 +1 @@
|
||||
jellyfin-tui
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} rustup
|
||||
|
||||
$DEV_ENV/env/.local/scripts/kanatactl bootstrap
|
||||
5
runs/localsend
Executable file → Normal file
5
runs/localsend
Executable file → Normal file
@@ -1,3 +1,2 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} localsend-bin
|
||||
# Packages to install / uninstall with this run.
|
||||
localsend-bin
|
||||
|
||||
7
runs/nautilus
Executable file → Normal file
7
runs/nautilus
Executable file → Normal file
@@ -1,3 +1,4 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} nautilus nautilus-share gvfs-smb
|
||||
# Packages to install / uninstall with this run.
|
||||
nautilus
|
||||
nautilus-share
|
||||
gvfs-smb
|
||||
|
||||
30
runs/neomutt
Executable file → Normal file
30
runs/neomutt
Executable file → Normal file
@@ -1,17 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
# Packages to install / uninstall with this run.
|
||||
|
||||
yay ${1:-"-S --noconfirm"} neomutt \
|
||||
abook \
|
||||
mutt-wizard \
|
||||
goimapnotify \
|
||||
lynx \
|
||||
notmuch \
|
||||
urlview \
|
||||
cronie \
|
||||
protonmail-bridge \
|
||||
isync \
|
||||
msmtp \
|
||||
pass \
|
||||
ca-certificates \
|
||||
gettext \
|
||||
neomutt
|
||||
abook
|
||||
mutt-wizard
|
||||
goimapnotify
|
||||
lynx
|
||||
notmuch
|
||||
urlview
|
||||
cronie
|
||||
protonmail-bridge
|
||||
isync
|
||||
msmtp
|
||||
pass
|
||||
ca-certificates
|
||||
gettext
|
||||
cyrus-sasl-xoauth2-git
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Needs installed from AUR.
|
||||
if [[ ! $(yay -Q libajantv2 2>/dev/null) ]]; then
|
||||
yay -S libajantv2
|
||||
fi
|
||||
|
||||
cd $HOME/pkgbuilds/obs-studio-arm && makepkg -si
|
||||
3
runs/pika-backup
Normal file
3
runs/pika-backup
Normal file
@@ -0,0 +1,3 @@
|
||||
# Packages to be installed with this run.
|
||||
pika-backup
|
||||
gnome-keyring
|
||||
8
runs/podman
Executable file → Normal file
8
runs/podman
Executable file → Normal file
@@ -1,3 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} podman podman-docker podman-compose
|
||||
# Packages to install / uninstall with this run.
|
||||
podman
|
||||
podman-docker
|
||||
podman-compose
|
||||
fuse-overlayfs
|
||||
|
||||
23
runs/system
Executable file → Normal file
23
runs/system
Executable file → Normal file
@@ -1,12 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} catppuccin-gtk-theme-mocha \
|
||||
nwg-look \
|
||||
wl-clipboard \
|
||||
pam-u2f \
|
||||
pcsc-tools \
|
||||
swaync \
|
||||
yubikey-manager \
|
||||
nfs-utils \
|
||||
firewalld \
|
||||
# Packages to install / uninstall with this run
|
||||
catppuccin-gtk-theme-mocha
|
||||
cifs-utils
|
||||
kanata
|
||||
nwg-look
|
||||
wl-clipboard
|
||||
pam-u2f
|
||||
pcsc-tools
|
||||
swaync
|
||||
yubikey-manager
|
||||
nfs-utils
|
||||
firewalld
|
||||
zsh
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} thunderbird
|
||||
85
runs/utils/run-handler
Executable file
85
runs/utils/run-handler
Executable file
@@ -0,0 +1,85 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
set -o nounset
|
||||
set -o pipefail
|
||||
|
||||
declare file
|
||||
declare -a yayflags
|
||||
|
||||
THIS_FILE=${BASH_SOURCE[0]}
|
||||
LOG_LABEL=${LOG_LABEL:-$(basename $THIS_FILE)}
|
||||
LOG_FILE=${LOG_FILE:-"$LOG_LABEL.log"}
|
||||
DEV_ENV=${DEV_ENV:-""}
|
||||
|
||||
MODE=${RUN_MODE:-"install"}
|
||||
DRY_RUN=${LOG_ENABLE_DRY_RUN:-"0"}
|
||||
GREP_STR=${RUN_GREP_STR:-""}
|
||||
|
||||
log() {
|
||||
logging log --source "$THIS_FILE" --echo "$@"
|
||||
}
|
||||
|
||||
run_before_or_after() {
|
||||
local dir file run
|
||||
dir=${1:-""}
|
||||
run=${2:-""}
|
||||
|
||||
file=$(find "$dir" -mindepth 1 -maxdepth 1 -executable -name "$(basename "$run")" | head -1)
|
||||
if [[ -n "$file" ]]; then
|
||||
log " running $(basename "$dir") script: '$file'"
|
||||
[[ $DRY_RUN == "0" ]] && source "$file" "$mode"
|
||||
fi
|
||||
}
|
||||
|
||||
main() {
|
||||
local line pkg
|
||||
|
||||
log "RUN: file: $file"
|
||||
|
||||
if [[ -z $GREP_STR ]] || [[ $file =~ $GREP_STR ]]; then
|
||||
|
||||
log "${MODE}ing packages from: $file"
|
||||
|
||||
run_before_or_after "$DEV_ENV/runs/before" "$file"
|
||||
|
||||
# Loop over lines in the file and install the packages.
|
||||
while IFS= read -r line; do
|
||||
# Skip lines that begin with '#' (comments)
|
||||
if [[ ! $line =~ ^# ]]; then
|
||||
# Remove any inline comments.
|
||||
pkg=${line%% \#*}
|
||||
if [[ -n $pkg ]]; then
|
||||
log " pkg: '$pkg'"
|
||||
[[ $DRY_RUN == "0" ]] && yay "${yayflags[@]}" "$pkg"
|
||||
fi
|
||||
fi
|
||||
done <"$file"
|
||||
|
||||
run_before_or_after "$DEV_ENV/runs/after" "$file"
|
||||
else
|
||||
log "Grep filtered out: '$file'"
|
||||
fi
|
||||
}
|
||||
|
||||
############################## MAIN ##############################
|
||||
|
||||
# Setup logging file and label.
|
||||
source "$SCRIPTS/hypr/logging"
|
||||
setup-logging "$LOG_FILE" "$LOG_LABEL"
|
||||
|
||||
file=${1:-""}
|
||||
yayflags=("-S" "--noconfirm" "--needed")
|
||||
|
||||
[[ -z "$DEV_ENV" ]] &&
|
||||
log --error "env var DEV_ENV needs to be present" && exit 1
|
||||
[[ ! -r $file ]] &&
|
||||
log --error "File not readable." && exit 1
|
||||
|
||||
# Change yay flags if mode is 'uninstall'
|
||||
[[ $MODE == "uninstall" ]] && yayflags=("-Rns")
|
||||
|
||||
# Ensure yay is installed before proceeding.
|
||||
[[ $DRY_RUN == "0" ]] && . "$DEV_ENV/runs/before/yay"
|
||||
|
||||
main
|
||||
@@ -1,3 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
yay ${1:-"-S --noconfirm"} waybar
|
||||
3
runs/zathura
Normal file
3
runs/zathura
Normal file
@@ -0,0 +1,3 @@
|
||||
# Packages to install with this run.
|
||||
zathura
|
||||
zathura-pdf-poppler
|
||||
43
system
43
system
@@ -1,43 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Enable system services.
|
||||
|
||||
dry_run="0"
|
||||
while [[ $# -gt 0 ]]; do
|
||||
echo "ARG: \"$1\""
|
||||
|
||||
# Handle a --dry or --dry-run argument
|
||||
if [[ "$1" =~ ^--dry ]]; then
|
||||
dry_run="1"
|
||||
fi
|
||||
shift
|
||||
done
|
||||
|
||||
log() {
|
||||
if [[ $dry_run == "1" ]]; then
|
||||
echo "[DRY_RUN]: $1"
|
||||
else
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
log_and_run() {
|
||||
log "Running: \"$*\""
|
||||
|
||||
if [[ $dry_run == "0" ]]; then
|
||||
eval "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
log_and_run "sudo chsh --shell $(which zsh)"
|
||||
log_and_run "systemctl --user daemon-reload"
|
||||
log_and_run "systemctl --user enable --now hyprpaper.service"
|
||||
log_and_run "systemctl --user enable --now hypridle.service"
|
||||
log_and_run "espanso service register"
|
||||
log_and_run "sudo setcap "cap_dac_override+p" $(which espanso)"
|
||||
|
||||
log_and_run "systemctl --user enable --now logout-task.service"
|
||||
log_and_run "systemctl --user enable --now battery-monitor.timer"
|
||||
log_and_run "systemctl --user enable --now tmux-kill-sessions.timer"
|
||||
log_and_run "sudo systemctl enable --now pcscd.service"
|
||||
log_and_run "sudo systemctl enable --now firewalld.service"
|
||||
4
webapp
4
webapp
@@ -51,7 +51,7 @@ log() {
|
||||
|
||||
install() {
|
||||
local file=$DEV_ENV/env/webapps/$(basename $1)
|
||||
local script="$DEV_ENV/env/.local/scripts/hypr/install-webapp"
|
||||
local script="$DEV_ENV/env/.local/scripts/hypr/webapp"
|
||||
|
||||
if [[ ! -x $script ]]; then
|
||||
log "Failed to find install web app script."
|
||||
@@ -69,7 +69,7 @@ install() {
|
||||
log "Installing webapp from spec: $file"
|
||||
|
||||
if [[ $dry_run == "0" ]]; then
|
||||
$script --file $file --no-interactive
|
||||
$script install --file $file --no-interactive
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user