38 lines
1.3 KiB
Fish
38 lines
1.3 KiB
Fish
function bkp --description 'Log Fedora apps and sync to Git'
|
|
set -l SOURCE (chezmoi source-path)
|
|
|
|
echo "Logging installed applications..."
|
|
|
|
# 1. Export DNF packages (Manually installed only)
|
|
# Prefer 'dnf repoquery --userinstalled' when available (shows user-installed packages).
|
|
if dnf repoquery --userinstalled --qf '%{name}\n' > /dev/null 2>&1
|
|
dnf repoquery --userinstalled --qf '%{name}\n' > "$SOURCE/apps-dnf.txt"
|
|
else
|
|
# Fallback: list all installed RPMs (includes dependencies)
|
|
rpm -qa --qf '%{NAME}\n' | sort -u > "$SOURCE/apps-dnf.txt"
|
|
end
|
|
|
|
# 2. Export Flatpaks
|
|
flatpak list --app --columns=application > "$SOURCE/apps-flatpak.txt"
|
|
|
|
# 3. Export VS Code extensions
|
|
if command -v code > /dev/null
|
|
code --list-extensions > "$SOURCE/vscode-extensions.txt"
|
|
end
|
|
|
|
# 4. Sync to Git
|
|
echo "Pushing to Hestia (Forgejo)..."
|
|
cd "$SOURCE"
|
|
# Ensure the remote has an 'origin' remote; add default if missing
|
|
if not contains origin (git remote)
|
|
git remote add origin git@git.breadway.dev:Breadway/dotfiles.git
|
|
end
|
|
git add .
|
|
set -l _ts (date "+%Y-%m-%d %H:%M")
|
|
git commit -m "Update Fedora state: $_ts" || true
|
|
# Push current branch to origin (don't assume 'main')
|
|
git push origin HEAD
|
|
cd - >/dev/null
|
|
|
|
echo "System state backed up."
|
|
end
|