This commit is contained in:
Zsolt Alföldi
2026-02-26 12:40:44 +01:00
parent 561044e548
commit 7c53335966
6 changed files with 210 additions and 137 deletions

View File

@@ -1,8 +1,4 @@
#!/usr/bin/env bash
# scripts/post-install.sh
# Runs inside the installed system after base Ubuntu install.
# Called by autoinstall late-commands as: curtin in-target -- bash /post-install.sh
set -euo pipefail
GREEN='\033[0;32m'
@@ -16,71 +12,93 @@ error() {
exit 1
}
# ─── DESKTOP ─────────────────────────────────────────────────────────────────
info "Installing GNOME desktop (minimal)..."
DEBIAN_FRONTEND=noninteractive apt-get install -y \
ubuntu-desktop-minimal \
gnome-tweaks \
gnome-terminal \
firefox \
nautilus
systemctl set-default graphical.target
info "Desktop installed."
function desktop() {
# ─── DESKTOP ─────────────────────────────────────────────────────────────────
info "Installing GNOME desktop (minimal)..."
DEBIAN_FRONTEND=noninteractive apt-get install -y \
ubuntu-desktop-minimal \
gnome-tweaks \
gnome-terminal \
firefox \
nautilus
systemctl set-default graphical.target
info "Desktop installed."
}
# ─── DOCKER ──────────────────────────────────────────────────────────────────
info "Installing Docker..."
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
function docker() {
# ─── DOCKER ──────────────────────────────────────────────────────────────────
info "Installing Docker..."
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |
gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" \
>/etc/apt/sources.list.d/docker.list
>/etc/apt/sources.list.d/docker.list
apt-get update -qq
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
apt-get update -qq
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
usermod -aG docker alfoldi
systemctl enable docker
info "Docker installed."
usermod -aG docker alfoldi
systemctl enable docker
info "Docker installed."
}
# ─── HIMMELBLAU (Azure Entra ID) ─────────────────────────────────────────────
info "Installing Himmelblau..."
curl -fsSL https://packages.himmelblau-idm.org/stable/himmelblau.list |
tee /etc/apt/sources.list.d/himmelblau.list
apt-get update -qq
apt-get install -y himmelblau himmelblau-sshd-config
info "Himmelblau installed."
function himmelblau() {
# ─── HIMMELBLAU (Azure Entra ID) ─────────────────────────────────────────────
info "Installing Himmelblau..."
apt install curl && curl -fsSL https://packages.himmelblau-idm.org/himmelblau.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/himmelblau.gpg
add-apt-repository "deb [arch=amd64] https://packages.himmelblau-idm.org/stable/latest/deb/ubuntu24.04/ ./"
apt install -y himmelblau pam-himmelblau nss-himmelblau
info "Himmelblau installed."
}
# ─── NIX + HOME-MANAGER ──────────────────────────────────────────────────────
info "Installing Nix (single-user) for alfoldi..."
sudo -u alfoldi bash -c \
"curl -L https://nixos.org/nix/install | sh -s -- --no-daemon"
function nix_home_manager() {
# ─── NIX + HOME-MANAGER ──────────────────────────────────────────────────────
info "Installing Nix (multi-user)..."
sh <(curl --proto '=https' --tlsv1.2 -L https://nixos.org/nix/install) --daemon --yes
info "Adding home-manager channel..."
sudo -u alfoldi bash -c "
source /home/alfoldi/.nix-profile/etc/profile.d/nix.sh
nix-channel --add https://github.com/nix-community/home-manager/archive/release-24.05.tar.gz home-manager
info "Sourcing Nix..."
source /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh
info "Adding home-manager channel..."
nix-channel --add https://github.com/nix-community/home-manager/archive/release-25.11.tar.gz home-manager
nix-channel --update
"
info "Installing home-manager..."
sudo -u alfoldi bash -c "
source /home/alfoldi/.nix-profile/etc/profile.d/nix.sh
info "Installing home-manager..."
nix-shell '<home-manager>' -A install
"
info "Nix + home-manager installed."
}
# ─── SSH ─────────────────────────────────────────────────────────────────────
info "Enabling SSH..."
systemctl enable ssh
function main() {
desktop || true
docker || true
himmelblau || true
nix_home_manager || true
# ─── SUDO (passwordless for alfoldi) ─────────────────────────────────────────
info "Configuring sudoers..."
echo 'alfoldi ALL=(ALL) NOPASSWD:ALL' >/etc/sudoers.d/alfoldi
chmod 440 /etc/sudoers.d/alfoldi
# ─── DARK THEME ──────────────────────────────────────────────────────────────
info "Setting dark theme..."
gsettings set org.gnome.desktop.interface color-scheme prefer-dark
gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark
info "Post-install complete ✓"
# ─── DASH TO PANEL ───────────────────────────────────────────────────────────
info "Installing Dash to Panel..."
# gext install dash-to-panel@jderose9.github.com
apt install gnome-shell-extension-dashtopanel
gnome-extensions enable dash-to-panel@jderose9.github.com
# ─── SSH ─────────────────────────────────────────────────────────────────────
info "Enabling SSH..."
systemctl enable ssh
# ─── (passwordless for alfoldi) ─────────────────────────────────────────
info "Configuring sudoers..."
echo 'alfoldi ALL=(ALL) NOPASSWD:ALL' >/etc/sudoers.d/alfoldi
chmod 440 /etc/sudoers.d/alfoldi
info "Post-install complete ✓"
}
# start main

13
scripts/wifi.sh Executable file
View File

@@ -0,0 +1,13 @@
export wifi_iface=$(ls /sys/class/net 2>/dev/null | grep -E "^(wl|wlan|wlp)" | head -1)
if [ -z "$wifi_iface" ]; then
echo "No WiFi interface found skipping configuration."
exit 0
fi
echo "Configuring WiFi on $wifi_iface"
envsubst < /cdrom/nocloud/user-data-wifi.config > /target/etc/netplan/99-wifi.yaml
chmod 600 /target/etc/netplan/99-wifi.yaml
# chroot /target netplan generate