#!/usr/bin/env bash set -euo pipefail ### CONFIG ### OS_DISK=/dev/sda DATA_DISK=/dev/sdb HOSTNAME=fileserver STATE_VERSION="25.05" TIMEZONE="Europe/Berlin" USERNAME="danlin" PASSWORD="changeme" ROOT_PASS="root" echo ">>> WARNUNG: ALLE DATEN auf ${OS_DISK} und ${DATA_DISK} werden GELÖSCHT!" echo ">>> Warte 5 Sekunden... (STRG+C zum Abbrechen)" sleep 5 echo ">>> Partitioniere OS-Disk (${OS_DISK}) für EFI + ROOT..." parted "${OS_DISK}" --script mklabel gpt parted "${OS_DISK}" --script mkpart ESP fat32 1MiB 513MiB parted "${OS_DISK}" --script set 1 esp on parted "${OS_DISK}" --script mkpart primary ext4 513MiB 100% echo ">>> Formatiere OS-Partitionen..." mkfs.fat -F32 "${OS_DISK}1" mkfs.ext4 -F "${OS_DISK}2" echo ">>> Partitioniere DATA-Disk (${DATA_DISK})..." parted "${DATA_DISK}" --script mklabel gpt parted "${DATA_DISK}" --script mkpart primary ext4 0% 100% echo ">>> Formatiere DATA-Partition..." mkfs.ext4 -F "${DATA_DISK}1" echo ">>> Mounten..." mount "${OS_DISK}2" /mnt mkdir -p /mnt/boot mount "${OS_DISK}1" /mnt/boot mkdir -p /mnt/data mount "${DATA_DISK}1" /mnt/data echo ">>> Generiere NixOS-Config..." nixos-generate-config --root /mnt CONFIG=/mnt/etc/nixos/configuration.nix HWCFG=/mnt/etc/nixos/hardware-configuration.nix echo ">>> Schreibe minimale configuration.nix..." cat > "${CONFIG}" <>> /data in hardware-configuration ergänzen (falls fehlt)..." DATA_UUID=$(blkid -s UUID -o value "${DATA_DISK}1") if ! grep -q '"/data"' "${HWCFG}"; then cat >> "${HWCFG}" <>> Starte nixos-install..." nixos-install echo ">>> Erzeuge README mit rclone/SMB-Hinweisen unter /mnt/root/README-rclone-smb.txt ..." cat > /mnt/root/README-rclone-smb.txt <<'TXT' Fileserver: rclone + SMB Quickstart\n\n1) rclone Remote erstellen (Name: gdrive)\n sudo -i\n rclone config\n # storage: drive (Google Drive), headless: No und Token von Desktop übernehmen\n\n Testen:\n rclone lsd gdrive:\n rclone mkdir gdrive:backup-daten\n\n Manuell starten:\n systemctl start rclone-backup.service\n journalctl -u rclone-backup -e\n tail -n 100 /var/log/rclone-backup.log\n\n Timer aktivieren/prüfen:\n systemctl list-timers '*rclone*'\n systemctl enable --now rclone-backup.timer\n\n2) SMB-Passwort für Benutzer danlin setzen\n smbpasswd -a danlin\n\n Shares:\n - daten (nur mit Benutzer danlin)\n - daten-share (Gastzugriff erlaubt)\n\n Zugriff:\n - Windows: \\fileserver\daten oder \\fileserver\daten-share\n - macOS: smb://fileserver/daten oder smb://fileserver/daten-share\nTXT echo "" echo "===== NACHINSTALLATION HINWEISE =====" echo "- rclone Remote 'gdrive' einrichten: sudo -i && rclone config" echo "- Backup testen: systemctl start rclone-backup.service && journalctl -u rclone-backup -e" echo "- SMB-Passwort setzen: sudo smbpasswd -a danlin" echo "- Details siehe: /root/README.md" echo ">>> Fertig. Jetzt reboot ausführen."