#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: gc [ guix | trash | tmpdir | logs | coredump ] EOF } disk() { df -h / /mnt/backup/ | tail -n +2 | awk '{ printf "%s\t%s/%s\t%s\n", $4, $3, $2, $6 }' ||: } gc_guix() { guix system delete-generations 1m ||: guix gc -d 1m } gc_trash() { yes | trash-empty ||: } gc_tmpdir() { find "${TMPDIR:-/tmp}" -atime +10 -exec rm -vf "{}" ';' ||: } gc_logs() { find /var/log/ci/ -atime +10 -exec rm -vf "{}" ';' ||: } gc_coredump() { find /var/crash/ -type f -atime +10 -exec rm -vf "{}" ';' ||: } gc_all() { gc_guix gc_trash gc_tmpdir gc_logs gc_coredump } TYPE="${1:-all}" CMD=gc_"$TYPE" if ! command -v "$CMD" >/dev/null; then printf 'Invalid TYPE: "%s".\n\n' "$TYPE" >&2 usage >&2 exit 2 fi BEFORE="$(disk)" set -x "$CMD" set +x AFTER="$(disk)" cat <<-EOF Disk space: before: $BEFORE after: $AFTER EOF