Compare commits
	
		
			76 Commits
		
	
	
		
			ad6601f17e
			...
			prod
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0d3931d738 | |||
| 7c93f25a5d | |||
| 8445b64d6b | |||
| 8dfb3fe2a6 | |||
| 5b749d2100 | |||
| 57ca267aa5 | |||
| 2ca308c287 | |||
| 40ee72b587 | |||
| 13bc98d7ef | |||
| d916637798 | |||
| 71d236d0ba | |||
| d81c424878 | |||
| 73e527640f | |||
| aa3075a9fc | |||
| 89cdf8157f | |||
| 4e0ff86295 | |||
| 305b8df6ff | |||
| 6a78933875 | |||
| 7095636915 | |||
| 80bba3b21b | |||
| d98bbb02a9 | |||
| 00c87328ab | |||
| b4cdea984e | |||
| 4651726268 | |||
| 3410cf4426 | |||
| d5393f60f3 | |||
| 5f882df33f | |||
| 0dfbd0bd68 | |||
| 0d5b095ad6 | |||
| 07e32decf8 | |||
| afc3b20785 | |||
| ed160da316 | |||
| 2f08b1414e | |||
| c279884da2 | |||
| df8b330893 | |||
| 08a7a22dde | |||
| 57243f65e3 | |||
| 35469851b3 | |||
| 2cf4a348c3 | |||
| 4a33adf073 | |||
| fb00d3e6bc | |||
| 267a260e90 | |||
| 03b9f7e1b2 | |||
| 57dc62a74a | |||
| f7c321bf23 | |||
| 130b243be3 | |||
| 400ef8400c | |||
| d35d9ccdd2 | |||
| a730919b43 | |||
| 4e9e714504 | |||
| c0ba27e782 | |||
| 6d2a822323 | |||
| a8e6e0b6c6 | |||
| 93b919f48b | |||
| 215e7dee69 | |||
| 70ac7bff94 | |||
| 54589ca033 | |||
| 2dd0303176 | |||
| 411f203024 | |||
| 9f22385040 | |||
| 103a79a7ee | |||
| 602376df5f | |||
| 95c87448c8 | |||
| df5421defe | |||
| 1e7e11ed91 | |||
| 07dc365410 | |||
| c248a3c048 | |||
| 16466fb0c8 | |||
| 86e3f40d36 | |||
| 8038e10364 | |||
| 295f29dece | |||
| 8181ee0848 | |||
| c87c4468b3 | |||
| e19902074a | |||
| c12b54d0dc | |||
| a5023b2ef7 | 
| @@ -27,9 +27,13 @@ | |||||||
|     cron: cron |     cron: cron | ||||||
|     encfs: encfs |     encfs: encfs | ||||||
|     dig: dnsutils |     dig: dnsutils | ||||||
|     neofetch: fastfetch |  | ||||||
|   when: ansible_pkg_mgr == "apt" |   when: ansible_pkg_mgr == "apt" | ||||||
|  |  | ||||||
|  | - name: General | Facts | Package | apt | Debian Trixie | ||||||
|  |   set_fact: | ||||||
|  |     neofetch: fastfetch | ||||||
|  |   when: ansible_pkg_mgr == "apt" and ansible_distribution_release == "trixie" | ||||||
|  |  | ||||||
| - name: General | Facts | Package | pacman | - name: General | Facts | Package | pacman | ||||||
|   set_fact: |   set_fact: | ||||||
|     locate: mlocate |     locate: mlocate | ||||||
| @@ -105,7 +109,7 @@ | |||||||
|             echo -e "******* Apt *******\n*** Update Cache ***" && |             echo -e "******* Apt *******\n*** Update Cache ***" && | ||||||
|             sudo apt update && |             sudo apt update && | ||||||
|             echo -e "\n*** Auto Remove ***" && |             echo -e "\n*** Auto Remove ***" && | ||||||
|             sudo apt autoremove {{ update_accept_var }} && |             sudo apt autoremove --purge {{ update_accept_var }} && | ||||||
|             echo -e "\n*** Clean ***" && |             echo -e "\n*** Clean ***" && | ||||||
|             sudo apt clean {{ update_accept_var }} && |             sudo apt clean {{ update_accept_var }} && | ||||||
|             echo -e "Cleaned!\n\n*** Configure DPKG ***" && |             echo -e "Cleaned!\n\n*** Configure DPKG ***" && | ||||||
| @@ -120,7 +124,7 @@ | |||||||
|             echo -e "******* Parrot *******\n*** Update Cache ***" && |             echo -e "******* Parrot *******\n*** Update Cache ***" && | ||||||
|             sudo apt update && |             sudo apt update && | ||||||
|             echo -e "\n*** Auto Remove ***" && |             echo -e "\n*** Auto Remove ***" && | ||||||
|             sudo apt autoremove {{ update_accept_var }} && |             sudo apt autoremove --purge {{ update_accept_var }} && | ||||||
|             parrot_mirrors_suck=true && |             parrot_mirrors_suck=true && | ||||||
|             while [[ $parrot_mirrors_suck ]]; do |             while [[ $parrot_mirrors_suck ]]; do | ||||||
|               unset parrot_mirrors_suck |               unset parrot_mirrors_suck | ||||||
|   | |||||||
| @@ -8,7 +8,7 @@ | |||||||
|     st_install_dir: /usr/local/src/st |     st_install_dir: /usr/local/src/st | ||||||
|     global_bin: /usr/local/bin |     global_bin: /usr/local/bin | ||||||
|     x_desktops: /usr/share/xsessions |     x_desktops: /usr/share/xsessions | ||||||
|     git_repo_http: http://{{ git_host }}/{{ git_user }}/{{ git_project }} |     git_repo_http: https://{{ git_host }}/{{ git_user }}/{{ git_project }} | ||||||
|     git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }} |     git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }} | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										57
									
								
								files/scripts/backup_system.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										57
									
								
								files/scripts/backup_system.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,57 @@ | |||||||
|  | #!/usr/bin/env bash | ||||||
|  |  | ||||||
|  | ## Variables ## | ||||||
|  |  | ||||||
|  | if [[ -z "$HOSTNAME" ]]; then | ||||||
|  | 	echo "*** Pulling Hostname From Command ***" | ||||||
|  | 	export HOSTNAME="`hostname`" | ||||||
|  | fi | ||||||
|  | if [[ -z "$HOSTNAME" ]]; then | ||||||
|  | 	echo "*** Pulling Hostname From /etc/ File ***" | ||||||
|  | 	export HOSTNAME="`cat /etc/hostname`" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | EXTRA="$1" | ||||||
|  | TAG="System" | ||||||
|  | DATE="`date "+%Y%m%d-%H%M%S"`" | ||||||
|  | BACKUP_DIR="/srv/backup" | ||||||
|  | BASENAME="Backup" | ||||||
|  | BACKUP="$BACKUP_DIR/$BASENAME.$DATE.$HOSTNAME.$TAG.zip" | ||||||
|  |  | ||||||
|  | ## Initialization ## | ||||||
|  |  | ||||||
|  | echo "*** Creating Backup Directory ***" | ||||||
|  | sudo mkdir -pv "$BACKUP_DIR" | ||||||
|  | sudo mkdir -pv "$BACKUP_DIR/TRASH" | ||||||
|  | sudo chmod -Rv 775 "$BACKUP_DIR" | ||||||
|  | sudo chown -Rv root:root "$BACKUP_DIR" | ||||||
|  |  | ||||||
|  | ## Cleanup ## | ||||||
|  |  | ||||||
|  | echo "*** Removing Old Backups ***" | ||||||
|  | cd "$BACKUP_DIR" | ||||||
|  | sudo mv -v "$BASENAME"*"$TAG"* TRASH/ | ||||||
|  | sudo rm -v TRASH/* | ||||||
|  |  | ||||||
|  | ## Main | ||||||
|  |  | ||||||
|  | echo "*** Creating backup at '$BACKUP' ***" | ||||||
|  | sudo zip -rv "$BACKUP" \ | ||||||
|  | 	/etc /var/{log,mail,spool} /srv /boot \ | ||||||
|  | 	/usr/local/etc $EXTRA \ | ||||||
|  | 	-x "/srv/backup/*" | ||||||
|  | status="$?" | ||||||
|  |  | ||||||
|  | if [[ "$status" != 0 ]]; then | ||||||
|  | 	echo "*** ERROR: Failed to create '$BACKUP', file may be incorrect. ***" | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | if [[ -e "$BACKUP" ]]; then | ||||||
|  | 	ls -alh "$BACKUP" | ||||||
|  | 	echo "*** '$BACKUP' created successfully! ***" | ||||||
|  | else | ||||||
|  | 	echo "*** '$BACKUP' not found! ***" | ||||||
|  | 	exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
|  | exit 0 | ||||||
| @@ -132,10 +132,10 @@ | |||||||
|     pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') | bool }}" |     pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') | bool }}" | ||||||
|     no_telem:   "{{ lookup('ini', 'no_telem   file={{gen_file}} default=false') | bool }}" |     no_telem:   "{{ lookup('ini', 'no_telem   file={{gen_file}} default=false') | bool }}" | ||||||
|     battery:    "{{ lookup('ini', 'battery    file={{gen_file}} default=false') | bool }}" |     battery:    "{{ lookup('ini', 'battery    file={{gen_file}} default=false') | bool }}" | ||||||
|     swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') | bool }}" |     swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') }}" | ||||||
|     swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}" |     swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}" | ||||||
|     swap_file:  "{{ lookup('ini', 'swap_file  file={{gen_file}} default=/swapfile') }}" |     swap_file:  "{{ lookup('ini', 'swap_file  file={{gen_file}} default=/swapfile') }}" | ||||||
|     sshd_port:  "{{ lookup('ini', 'sshd_port   file={{gen_file}} default=22') }}" |     sshd_port:  "{{ lookup('ini', 'sshd_port  file={{gen_file}} default=22') }}" | ||||||
|     git_host:     "{{ lookup('ini', 'git_host     file={{gen_file}} default=git.hyperling.com') }}" |     git_host:     "{{ lookup('ini', 'git_host     file={{gen_file}} default=git.hyperling.com') }}" | ||||||
|     git_user:     "{{ lookup('ini', 'git_user     file={{gen_file}} default=me') }}" |     git_user:     "{{ lookup('ini', 'git_user     file={{gen_file}} default=me') }}" | ||||||
|     git_project:  "{{ lookup('ini', 'git_project  file={{gen_file}} default=env-ansible') }}" |     git_project:  "{{ lookup('ini', 'git_project  file={{gen_file}} default=env-ansible') }}" | ||||||
| @@ -215,7 +215,7 @@ | |||||||
|     workstation: "{{ lookup('ini', 'enable  file={{wrk_file}} default=false') | bool }}" |     workstation: "{{ lookup('ini', 'enable  file={{wrk_file}} default=false') | bool }}" | ||||||
|     coding:      "{{ lookup('ini', 'coding  file={{wrk_file}} default=false') | bool }}" |     coding:      "{{ lookup('ini', 'coding  file={{wrk_file}} default=false') | bool }}" | ||||||
|     sdks:        "{{ lookup('ini', 'sdks    file={{wrk_file}} default=false') | bool }}" |     sdks:        "{{ lookup('ini', 'sdks    file={{wrk_file}} default=false') | bool }}" | ||||||
|     editing:     "{{ lookup('ini', 'editing file={{wrk_file}} default=false') | bool }}" |     editing:     "{{ lookup('ini', 'editing file={{wrk_file}} default=false') }}" | ||||||
|     gaming:      "{{ lookup('ini', 'gaming  file={{wrk_file}} default=false') | bool }}" |     gaming:      "{{ lookup('ini', 'gaming  file={{wrk_file}} default=false') | bool }}" | ||||||
|     rdp:         "{{ lookup('ini', 'rdp     file={{wrk_file}} default=false') | bool }}" |     rdp:         "{{ lookup('ini', 'rdp     file={{wrk_file}} default=false') | bool }}" | ||||||
|     vnc:         "{{ lookup('ini', 'vnc     file={{wrk_file}} default=false') | bool }}" |     vnc:         "{{ lookup('ini', 'vnc     file={{wrk_file}} default=false') | bool }}" | ||||||
|   | |||||||
| @@ -283,6 +283,19 @@ | |||||||
|       alias edit-config-wrk="sudo $EDITOR {{ wrk_file }}" |       alias edit-config-wrk="sudo $EDITOR {{ wrk_file }}" | ||||||
|       alias edit-config-mnr="sudo $EDITOR {{ mnr_file }}" |       alias edit-config-mnr="sudo $EDITOR {{ mnr_file }}" | ||||||
|       alias edit-config-srv="sudo $EDITOR {{ srv_file }}" |       alias edit-config-srv="sudo $EDITOR {{ srv_file }}" | ||||||
|  |     function_clean_trashed: | | ||||||
|  |       function clean-trashed { | ||||||
|  |         dir="$1" | ||||||
|  |         if [[ -z $dir ]]; then | ||||||
|  |           dir="./" | ||||||
|  |         fi | ||||||
|  |         cd $dir | ||||||
|  |         dir="`pwd`" | ||||||
|  |         echo "Removing '.trashed*' files in '$dir'." | ||||||
|  |         find "$dir" -name ".trashed*" -exec du -h {} \; -delete | sort -h | ||||||
|  |       } | ||||||
|  |       alias trashed-cleanup="clean-trashed" | ||||||
|  |       alias trashed-clean="clean-trashed" | ||||||
|     function_check_trash: | |     function_check_trash: | | ||||||
|       function check-trash() { |       function check-trash() { | ||||||
|         unset OPTIND |         unset OPTIND | ||||||
| @@ -378,6 +391,9 @@ | |||||||
|         fi |         fi | ||||||
|         echo "Checking but not cleaning /var/mail..." |         echo "Checking but not cleaning /var/mail..." | ||||||
|         du -ha /var/mail | sort -h |         du -ha /var/mail | sort -h | ||||||
|  |         if [[ $clean == "Y" ]]; then | ||||||
|  |           clean-trashed "~/" | ||||||
|  |         fi | ||||||
|         return 0 |         return 0 | ||||||
|       } |       } | ||||||
|       alias check_trash="check-trash" |       alias check_trash="check-trash" | ||||||
| @@ -386,18 +402,20 @@ | |||||||
|     alias_trash_clean: alias trash-clean='trash-check --clean' |     alias_trash_clean: alias trash-clean='trash-check --clean' | ||||||
|     alias_clean_dir: | |     alias_clean_dir: | | ||||||
|       function clean-dir() { |       function clean-dir() { | ||||||
|  |         sudo du -hs | ||||||
|         clean_dir="`date '+%Y%m%d_%H%M%S'`_CLEANED" |         clean_dir="`date '+%Y%m%d_%H%M%S'`_CLEANED" | ||||||
|         trash_dir="$HOME/TRASH/$clean_dir" |         trash_dir="$HOME/TRASH/$clean_dir" | ||||||
|         curr_dir="`pwd`" |         curr_dir="`pwd`" | ||||||
|         mkdir -pv "$trash_dir" |         mkdir -pv "$trash_dir" | ||||||
|         echo "$curr_dir is being cleaned at `date`." | tee "$trash_dir"/INFO.txt |         echo "$curr_dir is being cleaned at `date`." | tee "$trash_dir"/INFO.txt | ||||||
|         mv -v ..?* .[!.]* * "$trash_dir"/ | tee -a "$trash_dir"/INFO.txt |         mv -v ..?* .[!.]* * "$trash_dir"/ | tee -a "$trash_dir"/INFO.txt | ||||||
|  |         sudo du -hs | ||||||
|       } |       } | ||||||
|     function_clean: | |     function_clean: | | ||||||
|       function clean() { |       function clean() { | ||||||
|         sudo du -hs |         clean-trash | ||||||
|         clean-dir |         clean-code | ||||||
|         sudo du -hs |         clean-backups | ||||||
|       } |       } | ||||||
|     function_flatpak_usage: | |     function_flatpak_usage: | | ||||||
|       function flatpak-usage() { |       function flatpak-usage() { | ||||||
| @@ -409,6 +427,10 @@ | |||||||
|           fi |           fi | ||||||
|         done | sort -n |         done | sort -n | ||||||
|       } |       } | ||||||
|  |       alias flatpak-info="flatpak-usage" | ||||||
|  |       alias flatpak-space="flatpak-usage" | ||||||
|  |       alias flatpak-size="flatpak-usage" | ||||||
|  |       alias flatpak-sizes="flatpak-usage" | ||||||
|     function_flatpak_purge: | |     function_flatpak_purge: | | ||||||
|       function flatpak-purge() { |       function flatpak-purge() { | ||||||
|         flatpak remove --all --delete-data && |         flatpak remove --all --delete-data && | ||||||
| @@ -542,6 +564,16 @@ | |||||||
|           echo -e "\n*** `basename $project` ***" |           echo -e "\n*** `basename $project` ***" | ||||||
|           cd $project |           cd $project | ||||||
|           if [[ -d .git ]]; then |           if [[ -d .git ]]; then | ||||||
|  |             git ls-remote --exit-code --heads origin dev | ||||||
|  |             dev_exists="$?" | ||||||
|  |             if [[ "$dev_exists" == 0 ]]; then | ||||||
|  |               git switch dev | ||||||
|  |             elif [[ "$dev_exists" == 2 ]]; then | ||||||
|  |               git switch main | ||||||
|  |             else | ||||||
|  |               echo "ERROR: Unknown status for dev_exists, '$dev_exists'." | ||||||
|  |               continue | ||||||
|  |             fi | ||||||
|             git pull |             git pull | ||||||
|             git push |             git push | ||||||
|           else |           else | ||||||
| @@ -573,6 +605,11 @@ | |||||||
|           env-obtainium-hyperling dev |           env-obtainium-hyperling dev | ||||||
|           nodejs-website dev |           nodejs-website dev | ||||||
|           ebook-health-protocol dev |           ebook-health-protocol dev | ||||||
|  |           ebook-freedom-flyer dev | ||||||
|  |           ebook-technology-alternatives dev | ||||||
|  |           ebook-narcissism-healing dev | ||||||
|  |           ebook-forest-howto dev | ||||||
|  |           ebook-template main | ||||||
|           flutter-expense-tracker dev |           flutter-expense-tracker dev | ||||||
|           flutter-social-traveler-app dev |           flutter-social-traveler-app dev | ||||||
|           nodejs-social-traveler-server dev |           nodejs-social-traveler-server dev | ||||||
| @@ -585,6 +622,7 @@ | |||||||
|           android-45-minute-rule dev |           android-45-minute-rule dev | ||||||
|           android-tictactoe dev |           android-tictactoe dev | ||||||
|           hugo-jackanope dev |           hugo-jackanope dev | ||||||
|  |           hugo-website dev | ||||||
|       EOF |       EOF | ||||||
|       } |       } | ||||||
|       function code-reseed { |       function code-reseed { | ||||||
| @@ -677,6 +715,9 @@ | |||||||
|         done |         done | ||||||
|         cd |         cd | ||||||
|  |  | ||||||
|  |         echo -e "******* PDFs *******" | ||||||
|  |         find ~/Code/ebook-* -name "*.pdf" -exec du -h {} \; -delete | sort -h | ||||||
|  |  | ||||||
|         echo -e "\n*** Done! ***" |         echo -e "\n*** Done! ***" | ||||||
|       } |       } | ||||||
|       alias code-clean="clean-code" |       alias code-clean="clean-code" | ||||||
| @@ -737,10 +778,181 @@ | |||||||
|     alias_ls: | |     alias_ls: | | ||||||
|       alias l='ls' |       alias l='ls' | ||||||
|       alias ll='ls -alh' |       alias ll='ls -alh' | ||||||
|  |       alias lh='ls -ash' | ||||||
|     alias_progs: | |     alias_progs: | | ||||||
|       alias progs='ps -ef' |       alias progs='ps -ef' | ||||||
|     alias_nethogs: | |     alias_nethogs: | | ||||||
|       alias nethogs='sudo nethogs' |       alias nethogs='sudo nethogs' | ||||||
|  |     alias_ansible_facts: | | ||||||
|  |       alias ansible-facts='ansible localhost -m setup --connection=local' | ||||||
|  |     function_now: | | ||||||
|  |       function now { | ||||||
|  |         date "+%Y%m%d-%H%M%S" | ||||||
|  |       } | ||||||
|  |       function today { | ||||||
|  |         date "+%Y%m%d" | ||||||
|  |       } | ||||||
|  |     function_backup: | | ||||||
|  |       function backup { | ||||||
|  |         /usr/local/bin/backup_system.sh | ||||||
|  |       } | ||||||
|  |       alias backup-system="backup" | ||||||
|  |       alias system-backup="backup" | ||||||
|  |       alias check-backups="ll /srv/backup" | ||||||
|  |       function clean-backup { | ||||||
|  |         sh -c "rm -rfv /srv/backup/*" | ||||||
|  |       } | ||||||
|  |       alias clean-backups="clean-backup" | ||||||
|  |     function_log: | | ||||||
|  |       function log { | ||||||
|  |         echo -e "$1" | ||||||
|  |       } | ||||||
|  |       function blog { | ||||||
|  |         echo -e "\n\n$1\n\n" | ||||||
|  |       } | ||||||
|  |     function_debian_upgrade: | | ||||||
|  |       function debian-upgrade { | ||||||
|  |         typeset -l OLD NEW | ||||||
|  |         OLD="$1" | ||||||
|  |         NEW="$2" | ||||||
|  |         blog "*** Upgrading from '$OLD' to '$NEW' ***" | ||||||
|  |         if [[ -z "$OLD" || -z "$NEW" ]]; then | ||||||
|  |           echo -n "ERROR: Please pass the OLD and NEW version names" | ||||||
|  |           echo ", such as 'debian-upgrade bookworm trixie'. " | ||||||
|  |           return 1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         blog "*** Running 'backup' before starting upgrade. ***" | ||||||
|  |         sleep 1 | ||||||
|  |  | ||||||
|  |         backup | ||||||
|  |  | ||||||
|  |         blog "*** Listing the current apt listing for '$OLD' ***" | ||||||
|  |         sudo grep "$OLD" /etc/apt/sources.list /etc/apt/sources.list.d/* | ||||||
|  |  | ||||||
|  |         echo -en "\nAre these the entries you'd like changed to '$NEW'? (y/N) " | ||||||
|  |         typeset -u confirm_change | ||||||
|  |         read confirm_change | ||||||
|  |  | ||||||
|  |         if [[ -z "$confirm_change" || "$confirm_change" == "N"* ]]; then | ||||||
|  |           blog "*** Aborting upgrade, change rejected. ***" | ||||||
|  |           return 1 | ||||||
|  |         fi | ||||||
|  |         unset confirm_change | ||||||
|  |  | ||||||
|  |         blog "*** Continuing with upgrade. ***" | ||||||
|  |         sudo sed -i "s/$OLD/$NEW/g" /etc/apt/sources.list | ||||||
|  |         find /etc/apt/sources.list.d/ -name "*.list" \ | ||||||
|  |           -exec sudo sed -i "s/$OLD/$NEW/g" {} \; | ||||||
|  |         find /etc/apt/sources.list.d/ -name "*.sources" \ | ||||||
|  |           -exec sudo sed -i "s/$OLD/$NEW/g" {} \; | ||||||
|  |  | ||||||
|  |         sudo grep $OLD /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} | ||||||
|  |         sudo grep $NEW /etc/apt/sources.list /etc/apt/sources.list.d/*.{list,sources} | ||||||
|  |  | ||||||
|  |         echo -en "\nDo the source files look correct? (y/N) " | ||||||
|  |         typeset -u confirm_correct | ||||||
|  |         read confirm_correct | ||||||
|  |  | ||||||
|  |         if [[ -z "$confirm_correct" || "$confirm_correct" == "N"* ]]; then | ||||||
|  |           blog "*** Aborting upgrade, confirmation rejected. ***" | ||||||
|  |           return 1 | ||||||
|  |         fi | ||||||
|  |         unset confirm_correct | ||||||
|  |  | ||||||
|  |         blog "*** Starting the upgrade. ***" | ||||||
|  |         sleep 1 | ||||||
|  |  | ||||||
|  |         sudo apt update | ||||||
|  |         sudo apt upgrade --without-new-pkgs | ||||||
|  |  | ||||||
|  |         blog -e "*** Upgrades complete, now add new packages. ***" | ||||||
|  |         sleep 1 | ||||||
|  |         sudo apt full-upgrade | ||||||
|  |  | ||||||
|  |         blog "*** New packages complete, clean apt files. ***" | ||||||
|  |         sleep 1 | ||||||
|  |         sudo apt autoremove --purge | ||||||
|  |         sudo apt clean | ||||||
|  |  | ||||||
|  |         blog "*** All done! '$OLD' is now '$NEW'. Please reboot. ***" | ||||||
|  |         sleep 1 | ||||||
|  |         unset OLD NEW | ||||||
|  |       } | ||||||
|  |       alias upgrade-debian="debian-upgrade" | ||||||
|  |     function_ebook_convert: | | ||||||
|  |       # Regenerate all eBook projects at once. | ||||||
|  |       function ebook-convert { | ||||||
|  |         find ~/Code/ebook-* -name "*.pdf" -print -delete | ||||||
|  |         find ~/Code/ebook-* -name convert.sh -print -exec bash "{}" \; | ||||||
|  |       } | ||||||
|  |       alias ebooks="ebook-convert" | ||||||
|  |       alias convert="ebook-convert" | ||||||
|  |     alias_sudo: | | ||||||
|  |       # Allows for alias expansions when using sudo, such as doing "sudo ll". | ||||||
|  |       alias sudo="sudo " | ||||||
|  |     function_load_branch: | | ||||||
|  |       # Change a branch to point at another. | ||||||
|  |       function load-branch { | ||||||
|  |         rcvr="$1" # branch which we want to modify | ||||||
|  |         base="$2" # branch with the changes we want | ||||||
|  |  | ||||||
|  |         if [[ "$rcvr" == "main" ]]; then | ||||||
|  |           echo "*** ERROR: Are you nuts, fool!? Not main! Do it manually! ***" | ||||||
|  |           exit 1 | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         if [[ -z "$base" ]]; then | ||||||
|  |           if [[ "$rcvr" == "prod" ]]; then | ||||||
|  |             base="stage" | ||||||
|  |           elif [[ "$rcvr" == "stage" ]]; then | ||||||
|  |             base="dev" | ||||||
|  |           else | ||||||
|  |             echo "* Unsure which branch to use for '$rcvr'. Please specify." | ||||||
|  |             exit 1 | ||||||
|  |           fi | ||||||
|  |           echo "* Base was not specified, using '$base' for '$rcvr'." | ||||||
|  |         else | ||||||
|  |           echo "* Requested pointing '$rcvr' branch to '$base'." | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         echo -e "\n* Ensuring we are on base branch '$base'." && | ||||||
|  |         git switch "$base" && | ||||||
|  |         echo -e "\n* Changing pointer for '$rcvr' to '$base'." && | ||||||
|  |         git branch -f "$rcvr" "$base" && | ||||||
|  |         #echo -e "\n* Switching to branch '$rcvr'." && | ||||||
|  |         #git switch "$rcvr" && | ||||||
|  |         echo -e "\n* Forcing push on branch '$rcvr'." && | ||||||
|  |         git push --force --set-upstream origin "$rcvr" && | ||||||
|  |         echo -e "\n* Done! Displaying list of remote branches." && | ||||||
|  |         git ls-remote --heads | sort | ||||||
|  |  | ||||||
|  |         if [[ "$base" != "dev" ]]; then | ||||||
|  |           echo -e "\n* Checking if a dev branch exists." | ||||||
|  |           git ls-remote --exit-code --heads origin dev | ||||||
|  |           dev_exists="$?" | ||||||
|  |           if [[ "$dev_exists" == 0 ]]; then | ||||||
|  |             echo -e "\n* Switching back to dev." | ||||||
|  |             git switch dev | ||||||
|  |           elif [[ "$dev_exists" == 2 ]]; then | ||||||
|  |             echo -e "\n* Switching back to main." | ||||||
|  |             git switch main | ||||||
|  |           else | ||||||
|  |             echo "*** ERROR: Unknown status for dev_exists, '$dev_exists'. ***" | ||||||
|  |           fi | ||||||
|  |         fi | ||||||
|  |  | ||||||
|  |         echo -e "\n* Verifying which branch we're on." | ||||||
|  |         git branch | ||||||
|  |       } | ||||||
|  |       alias load-prod="load-branch prod" | ||||||
|  |       alias load-stage="load-branch stage" | ||||||
|  |       alias rollback-prod="load-branch prod main" | ||||||
|  |       alias rollback-stage="load-branch stage prod" | ||||||
|  |       alias rollback-dev="load-branch dev stage" | ||||||
|  |       alias reset-prod="load-branch prod main" | ||||||
|  |       alias reset-stage="load-branch stage main" | ||||||
|  |       alias reset-dev="load-branch dev main" | ||||||
|  |  | ||||||
| - name: General | Account Management | Users | Files | Common Variable | - name: General | Account Management | Users | Files | Common Variable | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -778,6 +990,7 @@ | |||||||
|       {{ metasploit_aliases }} |       {{ metasploit_aliases }} | ||||||
|       {{ show_config_aliases }} |       {{ show_config_aliases }} | ||||||
|       {{ edit_config_aliases }} |       {{ edit_config_aliases }} | ||||||
|  |       {{ function_clean_trashed }} | ||||||
|       {{ function_check_trash }} |       {{ function_check_trash }} | ||||||
|       {{ function_clean }} |       {{ function_clean }} | ||||||
|       {{ function_flatpak_usage }} |       {{ function_flatpak_usage }} | ||||||
| @@ -808,6 +1021,14 @@ | |||||||
|       {{ alias_ls }} |       {{ alias_ls }} | ||||||
|       {{ alias_progs }} |       {{ alias_progs }} | ||||||
|       {{ alias_nethogs }} |       {{ alias_nethogs }} | ||||||
|  |       {{ alias_ansible_facts }} | ||||||
|  |       {{ function_now }} | ||||||
|  |       {{ function_backup }} | ||||||
|  |       {{ function_log }} | ||||||
|  |       {{ function_debian_upgrade }} | ||||||
|  |       {{ function_ebook_convert }} | ||||||
|  |       {{ alias_sudo }} | ||||||
|  |       {{ function_load_branch }} | ||||||
|  |  | ||||||
| - name: General | Account Management | Users | Files | .bashrc | - name: General | Account Management | Users | Files | .bashrc | ||||||
|   blockinfile: |   blockinfile: | ||||||
|   | |||||||
| @@ -1,12 +1,18 @@ | |||||||
| --- | --- | ||||||
| # Jobs relating to the ansible user. | # Jobs relating to the ansible user. | ||||||
|  |  | ||||||
|  | # $RANDOM is anywhere from 0 to 32767 in BASH. This would be up to ~9 hours. | ||||||
|  | # $RANDOM /  10 can be up to about 3200 seconds, or ~55 minutes. | ||||||
|  | # $RANDOM /  20 can be up to about 1600 seconds, or ~27 minutes. | ||||||
|  | # $RANDOM /  50 can be up to about  650 seconds, or ~11 minutes. | ||||||
|  | # $RANDOM / 100 can be up to about  320 seconds, or  ~5 minutes. | ||||||
|  | # This prevents multiple systems from hitting it at the exact same time. | ||||||
| - name: General | Cron | Ansible | Create Subscriber Job | - name: General | Cron | Ansible | Create Subscriber Job | ||||||
|   cron: |   cron: | ||||||
|     user: ansible |     user: ansible | ||||||
|     name: "Ansible Sync" |     name: "Ansible Sync" | ||||||
|     minute: "*/30" |     minute: "*/30" | ||||||
|     job: "sudo {{ ansible_pull_exec.stdout }} -o -U {{ git_repo_http }} --checkout {{ branch }}" |     job: "bash -c 'sleep $(( $RANDOM / 20 )); sudo {{ ansible_pull_exec.stdout }} -v -o -U {{ git_repo_http }} --checkout {{ branch }}'" | ||||||
|     state: present |     state: present | ||||||
|     disabled: "{{ 'yes' if no_telem else 'no' }}" |     disabled: "{{ 'yes' if no_telem else 'no' }}" | ||||||
|  |  | ||||||
| @@ -14,7 +20,7 @@ | |||||||
|   cron: |   cron: | ||||||
|     user: ansible |     user: ansible | ||||||
|     name: "Ansible Weekly Forced Sync" |     name: "Ansible Weekly Forced Sync" | ||||||
|     special_time: weekly |     special_time: daily | ||||||
|     job: "{{ user_root.home }}/bin/scm.sh" |     job: "bash -c 'sleep $(( $RANDOM /  1 )); sudo {{ ansible_pull_exec.stdout }} -v    -U {{ git_repo_http }} --checkout {{ branch }}'" | ||||||
|     state: present |     state: present | ||||||
|     disabled: "{{ 'yes' if no_telem else 'no' }}" |     disabled: "{{ 'yes' if no_telem else 'no' }}" | ||||||
|   | |||||||
| @@ -9,6 +9,11 @@ | |||||||
|     pattern: "{{ crond_pattern }}" |     pattern: "{{ crond_pattern }}" | ||||||
|     state: started |     state: started | ||||||
|     enabled: yes |     enabled: yes | ||||||
|  |   when: ansible_virtualization_type != 'docker' | ||||||
|  |   register: cron_status | ||||||
|  |   until: cron_status.state == "started" | ||||||
|  |   retries: 3 | ||||||
|  |   delay: 3 | ||||||
|  |  | ||||||
|  |  | ||||||
| ## CUPS ## | ## CUPS ## | ||||||
| @@ -76,6 +81,11 @@ | |||||||
|     pattern: "{{ sshd_pattern }}" |     pattern: "{{ sshd_pattern }}" | ||||||
|     state: reloaded |     state: reloaded | ||||||
|     enabled: yes |     enabled: yes | ||||||
|  |   when: ansible_virtualization_type != 'docker' | ||||||
|  |   register: sshd_status | ||||||
|  |   until: sshd_status.state == "started" | ||||||
|  |   retries: 3 | ||||||
|  |   delay: 3 | ||||||
|  |  | ||||||
|  |  | ||||||
| ## JournalCTL ## | ## JournalCTL ## | ||||||
| @@ -105,3 +115,15 @@ | |||||||
|     pattern: "{{ ntp_server }}" |     pattern: "{{ ntp_server }}" | ||||||
|     state: started |     state: started | ||||||
|     enabled: yes |     enabled: yes | ||||||
|  |   when: ansible_virtualization_type != 'docker' | ||||||
|  |   register: ntp_status | ||||||
|  |   until: ntp_status.state == "started" | ||||||
|  |   retries: 3 | ||||||
|  |   delay: 3 | ||||||
|  |  | ||||||
|  | ## Timezone ## | ||||||
|  |  | ||||||
|  | # TBD/TODO: | ||||||
|  | # Add a field to general.yml config file which gets applied via timedatectl and /etc/localtime. | ||||||
|  | # Example of what to do to file: | ||||||
|  | #    /etc/localtime -> ../usr/share/zoneinfo/America/Phoenix | ||||||
|   | |||||||
| @@ -8,9 +8,9 @@ | |||||||
|     amdgpu_cron_cmd: "{{ root_home.stdout }}/scm.sh" |     amdgpu_cron_cmd: "{{ root_home.stdout }}/scm.sh" | ||||||
|  |  | ||||||
| - name: Miner | Driver | AMDGPU | Install Dependencies | - name: Miner | Driver | AMDGPU | Install Dependencies | ||||||
|   package:  |   package: | ||||||
|     name:  |     name: | ||||||
|       - dkms  |       - dkms | ||||||
|       - mesa-common-dev |       - mesa-common-dev | ||||||
|       - clinfo |       - clinfo | ||||||
|     state: present |     state: present | ||||||
| @@ -62,16 +62,16 @@ | |||||||
|  |  | ||||||
| ## Step 1/3: Get Correct Kernel ## | ## Step 1/3: Get Correct Kernel ## | ||||||
| - name: Miner | Driver | AMDGPU | Install Recommended GA Kernel | - name: Miner | Driver | AMDGPU | Install Recommended GA Kernel | ||||||
|   shell: apt install --install-recommends linux-generic  |   shell: apt install --install-recommends linux-generic | ||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed | ||||||
|  |  | ||||||
| - name: Miner | Driver | AMDGPU | Install Specific GA Kernel For Booting | - name: Miner | Driver | AMDGPU | Install Specific GA Kernel For Booting | ||||||
|   package: |   package: | ||||||
|     name:  |     name: | ||||||
|       - linux-headers-5.4.0-65  |       - linux-headers-5.4.0-65 | ||||||
|       - linux-headers-5.4.0-65-generic  |       - linux-headers-5.4.0-65-generic | ||||||
|       - linux-headers-generic  |       - linux-headers-generic | ||||||
|       - linux-image-generic  |       - linux-image-generic | ||||||
|       - linux-modules-extra-5.4.0-65-generic |       - linux-modules-extra-5.4.0-65-generic | ||||||
|     state: present |     state: present | ||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" and ga_kernel.failed | ||||||
| @@ -121,10 +121,10 @@ | |||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" | ||||||
|  |  | ||||||
| - name: Miner | Driver | AMDGPU | Update + Clean System | - name: Miner | Driver | AMDGPU | Update + Clean System | ||||||
|   shell: "apt update; apt dist-upgrade -y; apt autoremove -y" |   shell: "apt update; apt dist-upgrade -y; apt autoremove --purge -y" | ||||||
|   when: amdgpu_install.failed and hwe_kernel.stdout != "0" |   when: amdgpu_install.failed and hwe_kernel.stdout != "0" | ||||||
|  |  | ||||||
| # This is to ensure we can test adding `apt install --install-recommends linux-generic` later  | # This is to ensure we can test adding `apt install --install-recommends linux-generic` later | ||||||
| - name: Miner | Driver | AMDGPU | Boot Default Kernel | - name: Miner | Driver | AMDGPU | Boot Default Kernel | ||||||
|   lineinfile: |   lineinfile: | ||||||
|     path: /etc/default/grub |     path: /etc/default/grub | ||||||
|   | |||||||
| @@ -34,19 +34,20 @@ | |||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays | - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays | ||||||
|   set_fact: |   set_fact: | ||||||
|     flatpaks_generic: |     flatpaks_generic: | ||||||
|       - { app: "org.libreoffice.LibreOffice", name: "office", extra: "" } |  | ||||||
|       - { app: "io.gitlab.librewolf-community", name: "librewolf", extra: "" } |  | ||||||
|       - { app: "org.signal.Signal", name: "signal", extra: "" } |  | ||||||
|       - { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } |       - { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } | ||||||
|       - { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" } |       - { app: "io.gitlab.librewolf-community", name: "librewolf", extra: "" } | ||||||
|       - { app: "org.gimp.GIMP", name: "gimp", extra: "" } |       - { app: "chat.simplex.simplex", name: "simplex", extra: "" } | ||||||
|  |       - { app: "org.signal.Signal", name: "signal", extra: "" } | ||||||
|  |       - { app: "im.riot.Riot", name: "element", extra: "" } | ||||||
|       - { app: "org.telegram.desktop", name: "telegram", extra: "" } |       - { app: "org.telegram.desktop", name: "telegram", extra: "" } | ||||||
|  |       - { app: "org.gimp.GIMP", name: "gimp", extra: "" } | ||||||
|  |       - { app: "org.libreoffice.LibreOffice", name: "office", extra: "" } | ||||||
|  |       - { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" } | ||||||
|     flatpaks_coding: |     flatpaks_coding: | ||||||
|       - { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" } |       - { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" } | ||||||
|       - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" } |       - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" } | ||||||
|       - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" } |       - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" } | ||||||
|       - { app: "org.godotengine.Godot", name: "godot", extra: "" } |       - { app: "com.visualstudio.code-oss", name: "code-flatpak", extra: "" } | ||||||
|       - { app: "com.visualstudio.code-oss", name: "code", extra: "" } |  | ||||||
|     flatpaks_editing_video: |     flatpaks_editing_video: | ||||||
|       - { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" } |       - { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" } | ||||||
|       - { app: "com.obsproject.Studio", name: "obs", extra: "" } |       - { app: "com.obsproject.Studio", name: "obs", extra: "" } | ||||||
| @@ -68,13 +69,13 @@ | |||||||
|       - { app: "org.audacityteam.Audacity", name: "audacity", extra: "" } # Say "no thanks" to spyware. |       - { app: "org.audacityteam.Audacity", name: "audacity", extra: "" } # Say "no thanks" to spyware. | ||||||
|       - { app: "com.discordapp.Discord", name: "discord", extra: "" } # Stopped working, just spins and says Starting. |       - { app: "com.discordapp.Discord", name: "discord", extra: "" } # Stopped working, just spins and says Starting. | ||||||
|       # 2022-11-20 No longer using any of these and they're taking up a lot of space. # |       # 2022-11-20 No longer using any of these and they're taking up a lot of space. # | ||||||
|       - { app: "im.riot.Riot", name: "element", extra: "" } |  | ||||||
|       - { app: "com.jetbrains.PyCharm-Community", name: "pycharm", extra: "" } |       - { app: "com.jetbrains.PyCharm-Community", name: "pycharm", extra: "" } | ||||||
|       # End 2022-11-20 # |       # End 2022-11-20 # | ||||||
|       - { app: "io.lbry.lbry-app", name: "lbry", extra: "dbus-launch" } # No longer supported, noticed 2023-09-01. |       - { app: "io.lbry.lbry-app", name: "lbry", extra: "dbus-launch" } # No longer supported, noticed 2023-09-01. | ||||||
|       - { app: "chat.delta.desktop", name: "deltachat", extra: "" } # No longer used, removed 2023-12-18. |       - { app: "chat.delta.desktop", name: "deltachat", extra: "" } # No longer used, removed 2023-12-18. | ||||||
|       - { app: "org.gnome.Geary", name: "geary", extra: "" } # No longer used, removed 2024-12-15 |       - { app: "org.gnome.Geary", name: "geary", extra: "" } # No longer used, removed 2024-12-15 | ||||||
|       - { app: "org.rncbc.qsynth", name: "qsynth", extra: "" } # 2024-12-15, Not worth the setup, use LMMS or VMPK. |       - { app: "org.rncbc.qsynth", name: "qsynth", extra: "" } # 2024-12-15, Not worth the setup, use LMMS or VMPK. | ||||||
|  |       - { app: "org.godotengine.Godot", name: "godot", extra: "" } # 20250831 Stopped playing with this months / years ago. | ||||||
|  |  | ||||||
| # Generic # | # Generic # | ||||||
|  |  | ||||||
|   | |||||||
| @@ -13,7 +13,6 @@ | |||||||
|                       , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' |                       , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' | ||||||
|                       , 'org.mozilla.firefox.desktop', 'firefox.desktop' |                       , 'org.mozilla.firefox.desktop', 'firefox.desktop' | ||||||
|                       , 'org.signal.Signal.desktop', 'signal-desktop.desktop' |                       , 'org.signal.Signal.desktop', 'signal-desktop.desktop' | ||||||
|                       , 'im.riot.Riot.desktop' |  | ||||||
|                       , 'org.telegram.desktop.desktop' |                       , 'org.telegram.desktop.desktop' | ||||||
|                       , 'com.discordapp.Discord.desktop' |                       , 'com.discordapp.Discord.desktop' | ||||||
|                       , 'com.vscodium.codium.desktop' |                       , 'com.vscodium.codium.desktop' | ||||||
| @@ -39,6 +38,9 @@ | |||||||
| #, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop' | #, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop' | ||||||
| # 2025-03-21 Not really using Android Studio now that Flutter is working. | # 2025-03-21 Not really using Android Studio now that Flutter is working. | ||||||
| #, 'com.google.AndroidStudio.desktop' | #, 'com.google.AndroidStudio.desktop' | ||||||
|  | # 2025-08-31 Not used a whole lot, installed again just to explore. | ||||||
|  | #, 'im.riot.Riot.desktop' | ||||||
|  | #, 'chat.simplex.simplex.desktop' | ||||||
|  |  | ||||||
| - name: Workstation | Account Management | GNOME | Facts (NixOS) | - name: Workstation | Account Management | GNOME | Facts (NixOS) | ||||||
|   set_fact: |   set_fact: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user