# nyx-cleanup.zsh โ€” Improved Version function nyx-cleanup() { ##### ๐Ÿ› ๏ธ CONFIGURATION ##### local version="1.3.0" local keep_generations="${keep_generations:-5}" local start_human=$(date '+%Y-%m-%d %H:%M:%S') local nix_cleanup_log="nixos-cleanup.log" local optimize_store="${optimize_store:-false}" local auto_push="${auto_push:-false}" local RED=$'\e[31m'; local GREEN=$'\e[32m'; local YELLOW=$'\e[33m' local BLUE=$'\e[34m'; local MAGENTA=$'\e[35m'; local CYAN=$'\e[36m' local BOLD=$'\e[1m'; local RESET=$'\e[0m' ##### ๐Ÿ“ PATH SETUP ##### local timestamp=$(date '+%Y-%m-%d_%H-%M-%S') local hostname_id=$(hostname) local log_dir="$nix_dir/Misc/nyx/logs/$hostname_id" mkdir -p "$log_dir" local cleanup_log="$log_dir/cleanup-$timestamp.log" local log_file="$log_dir/nixos-gen-cleanup-$timestamp.log" ##### ๐Ÿงฐ HELPERS ##### console-log() { echo -e "$@" | tee -a "$cleanup_log" } print_line() { console-log "${BOLD}$(printf '%*s\n' "${COLUMNS:-40}" '' | tr ' ' '=')${RESET}" } ##### ๐Ÿ“˜ TOOL INFO ##### print_line nix-tool "Nyx" "nyx-cleanup" "$version" \ "Smart NixOS configuration cleanup" \ "by Peritia-System" \ "https://github.com/Peritia-System/Nyx-Tools" \ "https://github.com/Peritia-System/Nyx-Tools/issues" \ "Always up to date for you!" echo echo -e "${BOLD}${CYAN}๐Ÿงผ Nyx Cleanup v$version${RESET}" print_line ##### ๐Ÿงน EXECUTION ##### console-log "${MAGENTA}Cleaning up old generations and Nix garbage...${RESET}" console-log "Started cleanup: $(date)" console-log "\n${BLUE}๐Ÿ—‘๏ธ Running Nix garbage collection...${RESET}" sudo nix-collect-garbage -d | tee -a "$nix_cleanup_log" console-log "\n${BLUE}๐Ÿงน Removing old generations (keeping last $keep_generations)...${RESET}" sudo nix-collect-garbage --delete-older-than "${keep_generations}d" | tee -a "$nix_cleanup_log" if [[ "$optimize_store" == "true" ]]; then console-log "\n${MAGENTA}๐Ÿ”ง Optimizing the Nix store...${RESET}" sudo nix-store --optimize | tee -a "$nix_cleanup_log" fi ##### โœ… SUMMARY ##### print_line console-log "${GREEN}${BOLD}โœ… Nix cleanup completed successfully!${RESET}" console-log "${CYAN}๐Ÿ•’ Finished at: $(date)${RESET}" print_line ##### ๐Ÿ“ GIT LOGGING ##### local gen_nmbr=$(nixos-rebuild list-generations | grep True | awk '{print $1}' | tail -1 | xargs printf "%04d\n") cd "$nix_dir" || return 1 mv "$nix_cleanup_log" "$log_file" git add "$log_file" if ! git diff --cached --quiet; then git commit -m "Cleanup log on $timestamp" console-log "${GREEN}โœ… Cleanup log committed.${RESET}" else console-log "${YELLOW}โ„น๏ธ No new changes in logs to commit.${RESET}" fi if [[ "$auto_push" == "true" ]]; then console-log "${BLUE}๐Ÿš€ Auto-push enabled. Pushing to remote...${RESET}" git push && console-log "${GREEN}โœ… Changes pushed to remote.${RESET}" fi console-log "\n${GREEN}๐ŸŽ‰ Nyx cleanup finished!${RESET}" print_line }