Merge branch 'master' of https://github.com/megabyte-labs/install.doctor into 24_gitlab_runner

This commit is contained in:
enggnr 2023-06-19 17:18:28 +05:30
commit 0586cb26d2
69 changed files with 1720 additions and 1053 deletions

29
docs/INSPIRATION.md Normal file
View file

@ -0,0 +1,29 @@
## CLI
* https://github.com/r-darwish/idnt
* https://github.com/charmbracelet/wish
* https://github.com/charmbracelet/skate
* https://github.com/console-rs/indicatif
* https://github.com/tauri-apps/tauri
* https://github.com/emilengler/sysget
* https://github.com/pocketbase/pocketbase
* sysget
* https://github.com/therootcompany/serviceman
* https://github.com/vadimdemedes/ink
* https://github.com/ajenti/ajenti
* https://github.com/linuxserver/docker-webtop
* https://github.com/chocolatey/boxstarter
## System
* https://github.com/Andy-Python-Programmer/aero
## Website
* https://github.com/Mintplex-Labs/anything-llm
* https://webcontainers.io/
* https://github.com/zulip/zulip
* https://github.com/ConvoyPanel/panel
* https://github.com/coder/coder
* https://github.com/rigoneri/syte
* https://github.com/rigoneri/Syte3

View file

@ -1,220 +1,126 @@
# TODOs
https://github.com/search?q=vscode&type=repositories&s=stars&o=desc&p=2
* Revisit https://github.com/rome/tools when project matures
https://github.com/rigoneri/syte/graphs/code-frequency
https://www.automated-bots.com/
https://github.com/NathanDuma/LinkedIn-Easy-Apply-Bot
https://github.com/hfreire/get-me-a-date
https://github.com/joelbarmettlerUZH/auto-tinder
https://github.com/coder/coder
zsh completions have been installed to:
/usr/local/share/zsh/site-functions
==> Linking Binary 'completion.bash.inc' to '/usr/local/etc/bash_completion.d/google-cloud-sdk'
==> Linking Binary 'completion.zsh.inc' to '/usr/local/share/zsh/site-functions/_google_cloud_sdk'
Ansible roles
https://github.com/altermo/vim-plugin-list
Play with Navi and configure cheat repos
This page outlines various projects and tasks that we are currently working on. Creating a GitHub issue for each of these items would be overkill.
## Pending
* Configure Navi to automatically download and use the best cheat repositories
* Finish TS from 1400 stars
* Python
## Upstream
The following items are things we would like to include into the Install Doctor system but are waiting on upstream changes.
* [Actions](https://github.com/sindresorhus/Actions) adds a wide-variety of actions that you can utilize with the macOS Shortcuts app. It is currently only available via the macOS app store. Requested a Homebrew Cask [here](https://github.com/sindresorhus/Actions/issues/127).
* [Color Picker](https://github.com/sindresorhus/System-Color-Picker) is an improved color picker app available on macOS. It is currently only available via the macOS app store. Requested Homebrew Cask [here](https://github.com/sindresorhus/System-Color-Picker/issues/32).
* Consider integrating [LocalAI](https://github.com/go-skynet/LocalAI) which can be used in combination with mods to generate ChatGPT responses locally
* Wait for Homebrew install option for [Warpgate](https://github.com/warp-tech/warpgate)
## Premium Software Recommendations
### macOS
* [Dato](https://apps.apple.com/app/id1470584107) - World clocks and calendar menu bar application available for macOS. It is a better, paid alternative to the free version of Clockr which is currently installed using the default configuration of Install Doctor.
* [Parallels](https://www.parallels.com/) is the best virtualization manager / platform available on macOS
# https://github.com/mergestat/mergestat
# Tiltfile
# Skate!
# RUNDECK
# Foreman?
# FOG
# AMANDA
# CloudStack
# AppScale
# resilio connect
# oVirt
# opennebula
# emailengine.app
# Consider:
- https://marketplace.visualstudio.com/items?itemName=asvetliakov.vscode-neovim
CLOUDFLARE_API_TOKEN
GMAIL_APP_PASSWORD
### Ensure these PATHs are added on Windows
add to PATH:
'%ProgramFiles(x86)%\mitmproxy\bin'
'%ProgramFiles(x86)%\juju'
# https://github.com/graysky2/profile-cleaner
### POSSIBLY USEFUL SOFTWARE
- Incorporate /home/linuxbrew/.linuxbrew/etc/bash_completion.d
- https://docs.brew.sh/Shell-Completion
## Figure out where these go
### Restic
RESTIC_REPOSITORY_FILE Name of file containing the repository location (replaces --repository-file)
RESTIC_REPOSITORY Location of repository (replaces -r)
RESTIC_PASSWORD_FILE Location of password file (replaces --password-file)
RESTIC_PASSWORD The actual password for the repository
RESTIC_PASSWORD_COMMAND Command printing the password for the repository to stdout
RESTIC_KEY_HINT ID of key to try decrypting first, before other keys
RESTIC_CACHE_DIR Location of the cache directory
RESTIC_COMPRESSION Compression mode (only available for repository format version 2)
RESTIC_PROGRESS_FPS Frames per second by which the progress bar is updated
RESTIC_PACK_SIZE Target size for pack files
TMPDIR Location for temporary files
AWS_ACCESS_KEY_ID Amazon S3 access key ID
AWS_SECRET_ACCESS_KEY Amazon S3 secret access key
AWS_SESSION_TOKEN Amazon S3 temporary session token
AWS_DEFAULT_REGION Amazon S3 default region
AWS_PROFILE Amazon credentials profile (alternative to specifying key and region)
AWS_SHARED_CREDENTIALS_FILE Location of the AWS CLI shared credentials file (default: ~/.aws/credentials)
ST_AUTH Auth URL for keystone v1 authentication
ST_USER Username for keystone v1 authentication
ST_KEY Password for keystone v1 authentication
OS_AUTH_URL Auth URL for keystone authentication
OS_REGION_NAME Region name for keystone authentication
OS_USERNAME Username for keystone authentication
OS_USER_ID User ID for keystone v3 authentication
OS_PASSWORD Password for keystone authentication
OS_TENANT_ID Tenant ID for keystone v2 authentication
OS_TENANT_NAME Tenant name for keystone v2 authentication
OS_USER_DOMAIN_NAME User domain name for keystone authentication
OS_USER_DOMAIN_ID User domain ID for keystone v3 authentication
OS_PROJECT_NAME Project name for keystone authentication
OS_PROJECT_DOMAIN_NAME Project domain name for keystone authentication
OS_PROJECT_DOMAIN_ID Project domain ID for keystone v3 authentication
OS_TRUST_ID Trust ID for keystone v3 authentication
OS_APPLICATION_CREDENTIAL_ID Application Credential ID (keystone v3)
OS_APPLICATION_CREDENTIAL_NAME Application Credential Name (keystone v3)
OS_APPLICATION_CREDENTIAL_SECRET Application Credential Secret (keystone v3)
OS_STORAGE_URL Storage URL for token authentication
OS_AUTH_TOKEN Auth token for token authentication
B2_ACCOUNT_ID Account ID or applicationKeyId for Backblaze B2
B2_ACCOUNT_KEY Account Key or applicationKey for Backblaze B2
AZURE_ACCOUNT_NAME Account name for Azure
AZURE_ACCOUNT_KEY Account key for Azure
AZURE_ACCOUNT_SAS Shared access signatures (SAS) for Azure
GOOGLE_PROJECT_ID Project ID for Google Cloud Storage
GOOGLE_APPLICATION_CREDENTIALS Application Credentials for Google Cloud Storage (e.g. $HOME/.config/gs-secret-restic-key.json)
RCLONE_BWLIMIT rclone bandwidth limit
### Wazuh
WAZUH_MANAGER
Specifies the manager IP address or hostname. If you want to specify multiple managers, you can add them separated by commas. See address.
WAZUH_MANAGER_PORT
Specifies the manager connection port. See port.
WAZUH_PROTOCOL
Sets the communication protocol between the manager and the agent. Accepts UDP and TCP. The default is TCP. See protocol.
WAZUH_REGISTRATION_SERVER
Specifies the Wazuh registration server, used for the agent registration. See manager_address. If empty, the value set in WAZUH_MANAGER will be used.
WAZUH_REGISTRATION_PORT
Specifies the port used by the Wazuh registration server. See port.
WAZUH_REGISTRATION_PASSWORD
Sets password used to authenticate during register, stored in etc/authd.pass. See authorization_pass_path
WAZUH_KEEP_ALIVE_INTERVAL
Sets the time between agent checks for manager connection. See notify_time.
WAZUH_TIME_RECONNECT
Sets the time interval for the agent to reconnect with the Wazuh manager when connectivity is lost. See time-reconnect.
WAZUH_REGISTRATION_CA
Host SSL validation need of Certificate of Authority. This option specifies the CA path. See server_ca_path.
WAZUH_REGISTRATION_CERTIFICATE
The SSL agent verification needs a CA signed certificate and the respective key. This option specifies the certificate path. See agent_certificate_path.
WAZUH_REGISTRATION_KEY
Specifies the key path completing the required variables with WAZUH_REGISTRATION_CERTIFICATE for the SSL agent verification process. See agent_key_path.
WAZUH_AGENT_NAME
Designates the agent's name. By default, it will be the computer name. See agent_name.
WAZUH_AGENT_GROUP
Assigns the agent to one or more existing groups (separated by commas). See agent_groups.
ENROLLMENT_DELAY
Assigns the time that agentd should wait after a successful registration. See delay_after_enrollment.
### Docker
https://github.com/filebrowser/filebrowser
https://github.com/coder/code-server
[Polyform License Example](https://github.com/dosyago/DiskerNet/blob/fun/LICENSE.md)
### Robocorp.com
https://github.com/rigoneri/Syte3
* Wait for https://github.com/hocus-dev/hocus to get out of alpha for VM management
* Revisit https://github.com/rome/tools when project matures
* Revisit https://github.com/Disassembler0/Win10-Initial-Setup-Script for initial setup of Windows
* Revisit Resilio - seems like they have tools useful for synchronizing VMs
* Consider switching license to [Polyform License Example](https://github.com/dosyago/DiskerNet/blob/fun/LICENSE.md)
* Look into tile managers
* https://github.com/joelbarmettlerUZH/auto-tinder
* https://github.com/hfreire/get-me-a-date
* Keep eye on fig.io for release to Linux and new AI features
* Monitor https://moonrepo.dev/moon as possible mono-repo manager
## Review
## CLI
The following links include software that need to be reviewed before including them into the Install Doctor installer.
* https://github.com/r-darwish/idnt
* https://github.com/charmbracelet/wish
* https://github.com/charmbracelet/skate
* https://github.com/console-rs/indicatif
* https://github.com/tauri-apps/tauri
* https://github.com/emilengler/sysget
* https://github.com/pocketbase/pocketbase
* https://webinstall.dev/vim-sensible/
* https://webinstall.dev/vim-devicons/
* https://webinstall.dev/vim-nerdtree/
* https://webinstall.dev/vim-gui/
* https://formulae.brew.sh/cask/blender#default
* https://kdenlive.org/en/
* https://www.bluestacks.com/
* https://github.com/symless/synergy-core
* https://symless.com/synergy/features
* https://api.slack.com/automation/cli/commands
* https://github.com/activepieces/activepieces#
* https://github.com/jupyterlab/jupyterlab-desktop
* https://github.com/butlerx/wetty
* https://github.com/graphql-editor/graphql-editor
* https://github.com/graphql/graphql-playground
* https://github.com/amplication/amplication
* https://github.com/openai-translator/openai-translator
* https://github.com/lepoco/wpfui
* https://github.com/ModernFlyouts-Community/ModernFlyouts
* https://github.com/purogamer/Fluent-for-Steam
* https://github.com/files-community/Files
* https://github.com/awaescher/RepoZ
* https://github.com/microsoft/WinUI-Gallery
* https://github.com/sq/JSIL
* https://github.com/dotnet/format
* https://github.com/NuGetPackageExplorer/NuGetPackageExplorer
* https://github.com/Rise-Software/Rise-Media-Player
* https://github.com/actions/runner
* https://github.com/hbons/SparkleShare
* https://github.com/gitextensions/gitextensions
* https://github.com/mRemoteNG/mRemoteNG
* https://github.com/MathewSachin/Captura
* https://github.com/DiscordStyles/Fluent
* https://github.com/Alex4SSB/ADB-Explorer
* https://github.com/carlospolop/PEASS-ng
* https://github.com/Bismuth-Forge/bismuth
## PHP
## Docker
https://github.com/deployphp/deployer
The following items are Docker containers that we may want to include as default containers deployed in our system.
## Alternative OSes
* https://github.com/erxes/erxes - CRM
* https://github.com/pawelmalak/flame - Homepage
* https://github.com/thelounge/thelounge - IRC
* https://github.com/vector-im/element-web - Matrix
* https://github.com/outline/outline - Collaborative MD
* https://github.com/nocodb/nocodb - MySQL Spreadsheet
* https://github.com/excalidraw/excalidraw - Hand-drawn Diagrams
* https://github.com/ansible/awx - AWX Ansible Management
* https://github.com/mergestat/mergestat - Git SQL Queries
* https://docs.rundeck.com/docs/administration/install/installing-rundeck.html - Rundeck (Self-Service Desk)
* https://easypanel.io/ - App deployments
* https://www.activepieces.com/docs/install/docker
https://github.com/Andy-Python-Programmer/aero
### Kubernetes
The following items may be incorporated into our Kubernetes stack:
## Go Libraries to Consider
* https://github.com/kubevirt/kubevirt
* https://atuin.sh/docs/self-hosting/k8s
* https://github.com/ivaaaan/smug
* https://github.com/arl/gitmux
* https://github.com/jessfraz/dockfmt
* https://github.com/lindell/multi-gitter
* https://github.com/DBCDK/morph
* https://github.com/buildkite/agent
* https://github.com/fiatjaf/jiq
* https://github.com/curusarn/resh
* https://github.com/git-town/git-town
* https://github.com/0xERR0R/blocky
* https://github.com/terraform-linters/tflint
* https://github.com/cube2222/octosql
* https://github.com/alda-lang/alda
* https://github.com/aquasecurity/tfsec
* https://github.com/filhodanuvem/gitql
* https://github.com/filebrowser/filebrowser
* https://github.com/errata-ai/vale
* https://github.com/turbot/steampipe
* https://github.com/moby/buildkit
* https://github.com/schachmat/wego
* https://github.com/johnkerl/miller
* https://github.com/xo/usql
* https://github.com/future-architect/vuls
* https://github.com/containers/podman
* https://github.com/derailed/k9s
## Bare Metal
The projects below are software systems that might be incorporated to handle bare-metal operations or virtual machine management.
* https://theforeman.org/ (VM management)
* https://fogproject.org/ (Backup solution)
* https://github.com/apache/cloudstack (VM management)
* https://www.ovirt.org/ (VM management)
* https://opennebula.io/ (Hybrid-cloud management)
* https://github.com/cloud-hypervisor/cloud-hypervisor (Cloud hypervisor)
## Revisit
The following items have been reviewed but need to be revisited due to complexity or other reasons.
* https://github.com/microsoft/azuredatastudio
* https://github.com/Nutlope/roomGPT
* https://github.com/Zettlr/Zettlr
* https://github.com/AmruthPillai/Reactive-Resume
* https://github.com/kubeflow/kubeflow
* https://github.com/leon-ai/leon
* https://github.com/teambit/bit
* https://github.com/Budibase/budibase
* https://github.com/appsmithorg/appsmith
* https://github.com/refined-github/refined-github
* https://github.com/reworkd/AgentGPT
* https://github.com/appwrite/appwrite
* https://github.com/hoppscotch/hoppscotch
* builder.io
* https://github.com/hocus-dev/hocus
* https://github.com/Kanaries/Rath
* https://github.com/reworkd/AgentGPT
* cvat.io
* https://github.com/illacloud/illa-builder

View file

@ -175,7 +175,8 @@ data:
cloudflare:
r2: "{{ $cloudflareR2AccountId }}"
username: "{{ $cloudflareUsername }}"
defaultBrowser: brave
defaultBrowser: chrome
defaultBrowserDarwin: browserosaurus
digitalOceanClusterId: b7fc4e37-ffe7-4ea1-887a-0e19ee077f32
# `domain` is kept here for backwards compatibility, but the .host.domain is the preferred selector
domain: "{{ $domain }}"

View file

@ -40,13 +40,19 @@ docker:
macosRemoteLogin: 'on'
netdataClaimURL: https://app.netdata.cloud
themeparkTheme: aquamarine
figmaAddons:
- https://www.figma.com/community/plugin/1037309320238203168/DhiWise---Figma-to-Code
- https://www.figma.com/community/plugin/1056467900248561542/Locofy-FREE-BETA---Figma-to-React%2C-React-Native%2C-HTML%2FCSS%2C-Next.js%2C-Gatsby
chromeExtensions:
- automa/infppggnoaenmfagbfknfkancpbljcca
- bardeen-automate-manual-w/ihhkmalpkhkoedlmcnilbbhhbhnicjga
- bitly-powerful-short-link/iabeihobmhlgpkcgjiloemdbofjbdcic
- bitwarden-free-password-m/nngceckbapebfimnlniiiahkandclblb
- briskine-email-templates/lmcngpkjkplipamgflhioabnhnopeabf
- buffer/noojglkidnpfjbincgijbaiedldjfbhh
- chatgpt-app-for-chrome-me/camppjleccjaphfdbohjdohecfnoikec
- chatgpt-for-google/jgjaeacdkonaoafenlfkkkmbaopkbilf
- chrome-remote-desktop/inomeogfingihgjfjlpeplalcfajhgai
- compose-ai-ai-powered-wri/ddlbpiadoechcolndfeaonajmngmhblj
- desktop-app-for-google-ta/lpofefdiokgmcdnnaigddelnfamkkghi
- discoverly/dijhcpbkalfgkcebgoncjmfpbamihgaf
@ -56,28 +62,37 @@ chromeExtensions:
- giphy-for-chrome/jlleokkdhkflpmghiioglgmnminbekdi
- jiffy-reader/lljedihjnnjjefafchaljkhbpfhfkdic
- json-resume-exporter/caobgmmcpklomkcckaenhjlokpmfbdec
- gitako-github-file-tree/giljefjcheohhamkjphiebfjnlphnokk
- gnome-shell-integration/gphhapmejobijbbhgpjhcjognlahblep
- google-dictionary-by-goog/mgijmajocgfcbeboacabfgobmjgjcoja
- google-translate/aapbdbdomjkkjkaonfhkkikfgjllcleb
- google-trends-supercharge/ocmojhiloccgbpjnkeiooioedaklapap
- grammar-spell-checker-%E2%80%94-l/oldceeleldhonbafppcapldpdifcinji
- grepper/amaaokahonnfjjemodnpmeenfpnnbkco
- gsconnect/jfnifeihccihocjbfcfhicmmgpjicaec
- hoppscotch-browser-extens/amknoiejhlmhancpahfcfcfhllgkpbld
- hunter-email-finder-exten/hgmhmanijnjhaffoampdlllchpolkdnj
- huntr-job-search-tracker/mihdfbecejheednfigjpdacgeilhlmnf
- hypertype/lohojfppjeknalpoklojhfnndocgekbd
- json-viewer-pro/eifflpmocdbdmepbjaopkkhbfmdgijcc
- liner-chatgpt-google-assi/bmhcbmnbenmcecpmpepghooflbehcack
- loom--screen-recorder-sc/liecbddmkiiihnedobmlmillhodjkdmb
- magical-chatgpt-ai-writer/iibninhmiggehlcdolcilmhacighjamp
- magical-text-expander-aut/iibninhmiggehlcdolcilmhacighjamp
- mailvelope/kajibbejlbohfaggdiogboambcijhkke
- markdown-here/elifhakcjgalahccnjkneoccemfahfoa
- metamask/nkbihfbeogaeaoehlefnkodbefgpgknn
- notion-web-clipper/knheggckgoiihginacbkhaalnibhilkk
- octohint/hbkpjkfdheainjkkebeoofkpgddnnbpk
- pieces-save-code-snippets/igbgibhbfonhmjlechmeefimncpekepm
- rakuten-get-cash-back-for/chhjbpecpncaggjpdakmflnfcopglcmi
- replixai/nhfededlooagdmcpamafanjolhkekbbl
- save-to-google-drive/gmbmikajjgmnabiglmofipeabaddhgne
- screenity-screen-recorder/kbbdabhdfibnancpjfhlkhafgdilcnji
- search-by-image/cnojnbdhbhnkbcieeekonklommdnndci
- sessionbox-multi-login-to/megbklhjamjbcafknkgmokldgolkdfig
- singlefile/mpiodijhokgodhhofbcjdecpffjipkle
- sleek-cashback-rewards/mcjlbeekadpmcdhmagbjppkfbbjdddhn
- sponsorblock-for-youtube/mnjggcdmjocbbbhaepdhchncahnbgone
- toucan-language-learning/lokjgaehpcnlmkebpmjiofccpklbmoci
- undo-closed-tabs-button/ieehkmoiljghfkejgahoheemdjpdinml
@ -103,12 +118,14 @@ firefoxAddOns:
- floccus
- giphy-for-firefox
- gnome-shell-integration
- hoppscotch
- json-lite
- languagetool
- mailvelope
- markdown-here
- medium-unlimited-read-for-free
- multi-account-containers
- notion-web-clipper
- private-relay
- profile-switcher
- search_by_image
@ -142,13 +159,16 @@ removeLinuxShortcuts:
theme: Betelgeuse
softwareGroups:
AI-Desktop: &AI-Desktop
- chatgpt-desktop
- chatgpt-nofwl
- chatgpt-menubar
- mage-ai
Android: &Android
- scrcpy
Android-Desktop: &Android-Desktop
- android-studio
- genymotion
- scrcpy-gui
- soduto
Anon: &Anon
- onionshare
Ansible: &Ansible
@ -165,7 +185,6 @@ softwareGroups:
## - swarm
## - vpn
## - wsl
## - yubikey
## - antivirus
## - common
# - connect
@ -201,6 +220,7 @@ softwareGroups:
- cryptomator
- seafile-client
- timeshift
- syncalicious
Browsers: &Browsers
- w3m
Browsers-Desktop: &Browsers-Desktop
@ -219,7 +239,9 @@ softwareGroups:
- fpm
- gitlab-runner
- glen
- tart
CLI: &CLI
- atuin
- bash-completion
- bandwhich
- bat
@ -233,6 +255,7 @@ softwareGroups:
- direnv
- docker-langserver
- dog
- dotenv
- dua
- duf
- dust
@ -255,7 +278,6 @@ softwareGroups:
- jq
- lsd
- mc
- mcfly
- navi
- nb
- neovim
@ -281,6 +303,7 @@ softwareGroups:
# - snapd
- sql-language-server
- task
- tea
- tmux
- tor
- translate
@ -318,6 +341,7 @@ softwareGroups:
- http-prompt
- httpie
- httpstat
- howdoi
- hurl
- imgur-uploader
- is-up
@ -347,6 +371,7 @@ softwareGroups:
- tldr
- tmuxinator
- up
- xz
- yank
Cloud: &Cloud
- awscli
@ -412,6 +437,7 @@ softwareGroups:
- jc
- jo
- jq
- miller
- oq
- osquery
- pup
@ -426,11 +452,15 @@ softwareGroups:
- yq
Database: &Database
- iredis
- octosql
- sqlite
- steampipe
- usql
Database-Desktop: &Database-Desktop
- beekeeper-studio
- sqlectron
Development-Tools-Desktop: &Development-Tools-Desktop
- catlight
- github-desktop
- intellij-idea-ce
- iterm2
@ -438,6 +468,7 @@ softwareGroups:
- powershell
- redis-desktop-manager
- visual-studio
- warp-terminal
- xcode
- xcodes
- xcodes-app
@ -451,11 +482,11 @@ softwareGroups:
- dockle
- footloose
- grype
- gvisor
- trivy
- trufflehog
E-mail: &E-mail
- himalaya
- mailsy
E-mail-Desktop: &E-mail-Desktop
- m-cli
- mailspring
@ -472,10 +503,12 @@ softwareGroups:
- rkhunter
Essentials-Desktop: &Essentials-Desktop
- autokey
- codeedit
- eul
- firefox
- flow-launcher
- fonts
- iina
- kvantum
- lapce
- malwarebytes
@ -498,24 +531,27 @@ softwareGroups:
Games-Desktop: &Games-Desktop
- mudlet # MUD client
Git: &Git
- aicommits
- commitizen
- gh
- gist
- git
- gitql
- git-bug
- git-extras
- git-filter-repo
- git-fuzzy
- git-lfs
- git-open
- git-secret
- git-subrepo
- git-town
- gitomatic
- git-stats
- gitui
- glab
- hub
- lazygit
- multi-gitter
- opencommit
- starred
- tig
@ -536,6 +572,7 @@ softwareGroups:
Go: &Go
- delve
- go
- goreleaser
- go-outline
- gomodifytags
- gopkgs
@ -558,6 +595,7 @@ softwareGroups:
- kubernetes-helm
- kubernetes-kompose
- kubeval
- k9s
- linkerd2
- minikube
- openshift-cli
@ -567,6 +605,7 @@ softwareGroups:
- lens
Linting: &Linting
- ansible-lint
- dockfmt
- dotenv-linter
- dprint
- eslint
@ -579,12 +618,15 @@ softwareGroups:
- markdownlint-cli
- prettierd
- pre-commit
- psscriptanalyzer
- ruff
- shellcheck
- shfmt
- tflint
- tfsec
- tokei
- trunk
- vale
- yamllint
- yapf
Logging: &Logging
@ -593,6 +635,7 @@ softwareGroups:
- sentry-cli
- unbuffer
Media: &Media
- alda
- beets
- crunch
- exiftool
@ -607,6 +650,7 @@ softwareGroups:
- wkhtmltopdf
- youtube-dl
Media-Desktop: &Media-Desktop
- adobe-creative-cloud
- audacity
- balenaetcher
- blender
@ -619,11 +663,13 @@ softwareGroups:
- krita
- lollypop
- nuclear
- obs-studio
- plex
- plex-htpc
- raspberry-pi-imager
- shotcut
- shotwell
- upscayl
- vlc
- youtube-music
Misc-Desktop: &Misc-Desktop
@ -631,7 +677,8 @@ softwareGroups:
- _nautilus-extensions
- cakebrew
- clocker
- cumulus
- devtoys
- devtoys-windows
- drawio
- eartrumpet
- edex-ui
@ -644,7 +691,6 @@ softwareGroups:
- mark-text
- meetingbar
- monitorcontrol
- neovide
- openinterminal
- pake
- pock
@ -658,6 +704,7 @@ softwareGroups:
- secretive
- standard-notes
- stats
- swiftbar
- teamviewer
Misc-Development-Tools: &Misc-Development-Tools
- ansifilter
@ -680,9 +727,12 @@ softwareGroups:
- java
- libimobiledevice
- license
- lightproxy
- mono
- ntl
- openjdk
- please
- porter
- rust
- snapcraft
- solidity
@ -692,6 +742,7 @@ softwareGroups:
- windows-admin-center
- windows-power-toys
NGINX: &NGINX
- caddy
- certbot
- cfssl
- gixy
@ -733,10 +784,17 @@ softwareGroups:
- ultra
- zap
Productivity-Desktop: &Productivity-Desktop
- alt-tab
- amethyst
- espanso
- fiscript
- libreoffice
- microsoft-office
- notion
- obsidian
# Deprecated in favor of Google Tasks
# - microsoft-todo
- raycast
- skhd
Python: &Python
- flake8
@ -754,6 +812,7 @@ softwareGroups:
- vhs
Recording-Desktop: &Recording-Desktop
- flameshot
- kap
- peek
- sharex
Ruby: &Ruby
@ -762,6 +821,7 @@ softwareGroups:
- assh
- endlessh
- fail2ban
- hss
- mosh
- openssh-server
- skm
@ -774,8 +834,10 @@ softwareGroups:
- bitwarden-cli
- boringtun
- debsecan
- dotenv-vault
- envchain
- envconsul
- envio
- openssl
- pony
- protonvpn-cli
@ -791,8 +853,8 @@ softwareGroups:
Security-Desktop: &Security-Desktop
- bitwarden
- lulu
- mullvad-vpn
- portmaster
- privileges
- protonvpn
- santa
- tunnelblick
@ -826,15 +888,17 @@ softwareGroups:
- pulumi
- sysbench
- sysdig
- sysget
- sysz
- upt
- winrm-cli
- wireshark-cli
Sys-Admin-Desktop: &Sys-Admin-Desktop
- networkmanager
- quasar
- recuva
- sloth
- snitch
- tea-gui
- wireshark
Templates: &Templates
- confd
@ -855,6 +919,7 @@ softwareGroups:
- dat
- ffsend
- gdown
- magic-wormhole
- nitroshare
- ots
- portal
@ -864,7 +929,6 @@ softwareGroups:
Transfer-Desktop: &Transfer-Desktop
- ariang
- dat-desktop
- filezilla
- google-drive
- motrix
- qbittorrent
@ -872,27 +936,38 @@ softwareGroups:
Utilities: &Utilities
- nativefier
Virtualization: &Virtualization
- d2vm
- kvm
- libguestfs-tools
- lxdc
- lxd-ui
- packer
- quickemu
- vagrant
- vagrant-vmware-utility
- vermin
Virtualization-Desktop: &Virtualization-Desktop
- docker-desktop
- gnome-boxes
- parallels
- quickgui
- utm
- vagrant-manager
- virtualbox
- vmware
Web-Development: &Web-Development
- angular-cli
- autodoc
- auto-install
- browser-sync
- bun
- caniuse
- capacitor
- coder
- cordova
- deno
- deta
- devbox
- electron
- emma
- fastify
@ -902,15 +977,20 @@ softwareGroups:
- gfi
- gulp
- hey
- htmlhint
- hugo
- ionic
- imageoptim-cli
- ipfs
- ipfs-deploy
- jest
- json-server
- localtunnel
- majestic
- medusa
- mitmproxy
- muffet
- nativescript
- ncc
- nectar
- nest
@ -918,22 +998,30 @@ softwareGroups:
- ngrok
- node-prune
- np
- npm-check
- npkill
- npm-check # Similar to npm-check-updates
- npm-check-updates
- oclif
- package-size
- page-fetch
- pageres
- patch-package
- pipedream-cli
- pkg
- playwright
- pnpm
- projen
- psi
- quicktype
- semantic-release
- serve
- serverless
- storybook
- surge
- trellis
- ts2c
- typescript
- typescript-to-lua
- websocat
- wordops
- wordpressify
@ -947,6 +1035,8 @@ softwareGroups:
- betwixt
- electron-app
- fiddler
- figma
- http-toolkit
- imagine
- imageoptim
- ipfs-desktop
@ -956,9 +1046,11 @@ softwareGroups:
- mqttx
- pieces
- pieces-cli
- pika
- postman
- responsively
- runjs
- zaproxy
_Basic: &_Basic
- *CLI
- *Essentials
@ -986,6 +1078,7 @@ softwareGroups:
- bat
- bfg
- boringtun
- buildkite-agent
- clamav
- cloudflared
- cmake
@ -1002,7 +1095,6 @@ softwareGroups:
- git
- git-extras
- git-filter-repo
- git-fuzzy
- git-lfs
- git-secret
- git-subrepo
@ -1160,6 +1252,10 @@ softwareGroups:
- *Transfer-Desktop
- *Virtualization-Desktop
- *Web-Development-Desktop
_ID-Desktop:
- browsersaurus
- monitorcontrol
- warp-terminal
__hostname__base-basic-tmpl:
- *_Basic
- *_Basic-Desktop
@ -1204,7 +1300,6 @@ softwareGroups:
__hostname__util-tmpl: []
__hostname__vault-tmpl:
- onlykey
- yubikey
__hostname__vpn-pritunl-tmpl: []
__hostname__vpn-proton-tmpl:
- protonvpn
@ -1237,12 +1332,18 @@ softwareGroups:
note: macOS system search more native way of providing similar features. Better alternatives are available.
- pkg: chromium
note: Deprecated in favor of the regular Chrome.
- pkg: cumulus
note: Unnecessary menu bar widget for SoundCloud.
- pkg: diffsofancy
note: Deprecated in favor of `delta`
- pkg: easyengine
note: Deprecated in favor of `wordops` which is the new and improved version of EasyEngine
- pkg: filezilla
note: FileZilla has an offensive user-interface. Absolutely atrocious.
- pkg: gdu
note: Deprecated in favor of `duf` which is written in Rust
- pkg: git-fuzzy
note: Installed via dotfiles via git
- pkg: gvm
note: Deprecated in favor of using ASDF.
- pkg: hyper
@ -1259,8 +1360,14 @@ softwareGroups:
note: Deprecated in favor of using `exa`. `lsd` may be re-introduced when Windows support is added.
- pkg: masscode # Deprecated in favor of Pieces
note: Deprecated in favor of [Pieces](https://pieces.app/). The core components of Pieces are not open-source but the functionality is significantly better than massCode.
- pkg: mcfly
note: Deprecated in favor of atuin
- pkg: mullvad-vpn
note: Switched to ProtonVPN exclusively
- pkg: multipass
note: Opens persistent menu icon on GNOME and has issues that sometimes require switching the virt driver
- pkg: neovide
note: Prefer other IDEs - neovim is good for the terminal though
- pkg: nordvpn
note: Deprecated in favor of leveraging ProtonVPN as the primary VPN service.
- pkg: nvm
@ -1297,6 +1404,8 @@ softwareGroups:
queued:
- pkg: editly
note: Editly NPM package is failing to install on macOS. Attempts to compile with node-gyp and fails.
- pkg: rancher-desktop
note: Conflicts with Docker Desktop
- pkg: rear
note: System backup utility that may be incorporated after comparing it with alternative and perhaps better alternatives.
- pkg: frps / frpc
@ -1374,3 +1483,8 @@ qubes:
- https://qubes.3isec.org/Templates_4.1/qubes-template-archlinux-4.0.6-202204171510.noarch.rpm
- https://qubes.3isec.org/Templates_4.1/qubes-template-debian-12-4.0.6-202208292254.noarch.rpm
- https://qubes.3isec.org/Templates_4.1/qubes-template-jammy-4.0.6-202205012228.noarch.rpm
perfectStack:
darwin:
- warp-terminal

View file

@ -246,6 +246,12 @@
url = "https://gitlab.com/megabyte-labs/packer/windows-desktop.git"
clone.args = ["--depth", "1"]
pull.args = ["--ff-only"]
# https://github.com/kholia/OSX-KVM
[".local/src/osx-kvm"]
type = "git-repo"
url = "https://github.com/kholia/OSX-KVM.git"
clone.args = ["--depth", "1"]
pull.args = ["--ff-only"]
### PowerShell
[".local/share/powershell/docker"]

View file

@ -9,18 +9,45 @@ key.txt.age
{{- end }}
{{- if ne .host.distro.family "darwin" }}
dot_local/assets/Betelgeuse.macOS.terminal
Library
{{- end }}
{{- if ne .host.distro.family "linux" }}
dot_local/bin/executable_install-gnome-extensions
dot_local/bin/executable_kde-wallpaper
.VirtualBox
.Xresources
{{- end }}
{{- if ne .host.qubes true }}
dot_local/bin/executable_ramqube
dot_config/autostart/
dot_config/cockpit/
dot_config/dconf/
dot_config/firejail/
dot_config/fontconfig/
dot_config/gtk-1.0/
dot_config/gtk-2.0/
dot_config/gtk-3.0/
dot_config/Kvantum/
dot_config/plasma/
dot_config/qubes/
dot_config/rofi-user/
dot_config/samba/
dot_config/timeshift/
dot_config/xfce4/
dot_config/xsettingsd/
dot_config/zap/
dot_config/gtkrc
dot_config/kcminputrc
dot_config/kdeglobals
dot_config/konsolerc
dot_config/ksplashrc
dot_config/ktimezonedrc
dot_config/kwinrc
dot_config/mimeapps.list
dot_config/plasma-localerc
dot_config/plasmarc
dot_local/bin/firejail/
dot_local/grub.d/
dot_local/konsole/
dot_local/share/kde4/
dot_local/share/xfce4/
dot_var/
dot_Xresources
{{- end }}
{{- if ne .host.distro.family "windows" }}

View file

@ -38,7 +38,6 @@ Brewfile
.vagrant.d/
.viminfo
.volta/
.vscode/
.vscode-oss/
.wgetrc
.wget-hsts

View file

@ -51,7 +51,7 @@ if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]] && com
{{ if and (or (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID"))) (env "CLOUDFLARE_TEAMS_CLIENT_ID")) (or (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET"))) (env "CLOUDFLARE_TEAMS_CLIENT_SECRET")) -}}
### Enroll with CloudFlare Teams
logg info 'Enrolling with CloudFlare Teams'
warp-cli teams-enroll '{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID")) }}{{ includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_ID" | decrypt }}{{ else }}{{ env "CLOUDFLARE_TEAMS_CLIENT_ID" }}{{ end }}' '{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET")) }}{{ includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_SECRET" | decrypt }}{{ else }}{{ env "CLOUDFLARE_TEAMS_CLIENT_SECRET" }}{{ end }}'
warp-cli teams-enroll '{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID")) }}{{ includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_ID" | decrypt | trim }}{{ else }}{{ env "CLOUDFLARE_TEAMS_CLIENT_ID" }}{{ end }}' '{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET")) }}{{ includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_SECRET" | decrypt | trim }}{{ else }}{{ env "CLOUDFLARE_TEAMS_CLIENT_SECRET" }}{{ end }}'
{{- end }}
fi

View file

@ -14,8 +14,23 @@
{{ includeTemplate "universal/profile-before" }}
{{ includeTemplate "universal/logg-before" }}
### System upgrade on macOS
if [ -d /Applications ] && [ -d /Library ]; then
if command -v gtimeout > /dev/null; then
# Allow 8 minutes for system updates
logg info 'Ensuring system software is upgraded (timing out after 8 minutes if system upgrade fails)'
sudo gtimeout 480 softwareupdate -i -a || logg warn 'The system update command timed out after 8 minutes'
else
# If gtimeout is unavailable, then attempt system upgrade without a timeout (which usually works on fresh systems)
logg info 'Applying OS upgrades (if available)'
sudo softwareupdate -i -a || logg error 'Failed to perform a system update via `sudo softwareupdate -i -a`'
fi
logg info 'If system updates were downloaded / installed, a reboot might be required.'
fi
### Install Xcode CLI tools on macOS
if [ -d /Applications ] && [ -d /Library ]; then
logg info 'Ensuring xcode-select is installed for developer tools'
xcode-select -p >/dev/null 2>&1 || sudo xcode-select --install
fi

View file

@ -45,21 +45,17 @@ decryptionFailure() {
### Install Age via Homebrew if not present
installAge() {
if ! command -v brew > /dev/null; then
if ! command -v age > /dev/null; then
logg info 'Running `brew install age`'
brew install age
else
logg warn '`age` is not installed which is utilized in the decryption process'
fi
}
### Install Expect via Homebrew if not present
installExpect() {
if ! command -v brew > /dev/null; then
if ! command -v expect > /dev/null; then
logg info 'Running `brew install expect`'
brew install expect
else
logg warn '`expect` is not installed which is utilized in the decryption process'
fi
}
@ -102,7 +98,7 @@ elif [ -n "$HEADLESS_INSTALL" ] && [ -n "$AGE_PASSWORD" ]; then
installAge
decryptKey
else
logg info 'Skipping Age key decryption process'
logg info 'Skipping Age key decryption process - `HEADLESS_INSTALL` and `AGE_PASSWORD` should be passed in as env variables to automate the process'
fi
### Ensure proper permissions on private key

View file

@ -2,8 +2,11 @@
# @file Generate Missing Public SSH Keys
# @brief Attempts to create missing public SSH keys for all private keys that are missing a public key file
# @description
# Using private SSH keys, you can generate the corresponding public key. This script ensures that any SSH private key
# **Currently disabled.** Using private SSH keys, you can generate the corresponding public key. This script ensures that any SSH private key
# that does not have a matching `.pub` public key file has one generated.
#
# This script is intended to automatically generate the public key from the decrypted private key but it does not seem to be working
# properly so the code is commented out. Pull requests are welcome.
{{ $sshFiles := (output "find" (joinPath .chezmoi.homeDir ".ssh") "-type" "f") -}}
{{- range $sshFile := splitList "\n" $sshFiles -}}
@ -15,12 +18,12 @@
{{ includeTemplate "universal/profile" }}
{{ includeTemplate "universal/logg" }}
logg info 'Ensuring public keys are present'
# logg info 'Ensuring public keys are present'
find "$HOME/.ssh" -type f -maxdepth 1 ! -name "*.pub" ! -name "authorized_keys*" ! -name "known_host*" ! -name "config" | while read FILE; do
if [ ! -f "${FILE}.pub" ]; then
logg info 'Generating missing public key for `'"$FILE"'`'
ssh-keygen -f "$FILE" -y > "${FILE}.pub"
chmod 600 "${FILE}.pub"
fi
done
# find "$HOME/.ssh" -type f -maxdepth 1 ! -name "*.pub" ! -name "*authorized_keys*" ! -name "known_host*" ! -name "config" | while read FILE; do
# if [ ! -f "${FILE}.pub" ]; then
# logg info 'Generating missing public key for `'"$FILE"'`'
# ssh-keygen -f "$FILE" -y > "${FILE}.pub"
# chmod 600 "${FILE}.pub"
# fi
# done

View file

@ -41,7 +41,11 @@
if [[ ! "$(test -d /proc && grep Microsoft /proc/version > /dev/null)" ]]; then
if [ -d /System ] && [ -d /Applications ]; then
### Install on macOS
brew install --cask cloudflare-warp
if [ ! -d "/Applications/Cloudflare WARP.app" ]; then
brew install --cask cloudflare-warp
else
logg info 'Cloudflare WARP already installed'
fi
elif [ '{{ .host.distro.id }}' = 'debian' ]; then
### Add CloudFlare WARP desktop app apt-get source
if [ ! -f /etc/apt/sources.list.d/cloudflare-client.list ]; then
@ -80,16 +84,30 @@ fi
### Ensure certificate is installed
### TODO: Ensure duplicate certificates are not stored in these files below
# Source: https://developers.cloudflare.com/cloudflare-one/static/documentation/connections/Cloudflare_CA.crt
# Source: https://developers.cloudflare.com/cloudflare-one/static/documentation/connections/Cloudflare_CA.pem
if [ -d /System ] && [ -d /Applications ] && command -v warp-cli > /dev/null; then
### Ensure certificate installed on macOS
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${XDG_DATA_HOME:-$HOME/.local/share}/warp/Cloudflare_CA.crt"
if [ -f /usr/local/etc/ca-certificates/cert.pem ]; then
echo | sudo cat - "${XDG_DATA_HOME:-$HOME/.local/share}/warp/Cloudflare_CA.pem" >> /usr/local/etc/ca-certificates/cert.pem
if [ ! -n "$SSH_CONNECTION" ]; then
logg info 'Requesting security authorization for Cloudflare trusted certificate'
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain "${XDG_DATA_HOME:-$HOME/.local/share}/warp/Cloudflare_CA.crt"
else
logg error 'Unable to add `Cloudflare_CA.pem` because `/usr/local/etc/ca-certificates/cert.pem` does not exist!' && exit 1
logg warn 'Session is SSH so adding Cloudflare encryption key to trusted certificates via the security program is being bypassed since it requires Touch ID / Password verification.'
fi
if [ -d /usr/local/etc/openssl@3/certs ]; then
# Location on Intel macOS
logg info 'Adding Cloudflare certificate to `/usr/local/etc/openssl@3/certs/Cloudflare_CA.pem`'
echo | sudo cat - "${XDG_DATA_HOME:-$HOME/.local/share}/warp/Cloudflare_CA.pem" >> /usr/local/etc/openssl@3/certs/Cloudflare_CA.pem
logg info 'Running `/usr/local/opt/openssl@3/bin/c_rehash`'
/usr/local/opt/openssl@3/bin/c_rehash
elif [ -d /opt/homebrew/etc/openssl@3/certs ]; then
# Location on arm64 macOS
logg info 'Adding Cloudflare certificate to `/opt/homebrew/etc/openssl@3/certs/Cloudflare_CA.pem`'
echo | sudo cat - "${XDG_DATA_HOME:-$HOME/.local/share}/warp/Cloudflare_CA.pem" >> /opt/homebrew/etc/openssl@3/certs/Cloudflare_CA.pem
logg info 'Running `/opt/homebrew/opt/openssl@3/bin/c_rehash`'
/opt/homebrew/opt/openssl@3/bin/c_rehash
else
logg warn 'Unable to add `Cloudflare_CA.pem` because `/usr/local/etc/openssl@3/certs` and `/opt/homebrew/etc/openssl@3/certs` do not exist!'
fi
fi

View file

@ -13,8 +13,8 @@ if [ ! -d "$SDKMAN_DIR" ]; then
logg info 'Installing SDKMan via `curl -s "https://get.sdkman.io?rcupdate=false`'
logg info "Install directory: $SDKMAN_DIR"
curl -s "https://get.sdkman.io?rcupdate=false" | bash
logg info 'Running `sdk install java`'
sdk install java
logg info 'Running `sdk install java` with bash -c'
bash -c 'sdk install java'
else
logg info 'SDKMan appears to already be installed.'
fi

View file

@ -23,12 +23,12 @@
{{ $ovpnUsername := (env "OVPN_USERNAME") }}
{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "OVPN_USERNAME")) }}
{{ $ovpnUsername := (includeTemplate "secrets/OVPN_USERNAME" | decrypt) }}
{{ $ovpnUsername := (includeTemplate "secrets/OVPN_USERNAME" | decrypt | trim) }}
{{ end }}
{{ $ovpnPassword := (env "OVPN_PASSWORD") }}
{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "OVPN_PASSWORD")) }}
{{ $ovpnPassword := (includeTemplate "secrets/OVPN_PASSWORD" | decrypt) }}
{{ $ovpnPassword := (includeTemplate "secrets/OVPN_PASSWORD" | decrypt | trim) }}
{{ end }}
{{ includeTemplate "universal/profile" }}

View file

@ -53,7 +53,7 @@ if command -v privoxy > /dev/null; then
logg warn 'The '"$PRIVOXY_CONFIG_DIR"' directory is missing'
fi
else
logg warn '`privoxy` is missing from the PATH'
logg logg '`privoxy` is missing from the PATH - skipping configuration'
fi
{{ end -}}

View file

@ -8,6 +8,6 @@
### Run the VIM plugin install routine
if command -v vim > /dev/null; then
vim +PlugInstall +qall
vim +PlugInstall +qall 2>/dev/null
fi
{{ end -}}

View file

@ -30,20 +30,24 @@
### Ensure Chrome policies directory is present
for POLICY_DIR in "/opt/google/chrome/policies" "/etc/chromium/policies" "/etc/brave/policies"; do
### Managed policies
if [ ! -f "$POLICY_DIR/managed/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/managed exists"
sudo mkdir -p "$POLICY_DIR/managed"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json to $POLICY_DIR/managed/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json" "$POLICY_DIR/managed/policies.json"
fi
if [ -d "$(dirname "$POLICY_DIR")" ]; then
### Managed policies
if [ ! -f "$POLICY_DIR/managed/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/managed exists"
sudo mkdir -p "$POLICY_DIR/managed"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json to $POLICY_DIR/managed/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/managed.json" "$POLICY_DIR/managed/policies.json"
fi
### Recommended policies
if [ ! -f "$POLICY_DIR/recommended/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/recommended exists"
sudo mkdir -p "$POLICY_DIR/recommended"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json to $POLICY_DIR/recommended/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json" "$POLICY_DIR/recommended/policies.json"
### Recommended policies
if [ ! -f "$POLICY_DIR/recommended/policies.json" ]; then
logg info "Ensuring directory $POLICY_DIR/recommended exists"
sudo mkdir -p "$POLICY_DIR/recommended"
logg info "Copying ${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json to $POLICY_DIR/recommended/policies.json"
sudo cp -f "${XDG_CONFIG_HOME:-$HOME/.config}/chrome/recommended.json" "$POLICY_DIR/recommended/policies.json"
fi
else
logg info "Skipping extension injection into $POLICY_DIR - create these folders prior to running to create managed configs"
fi
done

View file

@ -37,8 +37,8 @@ if command -v vagrant > /dev/null && command -v vmware-id > /dev/null; then
fi
fi
else
logg warn 'Vagrant is not installed so the Vagrant plugins will not be installed'
logg warn 'Vagrant or VMWare is not installed so the Vagrant VMWare utility will not be configured'
logg info 'Vagrant is not installed so the Vagrant plugins will not be installed'
logg info 'Vagrant or VMWare is not installed so the Vagrant VMWare utility will not be configured'
fi
{{ end -}}

View file

@ -38,7 +38,7 @@
{{- $secretKey := "" -}}
{{- if (stat (joinPath (.chezmoi.sourceDir ".chezmoitemplates" "secrets" "VMWARE_WORKSTATION_LICENSE_KEY"))) -}}
{{- $secretKey = (default "4C21U-2KK9Q-M8130-4V2QH-CF810" (includeTemplate "secrets/VMWARE_WORKSTATION_LICENSE_KEY" | decrypt)) -}}
{{- $secretKey = (default "4C21U-2KK9Q-M8130-4V2QH-CF810" (includeTemplate "secrets/VMWARE_WORKSTATION_LICENSE_KEY" | decrypt | trim)) -}}
{{- else -}}
{{- $secretKey = (default "4C21U-2KK9Q-M8130-4V2QH-CF810" (env "VMWARE_WORKSTATION_LICENSE_KEY")) -}}
{{- end }}

View file

@ -18,8 +18,8 @@ if [ -d /Applications ] && [ -d /System ]; then
logg info 'Installing `defaultbrowser` via Homebrew which is the preferred way of configuring the default browser'
brew install defaultbrowser
fi
logg info "Setting default browser to {{ .user.defaultBrowser }}"
defaultbrowser "{{ .user.defaultBrowser }}"
logg info "Setting default browser to {{ .user.defaultBrowserDarwin }}"
defaultbrowser "{{ .user.defaultBrowserDarwin }}"
else
logg info 'Setting default browser for `text/html` to `{{ .user.defaultBrowser }}`'
xdg-mime default {{ .user.defaultBrowser }}.desktop text/html

View file

@ -27,17 +27,19 @@ if command -v VirtualBox > /dev/null; then
### Download extension pack
logg info 'Downloading VirtualBox extension pack'
curl -sSL https://download.virtualbox.org/virtualbox/$VBOX_VERSION/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack \
-o /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack
-o /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack || logg error 'Failed to download the VirtualBox extension pack so the extension pack installation will be skipped'
### Install extension pack
logg info 'Installing VirtualBox extension pack'
echo 'y' | sudo VBoxManage extpack install --replace /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack
logg success 'Successfully installed VirtualBox extension pack'
if [ -f /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack ]; then
logg info 'Installing VirtualBox extension pack'
echo 'y' | sudo VBoxManage extpack install --replace /tmp/vbox/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_VERSION.vbox-extpack
logg success 'Successfully installed VirtualBox extension pack'
fi
else
logg info 'VirtualBox Extension pack is already installed'
fi
else
logg warn 'VirtualBox is not installed so VirtualBox Extension pack will not be installed'
logg info 'VirtualBox is not installed so VirtualBox Extension pack will not be installed'
fi
{{ end -}}

View file

@ -15,8 +15,8 @@
### Claim the instance with Netdata Cloud
if command -v netdata-claim.sh > /dev/null; then
NETDATA_TOKEN="{{- if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NETDATA_TOKEN")) -}}{{- includeTemplate "secrets/NETDATA_TOKEN" | decrypt -}}{{- else -}}{{- env "NETDATA_TOKEN" -}}{{- end -}}"
NETDATA_ROOM="{{- if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NETDATA_ROOM")) -}}{{- includeTemplate "secrets/NETDATA_ROOM" | decrypt -}}{{- else -}}{{- env "NETDATA_ROOM" -}}{{- end -}}"
NETDATA_TOKEN="{{- if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NETDATA_TOKEN")) -}}{{- includeTemplate "secrets/NETDATA_TOKEN" | decrypt | trim -}}{{- else -}}{{- env "NETDATA_TOKEN" -}}{{- end -}}"
NETDATA_ROOM="{{- if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NETDATA_ROOM")) -}}{{- includeTemplate "secrets/NETDATA_ROOM" | decrypt | trim -}}{{- else -}}{{- env "NETDATA_ROOM" -}}{{- end -}}"
# netdata-claim.sh must be run as netdata user
sudo -H -u netdata bash -c 'netdata-claim.sh -token="$NETDATA_TOKEN" -rooms="$NETDATA_ROOM" -url="{{ .netdataClaimURL }}"'
@ -104,7 +104,7 @@ if command -v netdata-claim.sh > /dev/null; then
fi
fi
else
logg warn '`netdata-claim.sh` is not available in the PATH'
logg info '`netdata-claim.sh` is not available in the PATH'
fi
{{ end -}}

View file

@ -21,7 +21,7 @@ if command -v nginx > /dev/null; then
curl -sSL https://github.com/nginxinc/nginx-amplify-agent/raw/master/packages/install.sh > "$TMP"
logg info 'Running the NGINX Amplify setup script'
API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NGINX_AMPLIFY_API_KEY")) }}{{- includeTemplate "secrets/NGINX_AMPLIFY_API_KEY" | decrypt -}}{{ else }}{{- env "NGINX_AMPLIFY_API_KEY" -}}{{ end }}" sh "$TMP"
API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NGINX_AMPLIFY_API_KEY")) }}{{- includeTemplate "secrets/NGINX_AMPLIFY_API_KEY" | decrypt | trim -}}{{ else }}{{- env "NGINX_AMPLIFY_API_KEY" -}}{{ end }}" sh "$TMP"
fi
{{ end -}}

View file

@ -22,7 +22,7 @@ if [ -d /Applications ] && [ -d System ]; then
fi
### Connect to Tailscale network
TAILSCALE_AUTH_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TAILSCALE_AUTH_KEY")) }}{{ includeTemplate "secrets/TAILSCALE_AUTH_KEY" | decrypt }}{{ else }}{{ env "TAILSCALE_AUTH_KEY" }}{{ end }}"
TAILSCALE_AUTH_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "TAILSCALE_AUTH_KEY")) }}{{ includeTemplate "secrets/TAILSCALE_AUTH_KEY" | decrypt | trim }}{{ else }}{{ env "TAILSCALE_AUTH_KEY" }}{{ end }}"
if command -v tailscale > /dev/null && [ "$TAILSCALE_AUTH_KEY" != "" ]; then
logg info 'Connecting to Tailscale with user-defined authentication key'
timeout 14 tailscale up --authkey="$TAILSCALE_AUTH_KEY" --accept-routes || EXIT_CODE=$?

View file

@ -12,7 +12,7 @@
{{ includeTemplate "universal/logg" }}
### Ensure `DIGITALOCEAN_ACCESS_TOKEN` is defined (used for headlessly connecting to the k8s cluster)
export DIGITALOCEAN_ACCESS_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DIGITALOCEAN_ACCESS_TOKEN")) }}{{ includeTemplate "secrets/DIGITALOCEAN_ACCESS_TOKEN" | decrypt }}{{ else }}{{ env "DIGITALOCEAN_ACCESS_TOKEN" }}{{ end }}"
export DIGITALOCEAN_ACCESS_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DIGITALOCEAN_ACCESS_TOKEN")) }}{{ includeTemplate "secrets/DIGITALOCEAN_ACCESS_TOKEN" | decrypt | trim }}{{ else }}{{ env "DIGITALOCEAN_ACCESS_TOKEN" }}{{ end }}"
if [ -n "$DIGITALOCEAN_ACCESS_TOKEN" ] && [ -n '{{ .user.digitalOceanClusterId }}' ]; then
### Ensure DigitalOcean CLI is instaled

View file

@ -11,7 +11,8 @@
### Ensure Powerline is installed
if ! command -v powerline > /dev/null; then
install-software powerline
logg info 'Installing powerline via install-software'
install-software powerline > /dev/null
fi
### Bash-it completions / plugins

View file

@ -22,6 +22,6 @@
{{ includeTemplate "universal/logg-before" }}
logg info 'Enrolling device with JumpCloud by running the kickstart script'
curl --tlsv1.2 --silent --show-error --header 'x-connect-key: {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "JUMPCLOUD_CONNECT_KEY")) }}{{- includeTemplate "secrets/JUMPCLOUD_CONNECT_KEY" | decrypt -}}{{ else }}{{- env "JUMPCLOUD_CONNECT_KEY" -}}{{ end }}' https://kickstart.jumpcloud.com/Kickstart | sudo bash
curl --tlsv1.2 --silent --show-error --header 'x-connect-key: {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "JUMPCLOUD_CONNECT_KEY")) }}{{- includeTemplate "secrets/JUMPCLOUD_CONNECT_KEY" | decrypt | trim -}}{{ else }}{{- env "JUMPCLOUD_CONNECT_KEY" -}}{{ end }}' https://kickstart.jumpcloud.com/Kickstart | sudo bash
{{ end -}}

View file

@ -21,11 +21,13 @@ if [ -d /Applications ] && [ -d /System ]; then
if [ ! -d /Applications/Docker.app ]; then
logg info 'Installing Docker on macOS via Homebrew cask'
brew install --cask docker
logg info 'Removing Docker.app quarantine status'
sudo xattr -r -d com.apple.quarantine /Applications/Docker.app
else
logg info 'Docker appears to be installed already'
fi
logg info 'Opening the Docker for Desktop app so that the Docker engine starts running'
open --background -a Docker
open --background -a Docker --args --accept-license --unattended --install-privileged-components
elif command -v apt-get > /dev/null; then
. /etc/os-release
if [ "$ID" == 'ubuntu' ]; then
@ -147,9 +149,19 @@ function gVisorSource() {
fi
}
### Install systemsecret credential helper for Linux
function installCredentialSecretService() {
curl -sSL https://github.com/docker/docker-credential-helpers/releases/download/v0.7.0/docker-credential-secretservice-v0.7.0.linux-amd64 > /tmp/docker-credential-secretservice
sudo mv /tmp/docker-credential-secretservice /usr/local/bin/docker-credential-secretservice
}
### Add gVisor
if [ ! -d /Applications ] || [ ! -d /System ]; then
# Linux
if ! command -v docker-credential-secretservice > /dev/null; then
installCredentialSecretService
fi
if ! command -v runsc > /dev/null; then
# Install gVisor
gVisorPreBuilt || PRE_BUILT_EXIT_CODE=$?

View file

@ -1,3 +1,3 @@
{{- if and (eq .host.distro.family "windows") (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (or (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "JUMPCLOUD_CONNECT_KEY")) (env "JUMPCLOUD_CONNECT_KEY")) -}}
cd $env:temp | Invoke-Expression; Invoke-RestMethod -Method Get -URI https://raw.githubusercontent.com/TheJumpCloud/support/master/scripts/windows/InstallWindowsAgent.ps1 -OutFile InstallWindowsAgent.ps1 | Invoke-Expression; ./InstallWindowsAgent.ps1 -JumpCloudConnectKey "{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "JUMPCLOUD_CONNECT_KEY")) }}{{- includeTemplate "secrets/JUMPCLOUD_CONNECT_KEY" | decrypt -}}{{ else }}{{- env "JUMPCLOUD_CONNECT_KEY" -}}{{ end }}"
cd $env:temp | Invoke-Expression; Invoke-RestMethod -Method Get -URI https://raw.githubusercontent.com/TheJumpCloud/support/master/scripts/windows/InstallWindowsAgent.ps1 -OutFile InstallWindowsAgent.ps1 | Invoke-Expression; ./InstallWindowsAgent.ps1 -JumpCloudConnectKey "{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "JUMPCLOUD_CONNECT_KEY")) }}{{- includeTemplate "secrets/JUMPCLOUD_CONNECT_KEY" | decrypt | trim -}}{{ else }}{{- env "JUMPCLOUD_CONNECT_KEY" -}}{{ end }}"
{{ end -}}

View file

@ -0,0 +1,7 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBjVDczdFBjV3I3U1R2c29L
Z0g4SllHdE9hczlQTm80UmxLKzlZazIyL21VClRwdDk0aDg2bWtwbW9vdERRLzZk
UHdjU2w0T1phdWtzZSs4NEJZUWRVRFEKLS0tIHBDcExubktwaVdyemh4Tk5MdEdC
VHhhNW55enZEUlkzT3RtYUJ0ZGtmMkEKqi4ZU3CRVpr0NPpM4Fx65Q/7Vzefvegr
/QN0PbUaFRPSajNEKCvkBc684nlHJTizDEhUUA==
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,7 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBXSWpDcjdxMUdFaHBMeVNz
bkU2N2NHSEc0QUhlSW9ETEhITngwTk5OWlFnCldFQlJVTU02RTFLd2h5OHVrUEE2
L1lCenVwdmhEalJNeU5uc3RKTFZXdzQKLS0tIHZlcU5wcWlob1JmNTBSWVRsVHM2
R09SSkNIUWoxdXdyWVplNzk3ay90N3MKpnR0SBljKaXyH8pBY/tL6qA0YjmrRekO
sKXriTefZEFKkkr944YrYNiEtRGFrak=
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,7 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB3WWxWT3l6YVU2TzR0dEpY
MDlRb2RXL0ROYWRqbzRveUY2S1gxd0twSmxJCnZ4NHg1YjBZaDFyK1AxU09JUEVW
TTVWMU5ENE5CNFA1UCtSWHhjY0RWMXMKLS0tIDJWYjd3Z2FRRFhkWS9Wam14NjVo
YjkyRHJEYkZkcUJiZVRaSmJjazNqbTgKLAqHltITr8Y/14Pya6azYe9ANeaT84mZ
SjpGKDYyGOBwxdpeJhoEu5q0Hqo2mP4HM6M=
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,7 @@
-----BEGIN AGE ENCRYPTED FILE-----
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAzU3Q5eWNXNzNWeXpBb25u
YkFFNHVHYVUrMWFaNThsc3hueVkzczJmcnlzCm1MdWRzSkNldzJ5ZC9TS1JMZ3VI
Zk0yeWFGRCtxZUJzMVJ4NWZNNUxlZjgKLS0tIDl0WXVJNzAwQTVGUHpzcEVtOGJP
aytyU2FNbWhtS0d3eGJyUWtveTJrMDAKQIiS4NPp+sR2Fakgjg4nD8Zir9CzABuq
4xiAedd842ywvFVF2jqQOZ9UnpnMqE1FwTlY8AWbcxbn28SQaKHuhQ==
-----END AGE ENCRYPTED FILE-----

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.apple.automatedupdates</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/softwareupdate</string>
<string>-i -a</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Minute</key>
<integer>0</integer>
</dict>
</dict>
</plist>

View file

@ -0,0 +1,10 @@
#!/usr/bin/env bash
### Enable automated updates on macOS
if [ -d /Applications ] && [ -d /System ]; then
if [ -f "$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist" ] && [ ! -f "/Library/LaunchDaemons/com.apple.automatedupdates.plist" ]; then
sudo mkdir -p /Library/LaunchDaemons
sudo cp -f "$HOME/Library/LaunchDaemons/com.apple.automatedupdates.plist" "/Library/LaunchDaemons/com.apple.automatedupdates.plist"
sudo launchctl load "/Library/LaunchDaemons/com.apple.automatedupdates.plist"
fi
fi

View file

@ -15,8 +15,8 @@
<key>support_url</key>
<string>https://megabyte.space</string>
<key>auth_client_id</key>
<string>{{- if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID")) -}}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_ID" | decrypt | trim -}}{{- else -}}{{- env "CLOUDFLARE_TEAMS_CLIENT_ID" -}}{{- end -}}</string>
<string>{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID")) -}}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_ID" | decrypt | trim -}}{{- else -}}{{- env "CLOUDFLARE_TEAMS_CLIENT_ID" -}}{{- end -}}</string>
<key>auth_client_secret</key>
<string>{{- if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET")) -}}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_SECRET" | decrypt | trim -}}{{- else -}}{{- env "CLOUDFLARE_TEAMS_CLIENT_SECRET" -}}{{- end -}}</string>
<string>{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET")) -}}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_SECRET" | decrypt | trim -}}{{- else -}}{{- env "CLOUDFLARE_TEAMS_CLIENT_SECRET" -}}{{- end -}}</string>
</dict>
</plist>

View file

@ -85,6 +85,11 @@ if [ "$BASH_SUPPORT" = 'true' ]; then
fi
fi
### Atuin
if command -v atuin > /dev/null; then
eval "$(atuin init bash)"
fi
### Cod
if command -v cod > /dev/null; then
source <(cod init $$ bash)

View file

@ -38,4 +38,22 @@
"chiro2001.digital-ocean-manager",
"ms-toolsai.vscode-ai-remote",
"ms-toolsai.vscode-ai",
"ms-vscode.powershell",
"ms-vscode.powershell",
"gitpod.gitpod-desktop",
"ms-kubernetes-tools.kind-vscode",
"wasteamaccount.webtemplatestudio-dev-nightly",
"rangav.vscode-thunder-client",
"rapidapi.vscode-rapidapi-client",
"sapos.yeoman-ui",
"google-home.google-home-extension",
"stepsize.stepsize",
"leonardssh.vscord",
"aic.docify",
"jsayol.firebase-explorer",
"balazs4.gitlab-pipeline-monitor",
"jasonn-porch.gitlab-mr",
"teamhub.teamhub",
"infracost.infracost",
"mongodb.mongodb-vscode",
"pwabuilder.pwa-studio",
"sidekick.sidekick-debugger",

View file

@ -3,7 +3,6 @@
"42crunch.vscode-openapi",
"4ops.packer",
"acherkashin.virtualbox-extension",
"aic.docify",
"alefragnani.bookmarks",
"alefragnani.project-manager",
"andi1984.tinypng",
@ -12,16 +11,14 @@
"atlassian.atlascode",
"attilabuti.vscode-mjml",
"azure-automation.vscode-azureautomation",
"balazs4.gitlab-pipeline-monitor",
"bbenoist.vagrant",
"beauallison.brew-services",
"getporter.porter-vscode",
"bierner.color-info",
"bierner.markdown-emoji",
"bierner.markdown-preview-github-styles",
"bmewburn.vscode-intelephense-client",
"bradlc.vscode-tailwindcss",
"chakrounanas.turbo-console-log",
"chflick.firecode",
"christian-kohler.npm-intellisense",
"christian-kohler.path-intellisense",
"chrmarti.regex",
@ -42,9 +39,7 @@
"editorconfig.editorconfig",
"eliostruyf.vscode-front-matter",
"elypia.magick-image-reader",
"ericadamski.carbon-now-sh",
"esbenp.prettier-vscode",
"fabiospampinato.vscode-open-in-application",
"fabiospampinato.vscode-optimize-images",
"firefox-devtools.vscode-firefox-debug",
"flowtype.flow-for-vscode",
@ -63,9 +58,7 @@
"github.vscode-github-actions",
"github.vscode-pull-request-github",
"gitlab.gitlab-workflow",
"gitpod.gitpod-desktop",
"golang.go",
"google-home.google-home-extension",
"googlecloudtools.cloudcode",
"grafana.vscode-jsonnet",
"graphql.vscode-graphql-execution",
@ -81,12 +74,9 @@
"humao.rest-client",
"ibm.output-colorizer",
"idered.npm",
"infracost.infracost",
"ionic.ionic",
"jasonn-porch.gitlab-mr",
"jerrygoyal.shortcut-menu-bar",
"johnpapa.vscode-peacock",
"jsayol.firebase-explorer",
"jsonhero.jsonhero-vscode",
"justbrenny.hero-heroku",
"karigari.chat",
@ -96,19 +86,13 @@
"knisterpeter.vscode-commitizen",
"l13rary.l13-diff",
"lennartlence.chadcommit",
"leonardssh.vscord",
"loyieking.smalise",
"mads-hartmann.bash-ide-vscode",
"mainawycliffe.view-package-on-npm",
"marp-team.marp-vscode",
"mcu-debug.debug-tracker-vscode",
"mcu-debug.memory-view",
"mcu-debug.rtos-views",
"mechatroner.rainbow-csv",
"mehrad.kutt",
"meshintelligenttechnologiesinc.pieces-vscode",
"miramac.vscode-exec-node",
"mongodb.mongodb-vscode",
"mpotthoff.vscode-android-webview-debug",
"mrmlnc.vscode-scss",
"ms-azure-devops.azure-pipelines",
@ -130,7 +114,6 @@
"ms-dotnettools.dotnet-interactive-vscode",
"ms-edgedevtools.vscode-edge-devtools",
"ms-iot.vscode-ros",
"ms-kubernetes-tools.kind-vscode",
"ms-kubernetes-tools.vscode-aks-tools",
"ms-kubernetes-tools.vscode-kubernetes-tools",
"ms-playwright.playwright",
@ -190,11 +173,8 @@
"postman.postman-for-vscode",
"pranaygp.vscode-css-peek",
"prisma.prisma",
"pwabuilder.pwa-studio",
"quicktype.quicktype",
"randomfractalsinc.vscode-data-preview",
"rangav.vscode-thunder-client",
"rapidapi.vscode-rapidapi-client",
"redhat.ansible",
"redhat.fabric8-analytics",
"redhat.java",
@ -211,21 +191,17 @@
"rust-lang.rust-analyzer",
"salbert.comment-ts",
"sandcastle.vscode-open",
"sapos.yeoman-ui",
"saposs.app-studio-toolkit",
"shd101wyy.markdown-preview-enhanced",
"shopify.ruby-lsp",
"shopify.theme-check-vscode",
"spmeesseman.vscode-taskexplorer",
"stamusnetworks.suricata-ls",
"steoates.autoimport",
"stepsize.stepsize",
"streetsidesoftware.code-spell-checker",
"stylelint.vscode-stylelint",
"surendrajat.apklab",
"svelte.svelte-vscode",
"task.vscode-task",
"teamhub.teamhub",
"teamsdevapp.ms-teams-vscode-extension",
"tilt-dev.tiltfile",
"timonwong.shellcheck",
@ -243,7 +219,6 @@
"visualstudioexptteam.intellicode-api-usage-examples",
"visualstudioexptteam.vscodeintellicode-completions",
"visualstudioexptteam.vscodeintellicode",
"vivaxy.vscode-conventional-commits",
"vmware.vscode-spring-boot",
"vsciot-vscode.vscode-arduino",
"vscjava.vscode-java-debug",
@ -254,11 +229,9 @@
"vsls-contrib.codetour",
"vsls-contrib.gistfs",
"vsls-contrib.gitdoc",
"waderyan.gitblame",
"wakatime.vscode-wakatime",
"wallabyjs.quokka-vscode",
"wallabyjs.wallaby-vscode",
"wasteamaccount.webtemplatestudio-dev-nightly",
"wayou.vscode-todo-highlight",
"wix.vscode-import-cost",
"yatki.vscode-surround"

View file

@ -0,0 +1,4 @@
{
"default_path": "$HOME/.local/bin/",
"bins": {}
}

View file

@ -0,0 +1,3 @@
{
"credsStore": "{{ if (eq .host.distro.id "darwin") }}osxkeychain{{ else }}{{ if (eq .host.distro.id "windows") }}wincred{{ else }}secretservice{{ end }}{{ end }}"
}

View file

@ -149,7 +149,7 @@ GHORG_EXIT_CODE_ON_CLONE_ISSUES: 1
# Add your GitHub token
# flag (--token, -t) eg: --token=bGVhdmUgYSBjb21tZW50IG9uIGlzc3VlIDY2
GHORG_GITHUB_TOKEN: {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITHUB_READ_TOKEN")) }}{{ includeTemplate "secrets/GITHUB_READ_TOKEN" | decrypt }}{{ else }}{{ env "GITHUB_READ_TOKEN" }}{{ end }}
GHORG_GITHUB_TOKEN: {{ if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITHUB_READ_TOKEN")) }}{{ includeTemplate "secrets/GITHUB_READ_TOKEN" | decrypt | trim }}{{ else }}{{ env "GITHUB_READ_TOKEN" }}{{ end }}
# +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
# |G|I|T|L|A|B| |S|P|E|C|I|F|I|C|
@ -157,7 +157,7 @@ GHORG_GITHUB_TOKEN: {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates"
# Add your GitLab token
# flag (--token, -t) eg: --token=bGVhdmUgYSBjb21tZW50IG9uIGlzc3VlIDY2
GHORG_GITLAB_TOKEN: {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITLAB_READ_TOKEN")) }}{{ includeTemplate "secrets/GITLAB_READ_TOKEN" | decrypt }}{{ else }}{{ env "GITLAB_READ_TOKEN" }}{{ end }}
GHORG_GITLAB_TOKEN: {{ if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITLAB_READ_TOKEN")) }}{{ includeTemplate "secrets/GITLAB_READ_TOKEN" | decrypt | trim }}{{ else }}{{ env "GITLAB_READ_TOKEN" }}{{ end }}
# clones repos in a directory structure that matches gitlab namespaces eg company/unit/subunit/app would clone into ghorg/org/unit/subunit/app
# flag (--preserve-dir)

View file

@ -154,7 +154,7 @@
smtpuser = {{ default "" .user.gmail.username }}
smtpencryption = tls
smtpserverport = 587
smtpPass = {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GMAIL_PASSWORD")) }}{{ includeTemplate "secrets/GMAIL_PASSWORD" | decrypt }}{{ else }}{{ default "" (env "GMAIL_PASSWORD") }}{{ end }}
smtpPass = {{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GMAIL_PASSWORD")) }}{{ includeTemplate "secrets/GMAIL_PASSWORD" | decrypt | trim }}{{ else }}{{ default "" (env "GMAIL_PASSWORD") }}{{ end }}
[status]
showUntrackedFiles = all
submoduleSummary = true

View file

@ -0,0 +1,136 @@
# == Classic ==
# This is a shorthand to override some of the options to be backwards compatible
# with `ls`. It affects the "color"->"when", "sorting"->"dir-grouping", "date"
# and "icons"->"when" options.
# Possible values: false, true
classic: false
# == Blocks ==
# This specifies the columns and their order when using the long and the tree
# layout.
# Possible values: permission, user, group, context, size, date, name, inode, links, git
blocks:
- permission
- user
- group
- size
- date
- name
# == Color ==
# This has various color options. (Will be expanded in the future.)
color:
# When to colorize the output.
# When "classic" is set, this is set to "never".
# Possible values: never, auto, always
when: auto
# How to colorize the output.
# When "classic" is set, this is set to "no-color".
# Possible values: default, <theme-file-name>
# when specifying <theme-file-name>, lsd will look up theme file
# XDG Base Directory if relative, e.g. ~/.config/lsd/themes/<theme-file-name>.yaml,
# The file path if absolute
theme: default
# == Date ==
# This specifies the date format for the date column. The freeform format
# accepts a strftime like string.
# When "classic" is set, this is set to "date".
# Possible values: date, relative, '+<date_format>'
# `date_format` will be a `strftime` formatted value. e.g. `date: '+%d %b %y %X'` will give you a date like this: 17 Jun 21 20:14:55
date: date
# == Dereference ==
# Whether to dereference symbolic links.
# Possible values: false, true
dereference: false
# == Display ==
# What items to display. Do not specify this for the default behavior.
# Possible values: all, almost-all, directory-only
# display: all
# == Icons ==
icons:
# When to use icons.
# When "classic" is set, this is set to "never".
# Possible values: always, auto, never
when: auto
# Which icon theme to use.
# Possible values: fancy, unicode
theme: fancy
# Separator between icon and the name
# Default to 1 space
separator: " "
# == Ignore Globs ==
# A list of globs to ignore when listing.
# ignore-globs:
# - .git
# == Indicators ==
# Whether to add indicator characters to certain listed files.
# Possible values: false, true
indicators: false
# == Layout ==
# Which layout to use. "oneline" might be a bit confusing here and should be
# called "one-per-line". It might be changed in the future.
# Possible values: grid, tree, oneline
layout: grid
# == Recursion ==
recursion:
# Whether to enable recursion.
# Possible values: false, true
enabled: false
# How deep the recursion should go. This has to be a positive integer. Leave
# it unspecified for (virtually) infinite.
# depth: 3
# == Size ==
# Specifies the format of the size column.
# Possible values: default, short, bytes
size: default
# == Permission ==
# Specify the format of the permission column
# Possible value: rwx, octal
permission: rwx
# == Sorting ==
sorting:
# Specify what to sort by.
# Possible values: extension, name, time, size, version
column: name
# Whether to reverse the sorting.
# Possible values: false, true
reverse: false
# Whether to group directories together and where.
# When "classic" is set, this is set to "none".
# Possible values: first, last, none
dir-grouping: none
# == No Symlink ==
# Whether to omit showing symlink targets
# Possible values: false, true
no-symlink: false
# == Total size ==
# Whether to display the total size of directories.
# Possible values: false, true
total-size: false
# == Hyperlink ==
# Attach hyperlink to filenames
# Possible values: always, auto, never
hyperlink: never
# == Symlink arrow ==
# Specifies how the symlink arrow display, chars in both ascii and utf8
symlink-arrow:
# == Header ==
# Whether to display block headers.
# Possible values: false, true
header: false

View file

@ -1,4 +1,4 @@
{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (or (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NGROK_AUTH_TOKEN")) (env "NGROK_AUTH_TOKEN")) -}}
version: "2"
authtoken: '{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NGROK_AUTH_TOKEN")) }}{{- includeTemplate "secrets/NGROK_AUTH_TOKEN" | decrypt -}}{{ else }}{{- env "NGROK_AUTH_TOKEN" -}}{{ end }}'
authtoken: '{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NGROK_AUTH_TOKEN")) }}{{- includeTemplate "secrets/NGROK_AUTH_TOKEN" | decrypt | trim -}}{{ else }}{{- env "NGROK_AUTH_TOKEN" -}}{{ end }}'
{{- end -}}

View file

@ -9,4 +9,4 @@ loglevel=error
network-concurrency=32
prefix={{ .chezmoi.homeDir }}/.local/share/npm
strict-peer-dependencies=false
//registry.npmjs.org/:_authToken={{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NPM_TOKEN")) }}{{- includeTemplate "secrets/NPM_TOKEN" | decrypt -}}{{ else if (env "NPM_TOKEN") }}{{- env "NPM_TOKEN" -}}{{ else }}${NPM_TOKEN}{{ end }}
//registry.npmjs.org/:_authToken={{ if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NPM_TOKEN")) }}{{- includeTemplate "secrets/NPM_TOKEN" | decrypt | trim -}}{{ else if (env "NPM_TOKEN") }}{{- env "NPM_TOKEN" -}}{{ else }}${NPM_TOKEN}{{ end }}

View file

@ -1,3 +1,3 @@
{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (or (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SENDGRID_API_KEY")) (env "SENDGRID_API_KEY")) -}}
[smtp.sendgrid.net]:587 apikey:{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SENDGRID_API_KEY")) }}{{ includeTemplate "secrets/SENDGRID_API_KEY" | decrypt }}{{ else }}{{ env "SENDGRID_API_KEY" }}{{ end }}
[smtp.sendgrid.net]:587 apikey:{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SENDGRID_API_KEY")) }}{{ includeTemplate "secrets/SENDGRID_API_KEY" | decrypt | trim }}{{ else }}{{ env "SENDGRID_API_KEY" }}{{ end }}
{{- end -}}

View file

@ -1,18 +1,12 @@
# [PSFzf](https://github.com/kelleyma49/PSFzf)
# [DockerCompletion](https://github.com/matt9ucci/DockerCompletion)
### Env
$env:EDITOR = 'code --wait'
$env:GIT_SSH = "C:\Windows\system32\OpenSSH\ssh.exe"
### Set PowerShell to UTF-8
[console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding
### Oh My Posh
Install-Module posh-git
oh-my-posh init pwsh --config "$env:HOME/.config/oh-my-posh/Betelgeuse.omp.json" | Invoke-Expression
### Docker Completion
Import-Module "$env:HOME/.local/share/powershell/docker/DockerCompletion/DockerCompletion"
# Import-Module -Name Terminal-Icons
[Console]::InputEncoding = [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new()
### PSReadLine
Set-PSReadLineOption -EditMode Vi
@ -20,23 +14,38 @@ Set-PSReadLineOption -BellStyle None
Set-PSReadLineKeyHandler -Chord 'Ctrl+d' -Function DeleteChar
Set-PSReadLineOption -PredictionSource History
### Fzf
# Note: This was not working under PowerShell via VSCode on macOS
# The specified module 'PSFzf' was not loaded because no valid module file was found in any module directory.
# Import-Module PSFzf
# Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
### Import PowerShell modules
$modules = @("Carbon", "ImportExcel", "Microsoft.PowerShell.ConsoleGuiTools", "Microsoft.PowerShell.PSResourceGet", "PSFzf", "PSWindowsUpdate", "PackageManagement", "PendingReboot", "posh-git", "Terminal-Icons")
foreach ($module in $modules) {
if (-not (Get-Module -ListAvailable -Name $module)) {
Install-Module -Name $module -Scope CurrentUser -Force -Repository PSGallery -AllowPrerelease
}
Import-Module $module -Force
}
### posh-git settings
oh-my-posh init pwsh --config "$env:HOME/.config/oh-my-posh/Betelgeuse.omp.json" | Invoke-Expression
### PSFzf settings
Set-PsFzfOption -PSReadlineChordProvider 'Ctrl+t' -PSReadlineChordReverseHistory 'Ctrl+r'
$commandOverride = [ScriptBlock]::Create("param(\$Location) Set-Location \$Location")
Set-PsFzfOption -AltCCommand $commandOverride
Set-PsFzfOption -TabExpansion
$env:_PSFZF_FZF_DEFAULT_OPTS = "--ansi --preview 'bat --color=always {}'"
Set-PSFzfOption -EnableAlias
### zoxide
Invoke-Expression (& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { 'prompt' } else { 'pwd' }
Invoke-Expression '& {
$hook = if ($PSVersionTable.PSVersion.Major -lt 6) { "prompt" } else { "pwd" }
(zoxide init --hook $hook powershell | Out-String)
})
}'
### Aliases
Set-Alias grep findstr
Set-Alias grep Select-String
### Utilities
function which ($command) {
Get-Command -Name $command -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
Select-Object -ExpandProperty Source -ErrorAction SilentlyContinue
}

View file

@ -16,12 +16,12 @@ fi
tee -a "$CONFIG_FILE" > /dev/null <<EOT
# MEGABYTE LABS MANAGED S3
[{{ .user.username}}-s3]
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
acl = private
endpoint = {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/user
provider = Cloudflare
region = auto
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
type = s3
# MEGABYTE LABS MANAGED S3
EOT

View file

@ -1,37 +1,37 @@
{{- if and (or (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID"))) (env "CLOUDFLARE_R2_ID")) (or (and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET"))) (env "CLOUDFLARE_R2_SECRET")) (ne .user.cloudflare.r2 "") -}}
[docker]
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
acl = private
endpoint = {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/docker
env_auth = false
provider = Cloudflare
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
type = s3
[private]
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
acl = private
endpoint = {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/private
env_auth = false
provider = Cloudflare
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
type = s3
[public]
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
acl = public-read
endpoint = {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/public
env_auth = false
provider = Cloudflare
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
type = s3
[system]
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
access_key_id = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_ID" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_ID" -}}{{ end }}
acl = private
endpoint = {{ .user.cloudflare.r2 }}.r2.cloudflarestorage.com/system
env_auth = false
provider = Cloudflare
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
secret_access_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_R2_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_R2_SECRET" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_R2_SECRET" -}}{{ end }}
type = s3
{{ end -}}

View file

@ -239,7 +239,11 @@ alias vault-dir='find . -type f -printf "%h/\"%f\" " | xargs ansible-vault encry
alias whaler="docker run -t --rm -v /var/run/docker.sock:/var/run/docker.sock:ro pegleg/whaler"
# Shows nice looking report of weather
alias weather='curl -A curl wttr.in'
if command -v wego > /dev/null; then
alias weather='wego'
else
alias weather='curl -A curl wttr.in'
fi
# Change .wget-hsts file location
alias wget="wget --hsts-file ~/.local/wget-hsts"

View file

@ -96,6 +96,7 @@ export ASDF_DATA_DIR="$ASDF_DIR"
export ASDF_CRATE_DEFAULT_PACKAGES_FILE="$XDG_CONFIG_HOME/asdf/default-cargo-pkgs"
export ASDF_GEM_DEFAULT_PACKAGES_FILE="$XDG_CONFIG_HOME/asdf/default-ruby-pkgs"
export ASDF_GOLANG_DEFAULT_PACKAGES_FILE="$XDG_CONFIG_HOME/asdf/default-golang-pkgs"
export ASDF_GOLANG_MOD_VERSION_ENABLED=true
export ASDF_NPM_DEFAULT_PACKAGES_FILE="$XDG_CONFIG_HOME/asdf/default-npm-packages"
export ASDF_PYTHON_DEFAULT_PACKAGES_FILE="$XDG_CONFIG_HOME/asdf/default-python-pkgs"
@ -296,6 +297,10 @@ export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
export POETRY_HOME="$XDG_DATA_HOME/poetry"
export PATH="$POETRY_HOME/bin:$PATH"
### Porter
export PORTER_HOME="$XDG_DATA_HOME/porter"
export PATH="$PATH:$PORTER_HOME"
### Postgres
export PSQLRC="$XDG_CONFIG_HOME/pg/psqlrc"
export PSQL_HISTORY="$XDG_STATE_HOME/psql_history"
@ -343,7 +348,10 @@ export PATH="$VOLTA_HOME/bin:$PATH"
### Wakatime
export WAKATIME_HOME="$XDG_CONFIG_HOME/wakatime"
export WAKATIME_API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "WAKATIME_API_KEY")) }}{{ includeTemplate "secrets/VAGRANT_CLOUD_TOKEN" | decrypt }}{{ else }}{{ env "WAKATIME_API_KEY" }}{{ end }}"
export WAKATIME_API_KEY="{{ if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "WAKATIME_API_KEY")) }}{{ includeTemplate "secrets/VAGRANT_CLOUD_TOKEN" | decrypt | trim }}{{ else }}{{ env "WAKATIME_API_KEY" }}{{ end }}"
### Wego Weather CLI
export WEGORC="$XDG_CONFIG_HOME/wego/wegorc"
### wget
export WGETRC="$XDG_CONFIG_HOME/wget/wgetrc"

View file

@ -7,10 +7,15 @@
# that are populated by Install Doctor during the provisioning process (if they are provided).
### Ansible
export ANSIBLE_GALAXY_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "ANSIBLE_GALAXY_TOKEN")) }}{{ includeTemplate "secrets/ANSIBLE_GALAXY_TOKEN" | decrypt | nospace }}{{ else }}{{ env "ANSIBLE_GALAXY_TOKEN" }}{{ end }}"
export ANSIBLE_GALAXY_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "ANSIBLE_GALAXY_TOKEN")) }}{{ includeTemplate "secrets/ANSIBLE_GALAXY_TOKEN" | decrypt | trim }}{{ else }}{{ env "ANSIBLE_GALAXY_TOKEN" }}{{ end }}"
export ANSIBLE_VAULT_PASSWORD="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "ANSIBLE_VAULT_PASSWORD")) }}{{ includeTemplate "secrets/ANSIBLE_VAULT_PASSWORD" | decrypt | trim }}{{ else }}{{ env "ANSIBLE_VAULT_PASSWORD" }}{{ end }}"
export AVP="$ANSIBLE_VAULT_PASSWORD"
### Atuin
export ATUIN_EMAIL="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "ATUIN_EMAIL")) }}{{ includeTemplate "secrets/ATUIN_EMAIL" | decrypt | trim }}{{ else }}{{ env "ATUIN_EMAIL" }}{{ end }}"
export ATUIN_PASSWORD="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "ATUIN_PASSWORD")) }}{{ includeTemplate "secrets/ATUIN_PASSWORD" | decrypt | trim }}{{ else }}{{ env "ATUIN_PASSWORD" }}{{ end }}"
export ATUIN_USERNAME="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "ATUIN_USERNAME")) }}{{ includeTemplate "secrets/ATUIN_USERNAME" | decrypt | trim }}{{ else }}{{ env "ATUIN_USERNAME" }}{{ end }}"
### Google Cloud SDK
export CLOUDSDK_CORE_PROJECT="{{ .user.gcloud.coreProject }}"
export GCE_SERVICE_ACCOUNT_EMAIL="{{ .user.gcloud.email }}"
@ -21,20 +26,20 @@ export LEXICON_CLOUDFLARE_TOKEN=""
export LEXICON_CLOUDFLARE_USERNAME="{{ .user.cloudflare.username }}"
### DockerHub
export DOCKERHUB_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DOCKERHUB_TOKEN")) }}{{ includeTemplate "secrets/DOCKERHUB_TOKEN" | decrypt }}{{ else }}{{ env "DOCKERHUB_TOKEN" }}{{ end }}"
export DOCKERHUB_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "DOCKERHUB_TOKEN")) }}{{ includeTemplate "secrets/DOCKERHUB_TOKEN" | decrypt | trim }}{{ else }}{{ env "DOCKERHUB_TOKEN" }}{{ end }}"
export DOCKERHUB_REGISTRY_PASSWORD="$DOCKERHUB_TOKEN"
### GitHub
export GH_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITHUB_TOKEN")) }}{{ includeTemplate "secrets/GITHUB_TOKEN" | decrypt }}{{ else }}{{ env "GITHUB_TOKEN" }}{{ end }}"
export GH_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITHUB_TOKEN")) }}{{ includeTemplate "secrets/GITHUB_TOKEN" | decrypt | trim }}{{ else }}{{ env "GITHUB_TOKEN" }}{{ end }}"
export GITHUB_TOKEN="$GH_TOKEN"
### GitLab
export GL_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITLAB_TOKEN")) }}{{ includeTemplate "secrets/GITLAB_TOKEN" | decrypt }}{{ else }}{{ env "GITLAB_TOKEN" }}{{ end }}"
export GL_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITLAB_TOKEN")) }}{{ includeTemplate "secrets/GITLAB_TOKEN" | decrypt | trim }}{{ else }}{{ env "GITLAB_TOKEN" }}{{ end }}"
export GITLAB_TOKEN="$GL_TOKEN"
export GITLAB_RUNNER_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "GITLAB_RUNNER_TOKEN")) }}{{ includeTemplate "secrets/GITLAB_RUNNER_TOKEN" | decrypt }}{{ else }}{{ env "GITLAB_RUNNER_TOKEN" }}{{ end }}"
### Heroku
export HEROKU_API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "HEROKU_API_KEY")) }}{{ includeTemplate "secrets/HEROKU_API_KEY" | decrypt }}{{ else }}{{ env "HEROKU_API_KEY" }}{{ end }}"
export HEROKU_API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "HEROKU_API_KEY")) }}{{ includeTemplate "secrets/HEROKU_API_KEY" | decrypt | trim }}{{ else }}{{ env "HEROKU_API_KEY" }}{{ end }}"
### Install Doctor
export HEADLESS_INSTALL=true
@ -55,29 +60,29 @@ fi
export FULLY_AUTOMATED_TASKS=true
### NPM
export NPM_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NPM_TOKEN")) }}{{ includeTemplate "secrets/NPM_TOKEN" | decrypt }}{{ else }}{{ env "NPM_TOKEN" }}{{ end }}"
export NPM_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NPM_TOKEN")) }}{{ includeTemplate "secrets/NPM_TOKEN" | decrypt | trim }}{{ else }}{{ env "NPM_TOKEN" }}{{ end }}"
### OpenAI
export OPENAI_API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "OPENAI_API_KEY")) }}{{ includeTemplate "secrets/OPENAI_API_KEY" | decrypt }}{{ else }}{{ env "OPENAI_API_KEY" }}{{ end }}"
export OPENAI_API_KEY="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "OPENAI_API_KEY")) }}{{ includeTemplate "secrets/OPENAI_API_KEY" | decrypt | trim }}{{ else }}{{ env "OPENAI_API_KEY" }}{{ end }}"
### PyPi
export PYPI_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "PYPI_TOKEN")) }}{{ includeTemplate "secrets/PYPI_TOKEN" | decrypt }}{{ else }}{{ env "PYPI_TOKEN" }}{{ end }}"
export PYPI_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "PYPI_TOKEN")) }}{{ includeTemplate "secrets/PYPI_TOKEN" | decrypt | trim }}{{ else }}{{ env "PYPI_TOKEN" }}{{ end }}"
### Snapcraft
export SNAPCRAFT_EMAIL="{{ .user.snapcraft.username }}"
export SNAPCRAFT_MACAROON="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SNAPCRAFT_MACAROON")) }}{{ includeTemplate "secrets/SNAPCRAFT_MACAROON" | decrypt }}{{ else }}{{ env "SNAPCRAFT_MACAROON" }}{{ end }}"
export SNAPCRAFT_UNBOUND_DISCHARGE="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SNAPCRAFT_UNBOUND_DISCHARGE")) }}{{ includeTemplate "secrets/SNAPCRAFT_UNBOUND_DISCHARGE" | decrypt }}{{ else }}{{ env "SNAPCRAFT_UNBOUND_DISCHARGE" }}{{ end }}"
export SNAPCRAFT_MACAROON="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SNAPCRAFT_MACAROON")) }}{{ includeTemplate "secrets/SNAPCRAFT_MACAROON" | decrypt | trim }}{{ else }}{{ env "SNAPCRAFT_MACAROON" }}{{ end }}"
export SNAPCRAFT_UNBOUND_DISCHARGE="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SNAPCRAFT_UNBOUND_DISCHARGE")) }}{{ includeTemplate "secrets/SNAPCRAFT_UNBOUND_DISCHARGE" | decrypt | trim }}{{ else }}{{ env "SNAPCRAFT_UNBOUND_DISCHARGE" }}{{ end }}"
### Surge.sh
export SURGE_LOGIN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SURGE_LOGIN")) }}{{ includeTemplate "secrets/SURGE_LOGIN" | decrypt }}{{ else }}{{ env "SURGE_LOGIN" }}{{ end }}"
export SURGE_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SURGE_TOKEN")) }}{{ includeTemplate "secrets/SURGE_TOKEN" | decrypt }}{{ else }}{{ env "SURGE_TOKEN" }}{{ end }}"
export SURGE_LOGIN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SURGE_LOGIN")) }}{{ includeTemplate "secrets/SURGE_LOGIN" | decrypt | trim }}{{ else }}{{ env "SURGE_LOGIN" }}{{ end }}"
export SURGE_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SURGE_TOKEN")) }}{{ includeTemplate "secrets/SURGE_TOKEN" | decrypt | trim }}{{ else }}{{ env "SURGE_TOKEN" }}{{ end }}"
### Vagrant Cloud
export VAGRANT_CLOUD_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "VAGRANT_CLOUD_TOKEN")) }}{{ includeTemplate "secrets/VAGRANT_CLOUD_TOKEN" | decrypt }}{{ else }}{{ env "VAGRANT_CLOUD_TOKEN" }}{{ end }}"
export VAGRANT_CLOUD_TOKEN="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "VAGRANT_CLOUD_TOKEN")) }}{{ includeTemplate "secrets/VAGRANT_CLOUD_TOKEN" | decrypt | trim }}{{ else }}{{ env "VAGRANT_CLOUD_TOKEN" }}{{ end }}"
### Xcodes
# Apple ID username and password
export XCODES_USERNAME="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "APPLE_USERNAME")) }}{{ includeTemplate "secrets/APPLE_USERNAME" | decrypt }}{{ else }}{{ env "APPLE_USERNAME" }}{{ end }}"
export XCODES_PASSWORD="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "APPLE_PASSWORD")) }}{{ includeTemplate "secrets/APPLE_PASSWORD" | decrypt }}{{ else }}{{ env "APPLE_PASSWORD" }}{{ end }}"
export XCODES_USERNAME="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "APPLE_USERNAME")) }}{{ includeTemplate "secrets/APPLE_USERNAME" | decrypt | trim }}{{ else }}{{ env "APPLE_USERNAME" }}{{ end }}"
export XCODES_PASSWORD="{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "APPLE_PASSWORD")) }}{{ includeTemplate "secrets/APPLE_PASSWORD" | decrypt | trim }}{{ else }}{{ env "APPLE_PASSWORD" }}{{ end }}"
{{ end -}}

View file

@ -141,6 +141,12 @@ elif [ -f "$SDKMAN_DIR/bin/sdkman-init.sh" ]; then
. "$SDKMAN_DIR/bin/sdkman-init.sh"
fi
### Tea
# TODO: Fix this so it does not cause errors as Chezmoi runs
# if command -v tea > /dev/null; then
# source <(tea --magic)
# fi
### VIM
export GVIMINIT='let $MYGVIMRC="$XDG_CONFIG_HOME/vim/gvimrc" | source $MYGVIMRC'
export VIMINIT='let $MYVIMRC="$XDG_CONFIG_HOME/vim/vimrc" | source $MYVIMRC'

View file

@ -1,5 +1,5 @@
{
"slack_token": "{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SLACK_API_TOKEN")) }}{{- includeTemplate "secrets/SLACK_API_TOKEN" | decrypt -}}{{ else }}{{- env "SLACK_API_TOKEN" -}}{{ end }}",
"slack_token": "{{ if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "SLACK_API_TOKEN")) }}{{- includeTemplate "secrets/SLACK_API_TOKEN" | decrypt | trim -}}{{ else }}{{- env "SLACK_API_TOKEN" -}}{{ end }}",
"sidebar_width": 3,
"notify": "mention",
"emoji": true,

View file

@ -1,4 +1,4 @@
{{- if (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) -}}
[settings]
api_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "WAKATIME_API_KEY")) }}{{ includeTemplate "secrets/VAGRANT_CLOUD_TOKEN" | decrypt }}{{ else }}{{ env "WAKATIME_API_KEY" }}{{ end }}
api_key = {{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "WAKATIME_API_KEY")) }}{{ includeTemplate "secrets/WAKATIME_API_KEY" | decrypt | trim }}{{ else }}{{ env "WAKATIME_API_KEY" }}{{ end }}
{{- end }}

View file

@ -13,8 +13,8 @@
<key>support_url</key>
<string>https://megabyte.space</string>
<key>auth_client_id</key>
<string>{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_ID" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_TEAMS_CLIENT_ID" -}}{{ end }}</string>
<string>{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_ID")) }}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_ID" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_TEAMS_CLIENT_ID" -}}{{ end }}</string>
<key>auth_client_secret</key>
<string>{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_SECRET" | decrypt -}}{{ else }}{{- env "CLOUDFLARE_TEAMS_CLIENT_SECRET" -}}{{ end }}</string>
<string>{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "CLOUDFLARE_TEAMS_CLIENT_SECRET")) }}{{- includeTemplate "secrets/CLOUDFLARE_TEAMS_CLIENT_SECRET" | decrypt | trim -}}{{ else }}{{- env "CLOUDFLARE_TEAMS_CLIENT_SECRET" -}}{{ end }}</string>
</dict>
{{ end -}}

View file

@ -0,0 +1,61 @@
# wego configuration
#
# This config has https://github.com/schachmat/ingo syntax.
# Empty lines or lines starting with # will be ignored.
# All other lines must look like "KEY=VALUE" (without the quotes).
# The VALUE must not be enclosed in quotes as well!
# aat-frontend: Show geo coordinates (default false)
aat-coords=false
# aat-frontend: Monochrome output (default false)
aat-monochrome=false
# BACKEND to be used (default openweathermap)
backend=openweathermap
# caiyun backend: the api KEY to use (default )
caiyun-api-key=
# caiyun backend: print raw requests and responses (default true)
caiyun-debug=true
# caiyun backend: the LANGUAGE to request from caiyunapp.com/ (default en)
caiyun-lang=en
# NUMBER of days of weather forecast to be displayed (default 3)
days=5
# FRONTEND to be used (default ascii-art-table)
frontend=ascii-art-table
# json frontend: do not indent the output (default false)
jsn-no-indent=false
# LOCATION to be queried (default 40.748,-73.985)
location=Morristown, NJ
# md-frontend: Show geo coordinates (default false)
md-coords=false
# openweathermap backend: the api KEY to use (default )
owm-api-key={{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "OPENWEATHERMAP_API_KEY")) }}{{ includeTemplate "secrets/OPENWEATHERMAP_API_KEY" | decrypt | trim }}{{ else }}{{ env "OPENWEATHERMAP_API_KEY" }}{{ end }}
# openweathermap backend: print raw requests and responses (default false)
owm-debug=false
# openweathermap backend: the LANGUAGE to request from openweathermap (default en)
owm-lang=en
# UNITSYSTEM to use for output.
# Choices are: metric, imperial, si, metric-ms (default metric)
units=imperial
# worldweatheronline backend: the api KEY to use (default )
wwo-api-key=
# worldweatheronline backend: print raw requests and responses (default false)
wwo-debug=false
# worldweatheronline backend: the LANGUAGE to request from worldweatheronline (default en)
wwo-lang=en

View file

@ -1,5 +1,5 @@
#!/usr/bin/env bash
echo "{{ if (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NPM_TOKEN")) }}{{ includeTemplate "secrets/NPM_TOKEN" | decrypt }}{{ else if (env "NPM_TOKEN") }}{{ env "NPM_TOKEN" }}{{ else }}${GITHUB_GIST_TOKEN}{{ end }}" > ~/.gist
echo "{{ if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "NPM_TOKEN")) }}{{ includeTemplate "secrets/NPM_TOKEN" | decrypt | trim }}{{ else if (env "NPM_TOKEN") }}{{ env "NPM_TOKEN" }}{{ else }}${GITHUB_GIST_TOKEN}{{ end }}" > ~/.gist
gist $*
rm -f ~/.gist

View file

@ -1,3 +1,4 @@
{{- if eq .host.distro.family "linux" -}}
#!/bin/bash
#################################################################
@ -314,3 +315,4 @@ elif [ "$extensions_count" -eq 0 ]; then
else
begin_install
fi
{{ end -}}

View file

@ -187,7 +187,7 @@ async function generateInstallOrders(pkgsToInstall) {
normalCheck = softwarePackages[packageKey]['_' + currentSelector]
if (doubleScoped) {
try {
await $doubleScoped
await runSilentCommand(doubleScoped)
} catch (e) {
let pref
if (softwarePackages[packageKey]['_' + currentSelector + ':' + preference + ':' + osID]) {
@ -205,7 +205,7 @@ async function generateInstallOrders(pkgsToInstall) {
}
} else if (scopedPkgManager) {
try {
await $scopedPkgManager
await runSilentCommand(scopedPkgManager)
} catch (e) {
const pref = preference
log('info', 'Filter', `${pkg} is being skipped because of the _when:${pref} condition`)
@ -214,7 +214,7 @@ async function generateInstallOrders(pkgsToInstall) {
}
} else if (scopedSystem) {
try {
await $scopedSystem
await runSilentCommand(scopedSystem)
} catch (e) {
let pref
if (softwarePackages[packageKey]['_' + currentSelector + ':' + osID]) {
@ -228,7 +228,7 @@ async function generateInstallOrders(pkgsToInstall) {
}
} else if (normalCheck) {
try {
await $(normalCheck)
await runSilentCommand(normalCheck)
} catch (e) {
log('info', 'Filter', `${pkg} is being skipped because of the _when condition`)
processPluginOrders(pkg)
@ -962,8 +962,11 @@ async function ensurePackageManager(packageManager) {
const cargo = which.sync('cargo', { nothrow: true })
if (!cargo) {
if (osType === 'darwin') {
await $`brew install rustup`
await $`rustup-init`
const rustup = which.sync('rustup-init', { nothrow: true })
if (!rustup) {
await $`brew install rustup`
}
await $`rustup-init -y`
} else if (osType === 'windows') {
} else {
await ensurePackage('cargo')
@ -1527,10 +1530,10 @@ async function addUserGroup(group) {
}
} else if (osType === 'darwin') {
runCommand(`Creating the ${group} group`, `sudo dscl . create /Groups/${group}`)
runCommand(`Ensuring the ${group} group has a GID`, `if [[ "$(sudo dscl . read /Groups/$GROUP gid 2>&1)" == *'No such key'* ]]; then MAX_ID_GROUP="$(dscl . -list /Groups gid | awk '{print $2}' | sort -ug | tail -1)"; GROUP_ID="$((MAX_ID_GROUP+1))"; sudo dscl . create /Groups/${group} gid "$GROUP_ID"; fi`)
runCommand(`Ensuring the ${group} group has a GID`, `bash -c 'if [[ "$(sudo dscl . read /Groups/$GROUP gid 2>&1)" == *"No such key"* ]]; then MAX_ID_GROUP="$(dscl . -list /Groups gid | awk "{print $2}" | sort -ug | tail -1)"; GROUP_ID="$((MAX_ID_GROUP+1))"; sudo dscl . create /Groups/${group} gid "$GROUP_ID"; fi'`)
runCommand(`Adding the ${group} user`, `sudo dscl . create /Users/${group}`)
runCommand(`Ensuring the ${group} user has a PrimaryGroupID`, `if [[ "$(sudo dscl . read /Users/${group} PrimaryGroupID 2>&1)" == *'No such key'* ]]; then sudo dscl . create /Users/${group} PrimaryGroupID 20; fi`)
runCommand(`Ensuring the ${group} user has a UniqueID`, `if [[ "$(sudo dscl . read /Users/${group} UniqueID 2>&1)" == *'No such key'* ]]; then MAX_ID_USER="$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)"; USER_ID="$((MAX_ID_USER+1))"; sudo dscl . create /Users/${group} UniqueID "$USERID"; fi`)
runCommand(`Ensuring the ${group} user has a PrimaryGroupID`, `bash -c 'if [[ "$(sudo dscl . read /Users/${group} PrimaryGroupID 2>&1)" == *"No such key"* ]]; then sudo dscl . create /Users/${group} PrimaryGroupID 20; fi'`)
runCommand(`Ensuring the ${group} user has a UniqueID`, `bash -c 'if [[ "$(sudo dscl . read /Users/${group} UniqueID 2>&1)" == *"No such key"* ]]; then MAX_ID_USER="$(dscl . -list /Users UniqueID | sort -nr -k 2 | head -1 | grep -oE "[0-9]+$")"; USER_ID="$((MAX_ID_USER+1))"; sudo dscl . create /Users/${group} UniqueID "$USERID"; fi'`)
runCommand(`Adding the ${group} user to the ${group} group`, `sudo dseditgroup -o edit -t user -a ${group} ${group}`)
runCommand(`Adding the ${process.env.USER} user to the ${group} group`, `sudo dseditgroup -o edit -t user -a ${process.env.USER} ${group}`)
} else if (osType === 'windows') {
@ -1553,7 +1556,7 @@ async function updateService(service) {
log('info', logStage, `There was an error starting / enabling the ${service} service with systemd`)
try {
if (brew) {
runCommand(`Starting / enabling ${service} with Homebrew`, `brew services start ${service}`)
runCommand(`Starting / enabling ${service} with Homebrew`, `sudo brew services start ${service}`)
log('success', logStage, `Started / enabled the ${service} service with Homebrew`)
} else {
log('error', logStage, `Unable to start service with systemd and Homebrew is not available`)

View file

@ -1,3 +1,4 @@
{{- if eq .host.distro.family "linux" -}}
#!/usr/bin/env python3
import time
import dbus
@ -105,3 +106,4 @@ if __name__ == '__main__':
plugin=args.plugin, timer=args.timer,lock_screen=args.lock_screen)
else:
print("Need help? use -h or --help")
{{ end -}}

View file

@ -1,3 +1,4 @@
{{- if eq .host.distro.family "linux" -}}
#!/bin/bash
# Source: https://github.com/eylles/plymouth-preview/blob/master/plymouth-preview
@ -28,3 +29,4 @@ for ((I=0; I<$DURATION; I++)); do
sleep 1
done
plymouth quit
{{ end -}}

View file

@ -1,3 +1,4 @@
{{- if eq .host.qubes true -}}
#!/usr/bin/env bash
# Creates a Qube on RAM disk and opens Firefox if the Qube does not already exist.
@ -26,3 +27,4 @@ else
sudo rm -rf /var/log/pacat.new.log
sudo rm -rf /var/log/qubesdb.new.log
fi
{{ end -}}

View file

@ -266,84 +266,95 @@ print_banner() {
printf " \\033[%sm%s OS \\033[0m %s\\n" "$UPDATES_ZERO_COLOR" "" "macOS $(sw_vers -productVersion) / Build $(sw_vers -buildVersion)"
printf " \\033[%sm%s UUID \\033[0m %s\\n" "$PODMAN_RUNNING_COLOR" "" "$(ioreg -d2 -c IOPlatformExpertDevice | awk -F\" '/IOPlatformUUID/{print $(NF-1)}')"
printf " \\033[%sm%s LAN IP \\033[0m %s\\n" "$BANNER_KERNEL_COLOR" "ﯱ" "$(ifconfig en0 2>/dev/null | grep 'inet ' | cut -d ' ' -f 2)"
IP_ADDR_PUB="$(timeout 1 sh -c 'curl -sSL ifconfig.me')"
if [ -n "$IP_ADDR_PUB" ]; then
printf " \\033[%sm%s Public IP\\033[0m %s\\n" "$UPDATES_SECURITY_COLOR" "" "$IP_ADDR_PUB"
fi
### Disabled because it causes slight delay due to server call for public IP
# if command -v timeout > /dev/null; then
# IP_ADDR_PUB="$(timeout 1 sh -c 'curl -sSL ifconfig.me')"
# else
# IP_ADDR_PUB="$(sh -c 'curl -sSL ifconfig.me')"
# fi
# if [ -n "$IP_ADDR_PUB" ]; then
# printf " \\033[%sm%s Public IP\\033[0m %s\\n" "$UPDATES_SECURITY_COLOR" "" "$IP_ADDR_PUB"
# fi
fi
fi
}
print_processor() {
printf "\\n"
printf " \\033[1;37mProcessor:\\033[0m\\n"
if [ ! -d /Applications ] && [ ! -d /System ]; then
# System is not macOS
printf "\\n"
printf " \\033[1;37mProcessor:\\033[0m\\n"
processor_loadavg="$(cut -d " " -f 1,2,3 </proc/loadavg)"
if [ "$(echo "$processor_loadavg" | cut -d "." -f 1)" -ge "$PROCESSOR_LOADAVG_CRITICAL_THRESHOLD" ]; then
processor_loadavg_color="$PROCESSOR_LOADAVG_CRITICAL_COLOR"
elif [ "$(echo "$processor_loadavg" | cut -d "." -f 1)" -ge "$PROCESSOR_LOADAVG_WARNING_THRESHOLD" ]; then
processor_loadavg_color="$PROCESSOR_LOADAVG_WARNING_COLOR"
else
processor_loadavg_color="$PROCESSOR_LOADAVG_HEALTHY_COLOR"
fi
processor_info=$(cat /proc/cpuinfo)
processor_arch=$(uname -m)
if [ "$processor_arch" = "x86_64" ]; then
processor_model="$(echo "$processor_info" | grep "model name" | sort -u | cut -d ':' -f 2)"
processor_count=$(echo "$processor_info" | grep "physical id" | sort -u | wc -l)
processor_cores=$(echo "$processor_info" | grep "cpu cores" | sort -u | cut -d ':' -f 2)
processor_threads=$(($(echo "$processor_info" | grep "siblings" | tail -n 1 | cut -d ':' -f 2)))
if [ ! "$processor_cores" -eq $processor_threads ]; then
processor_threads=", $processor_threads Threads"
processor_loadavg="$(cut -d " " -f 1,2,3 </proc/loadavg)"
if [ "$(echo "$processor_loadavg" | cut -d "." -f 1)" -ge "$PROCESSOR_LOADAVG_CRITICAL_THRESHOLD" ]; then
processor_loadavg_color="$PROCESSOR_LOADAVG_CRITICAL_COLOR"
elif [ "$(echo "$processor_loadavg" | cut -d "." -f 1)" -ge "$PROCESSOR_LOADAVG_WARNING_THRESHOLD" ]; then
processor_loadavg_color="$PROCESSOR_LOADAVG_WARNING_COLOR"
else
processor_threads=""
processor_loadavg_color="$PROCESSOR_LOADAVG_HEALTHY_COLOR"
fi
elif [ "$processor_arch" = "mips64" ]; then
processor_model="$(echo "$processor_info" | grep "cpu model" | sort -u | cut -d ':' -f 2)"
processor_count=$(echo "$processor_info" | grep "package" | sort -u | wc -l)
processor_cores=$(echo "$processor_info" | grep -c processor)
processor_threads=""
else
processor_model="?"
processor_count=0
processor_cores=0
processor_threads=0
processor_info=$(cat /proc/cpuinfo)
processor_arch=$(uname -m)
if [ "$processor_arch" = "x86_64" ]; then
processor_model="$(echo "$processor_info" | grep "model name" | sort -u | cut -d ':' -f 2)"
processor_count=$(echo "$processor_info" | grep "physical id" | sort -u | wc -l)
processor_cores=$(echo "$processor_info" | grep "cpu cores" | sort -u | cut -d ':' -f 2)
processor_threads=$(($(echo "$processor_info" | grep "siblings" | tail -n 1 | cut -d ':' -f 2)))
if [ ! "$processor_cores" -eq $processor_threads ]; then
processor_threads=", $processor_threads Threads"
else
processor_threads=""
fi
elif [ "$processor_arch" = "mips64" ]; then
processor_model="$(echo "$processor_info" | grep "cpu model" | sort -u | cut -d ':' -f 2)"
processor_count=$(echo "$processor_info" | grep "package" | sort -u | wc -l)
processor_cores=$(echo "$processor_info" | grep -c processor)
processor_threads=""
else
processor_model="?"
processor_count=0
processor_cores=0
processor_threads=0
fi
processor_model="${processor_model//\(R\)/}"
processor_model="${processor_model//\(tm\)/}"
processor_model="${processor_model// @/,}"
processor_model="${processor_model// CPU/}"
processor_model="${processor_model// / }"
# shellcheck disable=SC2001
processor_model="$(echo "$processor_model" | sed "s/^ //g")"
processor_cores=$((processor_cores * processor_count))
if [ "$processor_count" -gt 1 ]; then
processor_count="$processor_count""x "
else
processor_count=""
fi
printf " %s \\033[%dm%s\\033[0m\\n" "$PROCESSOR_LOADAVG_ICON" "$processor_loadavg_color" "$processor_loadavg"
printf " %s %s%s = %s Cores%s\\n" "$PROCESSOR_MODEL_ICON" "$processor_count" "$processor_model" "$processor_cores" "$processor_threads"
fi
processor_model="${processor_model//\(R\)/}"
processor_model="${processor_model//\(tm\)/}"
processor_model="${processor_model// @/,}"
processor_model="${processor_model// CPU/}"
processor_model="${processor_model// / }"
# shellcheck disable=SC2001
processor_model="$(echo "$processor_model" | sed "s/^ //g")"
processor_cores=$((processor_cores * processor_count))
if [ "$processor_count" -gt 1 ]; then
processor_count="$processor_count""x "
else
processor_count=""
fi
printf " %s \\033[%dm%s\\033[0m\\n" "$PROCESSOR_LOADAVG_ICON" "$processor_loadavg_color" "$processor_loadavg"
printf " %s %s%s = %s Cores%s\\n" "$PROCESSOR_MODEL_ICON" "$processor_count" "$processor_model" "$processor_cores" "$processor_threads"
}
print_memory() {
printf "\\n"
printf " \\033[1;37mMemory:\\033[0m\\n"
if [ ! -d /Applications ] && [ ! -d /System ]; then
# System is not macOS
printf "\\n"
printf " \\033[1;37mMemory:\\033[0m\\n"
memory_usage=$(LANG=C free --mega | grep "Mem:")
memory_total=$(echo "$memory_usage" | awk '{ print $2 }')
memory_used=$(echo "$memory_usage" | awk '{ print $3 }')
memory_cached=$(echo "$memory_usage" | awk '{ print $6 }')
memory_usage=$(LANG=C free --mega | grep "Mem:")
memory_total=$(echo "$memory_usage" | awk '{ print $2 }')
memory_used=$(echo "$memory_usage" | awk '{ print $3 }')
memory_cached=$(echo "$memory_usage" | awk '{ print $6 }')
generate_bar_memory "$MEMORY_ICON" "$memory_total" "$memory_used" "$memory_cached"
generate_bar_memory "$MEMORY_ICON" "$memory_total" "$memory_used" "$memory_cached"
fi
}
print_swap() {

View file

@ -274,14 +274,14 @@ if command -v antigen > /dev/null; then
antigen use oh-my-zsh
antigen bundle adb
antigen bundle bazel
antigen bundle codeclimate
antigen bundle codeclimatefd
# antigen bundle colored-man-pages
antigen bundle command-not-found
antigen bundle copybuffer
# TODO: Add as an alias available to Bash as well
antigen bundle encode64
# antigen bundle fd # Added by bash completions script
antigen bundle flutter
# antigen bundle fd # Added by bash completions scriptx``
# antigen bundle flutter /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/plugins/flutter/flutter.plugin.zsh:29: no such file or directory: /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/cache//completions/_flutter
# antigen bundle fzf # Added by bash completions script
# antigen bundle gcloud # Added by bash completions script
antigen bundle gem
@ -313,7 +313,9 @@ if command -v antigen > /dev/null; then
antigen bundle marktext
antigen bundle microk8s
antigen bundle minikube
antigen bundle mongo-atlas
# Received error so disabling mongo-atlas
# /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/plugins/mongo-atlas/mongo-atlas.plugin.zsh:14: no such file or directory: /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/cache//completions/atlas
# antigen bundle mongo-atlas
antigen bundle mongocli
antigen bundle mosh
antigen bundle multipass
@ -332,17 +334,20 @@ if command -v antigen > /dev/null; then
antigen bundle react-native
antigen bundle redis-cli
antigen bundle ripgrep
antigen bundle rust
# Received error so disabling rust
# /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/plugins/rust/rust.plugin.zsh:22: no such file or directory: /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/cache//completions/_rustup
# /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/plugins/rust/rust.plugin.zsh:23: no such file or directory: /Users/bzalewski/.local/antigen/bundles/robbyrussell/oh-my-zsh/cache//completions/_cargo
# antigen bundle rust
antigen bundle safe-paste
antigen bundle sdk
# antigen bundle skaffold
antigen bundle spring
# antigen bundle shell-proxy
antigen bundle sprunge
# On macOS, parse error 6/13/23 for sprunge
# antigen bundle sprunge
# antigen bundle ssh-agent
antigen bundle sudo
antigen bundle terraform
antigen bundle thefuck
antigen bundle timer
antigen bundle tmuxinator
antigen bundle urltools
@ -351,16 +356,20 @@ if command -v antigen > /dev/null; then
# antigen bundle volta # Added by bash completions script
antigen bundle web-search
# antigen bundle wp-cli # Added by bash completions script
antigen bundle docker
antigen bundle docker-compose
antigen bundle yarn
if [ ! -d /Applications ]; then
# Plugins that are troublesome on macOS due to Docker Desktop needing to launch
antigen bundle docker
antigen bundle docker-compose
fi
# Third-party plugins
antigen bundle jscutlery/nx-completion
antigen bundle lukechilds/zsh-better-npm-completion
# antigen bundle jscutlery/nx-completion Installing jscutlery/nx-completion... Error! Activate logging and try again.
# antigen bundle lukechilds/zsh-better-npm-completion
antigen bundle zsh-interactive-cd
# antigen bundle zsh-navigation-tools
antigen bundle zsh-navigation-tools
antigen bundle zsh-users/zsh-completions src
if command -v fzf > /dev/null; then
antigen bundle aloxaf/fzf-tab
@ -369,7 +378,7 @@ if command -v antigen > /dev/null; then
antigen bundle zsh-users/zsh-autosuggestions
antigen bundle zsh-users/zsh-syntax-highlighting
if [ -d /Applications ] && [ -d /System ]; then
antigen bundle zsh-apple-touchbar
antigen bundle zsh-apple-touchbar
fi
antigen theme romkatv/powerlevel10k
antigen apply
@ -386,6 +395,11 @@ if command -v zoxide > /dev/null; then
zstyle ':autocomplete:recent-dirs' backend zoxide
fi
### Atuin
if command -v atuin > /dev/null; then
eval "$(atuin init zsh)"
fi
### Cod
if command -v cod > /dev/null; then
source <(cod init $$ zsh)
@ -420,11 +434,6 @@ if command -v navi > /dev/null; then
eval "$(navi widget zsh)"
fi
### mcfly
if command -v mcfly > /dev/null; then
eval "$(mcfly init zsh)"
fi
### Fig
if [ -f "$HOME/.fig/shell/zshrc.post.zsh" ]; then
source "$HOME/.fig/shell/zshrc.post.zsh"

File diff suppressed because it is too large Load diff