diff --git a/README.md b/README.md index 433ccbb1..fd483a2b 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,8 @@ Slack - - Gitter + + Matrix GitHub diff --git a/docs/TODO.md b/docs/TODO.md index c68c2c39..1c785af8 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -13,6 +13,7 @@ adobe-creative-cloud curl: (18) HTTP/2 stream 1 was reset - https://github.com/linuxserver/docker-webtop - https://app.warp.dev/referral/7PMXRV - https://github.com/chocolatey/boxstarter +- https://nginxui.com/ # Create the $HOME/opt destination folder mkdir -p ~/opt # Download the AppImage inside it diff --git a/docs/customization/secrets.md b/docs/customization/secrets.md index a80ea0c2..7041a200 100644 --- a/docs/customization/secrets.md +++ b/docs/customization/secrets.md @@ -171,6 +171,7 @@ Unless otherwise specified in the description column, all of the variables in th | `AWS_ACCESS_KEY_ID` | AWS access key ID (used for storing / retrieving from AWS Secret Manager which is used for headless Xcode installations / developer account authentications) | | `AWS_DEFAULT_REGION` | Default AWS region to use when region is not passed in via commands (e.g. `us-east-1`) | | `AWS_SECRET_ACCESS_KEY` | AWS access key secret (used in conjunction with the `AWS_ACCESS_KEY_ID`) | +| `CELL_PHONE_NUMBER` | Cell phone number you would like to receive [Twilio notifications from via Apprise](https://github.com/caronc/apprise/wiki/Notify_twilio). The number should follow the format of `13332224444` where the 10-digit phone number is prefixed by the country code. | | `CLOUDFLARE_API_KEY` | CloudFlare administration API key. Used by CloudFlare CLI. | | `CLOUDFLARE_ACCOUNT_ID` | The CloudFlare account ID | | `CLOUDFLARE_ORIGIN_CA_KEY` | The CloudFlare origin CA key (currently unused) | @@ -203,8 +204,11 @@ Unless otherwise specified in the description column, all of the variables in th | `HISHTORY_USER_SECRET` | User secret for synchronizing entries cataloged by [Hishtory](https://github.com/ddworken/hishtory). | | `HOARD_API_TOKEN` | The API token for [Hoard]https://github.com/Hyde46/hoard). | | `HOST` | The hostname of the device. Used for a FQDN that resolves to the device when combined with the \_ `PUBLIC_SERVICES_DOMAIN`. | +| `IFTTT_WEBHOOK_ID` | Webhook ID from the [Maker webhook on IFTTT](https://ifttt.com/maker_webhooks/settings). This is used to integrate [Apprise with IFTTT integration](https://github.com/caronc/apprise/wiki/Notify_ifttt). | | `JUMPCLOUD_CONNECT_KEY` | JumpCloud device enrollment key. | | `KEYID` | Your GPG key ID available on the MIT or Ubuntu servers. During provisioning, the key will be imported and trusted with an elevated trust level. This can only be passed in as an environment variable or be hardcoded into the `home/.chezmoi.yaml.tmpl` file. | +| `MATRIX_PASSWORD` | Password for user account for matrix.org through [Element](https://app.element.io/). Used to integrate [Matrix chatting with Apprise](https://github.com/caronc/apprise/wiki/Notify_matrix). | +| `MATRIX_USERNAME` | Username for user account for matrix.org through [Element](https://app.element.io/). Used to integrate [Matrix chatting with Apprise](https://github.com/caronc/apprise/wiki/Notify_matrix). | | `NETDATA_ROOM` | [Netdata](https://www.netdata.cloud/) Cloud room ID to assign the device to. Requires `NETDATA_TOKEN` to also be defined. | | `NETDATA_TOKEN` | [Netdata](https://www.netdata.cloud/) Cloud API token to use when enrolling. Requires `NETDATA_ROOM` to also be defined. | | `NGINX_AMPLIFY_API_KEY` | If NGINX is installed on the system, then this key will be used to join the NGINX Amplify cloud service. | @@ -219,7 +223,13 @@ Unless otherwise specified in the description column, all of the variables in th | `PRIMARY_EMAIL` | Your primary e-mail address used in things like the Git config and NPM config. You must pass this as an environment variable or hardcode it into the `home/.chezmoi.yaml.tmpl` file. | | `PUBLIC_SERVICES_DOMAIN` | The CloudFlare domain that you would like to use for CloudFlare DNS integration features. _Can only be passed in as an environment variable._ | | `PYPI_TOKEN` | PyPi.org API token stored in `~/.config/shell/private.sh` | +| `REDDIT_APP_ID` | Application ID for Reddit app created according to the [Apprise integration documentation](https://github.com/caronc/apprise/wiki/Notify_reddit). | +| `REDDIT_APP_SECRET` | Application secret for Reddit app created according to the [Apprise integration documentation](https://github.com/caronc/apprise/wiki/Notify_reddit). | +| `REDDIT_PASSWORD` | Password for the Reddit developer account linked to the Reddit app created according to the [Apprise integration documentation](https://github.com/caronc/apprise/wiki/Notify_reddit). | +| `REDDIT_USERNAME` | Username for the Reddit developer account linked to the Reddit app created according to the [Apprise integration documentation](https://github.com/caronc/apprise/wiki/Notify_reddit). | | `REPLICATE_API_KEY` | [Replicate API key](https://replicate.com/account/api-tokens) (used for [AgentGPT](https://github.com/reworkd/AgentGPT)) | +| `RESTIC_PASSWORD` | Password used to encrypt user-level Restic backups (leveraged by `autorestic`). This includes `$HOME` directory backups and application data backups. | +| `RESTIC_SYSTEM_PASSWORD` | Password used to encrypt system-level Restic backups (leveraged by `autorestic`). This includes Docker volume backups and any other types of backups that might require sudo privileges. | | `RESTRICTED_ENVIRONMENT` | Set to `true` if you are setting up a device that should not use sudo / administrator privileges. _This can only be specified as an environment variable._ **This feature is a WIP.** Pull requests welcome. | | `SAMBA_NETBIOS_NAME` | NetBIOS name to use with Samba. Default value is the same value as the `HOSTNAME` variable. _Can only be specified as an environment variable._ | | `SAMBA_WORKGROUP` | Samba workgroup name. Default value is `BETELGEUSE`. _Can only be specified as an environment variable._ | @@ -228,6 +238,7 @@ Unless otherwise specified in the description column, all of the variables in th | `SFTPGO_DEFAULT_ADMIN_PASSWORD` | Password for default admin user that can login to the [SFTPGo](https://github.com/drakkan/sftpgo) web interface. | | `SFTPGO_DEFAULT_ADMIN_USERNAME` | Username for default admin user that can login to the [SFTPGo](https://github.com/drakkan/sftpgo) web interface. | | `SLACK_API_TOKEN` | Slack API personal access token that populates `~/.config/slack-term/config` so that you can use Slack from your terminal with [slack-term](https://github.com/jpbruinsslot/slack-term). | +| `SLACK_BOT_USER_OAUTH_TOKEN` | Slack bot OAuth token. Used by Apprise Slack integration so that user can post to Slack (with support for attachments) from the CLI. | | `SNAPCRAFT_EMAIL` | Snapcraft.io e-mail address associated with the `SNAPCRAFT_MACAROON` and `SNAPCRAFT_UNBOUND_DISCHARGE` (detailed below). Stored in `~/.config/shell/private.sh` so developer API credentials can be loaded by running `source "~/.config/shell/private.sh"`. \*Can only be included as an environment variable or hardcoded into `home/.chezmoi.yaml.tmpl`. | | | `SNAPCRAFT_MACAROON` | Snapcraft.io authentication variable stored in `~/.config/shell/private.sh` so developer API keys can be loaded by running `source "~/.config/shell/private.sh"`. | | `SNAPCRAFT_UNBOUND_DISCHARGE` | Snapcraft.io authentication variable stored in `~/.config/shell/private.sh` so developer API keys can be loaded by running `source "~/.config/shell/private.sh"`. | @@ -237,6 +248,10 @@ Unless otherwise specified in the description column, all of the variables in th | `SURGE_LOGIN` | The e-mail address associated with your [surge.sh](https://surge.sh/) account. | | `SURGE_TOKEN` | The [surge.sh](https://surge.sh/) authentication token acquired by logging in and running `surge token`. | | `TIMEZONE` | Your timezone in the `America/New_York` format. It should be available in the TZ database. If not passed in as an environment variable, then the device's current timezone will be assumed to be correct. | +| `TWILIO_ACCOUNT_SID` | The account SID for Twilio which can be acquired on the bottom of the homepage of the [Twilio console](https://console.twilio.com/). Used for [Apprise integration of Twilio](https://github.com/caronc/apprise/wiki/Notify_twilio). | +| `TWILIO_AUTH_TOKEN` | The Twilio auth token found on the bottom of the homepage of the [Twilio console](https://console.twilio.com/). Used for [Apprise integration of Twilio](https://github.com/caronc/apprise/wiki/Notify_twilio). | +| `TWILIO_FROM_NUMBER` | The number to send out Twilio messages from. Should be registered in your Twilio account and be in the form `13332224444` with the country code included (e.g. `1` for the US in the sample phone number). | +| `TWITTER_ACCESS_TOKEN`, `TWITTER_ACCESS_TOKEN_SECRET`, `TWITTER_API_KEY`, `TWITTER_API_KEY_SECRET` | Various secrets you can generate using the Twitter Developer portal. Integrated into Apprise to allow tweeting from the command-line. Apprise provides [details](https://github.com/caronc/apprise/wiki/Notify_twitter). | | `VAGRANT_CLOUD_TOKEN` | VagrantUp API token stored in `~/.config/shell/private.sh` so developer API keys can be loaded by running `source "~/.config/shell/private.sh"`. | | `VMWARE_WORKSTATION_LICENSE_KEY` | License key used for pre-registering VMWare Pro or VMWare Fusion | | `VNC_PASSWORD` | VNC password used by macOS VNC system utility or TigerVNC on Linux. Default if not passed in is `vncpass`. | diff --git a/home/.chezmoi.yaml.tmpl b/home/.chezmoi.yaml.tmpl index 5fdab100..ca341462 100644 --- a/home/.chezmoi.yaml.tmpl +++ b/home/.chezmoi.yaml.tmpl @@ -137,6 +137,7 @@ gpg: data: host: arch: "{{ .chezmoi.arch }}" + autoresticHealthcheckUuid: "AddInFromHealthchecksDashboard" cloudflare: teamsOrg: "{{ $cloudflareTeamsOrg }}" cpu: @@ -165,6 +166,7 @@ data: home: "{{ .chezmoi.homeDir }}" homeParentFolder: "{{ if eq .chezmoi.os "linux" }}/home{{ else if eq .chezmoi.os "darwin" }}/Users{{ else }}C:\Users{{ end }}" hostname: "{{ $hostname }}" + noReplyEmail: no-reply@megabyte.space samba: netbiosName: "{{ $sambaNetBiosName }}" workgroup: "{{ $sambaWorkGroupName }}" diff --git a/home/.chezmoidata.yaml b/home/.chezmoidata.yaml index c5b51d62..630622a0 100644 --- a/home/.chezmoidata.yaml +++ b/home/.chezmoidata.yaml @@ -25,15 +25,15 @@ docker: healthchecks: allowedHosts: '*' defaultFromEmail: no-reply@megabyte.space - siteLogoUrl: https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/color3@10x.png - siteName: Megabyte Labs Healthchecks + siteLogoUrl: https://raw.githubusercontent.com/megabyte-labs/install.doctor/master/home/dot_local/etc/branding/black-icon-128x128.png + siteName: CombineOS Healthchecks siteRoot: '/' portainer: siteLogoUrl: https://gitlab.com/megabyte-labs/misc/assets/-/raw/master/logo/color3@10x.png templatesUrl: '' statping: description: Uptime monitoring for Megabyte Labs managed web services - name: Megabyte Labs Uptime Monitoring + name: CombineOS Uptime Monitoring wireguard: serverUrl: megabyte.space internalSubnet: 10.93.92.0 @@ -462,6 +462,7 @@ softwareGroups: - p7zip - pigz Communication: &Communication + - apprise - irssi Communication-Desktop: &Communication-Desktop - *Communication @@ -719,6 +720,8 @@ softwareGroups: Logging: &Logging - fuego - papertrail + - rsyslog + - runitor - sentry-cli - unbuffer Media: &Media @@ -882,6 +885,7 @@ softwareGroups: - tailscale - warp Orchestration: &Orchestration + - dagu - nomad - pm2 - robotframework diff --git a/home/.chezmoiscripts/universal/run_after_01-pre-install.sh.tmpl b/home/.chezmoiscripts/universal/run_after_01-pre-install.sh.tmpl index 1614f685..cc9d5cc6 100644 --- a/home/.chezmoiscripts/universal/run_after_01-pre-install.sh.tmpl +++ b/home/.chezmoiscripts/universal/run_after_01-pre-install.sh.tmpl @@ -132,12 +132,17 @@ applyRootConfig() { logg warn 'Unable to find root user folder location' fi - ### Copy minimal set of profile configuration files if [ -n "$ROOT_FOLDER" ]; then + ### Copy minimal set of profile configuration files logg info "Copying ~/.bashrc to $ROOT_FOLDER/.bashrc" && sudo cp -f "$HOME/.bashrc" "$ROOT_FOLDER/.bashrc" logg info "Copying ~/.zshrc to $ROOT_FOLDER/.zshrc" && sudo cp -f "$HOME/.zshrc" "$ROOT_FOLDER/.zshrc" logg info "Ensuring ~/.config folder exists" && sudo mkdir -p "$ROOT_FOLDER/.config" logg info "Copying ~/.config/shell to $ROOT_FOLDER/.config/shell" && sudo mkdir -p "$ROOT_FOLDER/.config" && sudo rm -rf "$ROOT_FOLDER/.config/shell" && sudo cp -rf "$HOME/.config/shell" "$ROOT_FOLDER/.config/shell" + + ### Copy Autorestic configurations + logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/autorestic/autorestic-system.yml file to $ROOT_FOLDER/.autorestic.yml" && sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/autorestic/autorestic-system.yml" "$ROOT_FOLDER/.autorestic.yml" + logg info "Removing ${XDG_CONFIG_HOME:-$HOME/.config}/autorestic/autorestic-system.yml" && sudo rm -f "${XDG_CONFIG_HOME:-$HOME/.config}/autorestic/autorestic-system.yml" + logg info "Applying proper permissions to $ROOT_FOLDER/.autorestic.yml" && sudo chmod 600 "$ROOT_FOLDER/.autorestic.yml" fi } @@ -832,10 +837,16 @@ installDockerRclonePlugin() { # @description # This script loads crontab jobs that are defined and housed in your Install Doctor fork. loadCronjobs() { - logg 'Installing crontab jobs' - crontab < "${XDG_CONFIG_HOME:-$HOME/.config}/crontab/config" || EXIT_CODE=$? + logg info 'Installing user crontab jobs' + crontab < "${XDG_CONFIG_HOME:-$HOME/.config}/crontab/config-user" || EXIT_CODE=$? if [ -n "$EXIT_CODE" ]; then - logg error 'Failed to load cronjobs' + logg error 'Failed to load cronjobs for user' + fi + + logg info 'Installing system crontab jobs' + sudo crontab < "${XDG_CONFIG_HOME:-$HOME/.config}/crontab/config-system" || EXIT_CODE=$? + if [ -n "$EXIT_CODE" ]; then + logg error 'Failed to load cronjobs for system' fi } diff --git a/home/.chezmoiscripts/universal/run_before_01-prepare.sh.tmpl b/home/.chezmoiscripts/universal/run_before_01-prepare.sh.tmpl index e6e53f38..d2c6d63c 100644 --- a/home/.chezmoiscripts/universal/run_before_01-prepare.sh.tmpl +++ b/home/.chezmoiscripts/universal/run_before_01-prepare.sh.tmpl @@ -1,3 +1,10 @@ +#!/usr/bin/env bash +# @file Prepare +# @brief Ensures commonly used system packages that are common dependencies of other packages are installed +# @description +# This script installs required system packages. Each system's required packages are defined in `home/.chezmoitemplates/$DISTRO_ID`, +# where `$DISTRO_ID` is equal to the Linux distribution ID found in `/etc/os-release`. + # @description # This script pipes environment variables and a logger function to a temporary file that is included by other scripts. # It is included as a temporary external file to aid in debugging since if the included files were inlined in scripts diff --git a/home/.chezmoiscripts/universal/run_before_02-homebrew.sh.tmpl b/home/.chezmoiscripts/universal/run_before_02-homebrew.sh.tmpl index 8cce17c4..b72374de 100644 --- a/home/.chezmoiscripts/universal/run_before_02-homebrew.sh.tmpl +++ b/home/.chezmoiscripts/universal/run_before_02-homebrew.sh.tmpl @@ -1,4 +1,3 @@ -{{- if (ne .host.distro.family "windows") -}} #!/usr/bin/env bash # @file Homebrew / Xcode Tools Installation # @brief Ensures Xcode tools are installed on macOS and ensures Homebrew is installed on either Linux or macOS @@ -171,4 +170,3 @@ fixHomebrewPermissions if [ -f "$HOME/.viminfo" ]; then logg info 'Removing ~/.viminfo' && sudo rm -f "$HOME/.vimino" fi -{{ end -}} diff --git a/home/.chezmoitemplates/docker/healthchecks_db_name b/home/.chezmoitemplates/docker/healthchecks_db_name new file mode 100644 index 00000000..b8a53bca --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_db_name @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFekx0S0JqbkhtSUpldWRW +QUFPa21iS2JBYWVqUlpyUW1INThoR0h1NUJzCi9CWmJPNFpQdEhwNzlGMlFtRnkr +Z3RyVFAwTkdIZ1UrcVRjTmlIc2ZYT1EKLS0tIGxrWCtWS3RVeHkrcUZVZmM4cVo1 +R1VTTk1LUUtZNGZ0MGs3akc0OEtBanMK+kyTXeqIqF4qPwv+Fc9OphknufvRv2B8 +6Jho0+ICC1Bxubwy +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_db_password b/home/.chezmoitemplates/docker/healthchecks_db_password new file mode 100644 index 00000000..e29ff1b4 --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_db_password @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjMkdRVy91R1crTWlDekJi +VmhXWU9va3JqaGYxVjFnQk9Dck1zVzVZQWlzCjVxc0pLYjJDQmt4ZUl0Y0FUZE9w +OHZuUHpuRGpNUkpCSFp4djlRWmlVRXMKLS0tICtpL2dpS2lHNHJ3UXkxMS9INmt6 +TStScWFBRTlYWE1OWTNIL1g3eE9hRncKAjplPmFrrLt7oBZ3f+ar4kOTj35vPE72 +icxVzmsyzU4EZaFwA7TZjSWYFHqP6djsWGtoId0l/ljuMJjcMqWpTeQXijzvRQKh +0Jg9jQ== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_db_user b/home/.chezmoitemplates/docker/healthchecks_db_user new file mode 100644 index 00000000..8a7fb363 --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_db_user @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB6SHBMSVBHWlJTWXo2eTFm +bnJYa0NYWW42V0VOWE52MDdwK0N3Q2VZMzNjCmVsWk5mQUlNbWhPanpLU04xQmNS +YlZnVTd5OGNybEUwMFNoZ3NjZWVzTncKLS0tIHFVbFIzV0s3MmY2S3ViRUsxTmI3 +cVpjRjVIMmVLSDJkZ1cwcEZ2SFZGemsKYrXMDabkAh02NX85ZL7U29AGgpaecSir +2oDXDv/BEdI3vzLivguQmw== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_secret_key b/home/.chezmoitemplates/docker/healthchecks_secret_key new file mode 100644 index 00000000..93aa05f0 --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_secret_key @@ -0,0 +1,9 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBvN0Rka3I0b0ZhTHJhUnpL +NnhFT2pCSHVic3hZOHBXTDBhV3o1SzRPbG0wCitTTlRnVktrSTJramo2WEtBb0Jl +cHlOZmhiZlo4MGx5R1hMWDg3M3hXQ1UKLS0tIElNbWt3VXd5RU9ZNVVLYStzOS9W +dFlGWkdPRzFaNzVIQ1ZDbzVQV241aDgKSCr0DeHoJSoGXJXpOBaf7QhTjAaX7V+o +gjSPxmuiQnd06it4h67xd8hVK83b67x49jGJH3cJMMgzblOKZsjPCju7ENnBeVBi +zDsvBDQ0OWsS5yEmHdAajnriva/Qd3ToTizux5JiUkONqn5FvZVDmCk+idrSeyQL +8AHz6fa0ouUg55SENYb1kc3Ja/XmJ1YDHD4= +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_sendgrid_api_key b/home/.chezmoitemplates/docker/healthchecks_sendgrid_api_key new file mode 100644 index 00000000..f40a9b0f --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_sendgrid_api_key @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3bDQwUCtFN3hmaVlKemlZ +Y0FwNmRMaHgyYWJxYk5zV0xLSjZlVXUyVG0wClhYdk9MdHFkbGtzZ0h0Ynh2cTRh +OWwzRDMwYUtZL1VocjFGenZ2djVhNlkKLS0tIGtka1B6QXlQTnRlYkxJUk5OLzNa +UmtzclBQTWtoWjZydkFJTW12SFFyNzQKc86JTlBUx1wMUEcNrjBl+hNEdXgg9mNe +yr+EhPOqRvgsT7LePNwWSaOx2L66RIkl36/WADWRXRGchHS0O2cgsIb6P2KfOwd9 +9geM1rwWyk3XfQm3yqMKHO+nv6iLJ4jI2hf4+io= +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_slack_client_id b/home/.chezmoitemplates/docker/healthchecks_slack_client_id new file mode 100644 index 00000000..cf480134 --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_slack_client_id @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCR0N1VjhvWE9PcDB5blJT +MXBuZ2pIWW9QZDNrSC9iNUd1RStOTk4xdTJ3CkdBUWlaRFoxeW8wVUdhRzhZWFpQ +UmRmSmttR2c4dmlBQkk5SmNKYVZhMDQKLS0tIFJwdzFqODRyd1lJV3NoeDFaWity +dXpDMXZTOGx1ODJBb284VUxJb3hPeFUKzAmx6mexxKONr+2uA43AtqhU3NdQwCRX +frZ4nbux4q5QHsU9hrXdx5OtPFmDYY9EBDkJa1OhVTH/kbo= +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_slack_client_secret b/home/.chezmoitemplates/docker/healthchecks_slack_client_secret new file mode 100644 index 00000000..a4c43b6c --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_slack_client_secret @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAySk50RGJiM01LV0NpSjlV +M3ZzTXRVbG1FZE5LQXk2U1BTWThOQ0NZaVN3CjhOR2VleEdoNHAwZVBTYWwwZ2xq +ZGVFMG53U2l4dkVrSWRDTEw5SXBLbEEKLS0tIEQvcWh2Ymk4S28vSk1ubDhFSnha +cDNmMDUvUk1UUXVCTDJuQUxacmllVkEK4IfrDpJPTFwronieSnmVMhSNK8hdNU/V +ko2wuWY4T08HrHBSHPKFxI8p2fbHpZxMXhanvNs9WBCxjm2Ia7hWxA== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_superuser_email b/home/.chezmoitemplates/docker/healthchecks_superuser_email new file mode 100644 index 00000000..53a33cba --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_superuser_email @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrOThqUUEyUjFEUTBkUElQ +ZDlkcldTWDZGc2wyaldMbkgvcGdlUTdvMjM4CnEvTGlSZVVYSCt2dWZGb3Y1bWM0 +NStPOS8rcytUWGtFUGczaVNQQUFQY2MKLS0tIFB6OFNJYlEyNTE5alZXeW5TSkpO +REJ1NFVXSzRTU1RHc3dRSlZWMkdlS1EKqcmK27xpMAMnzLW+JEhQipSll/0vT59q +XoHH/cBJFknH9QQX1cRvlJh8Pjd7+bHaSZRnog== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/docker/healthchecks_superuser_password b/home/.chezmoitemplates/docker/healthchecks_superuser_password new file mode 100644 index 00000000..20df6232 --- /dev/null +++ b/home/.chezmoitemplates/docker/healthchecks_superuser_password @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB5bFJPVmY3RUtMUUk0U2FJ +SEJMWmZyVGNtK2YrWnl3QjJQV09UK3N6TmdZCmhDS2FaZ09FcnRVZStCSGF0UHoz +K2MvcVpQUkpRVWFiNDlJc0dxZ2RjcXMKLS0tIHAyajRmeldoSFZQdWVRajZuRG5l +YWJEYUF4eUdtWWhmTExSREZqV2VqcnMKAULLETSutkcRJzewCsg/1FTskyNHao22 +H4TYScxA+Fj2LwsyzHMJ7/VHAHbvgA== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/files/apprise-custom b/home/.chezmoitemplates/files/apprise-custom new file mode 100644 index 00000000..50c83601 --- /dev/null +++ b/home/.chezmoitemplates/files/apprise-custom @@ -0,0 +1,34 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXL0hNNUNTUmhSK0xkMUVS +a2lOUkREeXRuMkxUSTZHSHVQMHViT1Vhb3gwClB1Vjh6TVNiUGZOa1ViWjMwNHR6 +Q01Scys4UVMzVUhMSTZHYWdMWFNQZzAKLS0tIE4rVnowSE5Zakt5M1AxYVVhRVdI +eHhoRGNiKzZiQ3hRblZQTkpMY28yNWMKx2RQ/t17kNrlfipe9EkGzh2mP5YarEUc +haLGfJ+9aTWDqPTuCqA0F/WFUdi3WgZ5T9Ku5PMC/71TNyBEucjTu+99NhwUFad7 +Fs9iRdsvx2ridXTc6czRSjvY3WwAMQofI6y7Sw4zVV8mQIWh/t4AdCrIzlgG+tVx +COWqmO9VC1+S2Are1SBXoR4D9oMTUvoGpolBr0yzJtMDlE17Z+qwqARDXxJxdlnd +nmZr6EZNlWKpdM11+koJ9f1pHvKDM0W+u8j41hTwkhj85GAtCxRBH+ovP4jz07li +y+YqdJEykQOmbvhDNsPoi2j90NUS9zf/0ts9s4P4tF5q45BFJwb+RswIHRfh5zz9 +5/eb0BBQDz10WoQcKzzjkAeXa5YvOOM1IVA8KY/8/BIJ6hr2HPnJmzNqlO1IbvI0 +WgwGBVgGQmILveTn/cpQjdFlzpezJ+f70ltZ8IVfA9HUuMkaFjr3W9+wAGeeWpu7 +fpQuXdhHvJMi9lOLlo9sRPDtFWSJ8mS2lG5mJRzEjTdn5M7m7N72wKJeID9ECHM3 +zRdRvZOJ/uZeS4XAVHS+EGT2YX8eMaKHXv+r+uBiNJ3WIRV5q9H4qs6XA4EFxNC8 +sI4LkEcKyct+UTxvGtG4bG/s2kuj+U2Tf37jtzo5d7UV/X8B4ZAGyYXo0AX7iyLG +EWZ469zc8JCmhSQ3MH3lLd6nT9V0G+eyQmkH+loYPOCsavggv38Up7R1J1NY9/fW +pX/+sWoTj6dnS6d5RUGtfyRVSvb/yL1CxpDmE7fi8WZMrBQCwXyhfiTWLl5hX4mV +EnfMA9Q10XM1zOy0YSrmc0H37rOaGBL8sqKat5FWvfgG2XIHgvgdQ5mdSvVSj0t4 +C9A7f1E8QJSESn5SxSwSw2VH3qbEx4H2qx8F3n8jdTMEhaX8k0XLBmn0qeXTyT0q +k2bmMRrTxLtVn/KMMdD6D6vboZSmnP7sczroGSHZ7rdWbhoHeVQV9TXBNf3op02p +HQd2nk2OcNHwlpizABtglFE/4PwJ5qoisK+be11OgBDCXVTFv1v8IxAMPLd+PPuO +0vKLkwaFqBqvZfkEIr7hTjYouVlkRlLvpfTPROXeFfJdMf3ITnk0LLpS5FW9ZyhV +8RvDFfAlAeMC8aL1+BvMRDHRJ28mwaQiG4xEWA+NcQeVRcDyfzzwQh0Vm3hNvKcW +0dI8Qjr2kZX+f9niTQj3+h72fylhItCyMEJ556G5x8O8fra/21xLXf7IQzhd6hn8 +6V4tuFB2RrLS1HqYcK/Cy/E0FlSQ4LrTghRTq3b8aEQoaofBJgdimorVclDGyDh/ +pjaWvoVVbHi/VC3KdwuOCfcSL0rKn6Cwy+y0cPFSX9aMs2dxu5mIK5E8hQKEM77M +EeQjehj72PRrbKOVRYJJvtegVCRimDIxz5FMz60WEGD0jPrffPV/m7Hjvipsxlke +o4HPDZ3tEMZVW9FftaNnKGqeU76FOgByRh4w+uTeMfo0lXm6yYYrQ1WyHa4+V6F7 +dibkHMDy7n4r+nUZk2GR2DWHR0kqJV9BVSVBTz465F/qvPu1Z/amfxhrhUKywI+J +y1P01cjnke4tNQIx7RheAYxUxDRR/A65y/VVWFCKLhfnnJpqhGwnXetjUHmbxgms +Z5K0XJojJ1DG4F9mxUUQpg+2jRPekopmq9YddMW/nSiCjdr/ZjJmIrlX/YIgCk1N +05Ydb1T2NlC8HQhdGo1X647tqNsfYtB+XXCUYkIeEzkTluy9J62XN82cCIjbBP2g +T2RN9GgOUjFzAsw2LiRJWo22KUVFjcCclyLkww== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/CELL_PHONE_NUMBER b/home/.chezmoitemplates/secrets/CELL_PHONE_NUMBER new file mode 100644 index 00000000..ce3ed4ba --- /dev/null +++ b/home/.chezmoitemplates/secrets/CELL_PHONE_NUMBER @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBPTDRzSHB4eTFnV2E2WU8v +Y0I1bFhjTzI0OWcvRVJ6N08zYmRsbWlwZVhzCnhoNmpoSFNUbzI5M2ExNVdPM1h6 +Q2ZTRTNxSjZycHMzSjQzNlNqSGJzR1EKLS0tIDN1U29NT1lkT2JBNnN2VndiK3Jz +clRkT3RJSnByeHFGbUVOSGFsVWR2cmsKa6RVel4xTm7C+DfmsLl1JR3RFRr4AYBy +1HF0EGUH9N3Jz4D0R30rI5EteA== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/GMAIL_PASSWORD b/home/.chezmoitemplates/secrets/GMAIL_PASSWORD new file mode 100644 index 00000000..ace66628 --- /dev/null +++ b/home/.chezmoitemplates/secrets/GMAIL_PASSWORD @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3dDlwKytlbUZSWjE0MTJn +QXNGSXE5cnFEMXZkZHFscnJGT2RIelA2YnhjCmpISXljSDdua2pTNmRQUk16MmEx +eHJLZkpjMnU3WklJd0lEMHVlVlU3NWMKLS0tIGdib1lGMlZtVE4xQ2ZIZi9iS1d1 +UlBoRTRrUVpnYm1Zd3ZzbDRHdkh0MUEKaklKnKjGhUo+hvJhalpKMm3VxhYkxll3 +6sk6KRuLGFs4vZDm2eomgZs0cnUTjZY0 +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/IFTTT_WEBHOOK_ID b/home/.chezmoitemplates/secrets/IFTTT_WEBHOOK_ID new file mode 100644 index 00000000..a3f20c79 --- /dev/null +++ b/home/.chezmoitemplates/secrets/IFTTT_WEBHOOK_ID @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHUDhKYUJZOCt5OXFjZDVZ +NWJjdllHUlBkNEk1Q0dpdGtJYW0vdi9hOFM0CkMrVFVjS2lRdHgrLzVFZHByMVFL +WXRyNFZFaDNsNnRtWlVwREJueWdHbTQKLS0tIHJTdHJqSVlMM3g4M05hM0VjQkc3 +MTUrdFRFS1FlSjBMVmlYamc5QjFkd0UK+yLbeYrnauc25H7yJm3ZBtzOVp2PMuxA +YvcxRJA+zsARG5ch79l26tXGiWVz8QSzhr/GURpg8Y+Yl5xSRxXq7Lxc7PmOWDw9 +xEuE +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/MATRIX_PASSWORD b/home/.chezmoitemplates/secrets/MATRIX_PASSWORD new file mode 100644 index 00000000..1f0317ca --- /dev/null +++ b/home/.chezmoitemplates/secrets/MATRIX_PASSWORD @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4V0JURmtMRVVvQnhpVEtN +RGRJeFlHMjFpOVZscTluUmpXbXFQNmlvMkVVCjQ2TGpnYjdHRjNhMTg2dUJQaHBO +VDhOWk40THZZME9yV2dzU1BmblhsV28KLS0tIGVPTUxHWC9iMmgrUHFDSitNT1Jy +ZVdGM3BheWlLQWNNSGFJMEoyTlMvU0EKE3tWM+XaBySV8JwyXTpzJz6F4pBRfq0T +PAp1VDDe8ns1r+xm/yhzEWyqSgTLJQPFSA== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/MATRIX_USERNAME b/home/.chezmoitemplates/secrets/MATRIX_USERNAME new file mode 100644 index 00000000..7bdf1105 --- /dev/null +++ b/home/.chezmoitemplates/secrets/MATRIX_USERNAME @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBSZlAzd0g2NkhuTzdESVJR +Ly9BZHZVaWVjVFA5SmlzdGMrRmI2NXdPU3hZCk0vLzFrTDlqK2FiY0haMmY3d1pY +b1kwNTA1czgvMDZ0d1gwZEtBWC9TQlEKLS0tIExpN3JENXlNWXlqRmMxK2NYcTFn +dm1KK25lZHE4MjZoQWk4QXFndUNRU28KHoUpywjuPxX5foF7F6qy0Ve6LNKA5/SQ +TDEDz8i5CDB8gu2GijTFoNhxQEOCGtoF +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/REDDIT_APP_ID b/home/.chezmoitemplates/secrets/REDDIT_APP_ID new file mode 100644 index 00000000..156ba7df --- /dev/null +++ b/home/.chezmoitemplates/secrets/REDDIT_APP_ID @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAvZTc4cGNyRDZCQ2hPdmF1 +dUxzQmp0ZElycFdKVXliSTNiL1RRTHBYK0VjClhQdm1lOFBIK2xPYWg4L3JPZTlI +aTlxaEZMOFVRSE13U3lMTjFVUXlxa28KLS0tIE96RHFhZ0lLMWg5b004NGFUZXNZ +YWVEUE9GQU9jNWkyTDl0dURhSWlNYW8KZYCJ9ABfOQb4p5MoMT0RzXq3/BEqcL9f +iZ0L5U3qol8IHI+9+GbZrLGWC/L0y/8IbmZ8oKs6 +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/REDDIT_APP_SECRET b/home/.chezmoitemplates/secrets/REDDIT_APP_SECRET new file mode 100644 index 00000000..3befd26f --- /dev/null +++ b/home/.chezmoitemplates/secrets/REDDIT_APP_SECRET @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBiSGlpQzRwTWMxVXhxMHRH +ZWFHeDJZbExZUlJUaGRiVHl4NGVsTHdvd0NJCm11TWREYWdsOGRwTlJKeGlCdWE5 +STZ2UlhjRWtUYnZkdmdUeDk1cmpKWXMKLS0tIE8vekh6YTVhRVZDM203bXBwVmVS +Q0JsRXY3SDV3RUw4RTdHcFE2WFhWSk0KEm2bieswbpQG9fDMn85azz/cHV6fK//R +qjoViUBBqKyuZM4ci8GfaHew15MszDA0lVTOoEyjpNf1dSp/+ORc +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/REDDIT_PASSWORD b/home/.chezmoitemplates/secrets/REDDIT_PASSWORD new file mode 100644 index 00000000..cf87130a --- /dev/null +++ b/home/.chezmoitemplates/secrets/REDDIT_PASSWORD @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4YkMzS1p5RUFZV0VGZmJ3 +YVlxVWNGdytjTHRUYXBvbFZvM2crS2d0RVhjCjdUWmU1ZHNObnhjUFVrTHBBbWkz +M0NWc01tanRKRVl3VEFJeDZnUUFxc28KLS0tIEhQTW55ZEEvdXN5RmhocGVKL2Rp +dy9HTjVqYUhHWEhiZlVBbEVUQWE1Mk0KnGRbcxe+Spdyo63ZZQ8JMNp0PFDqb/wy +H8V31CsS4V4YzH4AvDWh1a/hF8+/uqEXvg== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/REDDIT_USERNAME b/home/.chezmoitemplates/secrets/REDDIT_USERNAME new file mode 100644 index 00000000..7830a388 --- /dev/null +++ b/home/.chezmoitemplates/secrets/REDDIT_USERNAME @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBwTGMzWUxheDRKOEVRWUVs +LzRtZzdscFVpUTdqWVg5TE1nQkZmMXlNMmprCmNCQm5keHA3VnV4TGtZVGxuVEI3 +dDJjclA3RmQ4WnVSUWkxN3lrcTNiOEEKLS0tIExjT0cwMVZJOUZSKzN4RHlMNXR1 +UGFaK2lZaVNHMFgwRWxUUXc1ZEk1RVEKl3POH0I3o+xEaFsiPWW0Coo+hbtCOcjT +vBrafnhG0opqW53cMer4P0D6Y3U= +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/RESTIC_PASSWORD b/home/.chezmoitemplates/secrets/RESTIC_PASSWORD new file mode 100644 index 00000000..ca293057 --- /dev/null +++ b/home/.chezmoitemplates/secrets/RESTIC_PASSWORD @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBmWGpvWXp3aXlvTVpFSkhr +YkM4UWNpMkk0LytEQXBkZ2NQMVRkZmxXS0drCktWYTc5M1ZLSzZzV3ZkQlFWN3Q4 +ekZ6ZmZHR3h0N2x5alJobmE4cWVaNlUKLS0tIFljODhFSi9RV0piNU5ub09ITi80 +SmNVTjZBN1NEU2EyZnZyZGhLVVUvNkEK+bYhZ6OulkCFT1uR6nCp6uvlKwoxT0xu +kavzeRXrGUPGpCiBvRUvrk7in9iW7A== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/RESTIC_SYSTEM_PASSWORD b/home/.chezmoitemplates/secrets/RESTIC_SYSTEM_PASSWORD new file mode 100644 index 00000000..2336397c --- /dev/null +++ b/home/.chezmoitemplates/secrets/RESTIC_SYSTEM_PASSWORD @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYNmJ6dGZwU1U0dE9RSDQr +dUphTTRNejE1ZGp2dEdXSmRSOGxmdDZESWxvCkowYnczZEwrMzZJeDV2Q21kWDBM +YTdCY3dMQy9FZTc0dERSOVBEY3gwdkkKLS0tIFQ3WTE5TzlVbFNpK3VCQkRiWk1I +WlNGeWZMeVNOMWQwR2RtZ2NDZkYvUXcKtmvvZzqqVtbAIindRUBOzNqIPYHHde6p +MKSyiRANtAxWgQOtuwc/hKx4XLPlxA== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/SLACK_BOT_USER_OAUTH_TOKEN b/home/.chezmoitemplates/secrets/SLACK_BOT_USER_OAUTH_TOKEN new file mode 100644 index 00000000..81e16c08 --- /dev/null +++ b/home/.chezmoitemplates/secrets/SLACK_BOT_USER_OAUTH_TOKEN @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBrelZWL0l3bGE3eDB0NUR6 +bW5wM25SL25EOWxTc3JhbHZOL0UrVUF6ZkE0ClB0S3dvdWFaOFlRZWczOEcrZmND +VWEvUzV0ci8xWVl0NUJWK1ViNHA3M2sKLS0tIDVXUDdyNlc1TjVxSEVqM0d2N1VN +UitQMWJzdkVMdlpha2gvdUY2dFpraTgK2om7IQr4V1ggJH7Ls+H+k1zQ93QvEnvc +V6je1Y4w09FKKLb6smK4jKj6ZFZ7f/RgvGyxkcpvJqAGA7pUyAGRh8Bu9cviFexE +lxcfxLBgVlVPHUQUA+jcl50= +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWILIO_ACCOUNT_SID b/home/.chezmoitemplates/secrets/TWILIO_ACCOUNT_SID new file mode 100644 index 00000000..49499337 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWILIO_ACCOUNT_SID @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBEMFpBa3dseXhISTdKR0ZN +Z21RQ3NLV1lSRW8wVzlSMmhIZ3lpY3JRVnkwCk1IdmNERlcyWVV6MXJhV29MWWtU +N1cybzg3Q0JVTC9oMUV1YTFqL2djZ1EKLS0tIEErZm5KTkJOZmFqWXNoVDVhYVY5 +MWNiMEp6aG9FdU5rMWJQZUw1eDBLM1UKfa30TyUR2HmpczeYILq8MWWi2ahDpuJ9 +IQSLbfV/UVWVFJXwZu3Mb/ejm1MTIBddjHQ5OL/ih7v9ui9YF1LEPRhs +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWILIO_AUTH_TOKEN b/home/.chezmoitemplates/secrets/TWILIO_AUTH_TOKEN new file mode 100644 index 00000000..97c51d89 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWILIO_AUTH_TOKEN @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBCSWp0cmlkU3RLbTZ0SXJ2 +MVNneGtTRlptVlVqeTZWSFcxZTlxT1V5cncwCmpKZjBlL3k2clVzSnY3QnBzRmtk +b2hBMGIvWE5CM0d4YjBoUFNmWmJubmcKLS0tIE14MjI5aTFGdTVJRmdEMFlNbExn +R0R0aEw3MWdnUWJJN1pQVzlwQmdTazAKtbAuEbU1/iZA7taqVgA4LUA2V2dZzGHD +/FrljRaDQm9yrnS52Q5/m8+4uT+6xJI8ZU+8Hu4u1gtv7v8JFiZCpg== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWILIO_FROM_NUMBER b/home/.chezmoitemplates/secrets/TWILIO_FROM_NUMBER new file mode 100644 index 00000000..c05db946 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWILIO_FROM_NUMBER @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBHckxIemV1bUNhbkxKK2Zl +bXQxRENjVEYyR3lIcS93Q1RIV3dQOXJlL1dBCmxkVG13UHF4cS9uaU1QcHl3MjB0 +U2hLUDZMeGQ3cS9NZnBHQWZVZGJ3aFUKLS0tIDBGejhsclZlUUtxSmNNclAyeTIz +dHNiR0l4NlE4VHRkQTMzcS9RditXcUUKGuxENmh8UAAaz9W43p8kxJ8alJbTPXLG +3fQGzdbva6hvfAAFbpZA9tdYlQ== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWITTER_ACCESS_TOKEN b/home/.chezmoitemplates/secrets/TWITTER_ACCESS_TOKEN new file mode 100644 index 00000000..82612c14 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWITTER_ACCESS_TOKEN @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzTGFCZ0QwTFJRcUhFc2wx +ZWJxR2t2S21wUlI1TmhFZ3R0dHJGbGRoaUdFCm9IQnIwaGkrZE9CUEVjUklFTzJB +ZzVTY0xPT1FwKy9hRkdDQjM4Qzd3b1UKLS0tIEdkL0xSd2UyUXkyR2JMclBtV1VB +WXF3cjVCNjBiTmh2N05aSzZ6Tlc2eVUKZlVovnodDQlnYfM7KdQcmwz+CiKgP+KB +jNbuIB9nAcM1Yck7+2mERWIgyT7/ETx+8mF54W6b17mSN6fxS3p0vaOepMd3H72d +ozuPIBUZis9h5w== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWITTER_ACCESS_TOKEN_SECRET b/home/.chezmoitemplates/secrets/TWITTER_ACCESS_TOKEN_SECRET new file mode 100644 index 00000000..2b8dde90 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWITTER_ACCESS_TOKEN_SECRET @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBzS0dYVjBQcmswS3pEcDZS +eHc2SkpNNWFZZnpnVEVTc1hOQUxFOHZUL3djCkVHZmZaUkxUYVVoYnVHbHgwT0hv +VXJGWEYwaGNQRjB5ODlXZy9VdkcxRFEKLS0tIHcyNko0V3dMOTF4K3BtUXlEcVlT +V2pORHBEUWgxU0x4U1dZMXAvaVAxVWMKHst99kXcZkum3O4fve5xcwZe1Z46gGhM +fdieq8+35iz0zrjdoaFRoKiDizbvQYr8czukq3wv1fX908xvEtTMvlOyr9v53rNI +Qwr7Oq8= +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWITTER_API_KEY b/home/.chezmoitemplates/secrets/TWITTER_API_KEY new file mode 100644 index 00000000..2beda3f6 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWITTER_API_KEY @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBYejFwYzdLZExRVFk2dTVW +OXZSS0FLaTdpWW9oT0dhVDRyOW0rc0U2T1VFClg2bkpmN0ZnT2JiQjl0MEFidXVv +Z3J6MG8yYnljMGZuL2pJWUlXL0RzUTgKLS0tIEVmbEdZTEVOd1J5L0dNbk95TUZM +dS9oMXRKb0M5bHErY3lLSnp4Nnd4Y0EK8ZZZOUbKShL0zD2mZH4tmdSgZjQkbmhL +BTZuqb0oyXVmRJveHs3tK1Nb2Nzbd50bqaB6fFSIjAT1 +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/TWITTER_API_KEY_SECRET b/home/.chezmoitemplates/secrets/TWITTER_API_KEY_SECRET new file mode 100644 index 00000000..39dbcc59 --- /dev/null +++ b/home/.chezmoitemplates/secrets/TWITTER_API_KEY_SECRET @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBhTjFYOEtQUWV2VFNvZHJi +dXVncmFzNExFUFNvSXZ1YWhyM2VDeHF0OXljClpMM3ZwSnJXTnd5cy9CanFBSkph +S1lOS2x4dUJESFVlRUZZcUsvN1Z1d1kKLS0tIHpmb0kvT0tUMXBJcnVBT0ZSSUdj +eXF0U1JQZU1iNWVPQmZUNjFTdmM3TVEKmAHM+qRlaynlvlbmkLYM/+MOtzW1xRoV +EwwyxdTUVSOcCsQ/64mPhBCKHE3cOeWm501B/cb+9Nl5yAsiuKqHCafo99JCZdhd +smrFB76MXqfyIw== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/dot_config/apprise/apprise.yml.tmpl b/home/dot_config/apprise/apprise.yml.tmpl new file mode 100644 index 00000000..684f86e1 --- /dev/null +++ b/home/dot_config/apprise/apprise.yml.tmpl @@ -0,0 +1,190 @@ +--- +version: 1 + +{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "files" "apprise-custom")) -}} +include: + - custom.yml +{{ end }} + +# Define an Asset object if you wish (Optional) +# asset: +# app_id: AppriseTest +# app_desc: Apprise Test Notifications +# app_url: http://nuxref.com + +groups: + - chat: matrix + - developer: slack + - social: reddit, twitter + - owner: sendgrid, twilio, rsyslog, system + +tag: all + +urls: + {{- $gmailAppPassword := (default "" (env "GMAIL_PASSWORD")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GMAIL_PASSWORD")) -}} + {{- $gmailAppPassword = includeTemplate "secrets/GMAIL_PASSWORD" | decrypt | trim -}} + {{- end -}} + {{- if ne $gmailAppPassword "" -}} + ### E-mail + # Source: https://github.com/caronc/apprise/wiki/Notify_email + # Sends an e-mail with GMail SMTP using GMail username provided in .chezmoi.yaml.tmpl and uses `GMAIL_PASSWORD` (which can be an app password instead of your normal password) + - mailto://{{ .user.gmail.username }}:{{- $gmailAppPassword -}}@gmail.com:587?smtp=smtp.gmail.com&from={{ .user.gmail.username }}: + - to: "{{ .user.email }}" + tag: email, gmail + {{ end }} + + {{- $iftttWebhookId := (default "" (env "IFTTT_WEBHOOK_ID")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "IFTTT_WEBHOOK_ID")) -}} + {{- $iftttWebhookId = includeTemplate "secrets/IFTTT_WEBHOOK_ID" | decrypt | trim -}} + {{- end -}} + {{- if ne $iftttWebhookId "" -}} + ### IFTTT + # Source: https://github.com/caronc/apprise/wiki/Notify_ifttt + # Triggers an IFTTT webhook + - ifttt://{{- $iftttWebhookId -}}: + - tag: ifttt + {{ end }} + + {{- $matrixPassword := (default "" (env "MATRIX_PASSWORD")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "MATRIX_PASSWORD")) -}} + {{- $matrixPassword = includeTemplate "secrets/MATRIX_PASSWORD" | decrypt | trim -}} + {{- end -}} + {{- $matrixUsername := (default "" (env "MATRIX_USERNAME")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "MATRIX_USERNAME")) -}} + {{- $matrixUsername = includeTemplate "secrets/MATRIX_USERNAME" | decrypt | trim -}} + {{- end -}} + {{- if and (ne $matrixPassword "") (ne $matrixUsername "") -}} + ### Matrix + # Source: https://github.com/caronc/apprise/wiki/Notify_matrix + # https://app.element.io/#/room/#megabyte.space:matrix.org + # Posts a message in a Matrix chatroom + - matrix://{{- $matrixUsername -}}:{{- $matrixPassword -}}@matrix.org/#megabyte.space: + - tag: chat, matrix, megabyte-labs + # https://app.element.io/#/room/#install.doctor:matrix.org + - matrix://{{- $matrixUsername -}}:{{- $matrixPassword -}}@matrix.org/#install.doctor: + - tag: chat, matrix, install-doctor + {{ end }} + + ### Microsoft Teams + # Source: https://github.com/caronc/apprise/wiki/Notify_msteams + # Note: Microsoft Teams currently requires paid subscriptions of Office 365 for a custom organization + + {{- $redditAppId := (default "" (env "REDDIT_APP_ID")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "REDDIT_APP_ID")) -}} + {{- $redditAppId = includeTemplate "secrets/REDDIT_APP_ID" | decrypt | trim -}} + {{- end -}} + {{- $redditAppSecret := (default "" (env "REDDIT_APP_SECRET")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "REDDIT_APP_SECRET")) -}} + {{- $redditAppSecret = includeTemplate "secrets/REDDIT_APP_SECRET" | decrypt | trim -}} + {{- end -}} + {{- $redditPassword := (default "" (env "REDDIT_PASSWORD")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "REDDIT_PASSWORD")) -}} + {{- $redditPassword = includeTemplate "secrets/REDDIT_PASSWORD" | decrypt | trim -}} + {{- end -}} + {{- $redditUsername := (default "" (env "REDDIT_USERNAME")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "REDDIT_USERNAME")) -}} + {{- $redditUsername = includeTemplate "secrets/REDDIT_USERNAME" | decrypt | trim -}} + {{- end -}} + {{- if and (ne $redditAppId "") (ne $redditAppSecret "") (ne $redditPassword "") (ne $redditUsername "") -}} + ### Reddit + # Source: https://github.com/caronc/apprise/wiki/Notify_reddit + # TODO - Replace opensource below with appropriate sub-reddit + - reddit://{{- $redditUsername -}}:{{- $redditPassword -}}@{{- $redditAppId -}}/{{- $redditAppSecret -}}/{subreddit}: + - tag: reddit, post, megabyte-labs + {{ end }} + + ### RSyslog + # Source: https://github.com/caronc/apprise/wiki/Notify_rsyslog + - rsyslog://localhost: + - tag: rsyslog, log + + {{- $sendGridApiKey := (default "" (env "SENDGRID_API_KEY")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SENDGRID_API_KEY")) -}} + {{- $sendGridApiKey = includeTemplate "secrets/SENDGRID_API_KEY" | decrypt | trim -}} + {{- end -}} + {{- if ne $sendGridApiKey "" -}} + ### SendGrid + # Source: https://github.com/caronc/apprise/wiki/Notify_sendgrid + # Sends an e-mail using SendGrid (with templating options) + - sendgrid://{{- $sendGridApiKey -}}:{{ .host.noReplyEmail }}: + - to: "{{ .user.email }}" + tag: email, sendgrid + {{ end }} + + {{- $slackBotToken := (default "" (env "SLACK_BOT_USER_OAUTH_TOKEN")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SLACK_BOT_USER_OAUTH_TOKEN")) -}} + {{- $slackBotToken = includeTemplate "secrets/SLACK_BOT_USER_OAUTH_TOKEN" | decrypt | trim -}} + {{- end -}} + {{- if ne $slackBotToken "" -}} + ### Slack + # Source: https://github.com/caronc/apprise/wiki/Notify_slack + # Posts in Slack chatroom + - slack://{{ $slackBotToken }}: + - tag: chat, slack + {{ end }} + + {{- $twilioAccountSid := (default "" (env "TWILIO_ACCOUNT_SID")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWILIO_ACCOUNT_SID")) -}} + {{- $twilioAccountSid = includeTemplate "secrets/TWILIO_ACCOUNT_SID" | decrypt | trim -}} + {{- end -}} + {{- $twilioAuthToken := (default "" (env "TWILIO_AUTH_TOKEN")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWILIO_AUTH_TOKEN")) -}} + {{- $twilioAuthToken = includeTemplate "secrets/TWILIO_AUTH_TOKEN" | decrypt | trim -}} + {{- end -}} + {{- $twilioFromNumber := (default "" (env "TWILIO_FROM_NUMBER")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWILIO_FROM_NUMBER")) -}} + {{- $twilioFromNumber = includeTemplate "secrets/TWILIO_FROM_NUMBER" | decrypt | trim -}} + {{- end -}} + {{- $cellPhoneNumber := (default "" (env "CELL_PHONE_NUMBER")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CELL_PHONE_NUMBER")) -}} + {{- $cellPhoneNumber = includeTemplate "secrets/CELL_PHONE_NUMBER" | decrypt | trim -}} + {{- end -}} + {{- if and (ne $twilioAccountSid "") (ne $twilioAuthToken "") (ne $twilioFromNumber "") (ne $cellPhoneNumber "") -}} + ### Twilio + # Source: https://github.com/caronc/apprise/wiki/Notify_twilio + # Sends a text message from Twilio to the `CELL_PHONE_NUMBER` + - twilio://{{- $twilioAccountSid -}}:{{- $twilioAuthToken -}}@{{- $twilioFromNumber -}}/{{- $cellPhoneNumber -}} + - tag: text, twilio + {{ end }} + + {{- $twitterApiKey := (default "" (env "TWITTER_API_KEY")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWITTER_API_KEY")) -}} + {{- $twitterApiKey = includeTemplate "secrets/TWITTER_API_KEY" | decrypt | trim -}} + {{- end -}} + {{- $twitterApiKeySecret := (default "" (env "TWITTER_API_KEY_SECRET")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWITTER_API_KEY_SECRET")) -}} + {{- $twitterApiKeySecret = includeTemplate "secrets/TWITTER_API_KEY_SECRET" | decrypt | trim -}} + {{- end -}} + {{- $twitterAccessToken := (default "" (env "TWITTER_ACCESS_TOKEN")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWITTER_ACCESS_TOKEN")) -}} + {{- $twitterAccessToken = includeTemplate "secrets/TWITTER_ACCESS_TOKEN" | decrypt | trim -}} + {{- end -}} + {{- $twitterAccessTokenSecret := (default "" (env "TWITTER_ACCESS_TOKEN_SECRET")) -}} + {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TWITTER_ACCESS_TOKEN_SECRET")) -}} + {{- $twitterAccessTokenSecret = includeTemplate "secrets/TWITTER_ACCESS_TOKEN_SECRET" | decrypt | trim -}} + {{- end -}} + {{- if and (ne $twitterApiKey "") (ne $twitterApiKeySecret "") (ne $twitterAccessToken "") (ne $twitterAccessTokenSecret "") -}} + ### Twitter + # Posts a tweet + - twitter://{{- $twitterApiKey -}}/{{- $twitterApiKeySecret -}}/{{- $twitterAccessToken -}}/{{- $twitterAccessTokenSecret -}}?mode=tweet: + - tag: post, tweet, megabyte-labs + {{ end }} + + ### dbus + # Source: https://github.com/caronc/apprise/wiki/Notify_dbus + - dbus://: + - tag: dbus, system + + ### GNOME + # Source: https://github.com/caronc/apprise/wiki/Notify_gnome + - gnome://: + - tag: gnome, system + + ### macOS + # Source: https://github.com/caronc/apprise/wiki/Notify_macosx + - macosx://: + - tag: macos, system + + ### Windows + # Source: diff --git a/home/dot_config/apprise/custom.yml.tmpl b/home/dot_config/apprise/custom.yml.tmpl new file mode 100644 index 00000000..871fb6fc --- /dev/null +++ b/home/dot_config/apprise/custom.yml.tmpl @@ -0,0 +1,3 @@ +{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "files" "apprise-custom")) -}} +{{- includeTemplate "files/apprise-custom" | decrypt -}} +{{- end -}} diff --git a/home/dot_config/autorestic/autorestic-system.yml b/home/dot_config/autorestic/autorestic-system.yml new file mode 100644 index 00000000..00967c30 --- /dev/null +++ b/home/dot_config/autorestic/autorestic-system.yml @@ -0,0 +1,64 @@ +--- +version: 2 + +extras: + docker: &docker + type: volume + to: + - docker-local + - docker-s3 + cron: '0 * * * *' + hooks: + before: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic Docker Volume ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/TODO_UUID/start' + failure: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic Docker Volume ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/TODO_UUID/fail' + success: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic Docker Volume ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/TODO_UUID' + options: + backup: + exclude: + - .venv + - node_modules + - venv + tag: + - docker + forget: + keep-hourly: 24 + keep-daily: 7 + keep-weekly: 12 + keep-monthly: 8 + keep-yearly: 1 + +locations: + healthchecks_config: + from: healthchecks_config + <<: *docker + healthchecks_postgres: + from: healthchecks_postgres + <<: *docker + rundeck_data: + from: rundeck_data + <<: *docker + portainer_manager_data: + from: portainer_manager_data + <<: *docker + statping_app: + from: statping_app + <<: *docker + statping_postgres: + from: statping_postgres + <<: *docker + +backends: + docker-local: + type: local + path: /var/local/backups/docker + key: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "RESTIC_SYSTEM_PASSWORD")) }}{{ includeTemplate "secrets/RESTIC_SYSTEM_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "RESTIC_SYSTEM_PASSWORD") }}{{ end }} + docker-s3: + type: s3 + path: {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/docker + key: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "RESTIC_SYSTEM_PASSWORD")) }}{{ includeTemplate "secrets/RESTIC_SYSTEM_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "RESTIC_SYSTEM_PASSWORD") }}{{ end }} + env: + AWS_ACCESS_KEY_ID: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{ includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt | trim }}{{ else }}{{ default "" (env "CLOUDFLARE_R2_ID") }}{{ end }} + AWS_SECRET_ACCESS_KEY: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{ includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt | trim }}{{ else }}{{ default "" (env "CLOUDFLARE_R2_SECRET") }}{{ end }} diff --git a/home/dot_config/autorestic/autorestic-user.yml b/home/dot_config/autorestic/autorestic-user.yml new file mode 100644 index 00000000..21af321b --- /dev/null +++ b/home/dot_config/autorestic/autorestic-user.yml @@ -0,0 +1,135 @@ +--- +version: 2 + +extras: + app: &app + to: + - apps-local + - apps-s3 + hooks: + before: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic App Backup ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/TODO_UUID/start' + failure: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic App Backup ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/TODO_UUID/fail' + success: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic App Backup ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/TODO_UUID' + options: + backup: + exclude: + - .local + - .venv + - node_modules + - venv + tag: + - app + forget: + keep-hourly: 24 + keep-daily: 7 + keep-weekly: 14 + keep-monthly: 3 + keep-yearly: 2 + user: &user + hooks: + before: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic User Home Folder ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/{{ .host.autoresticHealthcheckUuid }}/start' + failure: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic User Home Folder ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/{{ .host.autoresticHealthcheckUuid }}/fail' + success: + - 'curl -m 10 --retry 5 -X POST -H "Content-Type: text/plain" --data "Autorestic User Home Folder ${AUTORESTIC_LOCATION} BEFORE / Host: ${HOST} / User: ${USER} / Home: ${HOME}" https://healthchecks.{{ .host.domain }}/ping/{{ .host.autoresticHealthcheckUuid }}' + options: + backup: + exclude: + - .local + - .venv + - node_modules + - venv + - Library + tag: + - user + forget: + keep-hourly: 24 + keep-daily: 7 + keep-weekly: 14 + keep-monthly: 3 + keep-yearly: 2 + +locations: + altair: + from: "$ALTAIR_APPDATA" + <<: *app + android-studio: + from: "$ANDROID_STUDIO_APPDATA" + <<: *app + brave-browser: + from: "$BRAVE_BROWSER_APPDATA" + <<: *app + ferdium: + from: "$FERDIUM_APPDATA" + <<: *app + firefox: + from: "$FIREFOX_APPDATA" + <<: *app + google-chrome: + from: "$GOOGLE_CHROME_APPDATA" + <<: *app + logi-options-plus: + from: "$LOGI_OPTIONS_PLUS_APPDATA" + <<: *app + mailspring: + from: "$MAILSPRING_APPDATA" + <<: *app + mark-text: + from: "$MARK_TEXT_APPDATA" + <<: *app + microsoft-edge: + from: "$MICROSOFT_EDGE_APPDATA" + <<: *app + notion: + from: "$NOTION_APPDATA" + <<: *app + pieces-os: + from: "$PIECES_OS_APPDATA" + <<: *app + remmina: + from: "$REMMINA_APPDATA" + <<: *app + tor-browser: + from: "$TOR_BROWSER_APPDATA" + <<: *app + warp-terminal: + from: "$WARP_TERMINAL_APPDATA" + <<: *app + home-local: + from: ~/ + to: home-local + cron: '0/15 * * * *' + <<: *user + home-s3: + from: ~/ + to: home-s3 + cron: '0 * * * *' + <<: *user + +backends: + apps-local: + type: local + path: /var/local/backups/user/{{ .user.username }}/apps + key: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "RESTIC_PASSWORD")) }}{{ includeTemplate "secrets/RESTIC_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "RESTIC_PASSWORD") }}{{ end }} + apps-s3: + type: s3 + path: {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/user/{{ .user.username }}/Backups/apps + key: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "RESTIC_PASSWORD")) }}{{ includeTemplate "secrets/RESTIC_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "RESTIC_PASSWORD") }}{{ end }} + env: + AWS_ACCESS_KEY_ID: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID_USER")) }}{{ includeTemplate "secrets/CLOUDFLARE_R2_ID_USER" | decrypt | trim }}{{ else }}{{ default "" (env "CLOUDFLARE_R2_ID_USER") }}{{ end }} + AWS_SECRET_ACCESS_KEY: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET_USER")) }}{{ includeTemplate "secrets/CLOUDFLARE_R2_SECRET_USER" | decrypt | trim }}{{ else }}{{ default "" (env "CLOUDFLARE_R2_SECRET_USER") }}{{ end }} + home-local: + type: local + path: /var/local/backups/user/{{ .user.username }}/home + key: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "RESTIC_PASSWORD")) }}{{ includeTemplate "secrets/RESTIC_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "RESTIC_PASSWORD") }}{{ end }} + home-s3: + type: s3 + path: {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/user/{{ .user.username }}/Backups/home + key: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "RESTIC_PASSWORD")) }}{{ includeTemplate "secrets/RESTIC_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "RESTIC_PASSWORD") }}{{ end }} + env: + AWS_ACCESS_KEY_ID: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID_USER")) }}{{ includeTemplate "secrets/CLOUDFLARE_R2_ID_USER" | decrypt | trim }}{{ else }}{{ default "" (env "CLOUDFLARE_R2_ID_USER") }}{{ end }} + AWS_SECRET_ACCESS_KEY: {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET_USER")) }}{{ includeTemplate "secrets/CLOUDFLARE_R2_SECRET_USER" | decrypt | trim }}{{ else }}{{ default "" (env "CLOUDFLARE_R2_SECRET_USER") }}{{ end }} diff --git a/home/dot_config/crontab/config b/home/dot_config/crontab/config-system similarity index 73% rename from home/dot_config/crontab/config rename to home/dot_config/crontab/config-system index 2e12672d..4ed31b2e 100644 --- a/home/dot_config/crontab/config +++ b/home/dot_config/crontab/config-system @@ -1,8 +1,6 @@ +PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/opt/homebrew/bin - -PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin - -# 0 8 * * 0 $HOME/.scripts/domingobot.sh 2>&1 >> $HOME/.log/cron.log +*/5 * * * * command -v autorestic > /dev/null && autorestic --ci cron > /tmp/autorestic-system.log 2>&1 # * * * * * command to be executed # ┯ ┯ ┯ ┯ ┯ diff --git a/home/dot_config/crontab/config-user b/home/dot_config/crontab/config-user new file mode 100644 index 00000000..804a0a34 --- /dev/null +++ b/home/dot_config/crontab/config-user @@ -0,0 +1,14 @@ +PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/opt/homebrew/bin:$HOME/.local/bin + +*/5 * * * * command -v autorestic > /dev/null && . "$HOME/.config/shell/apps.sh" && autorestic -c "$HOME/.config/autorestic/autorestic-user.yml" --ci cron > /tmp/autorestic.log 2>&1 +* * * * * command -v dagu-cron > /dev/null && dagu-cron +* * * * * command -v ghorg > /dev/null && ghorg reclone + +# * * * * * command to be executed +# ┯ ┯ ┯ ┯ ┯ +# │ │ │ │ │ +# │ │ │ │ ╰───── day of week (0 - 6) (Sunday=0) +# │ │ │ ╰─────── month (1 - 12) +# │ │ ╰───────── day of month (1 - 31) +# │ ╰─────────── hour (0 - 23) +# ╰───────────── min (0 - 59) diff --git a/home/dot_config/dagu/admin.yaml b/home/dot_config/dagu/admin.yaml new file mode 100644 index 00000000..ba48d454 --- /dev/null +++ b/home/dot_config/dagu/admin.yaml @@ -0,0 +1,26 @@ +--- +host: 127.0.0.1 # default: 127.0.0.1 +port: 8321 # default: 8080 + +### Path to the DAGs directory +# dags: # default: ${DAGU_HOME}/dags + +### Web UI Color & Title +navbarColor: "#119eff" # header color for web UI (e.g. "#ff0000") +navbarTitle: CombineOS Dagu # header title for web UI (e.g. "PROD") + +### Basic Auth +isBasicAuth: false # enables basic auth +# basicAuthUsername: # basic auth user +# basicAuthPassword: # basic auth password + +### Base Config +# baseConfig: # default: ${DAGU_HOME}/config.yaml + +### Working Directory +# workDir: # default: DAG location + +### SSL Configuration +# tls: +# certFile: +# keyFile: \ No newline at end of file diff --git a/home/dot_config/dagu/config.yaml.tmpl b/home/dot_config/dagu/config.yaml.tmpl new file mode 100644 index 00000000..3e341949 --- /dev/null +++ b/home/dot_config/dagu/config.yaml.tmpl @@ -0,0 +1,32 @@ +--- +### Directory path to save logs from standard output +logDir: /var/log/dagu + +### History retention days (default: 30) +histRetentionDays: 30 + +### Email notification settings +mailOn: + failure: true + success: false + +### SMTP server settings +smtp: + host: smtp.sendgrid.net + port: 587 + username: apikey + password: "{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SENDGRID_API_KEY")) }}{{ includeTemplate "secrets/SENDGRID_API_KEY" | decrypt | trim }}{{ else }}{{ env "SENDGRID_API_KEY" }}{{ end }}" + +### Error mail configuration +errorMail: + from: "{{ .host.noReplyEmail }}" + to: "{{ .user.email }}" + prefix: "[Error]" + attachLogs: true + +### Info mail configuration +infoMail: + from: "{{ .host.noReplyEmail }}" + to: "{{ .user.email }}" + prefix: "[Info]" + attachLogs: true \ No newline at end of file diff --git a/home/dot_config/docker/templates/code-server.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/code-server.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/code-server.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/code-server.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/dashy.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/dashy.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/dashy.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/dashy.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/fider.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/fider.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/fider.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/fider.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/filestash.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/filestash.docker-stack.yml.tmpl similarity index 94% rename from home/dot_config/docker/templates/filestash.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/filestash.docker-stack.yml.tmpl index b7e5a287..a7f7c35c 100644 --- a/home/dot_config/docker/templates/filestash.docker-stack.yml.tmpl +++ b/home/dot_config/docker/TODO/filestash.docker-stack.yml.tmpl @@ -23,4 +23,5 @@ services: - seccomp:unconfined volumes: - filestash: {} + filestash: + name: filestash diff --git a/home/dot_config/docker/templates/gitlab.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/gitlab.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/gitlab.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/gitlab.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/htpc.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/htpc.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/htpc.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/htpc.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/instapy.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/instapy.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/instapy.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/instapy.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/josh.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/josh.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/josh.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/josh.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/nextcloud.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/nextcloud.docker-stack.yml.tmpl similarity index 88% rename from home/dot_config/docker/templates/nextcloud.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/nextcloud.docker-stack.yml.tmpl index df3143d7..364ebd14 100644 --- a/home/dot_config/docker/templates/nextcloud.docker-stack.yml.tmpl +++ b/home/dot_config/docker/TODO/nextcloud.docker-stack.yml.tmpl @@ -9,7 +9,7 @@ services: PGID: 1000 TZ: America/New_York volumes: - - ./config/nextcloud:/config + - nextcloud_config:/config - /mnt/auxilary/NextCloud:/data ports: - 26777:443 @@ -31,3 +31,7 @@ services: expose: - 3306 restart: unless-stopped + +volumes: + nextcloud_config: + name: nextcloud_config \ No newline at end of file diff --git a/home/dot_config/docker/templates/nginx-proxy-manager.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/nginx-proxy-manager.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/nginx-proxy-manager.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/nginx-proxy-manager.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/nginx.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/nginx.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/nginx.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/nginx.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/sonatype.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/sonatype.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/sonatype.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/sonatype.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/wazuh.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/wazuh.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/wazuh.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/wazuh.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/wireguard.docker-stack.yml.tmpl b/home/dot_config/docker/TODO/wireguard.docker-stack.yml.tmpl similarity index 100% rename from home/dot_config/docker/templates/wireguard.docker-stack.yml.tmpl rename to home/dot_config/docker/TODO/wireguard.docker-stack.yml.tmpl diff --git a/home/dot_config/docker/templates/healthchecks.docker-stack.yml.tmpl b/home/dot_config/docker/templates/healthchecks.docker-stack.yml.tmpl index 55159b03..61b3c6cb 100644 --- a/home/dot_config/docker/templates/healthchecks.docker-stack.yml.tmpl +++ b/home/dot_config/docker/templates/healthchecks.docker-stack.yml.tmpl @@ -12,7 +12,7 @@ services: - nginx_network environment: ALLOWED_HOSTS: "{{ .docker.healthchecks.allowedHosts }}" - APPRISE_ENABLED: 'False' + APPRISE_ENABLED: 'True' DB_HOST: postgres DB_NAME_FILE: /run/secrets/healthchecks_db_name DB_PASSWORD_FILE: /run/secrets/healthchecks_db_password @@ -38,6 +38,7 @@ services: SLACK_ENABLED: 'True' SUPERUSER_EMAIL_FILE: /run/secrets/healthchecks_superuser_email SUPERUSER_PASSWORD_FILE: /run/secrets/healthchecks_superuser_password + TZ: "{{ .user.timezone }}" WEBHOOKS_ENABLED: 'True' deploy: mode: replicated @@ -46,6 +47,7 @@ services: - healthchecks_config:/config expose: - 8000 + - 2525 restart: unless-stopped secrets: - healthchecks_db_name @@ -53,6 +55,8 @@ services: - healthchecks_db_user - healthchecks_secret_key - healthchecks_sendgrid_api_key + - healthchecks_slack_client_id + - healthchecks_slack_client_secret - healthchecks_superuser_email - healthchecks_superuser_password @@ -95,6 +99,10 @@ secrets: external: true healthchecks_sendgrid_api_key: external: true + healthchecks_slack_client_id: + external: true + healthchecks_slack_client_secret: + external: true healthchecks_superuser_email: external: true healthchecks_superuser_password: @@ -102,4 +110,6 @@ secrets: volumes: healthchecks_config: + name: healthchecks_config healthchecks_postgres: + name: healthchecks_postgres diff --git a/home/dot_config/docker/templates/memos.docker-stack.yml.tmpl b/home/dot_config/docker/templates/memos.docker-stack.yml.tmpl deleted file mode 100644 index 3e97781e..00000000 --- a/home/dot_config/docker/templates/memos.docker-stack.yml.tmpl +++ /dev/null @@ -1,10 +0,0 @@ -# https://github.com/usememos/memos -version: "3.0" -services: - memos: - image: neosmemo/memos:latest - container_name: memos - volumes: - - ~/.memos/:/var/opt/memos - ports: - - 5230:5230 \ No newline at end of file diff --git a/home/dot_config/docker/templates/portainer.docker-stack.yml.tmpl b/home/dot_config/docker/templates/portainer.docker-stack.yml.tmpl index f264d72d..ea610342 100644 --- a/home/dot_config/docker/templates/portainer.docker-stack.yml.tmpl +++ b/home/dot_config/docker/templates/portainer.docker-stack.yml.tmpl @@ -48,3 +48,4 @@ secrets: volumes: portainer_manager_data: + name: portainer_manager_data diff --git a/home/dot_config/docker/templates/rundeck.docker-stack.yml.tmpl b/home/dot_config/docker/templates/rundeck.docker-stack.yml.tmpl index 690558de..89ac1b22 100644 --- a/home/dot_config/docker/templates/rundeck.docker-stack.yml.tmpl +++ b/home/dot_config/docker/templates/rundeck.docker-stack.yml.tmpl @@ -10,7 +10,7 @@ services: MENU_VERSION: 2.0.19 #optional volumes: - $HOME/.ssh:/home/rundeck/.ssh - - rundeck-data:/home/rundeck/server/data + - rundeck_data:/home/rundeck/server/data ports: - 3000:3000 - 69:69/udp @@ -18,4 +18,5 @@ services: restart: unless-stopped volumes: - rundeck-data: + rundeck_data: + name: rundeck_data diff --git a/home/dot_config/docker/templates/statping.docker-stack.yml.tmpl b/home/dot_config/docker/templates/statping.docker-stack.yml.tmpl index ed71dd84..467432e4 100644 --- a/home/dot_config/docker/templates/statping.docker-stack.yml.tmpl +++ b/home/dot_config/docker/templates/statping.docker-stack.yml.tmpl @@ -72,4 +72,6 @@ secrets: volumes: statping_app: + name: statping_app statping_postgres: + name: statping_postgres diff --git a/home/dot_config/docker/templates/thelounge.docker-stack.yml.tmpl b/home/dot_config/docker/templates/thelounge.docker-stack.yml.tmpl deleted file mode 100644 index e69de29b..00000000 diff --git a/home/dot_config/firewall/etc/firewalld/services/plex.xml b/home/dot_config/firewall/etc/firewalld/services/plex.xml index f040ed86..a1226c58 100644 --- a/home/dot_config/firewall/etc/firewalld/services/plex.xml +++ b/home/dot_config/firewall/etc/firewalld/services/plex.xml @@ -2,7 +2,10 @@ Plex Plex media center - # Plex DLNA Server - # Plex DLNA Server - # GDM Network Discovery - \ No newline at end of file + + + + + + + diff --git a/home/dot_config/firewall/etc/firewalld/services/xrdp.xml b/home/dot_config/firewall/etc/firewalld/services/rdp.xml similarity index 86% rename from home/dot_config/firewall/etc/firewalld/services/xrdp.xml rename to home/dot_config/firewall/etc/firewalld/services/rdp.xml index 957637ef..1128d62c 100644 --- a/home/dot_config/firewall/etc/firewalld/services/xrdp.xml +++ b/home/dot_config/firewall/etc/firewalld/services/rdp.xml @@ -1,6 +1,6 @@ - xRDP + RDP Remote Desktop server \ No newline at end of file diff --git a/home/dot_config/firewall/etc/firewalld/services/rsyslog.xml b/home/dot_config/firewall/etc/firewalld/services/rsyslog.xml new file mode 100644 index 00000000..5504046e --- /dev/null +++ b/home/dot_config/firewall/etc/firewalld/services/rsyslog.xml @@ -0,0 +1,6 @@ + + + rsyslog + rsyslog - enhanced, multi-threaded syslogd + + \ No newline at end of file diff --git a/home/dot_config/firewall/etc/firewalld/services/tigervnc.xml b/home/dot_config/firewall/etc/firewalld/services/vnc.xml similarity index 50% rename from home/dot_config/firewall/etc/firewalld/services/tigervnc.xml rename to home/dot_config/firewall/etc/firewalld/services/vnc.xml index 2b7aed3d..3cf92957 100644 --- a/home/dot_config/firewall/etc/firewalld/services/tigervnc.xml +++ b/home/dot_config/firewall/etc/firewalld/services/vnc.xml @@ -1,6 +1,6 @@ - TigerVNC - High performance, multi-platform VNC server + VNC + VNC server \ No newline at end of file diff --git a/home/dot_config/firewall/etc/ufw/applications.d/ftp b/home/dot_config/firewall/etc/ufw/applications.d/ftp new file mode 100644 index 00000000..34c6dd71 --- /dev/null +++ b/home/dot_config/firewall/etc/ufw/applications.d/ftp @@ -0,0 +1,4 @@ +[FTP] +title=FTP +description=FTP server +ports=21/tcp diff --git a/home/dot_config/firewall/etc/ufw/applications.d/jellyfin b/home/dot_config/firewall/etc/ufw/applications.d/jellyfin new file mode 100644 index 00000000..d25254ee --- /dev/null +++ b/home/dot_config/firewall/etc/ufw/applications.d/jellyfin @@ -0,0 +1,4 @@ +[Jellyfin] +title=Jellyfin +description=Jellyfin media server +ports=8096/tcp|8920/tcp|1900/udp|7359/udp \ No newline at end of file diff --git a/home/dot_config/firewall/etc/ufw/applications.d/plex b/home/dot_config/firewall/etc/ufw/applications.d/plex index 0615b29b..89af09c3 100644 --- a/home/dot_config/firewall/etc/ufw/applications.d/plex +++ b/home/dot_config/firewall/etc/ufw/applications.d/plex @@ -3,11 +3,6 @@ title=Plex Media Server (Standard) description=The Plex Media Server ports=32400/tcp|3005/tcp|5353/udp|8324/tcp|32410:32414/udp -[PlexMediaServer DLNA] -title=Plex Media Server (DLNA) -description=The Plex Media Server (additional DLNA capability only) -ports=1900/udp|32469/tcp - [PlexMediaServer Full] title=Plex Media Server (Standard + DLNA) description=The Plex Media Server (with additional DLNA capability) diff --git a/home/dot_config/firewall/etc/ufw/applications.d/rsyslog b/home/dot_config/firewall/etc/ufw/applications.d/rsyslog new file mode 100644 index 00000000..fbaf1acd --- /dev/null +++ b/home/dot_config/firewall/etc/ufw/applications.d/rsyslog @@ -0,0 +1,4 @@ +[rsyslog] +title=rsyslog +description=Enhanced, multi-threaded syslogd +ports=514/tcp diff --git a/home/dot_config/firewall/etc/ufw/applications.d/vnc b/home/dot_config/firewall/etc/ufw/applications.d/vnc new file mode 100644 index 00000000..577648f2 --- /dev/null +++ b/home/dot_config/firewall/etc/ufw/applications.d/vnc @@ -0,0 +1,4 @@ +[VNC] +title=VNC +description=VNC server +ports=5900:5904/tcp diff --git a/home/dot_config/ghorg/conf.yaml.tmpl b/home/dot_config/ghorg/conf.yaml.tmpl index 4b823c3c..e10f54af 100644 --- a/home/dot_config/ghorg/conf.yaml.tmpl +++ b/home/dot_config/ghorg/conf.yaml.tmpl @@ -6,7 +6,7 @@ # Which provider to clone from (github, gitlab, gitea or bitbucket) # default: github # flag (--scm, -s) eg: --scm=gitlab -GHORG_SCM_TYPE: gitlab +GHORG_SCM_TYPE: github # How you'd like to clone the repos (https or ssh) # default: https @@ -18,7 +18,7 @@ GHORG_CLONE_PROTOCOL: https # See https://github.com/gabrie30/ghorg#changing-clone-directories for example # default: YOUR_HOME_DIR/ghorg # flag (--path, -p) eg: --path=/tmp/ghorg -GHORG_ABSOLUTE_PATH_TO_CLONE_TO: ~/.local/ghorg +GHORG_ABSOLUTE_PATH_TO_CLONE_TO: ~/Projects # Folder ghorg will clone all repos into. Cloning will result in: GHORG_ABSOLUTE_PATH_TO_CLONE_TO/GHORG_OUTPUT_DIR/repo # See https://github.com/gabrie30/ghorg#changing-clone-directories for example @@ -58,7 +58,7 @@ GHORG_PRUNE_NO_CONFIRM: true # Color output (enabled, disabled) # flag (--color) eg: --color=disabled -GHORG_COLOR: enabled +GHORG_COLOR: disabled # Skip archived repos, currently github/gitlab/gitea only # flag (--skip-archived) @@ -70,7 +70,7 @@ GHORG_SKIP_FORKS: false # Backup mode, clone as mirror, no working copy (ignores branch parameter) # flag (--backup) -GHORG_BACKUP: true +# GHORG_BACKUP: false # Max goroutines created while cloning # flag (--concurrency) @@ -99,7 +99,7 @@ GHORG_CONCURRENCY: 25 # Only clones new repos and does not perform a git clean on existing repos. Useful if you don't want to lose changes made to repos in the org/user directory. # flag (--no-clean) -GHORG_NO_CLEAN: false +GHORG_NO_CLEAN: true # Additionally clone the wiki page for repo # flag (--clone-wiki) @@ -107,7 +107,7 @@ GHORG_CLONE_WIKI: false # Fetches all remote branches for each repo by running a git fetch --all # flag (--fetch-all) -GHORG_FETCH_ALL: false +GHORG_FETCH_ALL: true # If you want to set a path other than $HOME/.config/ghorg/ghorgignore for your ghorgignore # flag (--ghorgignore-path) @@ -115,7 +115,7 @@ GHORG_FETCH_ALL: false # Only emit critical output. # flag (--quiet) -GHORG_QUIET: false +GHORG_QUIET: true # Perform a dry run of the clone; fetches repos but does not clone them. # flag (--dry-run) diff --git a/home/dot_config/ghorg/reclone.yaml b/home/dot_config/ghorg/reclone.yaml new file mode 100644 index 00000000..7ac0e585 --- /dev/null +++ b/home/dot_config/ghorg/reclone.yaml @@ -0,0 +1,7 @@ +--- +github: + cmd: "ghorg clone megabyte-labs -s github -p ~/GitHub" + description: "Clones the GitHub megabyte-labs organization repositories" +gitlab: + cmd: "ghorg clone megabyte-labs -s gitlab -p ~/GitLab" + description: "Clones the GitLab megabyte-labs organization repositories" diff --git a/home/dot_config/shell/apps.sh.tmpl b/home/dot_config/shell/apps.sh.tmpl new file mode 100644 index 00000000..620d1f0b --- /dev/null +++ b/home/dot_config/shell/apps.sh.tmpl @@ -0,0 +1,42 @@ +#!/usr/bin/env sh +# @file App Backup Variables +# @brief Stores variables that instruct various utilities what location to use for private application data +# @description +# The variables in this file are used to instruct `autorestic` and possibly other utilities about the +# location of the private application data for various programs that get backed up. + +if [ -d /Applications ] && [ -d /System ]; then + ### macOS + ALTAIR_APPDATA="$HOME/Library/Application Support/Altair GraphQL Client" + ANDROID_STUDIO_APPDATA="TODO" + BRAVE_BROWSER_APPDATA="$HOME/Library/Application Support/BraveSoftware/Brave-Browser/Default" + FERDIUM_APPDATA="$HOME/Library/Application Support/Ferdium" + FIREFOX_APPDATA="$HOME/Library/Application Support/Firefox/Profiles" + GOOGLE_CHROME_APPDATA="$HOME/Library/Application Support/Google/Chrome/Default" + LOGI_OPTIONS_PLUS_APPDATA="$HOME/Library/Application Support/LogiOptionsPlus" + MAILSPRING_APPDATA="$HOME/Library/Application Support/Mailspring" + MARK_TEXT_APPDATA="$HOME/Library/Application Support/marktext" + MICROSOFT_EDGE_APPDATA="$HOME/Library/Application Support/Microsoft Edge/Default" + NOTION_APPDATA="$HOME/Library/Application Support/Notion" + PIECES_OS_APPDATA="$HOME/Library/Application Support/com.pieces.os" + # REMMINA_APPDATA - Remmina not available on macOS + TOR_BROWSER_APPDATA="$HOME/Library/Application Support/TorBrowser-Data/Tor" + WARP_TERMINAL_APPDATA="$HOME/Library/Application Support/dev.warp.Warp-Stable" +else + ### Linux + # Currently, we assume the Flatpak location whenever possible + ANDROID_STUDIO_APPDATA="TODO" + ALTAIR_APPDATA="$HOME/snap/altair/current/.config/Altair GraphQL Client" + BRAVE_BROWSER_APPDATA="$HOME/.var/app/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default" + FERDIUM_APPDATA="$HOME/.var/app/org.ferdium.Ferdium/config/Ferdium" + FIREFOX_APPDATA="$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox" + GOOGLE_CHROME_APPDATA="$HOME/.var/app/com.google.Chrome/config/google-chrome/Default" + MAILSPRING_APPDATA="TODO" + MARK_TEXT_APPDATA="TODO" + MICROSOFT_EDGE_APPDATA="TODO" + NOTION_APPDATA="TODO" + PIECES_OS_APPDATA="TODO" + REMMINA_APPDATA="$HOME/.var/app/org.remmina.Remmina/config/remmina/remmina.pref" + TOR_BROWSER_APPDATA="TODO" + WARP_TERMINAL_APPDATA="TODO" +fi \ No newline at end of file diff --git a/home/dot_config/shell/exports.sh.tmpl b/home/dot_config/shell/exports.sh.tmpl index 9ca91418..67510d20 100644 --- a/home/dot_config/shell/exports.sh.tmpl +++ b/home/dot_config/shell/exports.sh.tmpl @@ -181,6 +181,9 @@ export CONCURRENT_LOG_DIR="${XDG_DATA_HOME:-$HOME/.local/share}/concurrent" ### cURL export CURLOPT_ACCEPT_ENCODING=true +### Dagu +export DAGU_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/dagu" + ### Desk export DESK_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/desk" export DESK_DESKS_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/desk/desks" diff --git a/home/dot_config/shell/profile.sh.tmpl b/home/dot_config/shell/profile.sh.tmpl index f1fd265d..9acbdf2a 100644 --- a/home/dot_config/shell/profile.sh.tmpl +++ b/home/dot_config/shell/profile.sh.tmpl @@ -12,6 +12,8 @@ export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}" [ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/exports.sh" ] || . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/exports.sh" [ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliases.sh" ] || . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/aliases.sh" [ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/functions.sh" ] || . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/functions.sh" +[ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/apps.sh" ] || . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/apps.sh" +[ ! -f "${XDG_CONFIG_HOME:-$HOME/.config}/shell/docker.sh" ] || . "${XDG_CONFIG_HOME:-$HOME/.config}/shell/docker.sh" ### Bash / ZSH if [ "$BASH_SUPPORT" = 'true' ]; then diff --git a/home/dot_local/bin/executable_dagu-cron b/home/dot_local/bin/executable_dagu-cron new file mode 100644 index 00000000..09693c73 --- /dev/null +++ b/home/dot_local/bin/executable_dagu-cron @@ -0,0 +1,20 @@ +#!/usr/bin/env bash +# @file Dagu Cron-Based Daemon Helper +# @brief Helper executable used by cron to ensure Dagu is running +# @description +# This script is utilized by the user-level cronjob runner. Every minute this script is called by the cron +# scheduler to ensure that the Dagu service is running. Read more about Dagu on their [GitHub page](https://github.com/dagu-dev/dagu). + +PROCESS="dagu start-all" +COMMAND="/usr/bin/dagu start-all" + +### Ensure dagu is installed +if command -v dagu > /dev/null; then + ### Check if process is already running + if ps ax | grep -v grep | grep "$PROCESS" > /dev/null; then + exit + else + $COMMAND & + fi +fi +exit diff --git a/home/dot_local/bin/executable_rclone-mount b/home/dot_local/bin/executable_rclone-mount index aab77983..7fae863a 100644 --- a/home/dot_local/bin/executable_rclone-mount +++ b/home/dot_local/bin/executable_rclone-mount @@ -1,4 +1,10 @@ #!/usr/bin/env bash +# @file RClone Mount +# @brief Helper utility to aid with mounting RClone S3 buckets to the file system +# @description +# This script is a helper utility to assist a system service that ensures various +# RClone S3 mounts are mounted properly. For more information, take a look at the +# RClone files stored in `~/.config/rclone`. ### Variables TYPE="$1" @@ -44,7 +50,7 @@ for FOLDER in "$CACHE_FOLDER" "$CONFIG_FOLDER" "$LOG_FOLDER" "$MOUNT_PATH"; do if [ ! -d "$FOLDER" ]; then mkdir -p "$FOLDER" chmod 750 "$FOLDER" - chown -f $USER:rclone "$FOLDER" + chown -f "$USER:rclone" "$FOLDER" fi done @@ -54,15 +60,15 @@ if [ ! -f "$RCLONE_IGNORE" ] && [ -f "/etc/rcloneignore" ]; then RCLONE_IGNORE='/etc/rcloneignore' fi -sudo chown -f root "$CONFIG_FOLDER/rclone.conf" -sudo chmod -f 600 "$CONFIG_FOLDER/rclone.conf" +chown -f "$USER:rclone" "$CONFIG_FOLDER/rclone.conf" +chmod -f 600 "$CONFIG_FOLDER/rclone.conf" ### Mount unset AWS_CA_BUNDLE export PATH="$PATH:/usr/local/bin:/usr/bin" # TODO: Only launch with --rc-web-gui if the servers hostname is the {{ .kubernetesHost }} # TODO: Add more secure authentication method -sudo rclone --config "$CONFIG_FOLDER/rclone.conf" \ +rclone --config "$CONFIG_FOLDER/rclone.conf" \ mount \ --allow-other \ --buffer-size 4G \ diff --git a/home/dot_local/etc/branding/black-icon-128x128.png b/home/dot_local/etc/branding/black-icon-128x128.png new file mode 100644 index 00000000..47cee08f Binary files /dev/null and b/home/dot_local/etc/branding/black-icon-128x128.png differ diff --git a/home/dot_local/etc/cloudflared/config.yml.tmpl b/home/dot_local/etc/cloudflared/config.yml.tmpl index 76d22b31..b6ba1e4d 100644 --- a/home/dot_local/etc/cloudflared/config.yml.tmpl +++ b/home/dot_local/etc/cloudflared/config.yml.tmpl @@ -24,6 +24,10 @@ ingress: service: tcp://localhost:2022 - hostname: vnc.{{ $baseDomain }} service: tcp://localhost:5901 + - hostname: dagu.{{ $baseDomain }} + service: tcp://localhost:8321 + - hostname: rsyslog.{{ $baseDomain }} + service: tcp://localhost:514 {{- if eq .host.softwareGroup "Kubernetes" }} - hostname: k8s.{{ .host.domain }} service: bastion diff --git a/software.yml b/software.yml index 1c94f0f6..f1a9cca2 100644 --- a/software.yml +++ b/software.yml @@ -422,10 +422,10 @@ softwarePackages: sudo snap connect pieces-os:dotnet-runtime-aspnetcore _app: Pieces.app _note: Waiting for choco package - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/pieces-os" - target: "$HOME/Library/Application Support/com.pieces.os" - _link:snap: 'TODO' + _env: + PIECES_OS_APPDATA: + cask: "$HOME/Library/Application Support/com.pieces.os" + snap: "TODO" appinstaller: https://builds.pieces.app/stages/production/appinstaller/os_server.appinstaller cask: pieces-os exe: https://builds.pieces.app/stages/production/os_server/windows-exe/download @@ -532,13 +532,11 @@ softwarePackages: _home: https://altairgraphql.dev/ _name: Altair GraphQL Client _app: Altair GraphQL Client.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/Altair GraphQL Client" - target: "$HOME/Library/Application Support/Altair GraphQL Client" - _link:choco: 'TODO' - _link:snap: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/Altair GraphQL Client" - target: "$HOME/snap/altair/current/.config/Altair GraphQL Client" + _env: + ALTAIR_APPDATA: + cask: "$HOME/Library/Application Support/Altair GraphQL Client" + choco: "TODO" + snap: "$HOME/snap/altair/current/.config/Altair GraphQL Client" cask: altair-graphql-client choco: altair-graphql snap: altair @@ -609,10 +607,12 @@ softwarePackages: _home: https://developer.android.com/studio _name: Android Studio _app: Android Studio.app - _link:cask: 'TODO' - _link:choco: 'TODO' - _link:flatpak: 'TODO' - _link:snap: 'TODO' + _env: + ANDROID_STUDIO_APPDATA: + cask: "TODO" + choco: "TODO" + flatpak: "TODO" + snap: "TODO" cask: android-studio choco: androidstudio flatpak: com.google.AndroidStudio @@ -1179,6 +1179,11 @@ softwarePackages: _github: https://github.com/cupcakearmy/autorestic/ _home: https://autorestic.vercel.app/ _name: Autorestic + _post: | + #!/usr/bin/env bash + sudo mkdir -p /var/local/backups/apps + sudo mkdir -p /var/local/backups/home + sudo mkdir -p /var/local/backups/docker ansible: professormanhattan.autorestic brew: autorestic awscli: @@ -1281,10 +1286,10 @@ softwarePackages: _github: false _name: Logi Options+ _app: logioptionsplus.app - _link:choco: 'TODO' - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/LogiOptionsPlus" - target: "$HOME/Library/Application Support/LogiOptionsPlus" + _env: + LOGI_OPTIONS_PLUS_APPDATA: + cask: "$HOME/Library/Application Support/LogiOptionsPlus" + choco: "TODO" choco: logioptionsplus cask: logi-options-plus exe: https://download01.logi.com/web/ftp/pub/techsupport/optionsplus/logioptionsplus_installer.exe @@ -1685,6 +1690,25 @@ softwarePackages: _name: MongoDB Atlas brew: mongodb-atlas choco: mongodb-atlas + pywin32: + _bin: pywin32 + _name: Pywin32 + _github: https://github.com/mhammond/pywin32 + pipx:windows: pywin32 + terminal-notifier: + _bin: terminal-notifier + _name: Terminal Notifier + _github: https://github.com/julienXX/terminal-notifier + brew:darwin: terminal-notifier + apprise: + _deps: + - pywin32 + - terminal-notifier + _bin: apprise + _name: Apprise + _github: https://github.com/caronc/apprise + dnf: apprise + pipx: apprise privaxy: _bin: privaxy _desc: Privaxy is the next generation tracker and advertisement blocker. It blocks ads and trackers by MITMing HTTP(s) traffic. @@ -1704,18 +1728,12 @@ softwarePackages: _home: https://brave.com/ _name: Brave Browser _app: Brave Browser.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/BraveSoftware/Brave-Browser/Default" - target: "$HOME/Library/Application Support/BraveSoftware/Brave-Browser/Default" - _link:choco: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/BraveSoftware/Brave-Browser/Default" - target: "%APPDATA%/Local/BraveSoftware/Brave-Browser/User Data" - _link:flatpak: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/BraveSoftware/Brave-Browser/Default" - target: "$HOME/.var/app/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default" - _link:snap: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/BraveSoftware/Brave-Browser/Default" - target: "$HOME/snap/brave/current/.config/BraveSoftware/Brave-Browser/Default" + _env: + BRAVE_BROWSER_APPDATA: + cask: "$HOME/Library/Application Support/BraveSoftware/Brave-Browser/Default" + choco: "%APPDATA%/Local/BraveSoftware/Brave-Browser/User Data" + flatpak: "$HOME/.var/app/com.brave.Browser/config/BraveSoftware/Brave-Browser/Default" + snap: "$HOME/snap/brave/current/.config/BraveSoftware/Brave-Browser/Default" _post: | #!/usr/bin/env bash # @brief See `google-chrome` `_post` script for more details @@ -1797,6 +1815,18 @@ softwarePackages: emerge: broot pkgin: broot port: broot + rsyslog: + _bin: rsyslog + _github: https://github.com/rsyslog/rsyslog + _name: RSyslog + _service: rsyslog + _ports: + - port: 514 + proto: tcp + apt: rsyslog + brew: rsyslog + dnf: rsyslog + pacman: rsyslog browser-sync: _bin: browser-sync _desc: '[Browsersync](https://browsersync.io/) allows you to keep multiple browsers & devices in sync when building websites' @@ -2007,12 +2037,10 @@ softwarePackages: _home: https://www.google.com/chrome/ _name: Google Chrome _app: Google Chrome.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/google-chrome/Default" - target: "$HOME/Library/Application Support/Google/Chrome/Default" - _link:flatpak: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/google-chrome/Default" - target: "$HOME/.var/app/com.google.Chrome/config/google-chrome/Default" + _env: + GOOGLE_CHROME_APPDATA: + cask: "$HOME/Library/Application Support/Google/Chrome/Default" + flatpak: "$HOME/.var/app/com.google.Chrome/config/google-chrome/Default" _post: | #!/usr/bin/env bash # @file Chrome Settings / Extensions @@ -2124,11 +2152,11 @@ softwarePackages: _name: Tor Browser _restricted: true _app: Tor Browser.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/tor-browser" - target: "$HOME/Library/Application Support/TorBrowser-Data/Tor" - _link:choco: 'TODO' - _link:flatpak: 'TODO' + _env: + TOR_BROWSER_APPDATA: + cask: "$HOME/Library/Application Support/TorBrowser-Data/Tor" + choco: "TODO" + flatpak: "TODO" cask: tor-browser choco: tor-browser flatpak: com.github.micahflee.torbrowser-launcher @@ -3965,21 +3993,15 @@ softwarePackages: _home: https://www.mozilla.org/en-US/firefox/new/ _name: Mozilla Firefox _app: Firefox.app - _link: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/profiles" - target: "$HOME/.mozilla/firefox" - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/profiles" - target: "$HOME/Library/Application Support/Firefox/Profiles" - _link:choco: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/profiles" - target: 'TODO' - _link:flatpak: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/profiles" - target: "$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox" - _link:snap: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/firefox/profiles" - target: "$HOME/snap/firefox/common/.mozilla/firefox" + _env: + FIREFOX_APPDATA: + apt: "$HOME/.mozilla/firefox" + cask: "$HOME/Library/Application Support/Firefox/Profiles" + choco: "TODO" + dnf: "$HOME/.mozilla/firefox" + flatpak: "$HOME/.var/app/org.mozilla.firefox/.mozilla/firefox" + pacman: "$HOME/.mozilla/firefox" + snap: "$HOME/snap/firefox/common/.mozilla/firefox" _post: | #!/usr/bin/env bash # @file Firefox Settings / Add-Ons / Profiles @@ -4852,6 +4874,9 @@ softwarePackages: _github: https://github.com/gabrie30/ghorg _home: null _name: ghorg + _post: | + #!/usr/bin/env bash + ghorg reclone ansible: professormanhattan.ghorg brew: gabrie30/utils/ghorg github: github.com/gabrie30/ghorg @@ -6883,16 +6908,12 @@ softwarePackages: ferdium: _bin: ferdium _app: Ferdium.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/Ferdium" - target: "$HOME/Library/Application Support/Ferdium" - _link:choco: 'TODO' - _link:flatpak: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/Ferdium" - target: "$HOME/.var/app/org.ferdium.Ferdium/config/Ferdium" - _link:snap: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/Ferdium" - target: "$HOME/snap/ferdium/current/.config/Ferdium" + _env: + FERDIUM_APPDATA: + cask: "$HOME/Library/Application Support/Ferdium" + choco: TODO + flatpak: "$HOME/.var/app/org.ferdium.Ferdium/config/Ferdium" + snap: "$HOME/snap/ferdium/current/.config/Ferdium" cask: ferdium choco: ferdium flatpak: org.ferdium.Ferdium @@ -6929,12 +6950,12 @@ softwarePackages: _home: https://getmailspring.com/ _name: Mailspring _app: Mailspring.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/mailspring" - target: "$HOME/Library/Application Support/Mailspring" - _link:choco: 'TODO' - _link:flatpak: 'TODO' - _link:snap: 'TODO' + _env: + MAILSPRING_APPDATA: + cask: "$HOME/Library/Application Support/Mailspring" + choco: "TODO" + flatpak: "TODO" + snap: "TODO" cask: mailspring choco: mailspring flatpak: com.getmailspring.Mailspring @@ -6960,12 +6981,12 @@ softwarePackages: _home: null _name: MarkText _app: MarkText.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/marktext" - target: "$HOME/Library/Application Support/marktext" - _link:choco: 'TODO' - _link:flatpak: 'TODO' - _link:winget: 'TODO' + _env: + MARK_TEXT_APPDATA: + cask: "$HOME/Library/Application Support/marktext" + choco: "TODO" + flatpak: "TODO" + winget: "TODO" cask: mark-text choco: marktext flatpak: com.github.marktext.marktext @@ -7038,11 +7059,11 @@ softwarePackages: _home: https://www.microsoft.com/en-us/edge _name: Microsoft Edge _app: Microsoft Edge.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/microsoft-edge/Default" - target: "$HOME/Library/Application Support/Microsoft Edge/Default" - _link:choco: 'TODO' - _link:flatpak: 'TODO' + _env: + MICROSOFT_EDGE_APPDATA: + cask: "$HOME/Library/Application Support/Microsoft Edge/Default" + choco: "TODO" + flatpak: "TODO" _post: | #!/usr/bin/env bash # @brief See `google-chrome` `_post` script for more details @@ -8117,10 +8138,10 @@ softwarePackages: _name: Notion AI _note: Waiting on Linux install alternative. _app: Notion.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/notion" - target: "$HOME/Library/Application Support/Notion" - _link:choco: 'TODO' + _env: + NOTION_APPDATA: + cask: "$HOME/Library/Application Support/Notion" + choco: "TODO" cask: notion choco: notion mas: 1559269364 @@ -8187,9 +8208,9 @@ softwarePackages: _home: https://www.warp.dev/ _name: Warp Terminal _app: Warp.app - _link:cask: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/warp-terminal" - target: "$HOME/Library/Application Support/dev.warp.Warp-Stable" + _env: + WARP_TERMINAL_APPDATA: + cask: "$HOME/Library/Application Support/dev.warp.Warp-Stable" cask: warp figma: _bin: null @@ -9685,12 +9706,10 @@ softwarePackages: _github: null _home: https://remmina.org/ _name: Remmina - _link:flatpak: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/remmina/remmina.pref" - target: "$HOME/.var/app/org.remmina.Remmina/config/remmina/remmina.pref" - _link:snap: - - src: "${XDG_CONFIG_HOME:-$HOME/.config}/remmina/remmina.pref" - target: "$HOME/snap/remmina/current/.config/remmina/remmina.pref" + _env: + REMMINA_APPDATA: + flatpak: "$HOME/.var/app/org.remmina.Remmina/config/remmina/remmina.pref" + snap: "$HOME/snap/remmina/current/.config/remmina/remmina.pref" apt: remmina dnf: remmina flatpak: org.remmina.Remmina @@ -11616,6 +11635,24 @@ softwarePackages: pipx: termius snap: termius-app yay: termius + dagu: + _bin: dagu + _github: + _name: Dagu + _post: | + #!/usr/bin/env bash + sudo mkdir -p /var/log/dagu + dagu start-all + _boot: | + #!/usr/bin/env bash + # TODO - Add _boot capability + dagu start-all + brew: yohamta/tap/dagu + runitor: + _bin: runitor + _github: https://github.com/bdd/runitor + _name: Runitor + go: bdd.fi/x/runitor/cmd/runitor@latest postfix: _bin: postfix _desc: Postfix is an e-mail server that can be used to send e-mail