diff --git a/docs/TODO.md b/docs/TODO.md index 56485b63..ec5db33c 100644 --- a/docs/TODO.md +++ b/docs/TODO.md @@ -5,6 +5,20 @@ https://github.com/DustinBrett/daedalOS https://github.com/ansh/jiffyreader.com https://github.com/allinurl/goaccess https://github.com/cloudflare/boringtun + CLOUDSDK_CORE_PROJECT: "megabyte-labs" + GCE_CREDENTIALS_FILE: "{{ joinPath .chezmoi.homeDir ".config" "gcp.json" }}" + GCE_SERVICE_ACCOUNT_EMAIL: "molecule@megabyte-labs.iam.gserviceaccount.com" + +GITLAB_READ_TOKEN +GITHUB_READ_TOKEN +GITHUB_GIST_TOKEN +CLOUDFLARE_API_TOKEN +GMAIL_APP_PASSWORD +NGROK_AUTH_TOKEN +SLACK_API_TOKEN +TAILSCALE_AUTH_KEY +LEXICON_CLOUDFLARE_USERNAME +LEXICON_CLOUDFLARE_TOKEN ### Ensure these PATHs are added on Windows add to PATH: '%ProgramFiles(x86)%\mitmproxy\bin' diff --git a/home/.chezmoi.yaml.tmpl b/home/.chezmoi.yaml.tmpl index ea829a1e..09583907 100644 --- a/home/.chezmoi.yaml.tmpl +++ b/home/.chezmoi.yaml.tmpl @@ -1,28 +1,18 @@ -{{- $name := (default "Brian Zalewski" (env "FULL_NAME")) -}} -{{- $email := (default "brian@megabyte.space" (env "PRIMARY_EMAIL")) -}} -{{- $restricted := (default false (env "WORK_ENVIRONMENT")) -}} -{{- $work := (default false (env "WORK_ENVIRONMENT")) -}} -{{- $gpgKeyId := (default "0xF0A300E4199A1C33" (env "KEYID")) -}} -{{- $gmailAddress := (default "blzalewski@gmail.com" (env "GMAIL_ADDRESS")) -}} -{{- $gmailAddressAppPassword := (default "" (env "GMAIL_APP_PASSWORD")) -}} -{{- $surgeshUsername := (default "brian@megabyte.space" (env "SURGESH_USERNAME")) -}} -{{- $domain := (default "megabyte.space" (env "PUBLIC_SERVICES_DOMAIN")) -}} {{- $cloudflareUsername := (default "brian@megabyte.space" (env "CLOUDFLARE_USERNAME")) -}} -{{- $cloudflareToken := (default "" (env "CLOUDFLARE_API_TOKEN")) -}} -{{- $cloudflareAccessKeyId := "" -}} -{{- $cloudflareSecretAccessKey := "" -}} -{{- $cloudflareR2AccountId := "" -}} +{{- $desktopSession := true -}} +{{- $domain := (default "megabyte.space" (env "PUBLIC_SERVICES_DOMAIN")) -}} +{{- $email := (default "brian@megabyte.space" (env "PRIMARY_EMAIL")) -}} {{- $githubUsername := (default "ProfessorManhattan" (env "GITHUB_USERNAME")) -}} -{{- $githubGistToken := (default "" (env "GITHUB_GIST_TOKEN")) -}} -{{- $githubReadToken := (env "GITHUB_READ_TOKEN") -}} -{{- $gitlabReadToken := (env "GITLAB_READ_TOKEN") -}} +{{- $gmailAddress := (default "blzalewski@gmail.com" (env "GMAIL_ADDRESS")) -}} +{{- $gpgKeyId := (default "0xF0A300E4199A1C33" (env "KEYID")) -}} +{{- $hostname := (default "alpha" (env "HOSTNAME")) -}} {{- $locale := (output "echo" "$LANG") }} -{{- $ngrokAuthToken := (default "" (env "NGROK_AUTH_TOKEN")) -}} -{{- $slackApiToken := (default "" (env "SLACK_API_TOKEN")) -}} -{{- $tailscaleAuthKey := (default "" (env "TAILSCALE_AUTH_KEY")) -}} +{{- $name := (default "Brian Zalewski" (env "FULL_NAME")) -}} +{{- $restricted := (default false (env "WORK_ENVIRONMENT")) -}} +{{- $surgeshUsername := (default "brian@megabyte.space" (env "SURGESH_USERNAME")) -}} {{- $timezone := (default "America/New_York" (env "TIMEZONE")) -}} {{- $toolchains := list "CLI-Extras" "Docker" "Go" "Kubernetes" "Web-Development" -}} -{{- $desktopSession := true -}} +{{- $work := (default false (env "WORK_ENVIRONMENT")) -}} {{- if and (ne .chezmoi.os "darwin") (ne .chezmoi.os "windows") (not (env "DISPLAY")) -}} {{- $desktopSession = false -}} {{- end -}} @@ -112,6 +102,9 @@ {{- if not (env "PUBLIC_SERVICES_DOMAIN") -}} {{- $domain = promptStringOnce $data.user "domain" "Domain name" $domain -}} {{- end -}} +{{- if not (env "HOSTNAME") -}} +{{- $hostname = promptStringOnce $data.host "hostname" "Hostname ID" $hostname -}} +{{- end -}} {{- else -}} {{- $headless = true -}} @@ -137,6 +130,12 @@ data: dns: primary: 10.0.0.1#dns.megabyte.space secondary: 1.1.1.1#cloudflare-dns.com + docker: + doRegion: nyc1 + headless: {{ $headless }} + home: "{{ .chezmoi.homeDir }}" + homeParentFolder: "{{ if eq .chezmoi.os "linux" }}/home{{ else if eq .chezmoi.os "darwin" }}/Users{{ else }}C:\Users{{ end }}" + hostname: "{{ $hostname }}" ssh: allowTCPForwarding: no allowUsers: {{ output "echo" "$USER" }} @@ -146,59 +145,42 @@ data: excludedSubnets: - 10.0.0.0/24 - 10.14.50.0/24 - home: "{{ .chezmoi.homeDir }}" - homeParentFolder: "{{ if eq .chezmoi.os "linux" }}/home{{ else if eq .chezmoi.os "darwin" }}/Users{{ else }}C:\Users{{ end }}" - hostname: "Betelgeuse" qubes: {{ ne (stat (joinPath "usr" "bin" "qubes-session")) false }} + restricted: {{ $restricted }} softwareGroup: "{{ $softwareGroup }}" type: "{{ $chassisType }}" work: {{ $work }} - restricted: {{ $restricted }} - headless: {{ $headless }} toolchains: {{- range $toolchain, $enabled := $toolchainsEnabled }} {{ $toolchain}}: {{ $enabled }} {{- end }} user: - email: "{{ $email }}" - name: "{{ $name }}" - username: "{{ output "echo" "$USER" }}" + cloudflare: + r2: "{{ $cloudflareR2AccountId }}" + username: "{{ $cloudflareUsername }}" defaultBrowser: firefox domain: "{{ $domain }}" + email: "{{ $email }}" + github: + username: "{{ $githubUsername }}" + gmail: + username: "{{ $gmailAddress }}" gpg: id: "{{ $gpgKeyId }}" - gmail: - email: "{{ $gmailAddress }}" - password: "{{ $gmailAddressAppPassword }}" - surgeshUsername: "{{ $surgeshUsername }}" - githubUsername: "{{ $githubUsername }}" - locale: "{{ $locale }}" - timezone: "{{ $timezone }}" holdSudoPrivileges: true - CLOUDFLARE_USERNAME: "{{ $cloudflareUsername }}" - CLOUDFLARE_ACCESS_KEY_ID: "{{ $cloudflareAccessKeyId }}" - CLOUDFLARE_SECRET_ACCESS_KEY: "{{ $cloudflareSecretAccessKey }}" - CLOUDFLARE_R2_ACCOUNT_ID: "{{ $cloudflareR2AccountId }}" - CLOUDSDK_CORE_PROJECT: "megabyte-labs" - GCE_CREDENTIALS_FILE: "{{ joinPath .chezmoi.homeDir ".config" "gcp.json" }}" - GCE_SERVICE_ACCOUNT_EMAIL: "molecule@megabyte-labs.iam.gserviceaccount.com" - GITHUB_GIST_TOKEN: "{{ $githubGistToken }}" - GITHUB_READ_TOKEN: "{{ $githubReadToken }}" - GITLAB_READ_TOKEN: "{{ $gitlabReadToken }}" - NGROK_AUTH_TOKEN: "{{ $ngrokAuthToken }}" - SLACK_API_TOKEN: "{{ $slackApiToken }}" - SNAPCRAFT_EMAIL: "{{ $email }}" - TAILSCALE_AUTH_KEY: "{{ $tailscaleAuthKey }}" - TINYPNG_API_KEY: "g355tx7dxG5yJfl0RXJnpQlQqk88dJBv" + locale: "{{ $locale }}" + name: "{{ $name }}" + surgesh: + username: "{{ $surgeshUsername }}" + timezone: "{{ $timezone }}" + tinypngKey: "g355tx7dxG5yJfl0RXJnpQlQqk88dJBv" + username: "{{ output "echo" "$USER" }}" diff: format: "git" pager: "delta" git: autoCommit: true autoPush: true -scriptEnv: - LEXICON_CLOUDFLARE_USERNAME: "{{ $cloudflareUsername }}" - LEXICON_CLOUDFLARE_TOKEN: "{{ $cloudflareToken }}" textconv: - pattern: "**/*.plist" command: "plutil" diff --git a/home/.chezmoidata.yaml b/home/.chezmoidata.yaml index 6bcc62b2..c1d25cd3 100644 --- a/home/.chezmoidata.yaml +++ b/home/.chezmoidata.yaml @@ -19,11 +19,11 @@ colors: color14: '#EB71AD' color15: '#24E5FF' color16: '#FFFFFF' -macosRemoteLogin: 'on' -themeparkTheme: aquamarine -netdataClaimURL: https://app.netdata.cloud config: gpg: https://raw.githubusercontent.com/drduh/config/master/gpg.conf +macosRemoteLogin: 'on' +netdataClaimURL: https://app.netdata.cloud +themeparkTheme: aquamarine chromeExtensions: - https://chrome.google.com/webstore/detail/automa/infppggnoaenmfagbfknfkancpbljcca - https://chrome.google.com/webstore/detail/bitly-powerful-short-link/iabeihobmhlgpkcgjiloemdbofjbdcic @@ -1007,6 +1007,9 @@ softwareGroups: - termius - ulauncher softwarePlugins: + docker: + plugins: + - sapk/plugin-rclone vim: plugins: - https://github.com/dense-analysis/ale.git diff --git a/home/.chezmoiscripts/_universal/run_onchange_before_11-install-docker.tmpl b/home/.chezmoiscripts/_universal/run_onchange_before_11-install-docker.tmpl index 40321bf0..8306d6fb 100644 --- a/home/.chezmoiscripts/_universal/run_onchange_before_11-install-docker.tmpl +++ b/home/.chezmoiscripts/_universal/run_onchange_before_11-install-docker.tmpl @@ -114,4 +114,7 @@ if [ ! -d /Applications ] || [ ! -d /System ]; then fi fi +### Install Docker plugins +for PLUGIN in + {{ end -}} diff --git a/home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.tmpl b/home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.tmpl index b20c9583..ad90f70f 100644 --- a/home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.tmpl +++ b/home/.chezmoiscripts/universal/run_onchange_after_07-docker-plugins.tmpl @@ -1,6 +1,8 @@ {{- if (eq .host.distro.family "linux") -}} #!/usr/bin/env bash +# Docker plugins.json hash: {{ include (joinPath .chezmoi.homeDir ".config" "docker" "plugins.json") | sha256sum }} + {{ includeTemplate "universal/profile" }} {{ includeTemplate "universal/logg" }} @@ -30,13 +32,24 @@ fi if [ ! -f "${XDG_CONFIG_HOME:-$HOME/.docker}/cli-plugins/docker-pushrm" ]; then logg info 'Acquiring release information for Docker push-rm' RELEASE_TAG="$(curl -sSL https://api.github.com/repos/christian-korneck/docker-pushrm/releases/latest | jq -r '.tag_name')" - mkdir -p "${XDG_CONFIG_HOME:-$HOME/.docker}/cli-plugins" + mkdir -p "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins" logg info 'Downloading Docker push-rm' - curl https://github.com/christian-korneck/docker-pushrm/releases/download/$RELEASE_TAG/docker-pushrm_darwin_amd64 -o "${XDG_CONFIG_HOME:-$HOME/.docker}/cli-plugins/docker-pushrm" - chmod +x "${XDG_CONFIG_HOME:-$HOME/.docker}/cli-plugins/docker-pushrm" + curl https://github.com/christian-korneck/docker-pushrm/releases/download/$RELEASE_TAG/docker-pushrm_darwin_amd64 -o "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm" + chmod +x "${XDG_CONFIG_HOME:-$HOME/.config}/docker/cli-plugins/docker-pushrm" logg success 'Added Docker push-rm' else logg info 'Docker push-rm already added' fi +{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "key-digitalocean-pat")) -}} +### Docker DigitalOcean Block Storage +docker plugin install --grant-all-permissions rexray/dobs DOBS_TOKEN={{ includeTemplate "secrets/key-digitalocean-pat" | decrypt -}} DOBS_REGION={{ .host.docker.doRegion }} LINUX_VOLUME_FILEMODE=0775 +{{ end -}} + +### Docker plugins (defined in ~/.config/docker/plugins.json) +jq -r '.plugins[]' "${XDG_CONFIG_HOME:-$HOME/.config}/docker/plugins.json" | while read PLUGIN; do + logg info 'Installing the `'"$PLUGIN"'` Docker plugin' + docker plugin install --grant-all-permissions "$PLUGIN" +done + {{ end -}} diff --git a/home/.chezmoitemplates/secrets/key-cloudflare-r2-id b/home/.chezmoitemplates/secrets/key-cloudflare-r2-id new file mode 100644 index 00000000..772fbb89 --- /dev/null +++ b/home/.chezmoitemplates/secrets/key-cloudflare-r2-id @@ -0,0 +1,7 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBUa0ZtTm9PbE03R1RReDJZ +NUdueXVZSk1WY2RxMkpyM1VVL2t2ZlBobGxJCmRyWEtSYVMxU1VCL01hRXk5ODdR +MTJPZFVYbEEzeStBT3JLRWdoNUg0Z2MKLS0tIGhHdzExOEU1NmJkNHBFUW5DbXFs +S25MNHFGV01GYjkrYm0zVmhrVEFvd2sKQr2yI5Zlx+yEWa4igHFy2z1FpmEw6tux +M9i/y2J+Da15jAZgndmc1iWNBVDKVfROon4S60P99djZi/trWcy0jA== +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/.chezmoitemplates/secrets/key-cloudflare-r2-secret b/home/.chezmoitemplates/secrets/key-cloudflare-r2-secret new file mode 100644 index 00000000..ae0c4dbb --- /dev/null +++ b/home/.chezmoitemplates/secrets/key-cloudflare-r2-secret @@ -0,0 +1,8 @@ +-----BEGIN AGE ENCRYPTED FILE----- +YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBFYnBRTkRVZ2hGTkZ4NUdQ +UWZBWmFxQkFXTUhESzhaaFJWMlpQSmh5cldjCjN0c0dScXQ1d0ZoalF1WXN3VG5h +WC9wQ0pQSmYyU29nN1YwOUNFSHgyRkEKLS0tIG5lOTRhamhySm5iN1V1d0haWFRo +VVZaczNScHd0ZHZRWmd4TFVRQWVaZzAKqbgfmbnHB5QbO0Z1JMgjNawfAD40Hzru +kVNSyh/zgIRlwuSzwlENDgrdGXaRjDj7jtchaWe/xPX88Ba5cFe9LC7eXJP1mU2U +l+nk1LFKSp24PZskcLzw4rxCsLap82KV +-----END AGE ENCRYPTED FILE----- \ No newline at end of file diff --git a/home/dot_config/docker/plugins.json b/home/dot_config/docker/plugins.json new file mode 100644 index 00000000..28fff243 --- /dev/null +++ b/home/dot_config/docker/plugins.json @@ -0,0 +1,6 @@ +{ + "plugins" [ + "sapk/plugin-rclone", + "vieux/sshfs" + ] +} \ No newline at end of file diff --git a/home/dot_config/gcp/gcp.json.TODO b/home/dot_config/gcp/gcp.json.TODO new file mode 100644 index 00000000..e69de29b diff --git a/home/dot_config/rclone/merge_rclone.conf b/home/dot_config/rclone/merge_rclone.conf index 31cb1878..c36d9e4c 100644 --- a/home/dot_config/rclone/merge_rclone.conf +++ b/home/dot_config/rclone/merge_rclone.conf @@ -1,4 +1,4 @@ -{{- if and (ne .user.CLOUDFLARE_ACCESS_KEY_ID "") (ne .user.CLOUDFLARE_SECRET_ACCESS_KEY "") (ne .user.CLOUDFLARE_R2_ACCOUNT_ID "") }} +{{- if and (stat (joinPath .host.home ".config" "age" "chezmoi.txt")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "key-cloudflare-r2-id")) (stat (joinPath .chezmoi.sourceDir ".chezmoitemplates" "secrets" "key-cloudflare-r2-secret")) (ne .user.cloudflare.r2 "") -}} #!/usr/bin/env bash CONFIG_FILE="$HOME/.config/rclone/rclone.conf" @@ -18,27 +18,43 @@ tee -a "$CONFIG_FILE" > /dev/null <