#!/bin/bash set -euo pipefail test -f /etc/canonical-lab test "$(id -un)" = canonical-test # shellcheck source=/dev/null test "$( . /etc/os-release printf '%s' "$ID" )" = ubuntu systemd-detect-virt --vm --quiet cd "$HOME/dotfiles" check_extensions() { test "$(/usr/bin/gsettings get org.gnome.shell disable-user-extensions)" = false for extension in corporate-panel@dotfiles $(sed '/^#/d; /^$/d' meta/canonical/extensions.txt); do gnome-extensions info "$extension" gnome-extensions list --enabled | grep -Fx "$extension" gnome-extensions info "$extension" | grep -Eq 'State: (ACTIVE|ENABLED)$' done } check_mattermost_keyring() { systemctl is-active dotfiles-mattermost-keyring.path snap run --shell mattermost-desktop <<'EOF' dbus-send --session --print-reply --dest=org.freedesktop.secrets /org/freedesktop/secrets org.freedesktop.DBus.Peer.Ping EOF grep 'Secure storage initialized' "$HOME/snap/mattermost-desktop/current/.config/Mattermost/logs/main.log" | tail -n 1 | grep -F 'encryption available' } case "${1:?stage required}" in session) check_extensions test "$(secret-tool lookup application canonical-lab)" = lab-value check_mattermost_keyring ;; nix) if ! test -x /nix/var/nix/profiles/default/bin/nix; then curl --fail --location https://nixos.org/nix/install -o /tmp/install-nix sh /tmp/install-nix --daemon --yes --no-channel-add fi ;; identity) install -d -m 700 "$HOME/.gnupg" "$HOME/.config/chezmoi" if ! gpg --list-secret-keys canonical-test@example.invalid >/dev/null 2>&1; then gpg --batch --pinentry-mode loopback --passphrase '' --quick-generate-key \ 'Canonical Test ' ed25519 sign 1y fi fingerprint=$(gpg --with-colons --list-secret-keys canonical-test@example.invalid | awk -F: '$1=="fpr" {print $10; exit}') cat >"$HOME/.config/chezmoi/chezmoi.toml" <