Commit c1287ca25f01

Vincent Demeester <vincent@sbr.pm>
2026-06-10 11:22:17
feat(aomi): add native app installs and home-manager to bootstrap
Added Flatpak installs for Slack and Zoom, 1Password RPM repo setup, niri via dnf, and home-manager activation to the bootstrap script. Added standalone home-manager config for vincent@aomi in flake.nix. Note: home-manager build needs overlay wiring for emacs-31, to be resolved when activating home-manager on the machine.
1 parent 9b8a3c1
Changed files (2)
imperative/aomi/bootstrap.sh
@@ -102,7 +102,74 @@ build_and_activate() {
 	log_info "System-manager activated!"
 }
 
-# --- Phase 4: WireGuard key ---
+# --- Phase 4: Native apps (dnf/flatpak) ---
+
+install_native_apps() {
+	log_info "Installing native apps..."
+
+	# Niri compositor
+	if ! rpm -q niri &>/dev/null; then
+		log_info "Installing niri..."
+		sudo dnf install -y niri
+	fi
+
+	# Flatpak apps (sandboxed, auto-updating)
+	if ! command -v flatpak &>/dev/null; then
+		log_info "Installing flatpak..."
+		sudo dnf install -y flatpak
+		flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
+	fi
+
+	local flatpaks=(
+		com.slack.Slack
+		us.zoom.Zoom
+	)
+	for app in "${flatpaks[@]}"; do
+		if ! flatpak info "$app" &>/dev/null 2>&1; then
+			log_info "Installing $app..."
+			flatpak install -y flathub "$app"
+		else
+			log_info "$app already installed"
+		fi
+	done
+
+	# 1Password (dedicated RPM repo)
+	if ! rpm -q 1password &>/dev/null; then
+		log_info "Installing 1Password..."
+		sudo rpm --import https://downloads.1password.com/linux/keys/1password.asc
+		sudo tee /etc/yum.repos.d/1password.repo <<-'EOF'
+		[1password]
+		name=1Password Stable Channel
+		baseurl=https://downloads.1password.com/linux/rpm/stable/$basearch
+		enabled=1
+		gpgcheck=1
+		repo_gpgcheck=1
+		gpgkey=https://downloads.1password.com/linux/keys/1password.asc
+		EOF
+		sudo dnf install -y 1password 1password-cli
+	fi
+}
+
+# --- Phase 5: Home-manager ---
+
+setup_home_manager() {
+	log_info "Setting up home-manager..."
+
+	# Ensure nix is in PATH
+	if ! command -v nix &>/dev/null; then
+		# shellcheck disable=SC1091
+		. /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
+	fi
+
+	cd "$REPO_PATH"
+
+	# Build and activate home-manager
+	nix run home-manager -- switch --flake ".#vincent@${SYSTEM_CONFIG}"
+
+	log_info "Home-manager activated!"
+}
+
+# --- Phase 6: WireGuard key ---
 
 setup_wireguard_key() {
 	if [[ -f /etc/wireguard/private.key ]]; then
@@ -121,28 +188,26 @@ setup_wireguard_key() {
 	log_warn "Then re-run:  sudo systemctl restart wireguard-wg0"
 }
 
-# --- Main ---
-
 print_summary() {
 	log_info ""
 	log_info "╔══════════════════════════════════════════╗"
 	log_info "║     Aomi (Fedora CSB) Bootstrap Done     ║"
 	log_info "╠══════════════════════════════════════════╣"
 	log_info "║  Nix:            ✓ installed             ║"
-	log_info "║  Repository:     ✓ $REPO_PATH"
 	log_info "║  System-manager: ✓ activated             ║"
+	log_info "║  Home-manager:   ✓ activated             ║"
+	log_info "║  Native apps:    ✓ installed             ║"
 	log_info "╠══════════════════════════════════════════╣"
-	log_info "║  To rebuild:                             ║"
-	log_info "║    cd $REPO_PATH"
+	log_info "║  Rebuild system:                         ║"
 	log_info "║    nix build .#systemConfigs.aomi        ║"
 	log_info "║    sudo ./result/bin/activate             ║"
-	log_info "╠══════════════════════════════════════════╣"
-	log_info "║  Next: home-manager for dev tools        ║"
-	log_info "║    nix run home-manager -- switch \\      ║"
-	log_info "║      --flake .#vincent@aomi              ║"
+	log_info "║  Rebuild home:                           ║"
+	log_info "║    home-manager switch --flake .#vincent@aomi ║"
 	log_info "╚══════════════════════════════════════════╝"
 }
 
+# --- Main ---
+
 main() {
 	log_info "Bootstrapping aomi (Fedora CSB)..."
 	log_info "  Repo:   $REPO_URL → $REPO_PATH"
@@ -154,6 +219,8 @@ main() {
 	configure_nix
 	clone_repo
 	build_and_activate
+	install_native_apps
+	setup_home_manager
 	setup_wireguard_key
 	print_summary
 }
flake.nix
@@ -53,6 +53,11 @@
       # Standalone home configurations
       # FIXME set this up
       homeConfigurations = {
+        # Fedora CSB workstation
+        "vincent@aomi" = libx.mkHome {
+          username = "vincent";
+          hostname = "aomi";
+        };
         # headless machine
         "vincent@aion" = libx.mkHome {
           username = "vincent";