Compare commits
	
		
			19 Commits
		
	
	
		
			prod
			...
			8829d1d574
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8829d1d574 | |||
| 1b10ee0cbe | |||
| 734bc70c1d | |||
| 5b67610fca | |||
| cb27764a5b | |||
| b8e5382601 | |||
| a985059401 | |||
| 1a83508f90 | |||
| 38882a9940 | |||
| 040e37e2d8 | |||
| 8c0dd0f96c | |||
| ee73f5321a | |||
| bd5f44f4a0 | |||
| 2b743dbff6 | |||
| 76bdc4660f | |||
| f659b2482b | |||
| 47be01ed29 | |||
| ff8af7f799 | |||
| 598c2bb15f | 
| @@ -6,11 +6,6 @@ | |||||||
|   set_fact: |   set_fact: | ||||||
|     sshfs: sshfs |     sshfs: sshfs | ||||||
|     tar: tar |     tar: tar | ||||||
|     iftop: iftop |  | ||||||
|     nethogs: nethogs |  | ||||||
|     ntp_server: chrony |  | ||||||
|     dig: dig |  | ||||||
|     neofetch: neofetch |  | ||||||
|  |  | ||||||
| - name: General | Facts | Packages | Parrot OS Fixes | - name: General | Facts | Packages | Parrot OS Fixes | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -26,14 +21,8 @@ | |||||||
|     microcode_intel: intel-microcode |     microcode_intel: intel-microcode | ||||||
|     cron: cron |     cron: cron | ||||||
|     encfs: encfs |     encfs: encfs | ||||||
|     dig: dnsutils |  | ||||||
|   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 | ||||||
| @@ -106,39 +95,30 @@ | |||||||
|       case $pkg_mgr in |       case $pkg_mgr in | ||||||
|         apt) |         apt) | ||||||
|           if [[ $distribution != "ParrotOS" ]]; then |           if [[ $distribution != "ParrotOS" ]]; then | ||||||
|             echo -e "******* Apt *******\n*** Update Cache ***" && |             echo "*** Apt ***" && | ||||||
|             sudo apt update && |             sudo apt update && | ||||||
|             echo -e "\n*** Auto Remove ***" && |             sudo apt autoremove {{ update_accept_var }} && | ||||||
|             sudo apt autoremove --purge {{ update_accept_var }} && |  | ||||||
|             echo -e "\n*** Clean ***" && |  | ||||||
|             sudo apt clean {{ update_accept_var }} && |             sudo apt clean {{ update_accept_var }} && | ||||||
|             echo -e "Cleaned!\n\n*** Configure DPKG ***" && |  | ||||||
|             sudo dpkg --configure -a && |             sudo dpkg --configure -a && | ||||||
|             echo -e "\n*** Fix Broken/Missing ***" && |  | ||||||
|             sudo apt --fix-broken --fix-missing install && |             sudo apt --fix-broken --fix-missing install && | ||||||
|             echo -e "\n*** Upgrade ***" && |  | ||||||
|             sudo apt dist-upgrade --allow-downgrades --fix-broken \ |             sudo apt dist-upgrade --allow-downgrades --fix-broken \ | ||||||
|               --fix-missing {{ update_accept_var }} || |               --fix-missing {{ update_accept_var }} || | ||||||
|             return 1 |             return 1 | ||||||
|           else |           else | ||||||
|             echo -e "******* Parrot *******\n*** Update Cache ***" && |             echo "*** Parrot ***" | ||||||
|             sudo apt update && |             sudo apt update && | ||||||
|             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 | ||||||
|               echo -e "\n*** Upgrade ***" |  | ||||||
|               sudo parrot-upgrade |               sudo parrot-upgrade | ||||||
|               if [[ $? != 0 ]]; then |               if [[ $? != 0 ]]; then | ||||||
|                 parrot_mirrors_suck=true |                 parrot_mirrors_suck=true | ||||||
|                 echo -e "*** Update Cache, Again ***" |  | ||||||
|                 sudo apt update --fix-missing |                 sudo apt update --fix-missing | ||||||
|               fi |               fi | ||||||
|             done || |             done || | ||||||
|             return 1 |             return 1 | ||||||
|           fi |           fi | ||||||
|           echo -e "\n******* Mission Complete!! *******" |  | ||||||
|         ;; |         ;; | ||||||
|  |  | ||||||
|         pacman) |         pacman) | ||||||
|   | |||||||
| @@ -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: https://{{ git_host }}/{{ git_user }}/{{ git_project }} |     git_repo_http: http://{{ 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 }} | ||||||
|  |  | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,57 +0,0 @@ | |||||||
| #!/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 |  | ||||||
| @@ -34,12 +34,9 @@ function usage() { | |||||||
|  |  | ||||||
| 		Parameters: | 		Parameters: | ||||||
| 		  -s SIZE : Integer for the maximum length of either image dimension. | 		  -s SIZE : Integer for the maximum length of either image dimension. | ||||||
| 		            Default size is 2000. |  | ||||||
| 		  -l LOCATION : The specific image or folder which needs images shrunk. | 		  -l LOCATION : The specific image or folder which needs images shrunk. | ||||||
| 		                Default location is the current directory. |  | ||||||
| 		  -r : Recursively shrink images based on the location passed. | 		  -r : Recursively shrink images based on the location passed. | ||||||
| 		  -f : Force the image to be shrunk even if a file already exists for it. | 		  -f : Force the image to be shrunk even if a file already exists for it. | ||||||
| 		  -F : FORCE the image to be shrunk even if the file is already shrunk. |  | ||||||
| 		  -d : Delete the original image if the compressed image is smaller. | 		  -d : Delete the original image if the compressed image is smaller. | ||||||
| 		  -c : Clean the filename of underscores, dashes, 'IMG', etc. | 		  -c : Clean the filename of underscores, dashes, 'IMG', etc. | ||||||
| 		  -A : Resursively Force, Delete, and Clean. | 		  -A : Resursively Force, Delete, and Clean. | ||||||
| @@ -51,17 +48,15 @@ function usage() { | |||||||
|  |  | ||||||
| ## Parameters ## | ## Parameters ## | ||||||
|  |  | ||||||
| while getopts ":s:l:rfFdcAhx" opt; do | while getopts ":s:l:rfdcAhx" opt; do | ||||||
| 	case $opt in | 	case $opt in | ||||||
| 		s) in_size="$OPTARG" && size="$in_size" ;; | 		s) in_size="$OPTARG" && size="$in_size" ;; | ||||||
| 		l) location="$OPTARG" ;; | 		l) location="$OPTARG" ;; | ||||||
| 		r) recurse="Y" && search="find" ;; | 		r) recurse="Y" && search="find" ;; | ||||||
| 		f) force="Y" ;; | 		f) force="Y" ;; | ||||||
| 		F) super_force="Y" ;; |  | ||||||
| 		d) delete="Y" ;; | 		d) delete="Y" ;; | ||||||
| 		c) clean="Y" ;; | 		c) clean="Y" ;; | ||||||
| 		e) expand="Y" ;; | 		A) recurse="Y" && search="find" && force="Y" && delete="Y" && clean="Y" ;; | ||||||
| 		A) recurse="Y" && search="find" && force="Y" && delete="Y" && expand="Y" ;; |  | ||||||
| 		h) usage 0 ;; | 		h) usage 0 ;; | ||||||
| 		x) set -x ;; | 		x) set -x ;; | ||||||
| 		*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;; | 		*) echo "ERROR: Option $OPTARG not recognized." >&2 && usage 1 ;; | ||||||
| @@ -75,7 +70,7 @@ if [[ -n "$in_size" && "$size" != "$in_size" ]]; then | |||||||
| 	usage 1 | 	usage 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
| convert_exe="`which convert` -strip" | convert_exe="`which convert`" | ||||||
| if [[ "$convert_exe" == "" ]]; then | if [[ "$convert_exe" == "" ]]; then | ||||||
| 	echo "ERROR: 'convert' command could not be found, " | 	echo "ERROR: 'convert' command could not be found, " | ||||||
| 	echo "please install 'imagemagick'." | 	echo "please install 'imagemagick'." | ||||||
| @@ -95,8 +90,8 @@ $search "$location" | sort | while read image; do | |||||||
| 	# Avoid processing directories no matter the name. | 	# Avoid processing directories no matter the name. | ||||||
| 	[ -d "$image" ] && continue | 	[ -d "$image" ] && continue | ||||||
|  |  | ||||||
| 	# Avoid processing files previously shrunk, unless we are FORCEing. | 	# Avoid processing files previously shrunk. | ||||||
| 	[[ "$image" == *"$tag"* && -z "$super_force" ]] && continue | 	[[ "$image" == *"$tag"* ]] && continue | ||||||
|  |  | ||||||
| 	echo -e "\n$image" | 	echo -e "\n$image" | ||||||
|  |  | ||||||
| @@ -111,7 +106,8 @@ $search "$location" | sort | while read image; do | |||||||
| 		continue | 		continue | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$size.$extension" |  | ||||||
|  | 	new_image="${image//.$extension/}.$tag-$date_YYYYMMDD.$extension" | ||||||
|  |  | ||||||
| 	## Clean Filename ## | 	## Clean Filename ## | ||||||
| 	# Prevent directory from having its name cleaned too. | 	# Prevent directory from having its name cleaned too. | ||||||
| @@ -124,31 +120,13 @@ $search "$location" | sort | while read image; do | |||||||
| 	new_image_clean="${new_image_clean//-/}" | 	new_image_clean="${new_image_clean//-/}" | ||||||
| 	new_image_clean="${new_image_clean// /}" | 	new_image_clean="${new_image_clean// /}" | ||||||
|  |  | ||||||
| 	## Expanded Filename ## | 	# Add directory back to the full path. | ||||||
| 	# Add back in the dashes so that the year, month, date, and time are exposed. |  | ||||||
| 	TEMP="$new_image_clean" |  | ||||||
| 	# Date Data |  | ||||||
| 	new_image_exp="${TEMP:0:4}-${TEMP:4:2}-${TEMP:6:2}" |  | ||||||
| 	# Time Data |  | ||||||
| 	new_image_exp="${new_image_exp}_${TEMP:8:2}-${TEMP:10:2}-${TEMP:12:2}" |  | ||||||
| 	# Remainder Data |  | ||||||
| 	if [[ "${TEMP:14:1}" == "." ]]; then |  | ||||||
| 		SEP="" |  | ||||||
| 	else |  | ||||||
| 		SEP="_" |  | ||||||
| 	fi |  | ||||||
| 	new_image_exp="${new_image_exp}${SEP}${TEMP:14}" |  | ||||||
| 	unset TEMP SEP |  | ||||||
|  |  | ||||||
| 	# Add directory back to the full paths. |  | ||||||
| 	new_image_clean="$image_dirname/$new_image_clean" | 	new_image_clean="$image_dirname/$new_image_clean" | ||||||
| 	new_image_exp="$image_dirname/$new_image_exp" |  | ||||||
|  |  | ||||||
| 	# Delete the existing shrunk image if we are forcing a new compression. | 	# Delete the existing shrunk image if we are forcing a new compression. | ||||||
| 	if [[ -n "$force" && | 	if [[ -n "$force" && (-e "$new_image" || -e $new_image_clean) ]]; then | ||||||
| 			(-e "$new_image" || -e $new_image_clean || -e $new_image_exp ) ]]; then |  | ||||||
| 		echo -n "  FORCE: " | 		echo -n "  FORCE: " | ||||||
| 		rm -v "$new_image" "$new_image_clean" "$new_image_exp" 2>/dev/null | 		rm -v "$new_image" "$new_image_clean" 2>/dev/null | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# Skip if a compressed image was already created today. | 	# Skip if a compressed image was already created today. | ||||||
| @@ -157,14 +135,10 @@ $search "$location" | sort | while read image; do | |||||||
| 		continue | 		continue | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# Whether or not to use the cleaned version. | 	# Whether or not to use the cleaned version or the normal version. | ||||||
| 	if [[ -n $clean ]]; then | 	if [[ -n $clean ]]; then | ||||||
| 		new_image="$new_image_clean" | 		new_image="$new_image_clean" | ||||||
| 	# Whether or not to use the expanded version. |  | ||||||
| 	elif [[ -n $expand ]]; then |  | ||||||
| 		new_image="$new_image_exp" |  | ||||||
| 	fi | 	fi | ||||||
| 	# Otherwise uses the same name as before. |  | ||||||
|  |  | ||||||
| 	###### TBD Instead of this, only alter the file names, and set a dirname var? | 	###### TBD Instead of this, only alter the file names, and set a dirname var? | ||||||
| 	#### Create a new directory if the directory names were altered. | 	#### Create a new directory if the directory names were altered. | ||||||
|   | |||||||
| @@ -32,14 +32,7 @@ function usage { | |||||||
| 		  -i input : The input file or folder with which to search for video files. | 		  -i input : The input file or folder with which to search for video files. | ||||||
| 		             If nothing is provided, current directory (.) is assumed. | 		             If nothing is provided, current directory (.) is assumed. | ||||||
| 		  -v bitrate : The video bitrate to convert to. | 		  -v bitrate : The video bitrate to convert to. | ||||||
| 		               Defaults are based on the size passed. | 		               Defaults to '2000k'. | ||||||
| 		                 >= 2160:   '30M' |  | ||||||
| 		                 >= 1440:   '12M' |  | ||||||
| 		                 >= 1080:    '5M' |  | ||||||
| 		                 >=  720: '2000k' |  | ||||||
| 		                 >=  480:  '750k' |  | ||||||
| 		                 >=  360:  '250k' |  | ||||||
| 		                  <  360:  '100k' |  | ||||||
| 		  -a bitrate : The audio bitrate to convert to. | 		  -a bitrate : The audio bitrate to convert to. | ||||||
| 		               Defaults to '192k'. | 		               Defaults to '192k'. | ||||||
| 		  -c vcodec : The video codec you'd like to use, such as libopenh264. | 		  -c vcodec : The video codec you'd like to use, such as libopenh264. | ||||||
| @@ -48,8 +41,7 @@ function usage { | |||||||
| 		  -r : Recurse the entire directory structure, compressing all video files. | 		  -r : Recurse the entire directory structure, compressing all video files. | ||||||
| 		  -f : Force recompressing any files by deleting it if it already exists. | 		  -f : Force recompressing any files by deleting it if it already exists. | ||||||
| 		  -d : Delete the original video if the compressed version is smaller. | 		  -d : Delete the original video if the compressed version is smaller. | ||||||
| 		  -l : Clean the filename of dashes and underscores so dates line up. | 		  -A : Recursively Force and Delete. | ||||||
| 		  -A : Recursively Force, Delete, and Clean. |  | ||||||
| 		  -m : Measure the time it takes to compress each video and do the loop. | 		  -m : Measure the time it takes to compress each video and do the loop. | ||||||
| 		  -V : Add verbosity, such as printing all the variable values. | 		  -V : Add verbosity, such as printing all the variable values. | ||||||
| 		  -x : Set the shell's x flag to display every action which is taken. | 		  -x : Set the shell's x flag to display every action which is taken. | ||||||
| @@ -60,7 +52,7 @@ function usage { | |||||||
|  |  | ||||||
| ## Parameters ## | ## Parameters ## | ||||||
|  |  | ||||||
| while getopts ":i:v:a:c:s:rfdlAmVxh" opt; do | while getopts ":i:v:a:c:s:rfdAmVxh" opt; do | ||||||
| 	case $opt in | 	case $opt in | ||||||
| 		i) input="$OPTARG" | 		i) input="$OPTARG" | ||||||
| 			;; | 			;; | ||||||
| @@ -78,9 +70,7 @@ while getopts ":i:v:a:c:s:rfdlAmVxh" opt; do | |||||||
| 			;; | 			;; | ||||||
| 		d) delete="Y" | 		d) delete="Y" | ||||||
| 			;; | 			;; | ||||||
| 		l) clean="Y" | 		A) search_command="find" && force="Y" && delete="Y" | ||||||
| 			;; |  | ||||||
| 		A) search_command="find" && force="Y" && delete="Y" #&& clean="Y" |  | ||||||
| 			;; | 			;; | ||||||
| 		m) time_command="`which time`" | 		m) time_command="`which time`" | ||||||
| 			;; | 			;; | ||||||
| @@ -105,44 +95,14 @@ if [[ -z "$input" ]]; then | |||||||
| 	input="." | 	input="." | ||||||
| fi | fi | ||||||
|  |  | ||||||
| if [[ -z $size ]]; then |  | ||||||
| 	size="720" |  | ||||||
| fi |  | ||||||
| typeset -i size_int |  | ||||||
| size_int="$size" |  | ||||||
|  |  | ||||||
| # Ensure the filenames sort properly between 3 and 4 digit resolutions. |  | ||||||
| while (( ${#size} < 4 )); do |  | ||||||
|     size="0$size" |  | ||||||
| done |  | ||||||
| compress_tags="$size" |  | ||||||
| size="-filter:v scale=-2:$size" |  | ||||||
|  |  | ||||||
| if [[ -z "$video_bitrate" ]]; then | if [[ -z "$video_bitrate" ]]; then | ||||||
| 	# Based roughly on the 2.5 step iteration used for 720 and 1080. | 	video_bitrate="2000k" | ||||||
| 	if (( size_int >= 2160 )); then |  | ||||||
| 		video_bitrate="30M" |  | ||||||
| 	elif (( size_int >= 1440 )); then |  | ||||||
| 		video_bitrate="12M" |  | ||||||
| 	elif (( size_int >= 1080 )); then |  | ||||||
| 		video_bitrate="5M" |  | ||||||
| 	elif (( size_int >= 720 )); then |  | ||||||
| 		video_bitrate="2000k" |  | ||||||
| 	elif (( size_int >= 480 )); then |  | ||||||
| 		video_bitrate="750k" |  | ||||||
| 	elif (( size_int >= 360 )); then |  | ||||||
| 		video_bitrate="250k" |  | ||||||
| 	else |  | ||||||
| 		video_bitrate="100k" |  | ||||||
| 	fi |  | ||||||
| fi | fi | ||||||
| compress_tags="$compress_tags-$video_bitrate" |  | ||||||
| video_bitrate="-b:v $video_bitrate -minrate 0 -maxrate $video_bitrate -bufsize $video_bitrate" | video_bitrate="-b:v $video_bitrate -minrate 0 -maxrate $video_bitrate -bufsize $video_bitrate" | ||||||
|  |  | ||||||
| if [[ -z "$audio_bitrate" ]]; then | if [[ -z "$audio_bitrate" ]]; then | ||||||
| 	audio_bitrate="192k" | 	audio_bitrate="192k" | ||||||
| fi | fi | ||||||
| compress_tags="$compress_tags-$audio_bitrate" |  | ||||||
| audio_bitrate="-b:a $audio_bitrate" | audio_bitrate="-b:a $audio_bitrate" | ||||||
|  |  | ||||||
| if [[ -z "$codec" ]]; then | if [[ -z "$codec" ]]; then | ||||||
| @@ -161,6 +121,11 @@ else | |||||||
| 	time_command="$time_command -p" | 	time_command="$time_command -p" | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | if [[ -z $size ]]; then | ||||||
|  | 	size="720" | ||||||
|  | fi | ||||||
|  | size="-filter:v scale=-1:$size" | ||||||
|  |  | ||||||
| ## Main ## | ## Main ## | ||||||
|  |  | ||||||
| if [[ "$verbose" == "Y" ]]; then | if [[ "$verbose" == "Y" ]]; then | ||||||
| @@ -207,41 +172,26 @@ $search_command "$input" | sort | while read file; do | |||||||
| 	# Build the new filename to signify it is different than the original. | 	# Build the new filename to signify it is different than the original. | ||||||
| 	newfile="${file//$extension/$filename_flag-$date_YYYYMMDD.$extension_lower}" | 	newfile="${file//$extension/$filename_flag-$date_YYYYMMDD.$extension_lower}" | ||||||
|  |  | ||||||
| 	# Add the size, video, and audio quality it was converted to. |  | ||||||
| 	newfile="${newfile//\.$extension_lower/_$compress_tags.$extension_lower}" |  | ||||||
|  |  | ||||||
| 	if [[ $newfile == $file ]]; then | 	if [[ $newfile == $file ]]; then | ||||||
| 		echo "ERROR: The new calculated filename matches the old, skipping." >&2 | 		echo "ERROR: The new calculated filename matches the old, skipping." >&2 | ||||||
| 		continue | 		continue | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# TBD / TODO: Test this functionality! |  | ||||||
| 	new_video_clean="${newfile}" |  | ||||||
| 	new_video_clean="${new_video_clean//_/}" |  | ||||||
| 	new_video_clean="${new_video_clean//-/}" |  | ||||||
| 	new_video_clean="${new_video_clean// /}" |  | ||||||
|  |  | ||||||
| 	# More exception checks based on the new file. | 	# More exception checks based on the new file. | ||||||
| 	if [[ -e "$newfile" || -e "$new_video_clean" ]]; then | 	if [[ -e "$newfile" ]]; then | ||||||
| 		if [[ "$force" == "Y" ]]; then | 		if [[ "$force" == "Y" ]]; then | ||||||
| 			echo "FORCE: Removing '$newfile'." | 			echo "FORCE: Removing '$newfile'." | ||||||
| 			if [[ -d ~/TRASH ]]; then | 			if [[ -d ~/TRASH ]]; then | ||||||
| 				mv -v "$newfile" "$new_video_clean" ~/TRASH/ 2>/dev/null | 				mv -v "$newfile" ~/TRASH/ | ||||||
| 			else | 			else | ||||||
| 				rm -v "$newfile" "$new_video_clean" 2>/dev/null | 				rm -v "$newfile" | ||||||
| 			fi | 			fi | ||||||
| 		else | 		else | ||||||
| 			echo "SKIP: Already has a compressed version." | 			echo "SKIP: Already has a compressed version ($newfile)." | ||||||
| 			ls -sh "$newfile" "$new_video_clean" 2>/dev/null |  | ||||||
| 			continue | 			continue | ||||||
| 		fi | 		fi | ||||||
| 	fi | 	fi | ||||||
|  |  | ||||||
| 	# Whether or not to use the cleaned version or the normal version. |  | ||||||
| 	if [[ -n $clean ]]; then |  | ||||||
| 		newfile="$new_video_clean" |  | ||||||
| 	fi |  | ||||||
|  |  | ||||||
| 	# Convert the file. | 	# Convert the file. | ||||||
| 	echo "Converting to '$newfile'." | 	echo "Converting to '$newfile'." | ||||||
| 	echo "*** `date` ***" | 	echo "*** `date` ***" | ||||||
|   | |||||||
| @@ -3,7 +3,6 @@ | |||||||
| 	"save_loc1": "~/.var/app/com.visualstudio.code-oss/config/Code - OSS/{{ user_desc }}/settings.json", | 	"save_loc1": "~/.var/app/com.visualstudio.code-oss/config/Code - OSS/{{ user_desc }}/settings.json", | ||||||
| 	"save_loc2": "~/.var/app/com.vscodium.codium/config/VSCodium/{{ user_desc }}/settings.json", | 	"save_loc2": "~/.var/app/com.vscodium.codium/config/VSCodium/{{ user_desc }}/settings.json", | ||||||
| 	"END_COMMENTS": "", | 	"END_COMMENTS": "", | ||||||
|  |  | ||||||
| 	"workbench.startupEditor": "none", | 	"workbench.startupEditor": "none", | ||||||
| 	"editor.rulers": [ | 	"editor.rulers": [ | ||||||
| 		 80, 120, 200 | 		 80, 120, 200 | ||||||
| @@ -12,17 +11,5 @@ | |||||||
| 	"editor.tabSize": 3, | 	"editor.tabSize": 3, | ||||||
| 	"editor.insertSpaces": false, | 	"editor.insertSpaces": false, | ||||||
| 	"files.insertFinalNewline": true, | 	"files.insertFinalNewline": true, | ||||||
| 	"[html]": { | 	"files.trimFinalNewlines": true | ||||||
| 		"files.insertFinalNewline": false |  | ||||||
| 	}, |  | ||||||
| 	"files.trimFinalNewlines": true, |  | ||||||
| 	"git.confirmSync": false, |  | ||||||
|  |  | ||||||
|     "[dart]": { |  | ||||||
|         "editor.formatOnSave": true, |  | ||||||
|         "editor.formatOnType": true, |  | ||||||
|         "editor.selectionHighlight": false, |  | ||||||
|         "editor.tabCompletion": "onlySnippets", |  | ||||||
|         "editor.wordBasedSuggestions": "off" |  | ||||||
|     } |  | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										13
									
								
								local.yml
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								local.yml
									
									
									
									
									
								
							| @@ -75,6 +75,7 @@ | |||||||
|       - include_tasks: tasks/general/software/sendmail.yml |       - include_tasks: tasks/general/software/sendmail.yml | ||||||
|         when: ansible_system == "FreeBSD" |         when: ansible_system == "FreeBSD" | ||||||
|  |  | ||||||
|  |  | ||||||
|       # Gather again in case missing programs have now been installed. |       # Gather again in case missing programs have now been installed. | ||||||
|       - include_tasks: facts/general/gather.yml |       - include_tasks: facts/general/gather.yml | ||||||
|  |  | ||||||
| @@ -123,12 +124,6 @@ | |||||||
|       - include_tasks: tasks/workstation/linux/software/packages.yml |       - include_tasks: tasks/workstation/linux/software/packages.yml | ||||||
|         when: ansible_system == "Linux" |         when: ansible_system == "Linux" | ||||||
|  |  | ||||||
|       - include_tasks: tasks/workstation/linux/software/lutris.yml |  | ||||||
|         when: ansible_system == "Linux" |  | ||||||
|  |  | ||||||
|       - include_tasks: tasks/workstation/linux/software/vscodium.yml |  | ||||||
|         when: ansible_system == "Linux" |  | ||||||
|  |  | ||||||
|       - include_tasks: tasks/workstation/linux/software/brave.yml |       - include_tasks: tasks/workstation/linux/software/brave.yml | ||||||
|         when: ansible_pkg_mgr in ("apt", "dnf", "zypper") and not mobile |         when: ansible_pkg_mgr in ("apt", "dnf", "zypper") and not mobile | ||||||
|  |  | ||||||
| @@ -159,12 +154,6 @@ | |||||||
|       - include_tasks: tasks/workstation/shared/settings/services.yml |       - include_tasks: tasks/workstation/shared/settings/services.yml | ||||||
|  |  | ||||||
|       # Final Tasks (SLOW) # |       # Final Tasks (SLOW) # | ||||||
|       - include_tasks: tasks/workstation/linux/software/flutter.yml |  | ||||||
|         when: ansible_system == "Linux" |  | ||||||
|  |  | ||||||
|       - include_tasks: tasks/workstation/linux/software/android.yml |  | ||||||
|         when: ansible_system == "Linux" |  | ||||||
|  |  | ||||||
|       - include_tasks: tasks/workstation/linux/software/flatpaks.yml |       - include_tasks: tasks/workstation/linux/software/flatpaks.yml | ||||||
|         when: ansible_system == "Linux" and flatpak_distro |         when: ansible_system == "Linux" and flatpak_distro | ||||||
|  |  | ||||||
|   | |||||||
| @@ -35,11 +35,11 @@ | |||||||
|       ; |       ; | ||||||
|       ;       user : Provide the name of the user account. |       ;       user : Provide the name of the user account. | ||||||
|       ;                Example: tom, jerry, kim, sarah |       ;                Example: tom, jerry, kim, sarah | ||||||
|       ;                Default: user |       ;                Default: ling | ||||||
|       ; |       ; | ||||||
|       ;  user_desc : Provide the description of the user account. |       ;  user_desc : Provide the description of the user account. | ||||||
|       ;                Example: Thomas, Jerry, Kimberly, Sarah |       ;                Example: Thomas, Jerry, Kimberly, Sarah | ||||||
|       ;                Default: User |       ;                Default: Hyperling | ||||||
|       ; |       ; | ||||||
|       ;  sshd_port : Determine the port which SSHD should listen on. |       ;  sshd_port : Determine the port which SSHD should listen on. | ||||||
|       ;                Example: 12345 |       ;                Example: 12345 | ||||||
| @@ -101,22 +101,6 @@ | |||||||
|       ;            Slows down the rate of services such as telegraf and cron. |       ;            Slows down the rate of services such as telegraf and cron. | ||||||
|       ;              Default: false |       ;              Default: false | ||||||
|       ; |       ; | ||||||
|       ;;;;;;;;;;;;;;;;;;;;         Server Shortcut          ;;;;;;;;;;;;;;;;;;;; |  | ||||||
|       ; |  | ||||||
|       ; For typing `prod` and getting straight to a server, like in env-termux. |  | ||||||
|       ; |  | ||||||
|       ; prod_host : Branch to use on this machine. |  | ||||||
|       ;               Example: myserver.com, mywebhost.net |  | ||||||
|       ;               Default: hyperling.com |  | ||||||
|       ; |  | ||||||
|       ; prod_port : Provide the git host that the machine should poll. |  | ||||||
|       ;               Example: 22, 222, 2222 |  | ||||||
|       ;               Default: 22 |  | ||||||
|       ; |  | ||||||
|       ; prod_user : Port of the server host to use for SSH requests. |  | ||||||
|       ;               Example: jim, bob, jeff, anne |  | ||||||
|       ;               Default: user |  | ||||||
|       ; |  | ||||||
|       [global] |       [global] | ||||||
|     marker: '; {mark} MANAGED BY ANSIBLE | Generic Config' |     marker: '; {mark} MANAGED BY ANSIBLE | Generic Config' | ||||||
|     state: present |     state: present | ||||||
| @@ -125,24 +109,21 @@ | |||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | General | Load | - name: General | Account Management | Provisioning Configuration | General | Load | ||||||
|   set_fact: |   set_fact: | ||||||
|     provision:  "{{ lookup('ini', 'enable     file={{gen_file}} default=false') | bool }}" |     provision:  "{{ lookup('ini', 'enable     file={{gen_file}} default=false') }}" | ||||||
|     user:       "{{ lookup('ini', 'user       file={{gen_file}} default=ling') }}" |     user:       "{{ lookup('ini', 'user       file={{gen_file}} default=ling') }}" | ||||||
|     user_desc:  "{{ lookup('ini', 'user_desc  file={{gen_file}} default=Hyperling') }}" |     user_desc:  "{{ lookup('ini', 'user_desc  file={{gen_file}} default=Hyperling') }}" | ||||||
|     branch:     "{{ lookup('ini', 'branch     file={{gen_file}} default=main') }}" |     branch:     "{{ lookup('ini', 'branch     file={{gen_file}} default=main') }}" | ||||||
|     pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') | bool }}" |     pentesting: "{{ lookup('ini', 'pentesting file={{gen_file}} default=false') }}" | ||||||
|     no_telem:   "{{ lookup('ini', 'no_telem   file={{gen_file}} default=false') | bool }}" |     no_telem:   "{{ lookup('ini', 'no_telem   file={{gen_file}} default=false') }}" | ||||||
|     battery:    "{{ lookup('ini', 'battery    file={{gen_file}} default=false') | bool }}" |     battery:    "{{ lookup('ini', 'battery    file={{gen_file}} default=false') }}" | ||||||
|     swap_block: "{{ lookup('ini', 'swap_block file={{gen_file}} default=false') }}" |     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') }}" | ||||||
|     git_ssh_port: "{{ lookup('ini', 'git_ssh_port file={{gen_file}} default=22') }}" |     git_ssh_port: "{{ lookup('ini', 'git_ssh_port file={{gen_file}} default=22') }}" | ||||||
|     prod_host: "{{ lookup('ini', 'prod_host   file={{gen_file}} default=hyperling.com') }}" |  | ||||||
|     prod_port: "{{ lookup('ini', 'prod_port   file={{gen_file}} default=22') }}" |  | ||||||
|     prod_user: "{{ lookup('ini', 'prod_user   file={{gen_file}} default=user') }}" |  | ||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | General | List | - name: General | Account Management | Provisioning Configuration | General | List | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -163,9 +144,6 @@ | |||||||
|     - { 'git_user': "{{ git_user }}" } |     - { 'git_user': "{{ git_user }}" } | ||||||
|     - { 'git_project': "{{ git_project }}" } |     - { 'git_project': "{{ git_project }}" } | ||||||
|     - { 'git_ssh_port': "{{ git_ssh_port }}" } |     - { 'git_ssh_port': "{{ git_ssh_port }}" } | ||||||
|     - { 'prod_host': "{{ prod_host }}" } |  | ||||||
|     - { 'prod_port': "{{ prod_port }}" } |  | ||||||
|     - { 'prod_user': "{{ prod_user }}" } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Workstation ## | ## Workstation ## | ||||||
| @@ -179,13 +157,8 @@ | |||||||
|       ;  enable : Set to true for system to be considered a workstation. |       ;  enable : Set to true for system to be considered a workstation. | ||||||
|       ; |       ; | ||||||
|       ;  coding : Set to true for installation of code editors (VSCode, PyCharm, Android Studio) |       ;  coding : Set to true for installation of code editors (VSCode, PyCharm, Android Studio) | ||||||
|       ;  - sdks : Set to true to download additional SDKs to test against. |  | ||||||
|       ; |       ; | ||||||
|       ; editing : Set to true for installation of Audio/Video editors (Shotcut, Audacity, OBS Stdio, GIMP) |       ; editing : Set to true for installation of Audio/Video editors (Shotcut, Audacity, OBS Stdio, GIMP) | ||||||
|       ;           Set to video for only the video related portions. |  | ||||||
|       ;             - Shotcut, OpenShot, OBS Studio, etc. |  | ||||||
|       ;           Set to audio for only the music related portions. |  | ||||||
|       ;             - Audacity (or similar), LMMS, VMPK, etc. |  | ||||||
|       ; |       ; | ||||||
|       ;  gaming : Set to true for installation of gaming software (Steam, Lutris) |       ;  gaming : Set to true for installation of gaming software (Steam, Lutris) | ||||||
|       ; |       ; | ||||||
| @@ -201,9 +174,6 @@ | |||||||
|       ;  mobile : Set to true if not using an amd64 processor. |       ;  mobile : Set to true if not using an amd64 processor. | ||||||
|       ;             Also used to disable tasks not helpful for Pinephone. |       ;             Also used to disable tasks not helpful for Pinephone. | ||||||
|       ; |       ; | ||||||
|       ; redmode : Set to true/false for automatially using Night Light in GNOME. |  | ||||||
|       ;             Default: true |  | ||||||
|       ; |  | ||||||
|       [global] |       [global] | ||||||
|     marker: '; {mark} MANAGED BY ANSIBLE | Workstation Config' |     marker: '; {mark} MANAGED BY ANSIBLE | Workstation Config' | ||||||
|     state: present |     state: present | ||||||
| @@ -212,16 +182,14 @@ | |||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Workstation | Load | - name: General | Account Management | Provisioning Configuration | Workstation | Load | ||||||
|   set_fact: |   set_fact: | ||||||
|     workstation: "{{ lookup('ini', 'enable  file={{wrk_file}} default=false') | bool }}" |     workstation: "{{ lookup('ini', 'enable  file={{wrk_file}} default=false') }}" | ||||||
|     coding:      "{{ lookup('ini', 'coding  file={{wrk_file}} default=false') | bool }}" |     coding:      "{{ lookup('ini', 'coding  file={{wrk_file}} default=false') }}" | ||||||
|     sdks:        "{{ lookup('ini', 'sdks    file={{wrk_file}} default=false') | bool }}" |  | ||||||
|     editing:     "{{ lookup('ini', 'editing file={{wrk_file}} default=false') }}" |     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') }}" | ||||||
|     rdp:         "{{ lookup('ini', 'rdp     file={{wrk_file}} default=false') | bool }}" |     rdp:         "{{ lookup('ini', 'rdp     file={{wrk_file}} default=false') }}" | ||||||
|     vnc:         "{{ lookup('ini', 'vnc     file={{wrk_file}} default=false') | bool }}" |     vnc:         "{{ lookup('ini', 'vnc     file={{wrk_file}} default=false') }}" | ||||||
|     bsd_gpu:     "{{ lookup('ini', 'bsd_gpu file={{wrk_file}} default=false') | bool }}" |     bsd_gpu:     "{{ lookup('ini', 'bsd_gpu file={{wrk_file}} default=false') }}" | ||||||
|     mobile:      "{{ lookup('ini', 'mobile  file={{wrk_file}} default=false') | bool }}" |     mobile:      "{{ lookup('ini', 'mobile  file={{wrk_file}} default=false') }}" | ||||||
|     redmode:     "{{ lookup('ini', 'redmode file={{wrk_file}} default=true' ) | bool }}" |  | ||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Workstation | List | - name: General | Account Management | Provisioning Configuration | Workstation | List | ||||||
|   set_fact: |   set_fact: | ||||||
| @@ -229,14 +197,12 @@ | |||||||
|   loop: |   loop: | ||||||
|     - { 'workstation': "{{ workstation }}" } |     - { 'workstation': "{{ workstation }}" } | ||||||
|     - { 'coding': "{{ coding }}" } |     - { 'coding': "{{ coding }}" } | ||||||
|     - { 'sdks': "{{ sdks }}" } |  | ||||||
|     - { 'editing': "{{ editing }}" } |     - { 'editing': "{{ editing }}" } | ||||||
|     - { 'gaming': "{{ gaming }}" } |     - { 'gaming': "{{ gaming }}" } | ||||||
|     - { 'rdp': "{{ rdp }}" } |     - { 'rdp': "{{ rdp }}" } | ||||||
|     - { 'vnc': "{{ vnc }}" } |     - { 'vnc': "{{ vnc }}" } | ||||||
|     - { 'bsd_gpu': "{{ bsd_gpu }}" } |     - { 'bsd_gpu': "{{ bsd_gpu }}" } | ||||||
|     - { 'mobile': "{{ mobile }}" } |     - { 'mobile': "{{ mobile }}" } | ||||||
|     - { 'redmode': "{{ redmode }}" } |  | ||||||
|  |  | ||||||
| # No longer mining, this is now considered deprecated. | # No longer mining, this is now considered deprecated. | ||||||
| ### Miner ## | ### Miner ## | ||||||
| @@ -288,18 +254,18 @@ | |||||||
| # | # | ||||||
| #- name: General | Account Management | Provisioning Configuration | Miner | Load | #- name: General | Account Management | Provisioning Configuration | Miner | Load | ||||||
| #  set_fact: | #  set_fact: | ||||||
| #    miner:              "{{ lookup('ini', 'enable             file={{mnr_file}} default=false') | bool }}" | #    miner:              "{{ lookup('ini', 'enable             file={{mnr_file}} default=false') }}" | ||||||
| #    amdgpu:             "{{ lookup('ini', 'amdgpu             file={{mnr_file}} default=false') | bool }}" | #    amdgpu:             "{{ lookup('ini', 'amdgpu             file={{mnr_file}} default=false') }}" | ||||||
| #    nanominer:          "{{ lookup('ini', 'nanominer          file={{mnr_file}} default=false') | bool }}" | #    nanominer:          "{{ lookup('ini', 'nanominer          file={{mnr_file}} default=false') }}" | ||||||
| #    nanominer_cpu:      "{{ lookup('ini', 'nanominer_cpu      file={{mnr_file}} default=false') | bool }}" | #    nanominer_cpu:      "{{ lookup('ini', 'nanominer_cpu      file={{mnr_file}} default=false') }}" | ||||||
| #    nanominer_cpu_pool: "{{ lookup('ini', 'nanominer_cpu_pool file={{mnr_file}} default=false') | bool }}" | #    nanominer_cpu_pool: "{{ lookup('ini', 'nanominer_cpu_pool file={{mnr_file}} default=false') }}" | ||||||
| #    nanominer_gpu:      "{{ lookup('ini', 'nanominer_gpu      file={{mnr_file}} default=false') | bool }}" | #    nanominer_gpu:      "{{ lookup('ini', 'nanominer_gpu      file={{mnr_file}} default=false') }}" | ||||||
| #    nanominer_gpus:     "{{ lookup('ini', 'nanominer_gpus     file={{mnr_file}} default=false') | bool }}" | #    nanominer_gpus:     "{{ lookup('ini', 'nanominer_gpus     file={{mnr_file}} default=false') }}" | ||||||
| #    nanominer_gpu_pool: "{{ lookup('ini', 'nanominer_gpu_pool file={{mnr_file}} default=false') | bool }}" | #    nanominer_gpu_pool: "{{ lookup('ini', 'nanominer_gpu_pool file={{mnr_file}} default=false') }}" | ||||||
| #    eth_minhashrate:    "{{ lookup('ini', 'eth_minhashrate    file={{mnr_file}} default=false') | bool }}" | #    eth_minhashrate:    "{{ lookup('ini', 'eth_minhashrate    file={{mnr_file}} default=false') }}" | ||||||
| #    ethminer:           "{{ lookup('ini', 'ethminer           file={{mnr_file}} default=false') | bool }}" | #    ethminer:           "{{ lookup('ini', 'ethminer           file={{mnr_file}} default=false') }}" | ||||||
| #    nvidia:             "{{ lookup('ini', 'nvidia             file={{mnr_file}} default=false') | bool }}" | #    nvidia:             "{{ lookup('ini', 'nvidia             file={{mnr_file}} default=false') }}" | ||||||
| #    xmr_stak_cpu:       "{{ lookup('ini', 'xmr_stak_cpu       file={{mnr_file}} default=false') | bool }}" | #    xmr_stak_cpu:       "{{ lookup('ini', 'xmr_stak_cpu       file={{mnr_file}} default=false') }}" | ||||||
| # | # | ||||||
| #- name: General | Account Management | Provisioning Configuration | Miner | List | #- name: General | Account Management | Provisioning Configuration | Miner | List | ||||||
| #  set_fact: | #  set_fact: | ||||||
| @@ -357,14 +323,14 @@ | |||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Server | Load | - name: General | Account Management | Provisioning Configuration | Server | Load | ||||||
|   set_fact: |   set_fact: | ||||||
|     server:     "{{ lookup('ini', 'enable     file={{srv_file}} default=false') | bool }}" |     server:     "{{ lookup('ini', 'enable     file={{srv_file}} default=false') }}" | ||||||
|     domain:     "{{ lookup('ini', 'domain     file={{srv_file}} default=hyperling.com') }}" |     domain:     "{{ lookup('ini', 'domain     file={{srv_file}} default=hyperling.com') }}" | ||||||
|     onlyoffice: "{{ lookup('ini', 'onlyoffice file={{srv_file}} default=false') | bool }}" |     onlyoffice: "{{ lookup('ini', 'onlyoffice file={{srv_file}} default=false') }}" | ||||||
|     grafana:    "{{ lookup('ini', 'grafana    file={{srv_file}} default=false') | bool }}" |     grafana:    "{{ lookup('ini', 'grafana    file={{srv_file}} default=false') }}" | ||||||
|     influxdb1:  "{{ lookup('ini', 'influxdb1  file={{srv_file}} default=false') | bool }}" |     influxdb1:  "{{ lookup('ini', 'influxdb1  file={{srv_file}} default=false') }}" | ||||||
|     influxdb2:  "{{ lookup('ini', 'influxdb2  file={{srv_file}} default=false') | bool }}" |     influxdb2:  "{{ lookup('ini', 'influxdb2  file={{srv_file}} default=false') }}" | ||||||
|     certbot:    "{{ lookup('ini', 'certbot    file={{srv_file}} default=false') | bool }}" |     certbot:    "{{ lookup('ini', 'certbot    file={{srv_file}} default=false') }}" | ||||||
|     hugo:       "{{ lookup('ini', 'hugo       file={{srv_file}} default=false') | bool }}" |     hugo:       "{{ lookup('ini', 'hugo       file={{srv_file}} default=false') }}" | ||||||
|  |  | ||||||
| - name: General | Account Management | Provisioning Configuration | Server | List | - name: General | Account Management | Provisioning Configuration | Server | List | ||||||
|   set_fact: |   set_fact: | ||||||
|   | |||||||
| @@ -100,6 +100,7 @@ | |||||||
|     mode: '0755' |     mode: '0755' | ||||||
|   loop: |   loop: | ||||||
|     - "{{ user_user.home }}/bin" |     - "{{ user_user.home }}/bin" | ||||||
|  |     - "{{ user_user.home }}/LBRY" | ||||||
|     - "{{ user_user.home }}/TRASH" |     - "{{ user_user.home }}/TRASH" | ||||||
|     - "{{ user_user.home }}/Downloads" |     - "{{ user_user.home }}/Downloads" | ||||||
|     - "{{ user_user.home }}/Reports" |     - "{{ user_user.home }}/Reports" | ||||||
| @@ -157,27 +158,26 @@ | |||||||
|     function_update: | |     function_update: | | ||||||
|       function update() { |       function update() { | ||||||
|         PROG=$FUNCNAME |         PROG=$FUNCNAME | ||||||
|         usage="Usage: $PROG [-y] [-g] [-s] [-f] |         usage="Usage: $PROG [-y] | ||||||
|         $PROG is used to run all the system's package manager commands |         $PROG is used to run all the system's package manager commands | ||||||
|           in one swoop. Flow stops if any command returns a failure code. |           in one swoop. Flow stops if any command returns a failure code. | ||||||
|           The hope is to run something as easy as 'pacman -Syyu'. |           The hope is to run something as easy as 'pacman -Syyu'. | ||||||
|         -y : Assume yes to any prompts. |         -y : Assume yes to any prompts. | ||||||
|         -g : Goodbye - Shutdown after updating. |         -g : Shutdown after updating. | ||||||
|         -s : System updates only, no Flatpaks. |         -s : System updates only, no Flatpaks. | ||||||
|         -f : Flatpaks only, no system updates." |         -f : Flatpaks only, no system updates." | ||||||
|  |  | ||||||
|         unset OPTIND |         unset OPTIND | ||||||
|         unset accept |         unset accept | ||||||
|         unset shutdown |         unset goodbye | ||||||
|         unset only_sys |         unset only_sys | ||||||
|         unset only_flat |         unset only_flat | ||||||
|  |  | ||||||
|         while getopts ":hygsf" opt; do |         while getopts ":hygsf" opt; do | ||||||
|             case $opt in |             case $opt in | ||||||
|               h) echo -e "$usage" |               h) echo -e "$usage" | ||||||
|                 return 0 ;; |                 return 0 ;; | ||||||
|               y) accept="-y" ;; |               y) accept="-y" ;; | ||||||
|               g) shutdown="Y" ;; |               g) goodbye="Y" ;; | ||||||
|               s) only_sys="Y" ;; |               s) only_sys="Y" ;; | ||||||
|               f) only_flat="Y" ;; |               f) only_flat="Y" ;; | ||||||
|               *) echo "ERROR: -$OPTARG is not a recognized option." >&2 |               *) echo "ERROR: -$OPTARG is not a recognized option." >&2 | ||||||
| @@ -192,7 +192,7 @@ | |||||||
|           {{ update_package_manager }} |           {{ update_package_manager }} | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
|         if [[ "$shutdown" == "Y" && "{{ battery }}" == "True" ]]; then |         if [[ "$goodbye" == "Y" && "{{ battery }}" == "True" ]]; then | ||||||
|           echo -e "\n*** Only System Updates - Skipping Flatpak ***\n\n" |           echo -e "\n*** Only System Updates - Skipping Flatpak ***\n\n" | ||||||
|         elif [[ "$only_sys" == "Y" ]]; then |         elif [[ "$only_sys" == "Y" ]]; then | ||||||
|           echo -e "\n*** Manually Skipping Flatpak ***\n\n" |           echo -e "\n*** Manually Skipping Flatpak ***\n\n" | ||||||
| @@ -202,8 +202,7 @@ | |||||||
|  |  | ||||||
|         echo "*** Completed Successfully ***" |         echo "*** Completed Successfully ***" | ||||||
|  |  | ||||||
|         if [[ $shutdown == "Y" ]]; then |         if [[ $goodbye == "Y" ]]; then | ||||||
|           shopt -s expand_aliases |  | ||||||
|           bye |           bye | ||||||
|         fi |         fi | ||||||
|  |  | ||||||
| @@ -235,8 +234,6 @@ | |||||||
|         echo "*** Completed Successfully ***" |         echo "*** Completed Successfully ***" | ||||||
|         return 0 |         return 0 | ||||||
|       } |       } | ||||||
|       alias firmware-update="update-firmware" |  | ||||||
|       alias firmware-updater="update-firmware" |  | ||||||
|     alias_sync: alias sync='date && echo "Syncing!" && sync && date' |     alias_sync: alias sync='date && echo "Syncing!" && sync && date' | ||||||
|     export_editor: export EDITOR='vi' |     export_editor: export EDITOR='vi' | ||||||
|     init_aliases: | |     init_aliases: | | ||||||
| @@ -254,12 +251,8 @@ | |||||||
|       ' |       ' | ||||||
|       alias init-prog=init-program |       alias init-prog=init-program | ||||||
|     bye_aliases: | |     bye_aliases: | | ||||||
|       function bye { |       alias bye="{{ shutdown_command }}" | ||||||
|         {{ shutdown_command }} |       alias goodbye="update -yg" | ||||||
|       } |  | ||||||
|       function goodbye { |  | ||||||
|         update -yg |  | ||||||
|       } |  | ||||||
|     metasploit_aliases: | |     metasploit_aliases: | | ||||||
|       alias metasploit="msfconsole" |       alias metasploit="msfconsole" | ||||||
|       alias hax="metasploit" |       alias hax="metasploit" | ||||||
| @@ -283,38 +276,21 @@ | |||||||
|       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 | ||||||
|         unset clean |         unset clean | ||||||
|         unset network |         unset network | ||||||
|         du_params="-ha" |  | ||||||
|         while (( $# > 0 )); do |         while (( $# > 0 )); do | ||||||
|           case $1 in |           case $1 in | ||||||
|             -c | -y | --clean ) |             -c | -y | --clean ) | ||||||
|               clean="Y" ;; |               clean="Y" ;; | ||||||
|             -n | -net | --network ) |             -n | -net | --network ) | ||||||
|               network="Y" ;; |               network="Y" ;; | ||||||
|             -s | -sum | --summarize ) |  | ||||||
|               du_params="-sh" ;; |  | ||||||
|             * ) |             * ) | ||||||
|               echo " |               echo " | ||||||
|                 ERROR: Option '$1' with value '$2' not recognized. |                 ERROR: Option '$1' with value '$2' not recognized. | ||||||
|                 $PROG [-c | -y | --clean] [-n | -net | --network] \ |                 $PROG [-c|-y|--clean] [-n|-net|--network] | ||||||
|                 [-s | -sum | --summarize] |  | ||||||
|               " >&2 |               " >&2 | ||||||
|               return 1 |               return 1 | ||||||
|               ;; |               ;; | ||||||
| @@ -342,8 +318,8 @@ | |||||||
|           echo "Checking $dir..." |           echo "Checking $dir..." | ||||||
|           $sudo find $dir -name TRASH | while read trash; do |           $sudo find $dir -name TRASH | while read trash; do | ||||||
|             if [[ "$trash" != "" && `$sudo ls -a $trash` ]]; then |             if [[ "$trash" != "" && `$sudo ls -a $trash` ]]; then | ||||||
|               echo "Found $trash:" |               echo "Found $trash with contents:" | ||||||
|               $sudo du $du_params $trash | sort -h |               $sudo du -ha $trash | sort -h | ||||||
|               if [[ "$clean" == "Y" ]]; then |               if [[ "$clean" == "Y" ]]; then | ||||||
|                 echo "Cleaning trash..." |                 echo "Cleaning trash..." | ||||||
|                 $sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" |                 $sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" | ||||||
| @@ -352,8 +328,8 @@ | |||||||
|           done |           done | ||||||
|           $sudo find $dir $maxdepth -name "*"Trash"*" | while read trash; do |           $sudo find $dir $maxdepth -name "*"Trash"*" | while read trash; do | ||||||
|             if [[ "$trash" != "" && `$sudo ls -a $trash` ]]; then |             if [[ "$trash" != "" && `$sudo ls -a $trash` ]]; then | ||||||
|               echo "Found $trash:" |               echo "Found $trash with contents:" | ||||||
|               $sudo du $du_params $trash | sort -h |               $sudo du -ha $trash | sort -h | ||||||
|               if [[ "$clean" == "Y" ]]; then |               if [[ "$clean" == "Y" ]]; then | ||||||
|                 echo "Cleaning trash..." |                 echo "Cleaning trash..." | ||||||
|                 $sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" |                 $sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" | ||||||
| @@ -369,8 +345,8 @@ | |||||||
|             echo "Checking $dir..." |             echo "Checking $dir..." | ||||||
|             sudo find $dir -name TRASH | while read trash; do |             sudo find $dir -name TRASH | while read trash; do | ||||||
|               if [[ "$trash" != "" && `sudo ls -a $trash` ]]; then |               if [[ "$trash" != "" && `sudo ls -a $trash` ]]; then | ||||||
|                 echo "Found $trash:" |                 echo "Found $trash with contents:" | ||||||
|                 sudo du $du_params $trash | sort -h |                 sudo du -ha $trash | sort -h | ||||||
|                 if [[ "$clean" == "Y" ]]; then |                 if [[ "$clean" == "Y" ]]; then | ||||||
|                   echo "Cleaning trash..." |                   echo "Cleaning trash..." | ||||||
|                   sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" |                   sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" | ||||||
| @@ -379,8 +355,8 @@ | |||||||
|             done |             done | ||||||
|             sudo find $dir -name .Trash"*" | while read trash; do |             sudo find $dir -name .Trash"*" | while read trash; do | ||||||
|               if [[ "$trash" != "" && `sudo ls -a $trash` ]]; then |               if [[ "$trash" != "" && `sudo ls -a $trash` ]]; then | ||||||
|                 echo "Found $trash:" |                 echo "Found $trash with contents:" | ||||||
|                 sudo du $du_params $trash | sort -h |                 sudo du -ha $trash | sort -h | ||||||
|                 if [[ "$clean" == "Y" ]]; then |                 if [[ "$clean" == "Y" ]]; then | ||||||
|                   echo "Cleaning trash..." |                   echo "Cleaning trash..." | ||||||
|                   sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" |                   sudo sh -c "cd $trash; rm -rfv ..?* .[!.]* *" | ||||||
| @@ -391,9 +367,6 @@ | |||||||
|         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" | ||||||
| @@ -402,20 +375,18 @@ | |||||||
|     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() { | ||||||
|         clean-trash |         sudo du -hs | ||||||
|         clean-code |         clean-dir | ||||||
|         clean-backups |         sudo du -hs | ||||||
|       } |       } | ||||||
|     function_flatpak_usage: | |     function_flatpak_usage: | | ||||||
|       function flatpak-usage() { |       function flatpak-usage() { | ||||||
| @@ -427,10 +398,6 @@ | |||||||
|           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 && | ||||||
| @@ -442,65 +409,23 @@ | |||||||
|       } |       } | ||||||
|     alias_vim: alias vi=vim |     alias_vim: alias vi=vim | ||||||
|     alias_here: alias here='ls -alh `pwd`/*' |     alias_here: alias here='ls -alh `pwd`/*' | ||||||
|     function_docker_reload: | |     alias_docker_reload: | | ||||||
|       function docker-reload() { |       alias docker-reload=' | ||||||
|         if [[ "$1" == "-h" || "$1" == "--help" ]]; then |  | ||||||
|           cat <<- EOF |  | ||||||
|             Usage: docker-reload [container_name] |  | ||||||
|             Providing the container name starts a log follow after the command. |  | ||||||
|             A reload is characterized by a DOWN, BUILD, and UP. |  | ||||||
|       EOF |  | ||||||
|           return 0 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         docker compose down && |         docker compose down && | ||||||
|         docker compose build && |         docker compose build && | ||||||
|         docker compose up -d |         docker compose up -d | ||||||
|  |       ' | ||||||
|         if [[ -n "$1" ]]; then |     alias_docker_update: | | ||||||
|           echo "Following logs of '$1':" |       alias docker-update=' | ||||||
|           docker logs -f $1 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         return 0 |  | ||||||
|       } |  | ||||||
|     function_docker_update: | |  | ||||||
|       function docker-update() { |  | ||||||
|         if [[ "$1" == "-h" || "$1" == "--help" ]]; then |  | ||||||
|           cat <<- EOF |  | ||||||
|             Usage: docker-update [container_name] |  | ||||||
|             Providing the container name starts a log follow after the command. |  | ||||||
|             An update is characterized by a DOWN, PULL, BUILD, and UP. |  | ||||||
|       EOF |  | ||||||
|           return 0 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         docker compose down && |         docker compose down && | ||||||
|         docker compose pull && |         docker compose pull && | ||||||
|         docker compose build && |         docker compose build && | ||||||
|         docker compose up -d |         docker compose up -d | ||||||
|  |       ' | ||||||
|         if [[ -n "$1" ]]; then |  | ||||||
|           echo "Following logs of '$1':" |  | ||||||
|           docker logs -f $1 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         return 0 |  | ||||||
|       } |  | ||||||
|     function_docker_upgrade: | |     function_docker_upgrade: | | ||||||
|       function docker-upgrade() { |       function docker-upgrade() { | ||||||
|         # Wrapper for a full-scale upgrade and log view of a container. |         # Wrapper for a full-scale upgrade and log view of a container. | ||||||
|  |         # Paramaters: | ||||||
|         if [[ "$1" == "-h" || "$1" == "--help" ]]; then |  | ||||||
|           cat <<- EOF |  | ||||||
|             Usage: docker-upgrade [container_name] |  | ||||||
|             Providing the container name starts a log follow after the command. |  | ||||||
|             An upgrade is characterized by a DOWN, PULL, BUILD, and UP. |  | ||||||
|       EOF |  | ||||||
|           return 0 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         # Parameters: |  | ||||||
|         #   1) Container ID or Container Name, as seen in 'docker ps' command. |         #   1) Container ID or Container Name, as seen in 'docker ps' command. | ||||||
|         container=$1 |         container=$1 | ||||||
|         if [[ -z $container ]]; then |         if [[ -z $container ]]; then | ||||||
| @@ -530,59 +455,22 @@ | |||||||
|         echo "*** Following Log ***" && |         echo "*** Following Log ***" && | ||||||
|           echo "Press ^C to escape." && |           echo "Press ^C to escape." && | ||||||
|           docker logs -f $container |           docker logs -f $container | ||||||
|  |  | ||||||
|         return 0 |  | ||||||
|       } |  | ||||||
|     function_docker_restart: | |  | ||||||
|       function docker-restart() { |  | ||||||
|         if [[ "$1" == "-h" || "$1" == "--help" ]]; then |  | ||||||
|           cat <<- EOF |  | ||||||
|             Usage: docker-restart [container_name] |  | ||||||
|             Providing the container name starts a log follow after the command. |  | ||||||
|             A restart is characterized by a DOWN and UP. |  | ||||||
|       EOF |  | ||||||
|           return 0 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         docker compose down && |  | ||||||
|         docker compose up -d |  | ||||||
|  |  | ||||||
|         if [[ -n "$1" ]]; then |  | ||||||
|           echo "Following logs of '$1':" |  | ||||||
|           docker logs -f $1 |  | ||||||
|         fi |  | ||||||
|  |  | ||||||
|         return 0 |  | ||||||
|       } |       } | ||||||
|  |     alias_docker_restart: | | ||||||
|  |       alias docker-restart='docker compose down && docker compose up -d' | ||||||
|     alias_code_check: | |     alias_code_check: | | ||||||
|       alias code-check=' |       alias code-check=' | ||||||
|         echo "Checking ~/Code directory for git changes." |  | ||||||
|         ls -d ~/Code/* | while read project; do |         ls -d ~/Code/* | while read project; do | ||||||
|           if [[ ! -d $project ]]; then |           echo "*** `basename $project` ***" | ||||||
|             continue |  | ||||||
|           fi |  | ||||||
|           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 | ||||||
|             echo "Not a Git project, skipping!" |             echo "Not a Git project, skipping!" | ||||||
|           fi |           fi | ||||||
|         done |         done | ||||||
|         echo -e "\nDone!" |  | ||||||
|       ' |       ' | ||||||
|       alias code-sync='code-check' |  | ||||||
|     alias_code_reset: | |     alias_code_reset: | | ||||||
|       alias code-reset=' |       alias code-reset=' | ||||||
|         ls -d ~/Code/* | while read project |         ls -d ~/Code/* | while read project | ||||||
| @@ -597,60 +485,29 @@ | |||||||
|       ' |       ' | ||||||
|     function_code_reseed: | |     function_code_reseed: | | ||||||
|       function git_projects_to_sync { |       function git_projects_to_sync { | ||||||
|         # Projects should be followed by the current development branch name. |  | ||||||
|         cat <<- EOF |         cat <<- EOF | ||||||
|           env-ansible dev |           env-ansible | ||||||
|           env-docker dev |           env-docker | ||||||
|           env-termux dev |           env-termux | ||||||
|           env-obtainium-hyperling dev |           nodejs-website | ||||||
|           nodejs-website dev |           android-break-the-habit | ||||||
|           ebook-health-protocol dev |           android-tictactoe | ||||||
|           ebook-freedom-flyer dev |           android-expense-tracker | ||||||
|           ebook-technology-alternatives dev |           android-example-database-room | ||||||
|           ebook-narcissism-healing dev |           android-carb-up | ||||||
|           ebook-forest-howto dev |           ebook-health-protocol | ||||||
|           ebook-template main |  | ||||||
|           flutter-expense-tracker dev |  | ||||||
|           flutter-social-traveler-app dev |  | ||||||
|           nodejs-social-traveler-server dev |  | ||||||
|           misc-spare-change main |  | ||||||
|           flutter-buddy-website dev |  | ||||||
|           flutter-sunset-alarm dev |  | ||||||
|           android-infinite-timer dev |  | ||||||
|           android-carb-up dev |  | ||||||
|           android-hypergames dev |  | ||||||
|           android-45-minute-rule dev |  | ||||||
|           android-tictactoe dev |  | ||||||
|           hugo-jackanope dev |  | ||||||
|           hugo-website dev |  | ||||||
|       EOF |       EOF | ||||||
|       } |       } | ||||||
|       function code-reseed { |       function code-reseed { | ||||||
|         # Unseed current projects. |         unseed_dir="$HOME/TRASH/`date +%Y-%m-%d`_UnseededCodeProjects" | ||||||
|         echo -e "\n*** Move old projects to TRASH ***" |  | ||||||
|         unseed_dir="$HOME/TRASH/`date +%Y%m%d_%H%M%S`_UnseededCodeProjects" |  | ||||||
|         mkdir -pv "$unseed_dir" |         mkdir -pv "$unseed_dir" | ||||||
|         mv -v ~/Code/* "$unseed_dir"/ 2>/dev/null |         mv -v ~/Code/* "$unseed_dir"/ 2>/dev/null | ||||||
|  |  | ||||||
|         # Git repo information. |  | ||||||
|         git_repo_ssh={{ git_repo_ssh }} |         git_repo_ssh={{ git_repo_ssh }} | ||||||
|         git_main_project={{ git_project }} |         git_main_project={{ git_project }} | ||||||
|         git_repo_ssh_basename=${git_repo_ssh//$git_main_project/} |         git_repo_ssh_basename=${git_repo_ssh//$git_main_project/} | ||||||
|  |         git_projects_to_sync | while read git_project; do | ||||||
|         # Loop over project list. |  | ||||||
|         git_projects_to_sync | while read git_project git_branch; do |  | ||||||
|           echo -e "\n*** $git_project ***" |  | ||||||
|  |  | ||||||
|           # Project folder manipulation. |  | ||||||
|           dest_folder="$git_project" |  | ||||||
|           if [[ "$dest_folder" == "flutter-"* ]]; then |  | ||||||
|             echo "Using '_' for Flutter Project" |  | ||||||
|             dest_folder="${dest_folder//-/_}" |  | ||||||
|           fi |  | ||||||
|  |  | ||||||
|           # Download of the project. |  | ||||||
|           git clone ${git_repo_ssh_basename}${git_project} \ |           git clone ${git_repo_ssh_basename}${git_project} \ | ||||||
|             --branch $git_branch ~/Code/$dest_folder |             --branch dev ~/Code/$git_project | ||||||
|         done |         done | ||||||
|       } |       } | ||||||
|     function_clean_filenames: | |     function_clean_filenames: | | ||||||
| @@ -683,7 +540,7 @@ | |||||||
|         echo -e "\nDone!\n" |         echo -e "\nDone!\n" | ||||||
|       } |       } | ||||||
|     alias_clone: | |     alias_clone: | | ||||||
|       alias clone="rsync -auPhz --delete --exclude '.gradle' --exclude 'app/build'" |       alias clone="rsync -auPhz --delete" | ||||||
|     export_hyperling: | |     export_hyperling: | | ||||||
|       export HYPERLING6="2a07:e03:3:80::1" |       export HYPERLING6="2a07:e03:3:80::1" | ||||||
|       export HYPERLING4="185.130.47.173" |       export HYPERLING4="185.130.47.173" | ||||||
| @@ -695,283 +552,10 @@ | |||||||
|       fi |       fi | ||||||
|     alias_scan: | |     alias_scan: | | ||||||
|       alias scan="nmap -A -p- --script=vuln" |       alias scan="nmap -A -p- --script=vuln" | ||||||
|     alias_prod: | |  | ||||||
|       alias prod="ssh -p {{ prod_port }} {{ prod_user }}@{{ prod_host }}" |  | ||||||
|     function_clean_code: | |  | ||||||
|       function clean-code { |  | ||||||
|         echo -e "******* Android *******\n*** Build Caches ***" |  | ||||||
|         find ~/Code/android-*/app -maxdepth 1 -type d -name "build" \ |  | ||||||
|           -exec du -hs {} \; -exec rm -rf {} \; |  | ||||||
|         echo -e "\n*** Gradle Caches ***" |  | ||||||
|         find ~/Code/android-*/ -maxdepth 1 -type d -name ".gradle" \ |  | ||||||
|           -exec du -hs {} \; -exec rm -rf {} \; |  | ||||||
|  |  | ||||||
|         echo -e "******* Flutter *******" |  | ||||||
|         ls ~/Code | grep flutter | while read project; do |  | ||||||
|           cd ~/Code/$project |  | ||||||
|           pwd |  | ||||||
|           flutter clean |  | ||||||
|           echo -e "\n" |  | ||||||
|         done |  | ||||||
|         cd |  | ||||||
|  |  | ||||||
|         echo -e "******* PDFs *******" |  | ||||||
|         find ~/Code/ebook-* -name "*.pdf" -exec du -h {} \; -delete | sort -h |  | ||||||
|  |  | ||||||
|         echo -e "\n*** Done! ***" |  | ||||||
|       } |  | ||||||
|       alias code-clean="clean-code" |  | ||||||
|     alias_kill_battery: | |  | ||||||
|       alias kill-battery="stress -c 1k" |  | ||||||
|       alias waste-battery="kill-battery" |  | ||||||
|       alias battery-killer="kill-battery" |  | ||||||
|       alias battery-waster="kill-battery" |  | ||||||
|     alias_kill_system: | |  | ||||||
|       alias kill-system="stress -c 1k -i 1k -m 1k -d 1k" |  | ||||||
|       alias die="kill-system" |  | ||||||
|       alias lockup="kill-system" |  | ||||||
|       alias freeze="kill-system" |  | ||||||
|       alias system-killer="kill-system" |  | ||||||
|     function_update_sdks: | |  | ||||||
|       if [[ "$workstation" == "true" && "$coding" == "true" ]]; then |  | ||||||
|         function update-sdks { |  | ||||||
|           echo -e "******* Update SDKs *******\n*** Android - START ***" |  | ||||||
|           yes | sdkmanager --update |  | ||||||
|           yes | sdkmanager --licenses |  | ||||||
|           echo -ne "*** Android - END ***" |  | ||||||
|  |  | ||||||
|           echo -e "\n*** Flutter - START ***" |  | ||||||
|           flutter upgrade |  | ||||||
|           yes | flutter doctor --android-licenses |  | ||||||
|           echo -ne "*** Flutter - END ***" |  | ||||||
|  |  | ||||||
|           echo -e "\n******* Done! *******" |  | ||||||
|         } |  | ||||||
|         alias update-sdk="update-sdks" |  | ||||||
|         alias sdk-update="update-sdks" |  | ||||||
|         alias sdk-updater="update-sdks" |  | ||||||
|       fi |  | ||||||
|     function_ansible_vars: | |  | ||||||
|       function ansible-var-list { |  | ||||||
|         cat << EOF |  | ||||||
|           provision |  | ||||||
|           battery |  | ||||||
|           workstation |  | ||||||
|           coding |  | ||||||
|           editing |  | ||||||
|           gaming |  | ||||||
|           mobile |  | ||||||
|           server |  | ||||||
|           domain |  | ||||||
|       EOF |  | ||||||
|       } |  | ||||||
|       function ansible-vars { |  | ||||||
|         ansible-var-list | while read var; do |  | ||||||
|           echo "$var = ${!var}" |  | ||||||
|         done |  | ||||||
|       } |  | ||||||
|     alias_permission_commands: | |  | ||||||
|       alias chown='chown -c' |  | ||||||
|       alias chmod='chmod -c' |  | ||||||
|     alias_iftop: | |  | ||||||
|       alias iftop='sudo iftop' |  | ||||||
|     alias_ls: | |  | ||||||
|       alias l='ls' |  | ||||||
|       alias ll='ls -alh' |  | ||||||
|       alias lh='ls -ash' |  | ||||||
|     alias_progs: | |  | ||||||
|       alias progs='ps -ef' |  | ||||||
|     alias_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: | ||||||
|     rc_common: | |     rc_common: | | ||||||
|       # Fixes "command not found" when using aliases within functions. |  | ||||||
|       shopt -s expand_aliases |  | ||||||
|  |  | ||||||
|       # Variables for conditionals and quickly checking system setup. |  | ||||||
|       typeset -l provision battery workstation coding editing gaming mobile server domain |  | ||||||
|       export provision="{{ provision }}" |  | ||||||
|       export battery="{{ battery }}" |  | ||||||
|       export workstation="{{ workstation }}" |  | ||||||
|       export coding="{{ coding }}" |  | ||||||
|       export editing="{{ editing }}" |  | ||||||
|       export gaming="{{ gaming }}" |  | ||||||
|       export mobile="{{ mobile }}" |  | ||||||
|       export server="{{ server }}" |  | ||||||
|       export domain="{{ domain }}" |  | ||||||
|  |  | ||||||
|       {{ export_path_additions }} |       {{ export_path_additions }} | ||||||
|       {{ alias_cp }} |       {{ alias_cp }} | ||||||
|       {{ alias_mv }} |       {{ alias_mv }} | ||||||
| @@ -990,17 +574,16 @@ | |||||||
|       {{ 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 }} | ||||||
|       {{ function_flatpak_purge }} |       {{ function_flatpak_purge }} | ||||||
|       {{ alias_vim }} |       {{ alias_vim }} | ||||||
|       {{ alias_here }} |       {{ alias_here }} | ||||||
|       {{ function_docker_reload }} |       {{ alias_docker_reload }} | ||||||
|       {{ function_docker_update }} |       {{ alias_docker_update }} | ||||||
|       {{ function_docker_upgrade }} |       {{ function_docker_upgrade }} | ||||||
|       {{ function_docker_restart }} |       {{ alias_docker_restart }} | ||||||
|       {{ alias_code_check }} |       {{ alias_code_check }} | ||||||
|       {{ alias_code_reset }} |       {{ alias_code_reset }} | ||||||
|       {{ function_code_reseed }} |       {{ function_code_reseed }} | ||||||
| @@ -1010,25 +593,6 @@ | |||||||
|       {{ export_hyperling }} |       {{ export_hyperling }} | ||||||
|       {{ source_docker_env }} |       {{ source_docker_env }} | ||||||
|       {{ alias_scan }} |       {{ alias_scan }} | ||||||
|       {{ alias_prod }} |  | ||||||
|       {{ function_clean_code }} |  | ||||||
|       {{ alias_kill_battery }} |  | ||||||
|       {{ alias_kill_system }} |  | ||||||
|       {{ function_update_sdks }} |  | ||||||
|       {{ function_ansible_vars }} |  | ||||||
|       {{ alias_permission_commands }} |  | ||||||
|       {{ alias_iftop }} |  | ||||||
|       {{ alias_ls }} |  | ||||||
|       {{ alias_progs }} |  | ||||||
|       {{ 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,18 +1,12 @@ | |||||||
| --- | --- | ||||||
| # 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: "bash -c 'sleep $(( $RANDOM / 20 )); sudo {{ ansible_pull_exec.stdout }} -v -o -U {{ git_repo_http }} --checkout {{ branch }}'" |     job: "sudo {{ ansible_pull_exec.stdout }} -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' }}" | ||||||
|  |  | ||||||
| @@ -20,7 +14,7 @@ | |||||||
|   cron: |   cron: | ||||||
|     user: ansible |     user: ansible | ||||||
|     name: "Ansible Weekly Forced Sync" |     name: "Ansible Weekly Forced Sync" | ||||||
|     special_time: daily |     special_time: weekly | ||||||
|     job: "bash -c 'sleep $(( $RANDOM /  1 )); sudo {{ ansible_pull_exec.stdout }} -v    -U {{ git_repo_http }} --checkout {{ branch }}'" |     job: "{{ user_root.home }}/bin/scm.sh" | ||||||
|     state: present |     state: present | ||||||
|     disabled: "{{ 'yes' if no_telem else 'no' }}" |     disabled: "{{ 'yes' if no_telem else 'no' }}" | ||||||
|   | |||||||
| @@ -6,7 +6,9 @@ | |||||||
|     path: "{{ user_root.home }}/bin/scm.sh" |     path: "{{ user_root.home }}/bin/scm.sh" | ||||||
|     block: | |     block: | | ||||||
|       # 20210211 - Make life easier! |       # 20210211 - Make life easier! | ||||||
|       time {{ ansible_pull_exec.stdout }} -U {{ git_repo_http }} |       git clone {{ git_repo_http }} ansible-pull | ||||||
|  |       ansible-pull/setup.sh | ||||||
|  |       mv ansible-pull ~/TRASH/ | ||||||
|     marker: '{mark}' |     marker: '{mark}' | ||||||
|     marker_begin: "#!{{ bash_exec.stdout }}" |     marker_begin: "#!{{ bash_exec.stdout }}" | ||||||
|     marker_end: "exit 0" |     marker_end: "exit 0" | ||||||
|   | |||||||
| @@ -6,7 +6,9 @@ | |||||||
|     path: "{{ user_user.home }}/bin/scm.sh" |     path: "{{ user_user.home }}/bin/scm.sh" | ||||||
|     block: | |     block: | | ||||||
|       # 20210211 - Make life easier! |       # 20210211 - Make life easier! | ||||||
|       time {{ ansible_pull_exec.stdout }} -U {{ git_repo_http }} |       git clone {{ git_repo_http }} ansible-pull | ||||||
|  |       ansible-pull/setup.sh | ||||||
|  |       mv ansible-pull ~/TRASH/ | ||||||
|     marker: '{mark}' |     marker: '{mark}' | ||||||
|     marker_begin: "#!{{ bash_exec.stdout }}" |     marker_begin: "#!{{ bash_exec.stdout }}" | ||||||
|     marker_end: "exit 0" |     marker_end: "exit 0" | ||||||
|   | |||||||
| @@ -1,6 +0,0 @@ | |||||||
| --- |  | ||||||
| # Software that I've written for personal use, to be placed in `~/bin/`. |  | ||||||
|  |  | ||||||
| # TODO TBD - Add content here and place this in local.yml! :) |  | ||||||
|  |  | ||||||
| # Refactor Music Library |  | ||||||
| @@ -6,22 +6,13 @@ | |||||||
|     metasploit_installer: msfinstall |     metasploit_installer: msfinstall | ||||||
|   when: ansible_system in ("Linux", "Darwin") |   when: ansible_system in ("Linux", "Darwin") | ||||||
|  |  | ||||||
| - name: General | Software | Metasploit | Refresh Apt Files |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: |  | ||||||
|     - "mkdir -p /tmp/apt/" |  | ||||||
|     - "mv -fv /usr/share/keyrings/metasploit-framework.gpg /tmp/apt/metasploit-framework.gpg.old" |  | ||||||
|     - "mv -fv /etc/apt/sources.list.d/metasploit-framework.list /tmp/apt/metasploit-framework.list.old" |  | ||||||
|     - "mv -fv /etc/apt/preferences.d/pin-metasploit.pref /tmp/apt/pin-metasploit.pref.old" |  | ||||||
|   when: ansible_system in ("Linux") |  | ||||||
|   ignore_errors: true |  | ||||||
|  |  | ||||||
| - name: General | Software | Metasploit | Install | - name: General | Software | Metasploit | Install | ||||||
|   shell: "{{ item }}" |   shell: "{{ item }}" | ||||||
|   loop: |   loop: | ||||||
|  |     - "mv -fv /usr/share/keyrings/metasploit-framework.gpg /usr/share/keyrings/metasploit-framework.gpg.old" | ||||||
|     - "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > {{ metasploit_installer }}" |     - "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > {{ metasploit_installer }}" | ||||||
|     - "chmod 755 {{ metasploit_installer }}" |     - "chmod 755 {{ metasploit_installer }}" | ||||||
|     - "mkdir -p {{ global_bin }}" |     - "mkdir -p {{ global_bin }}" | ||||||
|     - "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}" |     - "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}" | ||||||
|     - yes y | "{{ global_bin }}/{{ metasploit_installer }}" |     - "{{ global_bin }}/{{ metasploit_installer }}" | ||||||
|   when: ansible_system in ("Linux", "Darwin") |   when: ansible_system in ("Linux", "Darwin") | ||||||
|   | |||||||
| @@ -43,7 +43,7 @@ | |||||||
|     - bash |     - bash | ||||||
|     - sudo |     - sudo | ||||||
|     - nmap |     - nmap | ||||||
|     - "{{ neofetch }}" |     - neofetch | ||||||
|     - "{{ sshfs }}" |     - "{{ sshfs }}" | ||||||
|     - "{{ locate }}" |     - "{{ locate }}" | ||||||
|     - zsh |     - zsh | ||||||
| @@ -56,10 +56,6 @@ | |||||||
|     - "{{ cron }}" |     - "{{ cron }}" | ||||||
|     - "{{ encfs }}" |     - "{{ encfs }}" | ||||||
|     - rsync |     - rsync | ||||||
|     - "{{ iftop }}" |  | ||||||
|     - "{{ nethogs }}" |  | ||||||
|     - "{{ ntp_server }}" |  | ||||||
|     - "{{ dig }}" |  | ||||||
|     state: present |     state: present | ||||||
|  |  | ||||||
| - name: General | Software | Packages | Install Software (DEV) | - name: General | Software | Packages | Install Software (DEV) | ||||||
| @@ -141,11 +137,3 @@ | |||||||
|     state: absent |     state: absent | ||||||
|   when: ansible_distribution != "Ubuntu" |   when: ansible_distribution != "Ubuntu" | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: General | Software | Packages | Other Debian Packages |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|     - usbutils |  | ||||||
|     state: present |  | ||||||
|   when: ansible_distribution in ("Debian") |  | ||||||
|   ignore_errors: yes |  | ||||||
|   | |||||||
| @@ -9,11 +9,6 @@ | |||||||
|     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 ## | ||||||
| @@ -81,11 +76,6 @@ | |||||||
|     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 ## | ||||||
| @@ -106,24 +96,3 @@ | |||||||
|     state: stopped |     state: stopped | ||||||
|     enabled: no |     enabled: no | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
| ## NTP ## |  | ||||||
|  |  | ||||||
| - name: General | Software | Services | NTP | Enable |  | ||||||
|   service: |  | ||||||
|     name: "{{ ntp_server }}" |  | ||||||
|     pattern: "{{ ntp_server }}" |  | ||||||
|     state: started |  | ||||||
|     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 |  | ||||||
|   | |||||||
| @@ -9,9 +9,6 @@ | |||||||
|   - name: General | Software | Swap | Check For Swapfile |   - name: General | Software | Swap | Check For Swapfile | ||||||
|     stat: |     stat: | ||||||
|       path: "{{ swap_file }}" |       path: "{{ swap_file }}" | ||||||
|       get_attributes: false |  | ||||||
|       get_checksum: false |  | ||||||
|       get_mime: false |  | ||||||
|     register: swap_check |     register: swap_check | ||||||
|  |  | ||||||
|   - name: General | Software | Swap | Install Block |   - name: General | Software | Swap | Install Block | ||||||
|   | |||||||
| @@ -9,17 +9,20 @@ | |||||||
|   set_fact: |   set_fact: | ||||||
|     lynis_temp_file: "{{ lynis_file }}.tmp" |     lynis_temp_file: "{{ lynis_file }}.tmp" | ||||||
|  |  | ||||||
|  | - name: General | Tests | Lynis | Rename Old Install | ||||||
|  |   shell: mv "/usr/local/lynis" "/usr/local/src/" | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: General | Tests | Lynis | Install | - name: General | Tests | Lynis | Install | ||||||
|   git: |   git:  | ||||||
|     repo: https://github.com/CISOfy/lynis |     repo: https://github.com/CISOfy/lynis | ||||||
|     dest: "{{ lynis_install_dir }}" |     dest: "{{ lynis_install_dir }}" | ||||||
|     clone: true |     clone: yes | ||||||
|     force: true |     force: yes | ||||||
|     update: true |  | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: General | Tests | Lynis | Ensure Permissions (Looking at you Parrot OS!) | - name: General | Tests | Lynis | Ensure Permissions (Looking at you Parrot OS!) | ||||||
|   file: |   file:  | ||||||
|     path: "{{ lynis_install_dir }}" |     path: "{{ lynis_install_dir }}" | ||||||
|     state: directory |     state: directory | ||||||
|     mode: '0644' |     mode: '0644' | ||||||
| @@ -28,12 +31,12 @@ | |||||||
|     recurse: yes |     recurse: yes | ||||||
|  |  | ||||||
| - name: General | Tests | Lynis | Ensure Permissions 2 | - name: General | Tests | Lynis | Ensure Permissions 2 | ||||||
|   file: |   file:  | ||||||
|     path: "{{ lynis_install_dir }}/lynis" |     path: "{{ lynis_install_dir }}/lynis" | ||||||
|     mode: '0755' |     mode: '0755' | ||||||
|  |  | ||||||
| - name: General | Tests | Lynis | Ensure Folder Permissions | - name: General | Tests | Lynis | Ensure Folder Permissions | ||||||
|   file: |   file:  | ||||||
|     path: "{{ lynis_install_dir }}" |     path: "{{ lynis_install_dir }}" | ||||||
|     state: directory |     state: directory | ||||||
|     mode: '0755' |     mode: '0755' | ||||||
|   | |||||||
| @@ -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 --purge -y" |   shell: "apt update; apt dist-upgrade -y; apt autoremove -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 | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ | |||||||
| # General # | # General # | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | General | Install | - name: Workstation | FreeBSD | Software | Packages | General | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - "{{ firefox_esr }}" |     - "{{ firefox_esr }}" | ||||||
|     - "{{ evolution }}" |     - "{{ evolution }}" | ||||||
| @@ -13,7 +13,7 @@ | |||||||
|     state: present |     state: present | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | General | Uninstall Bloat | - name: Workstation | FreeBSD | Software | Packages | General | Uninstall Bloat | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - "{{ firefox }}" |     - "{{ firefox }}" | ||||||
|     - "{{ thunderbird }}" |     - "{{ thunderbird }}" | ||||||
| @@ -22,14 +22,14 @@ | |||||||
| # Coding # | # Coding # | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | Coding | Install | - name: Workstation | FreeBSD | Software | Packages | Coding | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - vscode |     - vscode | ||||||
|     state: present |     state: present | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | Coding | Install | - name: Workstation | FreeBSD | Software | Packages | Coding | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - vscode |     - vscode | ||||||
|     state: absent |     state: absent | ||||||
| @@ -38,27 +38,27 @@ | |||||||
| # Media Editors # | # Media Editors # | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | Editing | Install | - name: Workstation | FreeBSD | Software | Packages | Editing | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - gimp |     - gimp | ||||||
|     - shotcut |     - shotcut | ||||||
|     - obs-studio |     - obs-studio | ||||||
|     state: present |     state: present | ||||||
|   when: editing in (true, "video") |   when: editing == true | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | Editing | Install | - name: Workstation | FreeBSD | Software | Packages | Editing | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - gimp |     - gimp | ||||||
|     - shotcut |     - shotcut | ||||||
|     - obs-studio |     - obs-studio | ||||||
|     state: absent |     state: absent | ||||||
|   when: not editing in (true, "video") |   when: not editing == true | ||||||
|  |  | ||||||
| # Gaming # | # Gaming # | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | Gaming | Install | - name: Workstation | FreeBSD | Software | Packages | Gaming | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - 0ad |     - 0ad | ||||||
|     - supertuxkart |     - supertuxkart | ||||||
| @@ -66,7 +66,7 @@ | |||||||
|   when: gaming == true |   when: gaming == true | ||||||
|  |  | ||||||
| - name: Workstation | FreeBSD | Software | Packages | Gaming | Install | - name: Workstation | FreeBSD | Software | Packages | Gaming | Install | ||||||
|   package: |   package:  | ||||||
|     name: |     name: | ||||||
|     - 0ad |     - 0ad | ||||||
|     - supertuxkart |     - supertuxkart | ||||||
|   | |||||||
| @@ -1,359 +0,0 @@ | |||||||
| --- |  | ||||||
| # Android Studio (and SDK?). Copied and adjusted from Flutter playbook. |  | ||||||
| # https://wiki.debian.org/AndroidStudio |  | ||||||
| # https://developer.android.com/studio/install |  | ||||||
|  |  | ||||||
| ## Facts ## |  | ||||||
|  |  | ||||||
| # Studio download URLs: |  | ||||||
| #   https://developer.android.com/studio/archive |  | ||||||
| # Current version: |  | ||||||
| #   https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2024.2.2.14/android-studio-2024.2.2.14-linux.tar.gz |  | ||||||
| # Command-line tools is all Flutter actually needs: |  | ||||||
| #   https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Facts [1/3] |  | ||||||
|   set_fact: |  | ||||||
|     android_url: "https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip" |  | ||||||
|     android_download_file: "{{ user_user.home }}/Downloads/android-cmdline-tools.tar.xz" |  | ||||||
|     android_sdk_location: "{{ user_user.home }}/SDKs/Android/Sdk" |  | ||||||
|     android_report_file: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.android.txt" |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Facts [2/3] |  | ||||||
|   set_fact: |  | ||||||
|     android_bin_location: "{{ android_sdk_location }}/platform-tools" |  | ||||||
|     android_sdk_cmdline_temp: "{{ android_sdk_location }}/ansible" |  | ||||||
|     android_sdk_cmdline_final: "{{ android_sdk_location }}/cmdline-tools/latest/bin" |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Facts [3/3] |  | ||||||
|   set_fact: |  | ||||||
|     android_sdkmanager_temp: "{{ android_sdk_cmdline_temp }}/cmdline-tools/bin/sdkmanager" |  | ||||||
|     android_sdkmanager_final: "{{ android_sdk_cmdline_final }}/sdkmanager" |  | ||||||
|  |  | ||||||
| # Regarding images to download; the `default` is the smallest, then `playstore`. |  | ||||||
| # The `google_apis` images are significantly larger than the `playstore` option. |  | ||||||
| # |  | ||||||
| # This script was used to download and test the sizes: |  | ||||||
| # |  | ||||||
| ### #!/bin/bash |  | ||||||
| ### |  | ||||||
| ### cd /home/ling/SDKs/Android/Sdk/cmdline-tools/latest/bin |  | ||||||
| ### |  | ||||||
| ### # Actually to be used |  | ||||||
| ### echo "35 Play Store" |  | ||||||
| ### ./sdkmanager --install "system-images;android-35;google_apis_playstore;x86_64" |  | ||||||
| ### echo "36 Play Store" |  | ||||||
| ### ./sdkmanager --install "system-images;android-36;google_apis_playstore;x86_64" |  | ||||||
| ### |  | ||||||
| ### # FORTESTING file size |  | ||||||
| ### echo "35 AOSP" |  | ||||||
| ### ./sdkmanager --install "system-images;android-35;default;x86_64" |  | ||||||
| ### echo "36 APIs Only" |  | ||||||
| ### ./sdkmanager --install "system-images;android-36;google_apis;x86_64" |  | ||||||
| ### echo "35 APIs Only" |  | ||||||
| ### ./sdkmanager --install "system-images;android-35;google_apis;x86_64" |  | ||||||
| ### |  | ||||||
| ### exit 0 |  | ||||||
| # |  | ||||||
| # These were the results: |  | ||||||
| # |  | ||||||
| ### ~/SDKs/Android/Sdk/system-images]$ du -had2 | sort -h |  | ||||||
| ### 1.7G	./android-35/default |  | ||||||
| ### 2.2G	./android-35/google_apis_playstore |  | ||||||
| ### 2.3G	./android-36/google_apis_playstore |  | ||||||
| ### 3.5G	./android-35/google_apis |  | ||||||
| ### 4.3G	./android-36/google_apis |  | ||||||
| ### 6.6G	./android-36 |  | ||||||
| ### 7.3G	./android-35 |  | ||||||
| ### 14G	. |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Facts [Downloads] |  | ||||||
|   set_fact: |  | ||||||
|     android_downloads_required: |  | ||||||
|       ### 36 ### |  | ||||||
|       - build-tools;36.0.0 |  | ||||||
|       - platforms;android-36 |  | ||||||
|       - sources;android-36 |  | ||||||
|       # Images |  | ||||||
|       #- system-images;android-35;default;x86_64 # TODO: Switch once it exists. |  | ||||||
|       - system-images;android-36;google_apis_playstore;x86_64 |  | ||||||
|       ### 16 ### |  | ||||||
|       - platforms;android-16 |  | ||||||
|       - sources;android-16 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-16;default;x86 |  | ||||||
|     android_downloads_additional: |  | ||||||
|       ### 35 ### |  | ||||||
|       - platforms;android-35 |  | ||||||
|       - sources;android-35 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-35;default;x86_64 |  | ||||||
|       ### 34 ### |  | ||||||
|       - platforms;android-34 |  | ||||||
|       - sources;android-34 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-34;default;x86_64 |  | ||||||
|       ### 33 ### |  | ||||||
|       - platforms;android-33 |  | ||||||
|       - sources;android-33 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-33;default;x86_64 |  | ||||||
|       ### 30 ### |  | ||||||
|       - platforms;android-30 |  | ||||||
|       - sources;android-30 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-30;default;x86_64 |  | ||||||
|       ### 27 ### |  | ||||||
|       - platforms;android-27 |  | ||||||
|       - sources;android-27 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-27;default;x86_64 |  | ||||||
|       ### 21 ### |  | ||||||
|       - platforms;android-21 |  | ||||||
|       - sources;android-21 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-21;default;x86_64 |  | ||||||
|     android_downloads_unused: |  | ||||||
|       ### 36 ### |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-36;google_apis;x86_64 |  | ||||||
|       ### 35 ### |  | ||||||
|       - build-tools;35.0.0 |  | ||||||
|       - build-tools;35.0.1 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-35;aosp_atd;x86_64 # ATD = Automated Test Device |  | ||||||
|       - system-images;android-35;google_apis;x86_64 |  | ||||||
|       - system-images;android-35;google_apis_playstore;x86_64 |  | ||||||
|       ### 34 ### |  | ||||||
|       - build-tools;34.0.0 |  | ||||||
|       - platforms;android-34 |  | ||||||
|       - sources;android-34 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-34;google_apis;x86_64 |  | ||||||
|       - system-images;android-34;google_apis_playstore;x86_64 |  | ||||||
|       ### 16 ### |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-16;google_apis;x86 |  | ||||||
|       ### 15 ### |  | ||||||
|       - platforms;android-15 |  | ||||||
|       - sources;android-15 |  | ||||||
|       # Images |  | ||||||
|       - system-images;android-15;default;x86 # Not working in Android AVDs |  | ||||||
|  |  | ||||||
| ## Checks ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Check SDK Manager Exists [1/2] |  | ||||||
|   stat: |  | ||||||
|     path: "{{ android_sdkmanager_temp }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: android_sdkmanager_temp_stat |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Check SDK Manager Exists [2/2] |  | ||||||
|   stat: |  | ||||||
|     path: "{{ android_sdkmanager_final }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: android_sdkmanager_final_stat |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Check Download Exists |  | ||||||
|   stat: |  | ||||||
|     path: "{{ android_download_file }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: android_download_stat |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Packages ## |  | ||||||
|  |  | ||||||
| # https://docs.flutter.dev/get-started/install/linux/android |  | ||||||
| - name: Workstation | Linux | Software | Android | Dependencies [Install] |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - default-jdk |  | ||||||
|       - libc6 |  | ||||||
|       - libncurses5 |  | ||||||
|       - libstdc++6 |  | ||||||
|       - lib32z1 |  | ||||||
|       - libbz2-1.0 |  | ||||||
|     state: present |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Dependencies [Remove] |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - sdkmanager |  | ||||||
|     state: absent |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Install SDK ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | SDK |  | ||||||
|   block: |  | ||||||
|  |  | ||||||
|   - name: Workstation | Linux | Software | Android | Download Commandline Tools |  | ||||||
|     get_url: |  | ||||||
|       url: "{{ android_url }}" |  | ||||||
|       dest: "{{ android_download_file }}" |  | ||||||
|       owner: "{{ user }}" |  | ||||||
|       group: "{{ user }}" |  | ||||||
|       mode: '0664' |  | ||||||
|     when: not android_download_stat.stat.exists |  | ||||||
|  |  | ||||||
|   - name: Workstation | Linux | Software | Android | Create Folder |  | ||||||
|     file: |  | ||||||
|       path: "{{ android_sdk_cmdline_temp }}" |  | ||||||
|       state: directory |  | ||||||
|       owner: "{{ user }}" |  | ||||||
|       group: "{{ user }}" |  | ||||||
|       mode: '0755' |  | ||||||
|  |  | ||||||
|   - name: Workstation | Linux | Software | Android | Extract Tools |  | ||||||
|     unarchive: |  | ||||||
|       src: "{{ android_download_file }}" |  | ||||||
|       dest: "{{ android_sdk_cmdline_temp }}" |  | ||||||
|       owner: "{{ user }}" |  | ||||||
|       group: "{{ user }}" |  | ||||||
|  |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true and not android_sdkmanager_temp_stat.stat.exists |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Delete Archive |  | ||||||
|   file: |  | ||||||
|     path: "{{ android_download_file }}" |  | ||||||
|     state: absent |  | ||||||
|  |  | ||||||
| ## Configure Modules ## |  | ||||||
|  |  | ||||||
| # This can only be run once, otherwise cmdline-tools creates latest-* folders. |  | ||||||
| - name: Workstation | Linux | Software | Android | Install | Consistent Modules |  | ||||||
|   shell: "yes | {{ android_sdkmanager_temp }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" |  | ||||||
|   loop: |  | ||||||
|     # Current |  | ||||||
|     - cmdline-tools;latest |  | ||||||
|     - platform-tools |  | ||||||
|     - emulator |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true and not android_sdkmanager_final_stat.stat.exists |  | ||||||
|  |  | ||||||
| # These are safe to run multiple times, and uses the new `latest` version. |  | ||||||
| - name: Workstation | Linux | Software | Android | Install | Required Modules |  | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" |  | ||||||
|   loop: "{{ android_downloads_required }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| # Add more versions for testing across all the important platforms. |  | ||||||
| - name: Workstation | Linux | Software | Android | Install | Additional Modules |  | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}" |  | ||||||
|   loop: "{{ android_downloads_additional }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true and sdks == true |  | ||||||
|  |  | ||||||
| # Remove extra downloads if system is not meant for full amount of testing. |  | ||||||
| - name: Workstation | Linux | Software | Android | Uninstall | Additional Modules |  | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --uninstall '{{ item }}' --sdk_root={{ android_sdk_location }}" |  | ||||||
|   loop: "{{ android_downloads_additional }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding != true or sdks != true |  | ||||||
|  |  | ||||||
| # Remove any versions which used to be part of this script and no longer used. |  | ||||||
| - name: Workstation | Linux | Software | Android | Uninstall | Unused Modules |  | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --uninstall '{{ item }}' --sdk_root={{ android_sdk_location }}" |  | ||||||
|   loop: "{{ android_downloads_unused }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| # Report the currently installed packges. |  | ||||||
| - name: Workstation | Linux | Software | Android | Report Modules |  | ||||||
|   shell: "{{ android_sdkmanager_final }} --list_installed --sdk_root={{ android_sdk_location }} > {{ android_report_file }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Flutter and Licenses ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Inform Flutter |  | ||||||
|   shell: "{{ flutter }} config --android-sdk={{ android_sdk_location }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | License Agreements [1/2] |  | ||||||
|   shell: "yes | {{ android_sdkmanager_final }} --licenses --sdk_root={{ android_sdk_location }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | License Agreements [2/2] |  | ||||||
|   shell: "yes | {{ flutter }} doctor --android-licenses" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Refresh Flutter Doctor Report |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: "{{ flutter_report_commands }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Configure Environment ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Modify PATH (.bashrc) |  | ||||||
|   blockinfile: |  | ||||||
|     path: "{{ item }}/.bashrc" |  | ||||||
|     block: | |  | ||||||
|       export PATH="$PATH:{{ android_bin_location }}:{{ android_sdk_cmdline_final }}" |  | ||||||
|     marker: '# {mark} MANAGED BY ANSIBLE | Android' |  | ||||||
|     state: present |  | ||||||
|     create: yes |  | ||||||
|     backup: yes |  | ||||||
|   loop: |  | ||||||
|     - "{{ user_root.home }}" |  | ||||||
|     - "{{ user_user.home }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: coding == true and user_root.home != "" and user_user.home != "" |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Modify PATH (.zshrc) |  | ||||||
|   blockinfile: |  | ||||||
|     path: "{{ item }}/.zshrc" |  | ||||||
|     block: | |  | ||||||
|       export PATH="$PATH:{{ android_bin_location }}:{{ android_sdk_cmdline_final }}" |  | ||||||
|     marker: '# {mark} MANAGED BY ANSIBLE | Android' |  | ||||||
|     state: present |  | ||||||
|     create: yes |  | ||||||
|     backup: yes |  | ||||||
|   loop: |  | ||||||
|     - "{{ user_root.home }}" |  | ||||||
|     - "{{ user_user.home }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: coding == true and user_root.home != "" and user_user.home != "" |  | ||||||
|  |  | ||||||
| ## Uninstall SDK ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | Remove SDK |  | ||||||
|   file: |  | ||||||
|     path: "{{ android_sdk_location }}" |  | ||||||
|     state: absent |  | ||||||
|   when: not coding == true |  | ||||||
|  |  | ||||||
| ## User Tools ## |  | ||||||
| #   Only needed from repo if not a development device, |  | ||||||
| #   otherwise better versions are in the SDK. |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | System Tools [Install] |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - fastboot |  | ||||||
|       - adb |  | ||||||
|     state: present |  | ||||||
|   when: not coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Android | System Tools [Remove] |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - fastboot |  | ||||||
|       - adb |  | ||||||
|     state: absent |  | ||||||
|   when: coding == true |  | ||||||
| @@ -60,21 +60,28 @@ | |||||||
|       - brave-browser |       - brave-browser | ||||||
|       - brave-keyring |       - brave-keyring | ||||||
|     state: absent |     state: absent | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: Workstation | Software | Brave | Remove Repo [apt] | - name: Workstation | Software | Brave | Remove Repo [apt] | ||||||
|   shell: rm /etc/apt/sources.list.d/brave-browser-*.list && apt update || echo "Not Needed" |   shell: "{{ item }}" | ||||||
|  |   loop: | ||||||
|  |     - rm /etc/apt/sources.list.d/brave-browser-*.list | ||||||
|  |     - apt update | ||||||
|   when: ansible_pkg_mgr == "apt" |   when: ansible_pkg_mgr == "apt" | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: Workstation | Software | Brave | Remove Repo [dnf] | - name: Workstation | Software | Brave | Remove Repo [dnf] | ||||||
|   shell: "{{ item }}" |   shell: "{{ item }}" | ||||||
|   loop: |   loop: | ||||||
|     - rm /etc/yum.repos.d/brave-browser-*.repo || echo "Not Needed" |     - rm /etc/yum.repos.d/brave-browser-*.repo | ||||||
|     - rpm -e gpg-pubkey-c2d4e821-5e7252b8 || echo "Not Needed" |     - rpm -e gpg-pubkey-c2d4e821-5e7252b8 | ||||||
|   when: ansible_pkg_mgr == "dnf" |   when: ansible_pkg_mgr == "dnf" | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
| - name: Workstation | Software | Brave | Remove Repo [zypper] | - name: Workstation | Software | Brave | Remove Repo [zypper] | ||||||
|   shell: "{{ item }}" |   shell: "{{ item }}" | ||||||
|   loop: |   loop: | ||||||
|     - zypper removerepo brave-browser || echo "Not Needed" |     - zypper removerepo brave-browser | ||||||
|     - rpm -e gpg-pubkey-c2d4e821-5e7252b8 || echo "Not Needed" |     - rpm -e gpg-pubkey-c2d4e821-5e7252b8 | ||||||
|   when: ansible_pkg_mgr == "zypper" |   when: ansible_pkg_mgr == "zypper" | ||||||
|  |   ignore_errors: yes | ||||||
|   | |||||||
| @@ -24,6 +24,7 @@ | |||||||
|     method: system |     method: system | ||||||
|     flatpakrepo_url: https://flathub.org/repo/flathub.flatpakrepo |     flatpakrepo_url: https://flathub.org/repo/flathub.flatpakrepo | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Flatpak Installs ## | ## Flatpak Installs ## | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Variables | - name: Workstation | Linux | Flatpak Distro | Flatpak | Variables | ||||||
| @@ -34,25 +35,22 @@ | |||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays | - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays | ||||||
|   set_fact: |   set_fact: | ||||||
|     flatpaks_generic: |     flatpaks_generic: | ||||||
|       - { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } |  | ||||||
|       - { app: "io.gitlab.librewolf-community", name: "librewolf", 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.gimp.GIMP", name: "gimp", extra: "" } |  | ||||||
|       - { app: "org.libreoffice.LibreOffice", name: "office", extra: "" } |       - { 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: "com.transmissionbt.Transmission", name: "transmission", 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", 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: "com.visualstudio.code-oss", name: "code-flatpak", extra: "" } |       - { app: "org.godotengine.Godot", name: "godot", extra: "" } | ||||||
|     flatpaks_editing_video: |       - { app: "com.visualstudio.code-oss", name: "code", extra: "" } | ||||||
|  |     flatpaks_editing: | ||||||
|       - { 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: "" } | ||||||
|  |       - { app: "org.gimp.GIMP", name: "gimp", extra: "" } | ||||||
|       - { app: "org.openshot.OpenShot", name: "openshot", extra: "" } |       - { app: "org.openshot.OpenShot", name: "openshot", extra: "" } | ||||||
|     flatpaks_editing_audio: |  | ||||||
|       - { app: "org.tenacityaudio.Tenacity", name: "tenacity", extra: "" } |       - { app: "org.tenacityaudio.Tenacity", name: "tenacity", extra: "" } | ||||||
|       - { app: "io.lmms.LMMS", name: "lmms", extra: "" } |       - { app: "io.lmms.LMMS", name: "lmms", extra: "" } | ||||||
|       - { app: "net.sourceforge.VMPK", name: "vmpk", extra: "" } |       - { app: "net.sourceforge.VMPK", name: "vmpk", extra: "" } | ||||||
| @@ -69,13 +67,14 @@ | |||||||
|       - { 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: "org.telegram.desktop", name: "telegram", 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 # | ||||||
|  |  | ||||||
| @@ -159,62 +158,14 @@ | |||||||
|  |  | ||||||
| # Media Editors # | # Media Editors # | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Installs | - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Installs | ||||||
|   flatpak: |   flatpak: | ||||||
|     name: "{{ item.app }}" |     name: "{{ item.app }}" | ||||||
|     remote: flathub |     remote: flathub | ||||||
|     state: present |     state: present | ||||||
|   loop: "{{ flatpaks_editing_video }}" |   loop: "{{ flatpaks_editing }}" | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|   when: editing in (true, "video") |   when: editing == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Executables |  | ||||||
|   blockinfile: |  | ||||||
|     path: "{{ flatpak_exec_dir }}/{{ item.name }}" |  | ||||||
|     block: | |  | ||||||
|       {{ item.extra }} {{ flatpak_exec }} {{ item.app }} |  | ||||||
|     marker: '{mark}' |  | ||||||
|     marker_begin: "#!{{ bash_exec.stdout }}" |  | ||||||
|     marker_end: "exit 0" |  | ||||||
|     state: present |  | ||||||
|     create: yes |  | ||||||
|   loop: "{{ flatpaks_editing_video }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: editing in (true, "video") |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Executable Permissions |  | ||||||
|   file: |  | ||||||
|     path: "{{ flatpak_exec_dir }}/{{ item.name }}" |  | ||||||
|     state: file |  | ||||||
|     mode: '0755' |  | ||||||
|   loop: "{{ flatpaks_editing_video }}" |  | ||||||
|   when: editing in (true, "video") |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editor Uninstalls |  | ||||||
|   flatpak: |  | ||||||
|     name: "{{ item.app }}" |  | ||||||
|     remote: flathub |  | ||||||
|     state: absent |  | ||||||
|   loop: "{{ flatpaks_editing_video }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: not editing in (true, "video") |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Remove Executables |  | ||||||
|   file: |  | ||||||
|     path: "{{ flatpak_exec_dir }}/{{ item.name }}" |  | ||||||
|     state: absent |  | ||||||
|   loop: "{{ flatpaks_editing_video }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: not editing in (true, "video") |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio Editors | Installs |  | ||||||
|   flatpak: |  | ||||||
|     name: "{{ item.app }}" |  | ||||||
|     remote: flathub |  | ||||||
|     state: present |  | ||||||
|   loop: "{{ flatpaks_editing_audio }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: editing in (true, "audio") |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Executables | - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Executables | ||||||
|   blockinfile: |   blockinfile: | ||||||
| @@ -226,34 +177,34 @@ | |||||||
|     marker_end: "exit 0" |     marker_end: "exit 0" | ||||||
|     state: present |     state: present | ||||||
|     create: yes |     create: yes | ||||||
|   loop: "{{ flatpaks_editing_audio }}" |   loop: "{{ flatpaks_editing }}" | ||||||
|   become_user: "{{ user }}" |   become_user: "{{ user }}" | ||||||
|   when: editing in (true, "audio") |   when: editing == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Executable Permissions | - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Executable Permissions | ||||||
|   file: |   file: | ||||||
|     path: "{{ flatpak_exec_dir }}/{{ item.name }}" |     path: "{{ flatpak_exec_dir }}/{{ item.name }}" | ||||||
|     state: file |     state: file | ||||||
|     mode: '0755' |     mode: '0755' | ||||||
|   loop: "{{ flatpaks_editing_audio }}" |   loop: "{{ flatpaks_editing }}" | ||||||
|   when: editing in (true, "audio") |   when: editing == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editor Uninstalls | - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editor Uninstalls | ||||||
|   flatpak: |   flatpak: | ||||||
|     name: "{{ item.app }}" |     name: "{{ item.app }}" | ||||||
|     remote: flathub |     remote: flathub | ||||||
|     state: absent |     state: absent | ||||||
|   loop: "{{ flatpaks_editing_audio }}" |   loop: "{{ flatpaks_editing }}" | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|   when: not editing in (true, "audio") |   when: not editing == true | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Remove Executables | - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Remove Executables | ||||||
|   file: |   file: | ||||||
|     path: "{{ flatpak_exec_dir }}/{{ item.name }}" |     path: "{{ flatpak_exec_dir }}/{{ item.name }}" | ||||||
|     state: absent |     state: absent | ||||||
|   loop: "{{ flatpaks_editing_audio }}" |   loop: "{{ flatpaks_editing }}" | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|   when: not editing in (true, "audio") |   when: not editing == true | ||||||
|  |  | ||||||
| # Gaming # | # Gaming # | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,177 +0,0 @@ | |||||||
| --- |  | ||||||
| # Packages specific to workstations developing Flutter apps. |  | ||||||
|  |  | ||||||
| ## Facts ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Facts [1/4] |  | ||||||
|   set_fact: |  | ||||||
|     flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz" |  | ||||||
|     flutter_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz" |  | ||||||
|     flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter" |  | ||||||
|     flutter_report: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.flutter.txt" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Facts [2/4] |  | ||||||
|   set_fact: |  | ||||||
|     flutter_bin_location: "{{ flutter_sdk_location }}/flutter/bin" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Facts [3/4] |  | ||||||
|   set_fact: |  | ||||||
|     flutter: "{{ flutter_bin_location }}/flutter" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Facts [3/3] |  | ||||||
|   set_fact: |  | ||||||
|     flutter_report_commands: |  | ||||||
|       - "date > {{ flutter_report }}" |  | ||||||
|       - "{{ flutter }} --disable-analytics >> {{ flutter_report }}" |  | ||||||
|       - "date >> {{ flutter_report }}" |  | ||||||
|       - "{{ flutter }} doctor -v >> {{ flutter_report }}" |  | ||||||
|       - "date >> {{ flutter_report }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Checks ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Check SDK Exists |  | ||||||
|   stat: |  | ||||||
|     path: "{{ flutter_sdk_location }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: flutter_sdk_stat |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Check Download Exists |  | ||||||
|   stat: |  | ||||||
|     path: "{{ flutter_download_file }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: flutter_download_stat |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Packages ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Necessities |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|     - curl |  | ||||||
|     - git |  | ||||||
|     - unzip |  | ||||||
|     - xz-utils |  | ||||||
|     - zip |  | ||||||
|     - libglu1-mesa |  | ||||||
|     state: present |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| # https://docs.flutter.dev/get-started/install/linux/desktop |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Linux App Dependencies |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|     - clang |  | ||||||
|     - cmake |  | ||||||
|     - git |  | ||||||
|     - ninja-build |  | ||||||
|     - pkg-config |  | ||||||
|     - libgtk-3-dev |  | ||||||
|     - liblzma-dev |  | ||||||
|     - libstdc++-12-dev |  | ||||||
|     state: present |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| # https://docs.flutter.dev/get-started/install/linux/android |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Android App Dependencies |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - libc6:amd64 |  | ||||||
|       - libstdc++6 |  | ||||||
|       - lib32z1 |  | ||||||
|       - libbz2-1.0 |  | ||||||
|     state: present |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Install SDK ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | SDK |  | ||||||
|   block: |  | ||||||
|  |  | ||||||
|   - name: Workstation | Linux | Software | Flutter | Download SDK |  | ||||||
|     get_url: |  | ||||||
|       url: "{{ flutter_url }}" |  | ||||||
|       dest: "{{ flutter_download_file }}" |  | ||||||
|       owner: "{{ user }}" |  | ||||||
|       group: "{{ user }}" |  | ||||||
|       mode: '0664' |  | ||||||
|     when: not flutter_download_stat.stat.exists |  | ||||||
|  |  | ||||||
|   - name: Workstation | Linux | Software | Flutter | Create Folder |  | ||||||
|     file: |  | ||||||
|       path: "{{ flutter_sdk_location }}" |  | ||||||
|       state: directory |  | ||||||
|       owner: "{{ user }}" |  | ||||||
|       group: "{{ user }}" |  | ||||||
|       mode: '0755' |  | ||||||
|  |  | ||||||
|   - name: Workstation | Linux | Software | Flutter | Extract SDK |  | ||||||
|     unarchive: |  | ||||||
|       src: "{{ flutter_download_file }}" |  | ||||||
|       dest: "{{ flutter_sdk_location }}" |  | ||||||
|       owner: "{{ user }}" |  | ||||||
|       group: "{{ user }}" |  | ||||||
|  |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true and not flutter_sdk_stat.stat.exists |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Delete Archive |  | ||||||
|   file: |  | ||||||
|     path: "{{ flutter_download_file }}" |  | ||||||
|     state: absent |  | ||||||
|  |  | ||||||
| ## Configure Environment ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Modify PATH (.bashrc) |  | ||||||
|   blockinfile: |  | ||||||
|     path: "{{ item }}/.bashrc" |  | ||||||
|     block: | |  | ||||||
|       export PATH="$PATH:{{ flutter_bin_location }}" |  | ||||||
|     marker: '# {mark} MANAGED BY ANSIBLE | Flutter' |  | ||||||
|     state: present |  | ||||||
|     create: yes |  | ||||||
|     backup: yes |  | ||||||
|   loop: |  | ||||||
|     - "{{ user_root.home }}" |  | ||||||
|     - "{{ user_user.home }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: coding == true and user_root.home != "" and user_user.home != "" |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Modify PATH (.zshrc) |  | ||||||
|   blockinfile: |  | ||||||
|     path: "{{ item }}/.zshrc" |  | ||||||
|     block: | |  | ||||||
|       export PATH="$PATH:{{ flutter_bin_location }}" |  | ||||||
|     marker: '# {mark} MANAGED BY ANSIBLE | Flutter' |  | ||||||
|     state: present |  | ||||||
|     create: yes |  | ||||||
|     backup: yes |  | ||||||
|   loop: |  | ||||||
|     - "{{ user_root.home }}" |  | ||||||
|     - "{{ user_user.home }}" |  | ||||||
|   ignore_errors: yes |  | ||||||
|   when: coding == true and user_root.home != "" and user_user.home != "" |  | ||||||
|  |  | ||||||
| ## Test SDK ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Doctor Report |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: "{{ flutter_report_commands }}" |  | ||||||
|   become_user: "{{ user }}" |  | ||||||
|   when: coding == true |  | ||||||
|  |  | ||||||
| ## Uninstall SDK ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Flutter | Remove SDK |  | ||||||
|   file: |  | ||||||
|     path: "{{ flutter_sdk_location }}" |  | ||||||
|     state: absent |  | ||||||
|   when: not coding == true |  | ||||||
| @@ -1,79 +0,0 @@ | |||||||
| --- |  | ||||||
| # Lutris for running Windows games not in Steam. |  | ||||||
| #   https://lutris.net/downloads |  | ||||||
|  |  | ||||||
| # Paths |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Facts |  | ||||||
|   set_fact: |  | ||||||
|     lutris_source_list: "/etc/apt/sources.list.d/lutris.list" |  | ||||||
|     lutris_keyfile: "/usr/share/keyrings/lutris.gpg" |  | ||||||
|   when: ansible_pkg_mgr == "apt" |  | ||||||
|  |  | ||||||
| # Checks |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Check PPA |  | ||||||
|   stat: |  | ||||||
|     path: "{{ lutris_source_list }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: lutris_source_exists |  | ||||||
|   when: ansible_pkg_mgr == "apt" |  | ||||||
|  |  | ||||||
| ## Install Repo ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Add PPA (Ubuntu) |  | ||||||
|   apt_repository: |  | ||||||
|     repo: ppa:lutris-team/lutris |  | ||||||
|     update_cache: yes |  | ||||||
|     state: present |  | ||||||
|   when: ansible_distribution in ("Ubuntu") and gaming == true |  | ||||||
|   ignore_errors: yes |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Add PPA (Debian) |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: |  | ||||||
|     - "wget -q -O- https://download.opensuse.org/repositories/home:/strycore/Debian_12/Release.key \ |  | ||||||
|       | gpg --dearmor \ |  | ||||||
|       | sudo tee {{ lutris_keyfile }} > /dev/null" |  | ||||||
|     - "echo 'deb [signed-by={{ lutris_keyfile }}] https://download.opensuse.org/repositories/home:/strycore/Debian_12/ ./' \ |  | ||||||
|       | sudo tee {{ lutris_source_list }} > /dev/null" |  | ||||||
|     - "sudo apt update" |  | ||||||
|   when: ansible_distribution in ("Debian") and gaming == true and not lutris_source_exists.stat.exists |  | ||||||
|  |  | ||||||
| ## Install Package ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Install (besides ARM) |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - lutris |  | ||||||
|     state: present |  | ||||||
|   when: ansible_architecture != "aarch64" and gaming == true |  | ||||||
|  |  | ||||||
| ## Uninstall Package ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Uninstall (besides ARM) |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - lutris |  | ||||||
|     state: absent |  | ||||||
|   when: ansible_architecture != "aarch64" and gaming != true |  | ||||||
|  |  | ||||||
| ## Uninstall Repo ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Remove PPA (Ubuntu) |  | ||||||
|   apt_repository: |  | ||||||
|     repo: ppa:lutris-team/lutris |  | ||||||
|     update_cache: yes |  | ||||||
|     state: absent |  | ||||||
|   when: ansible_distribution in ("Ubuntu") and gaming != true |  | ||||||
|   ignore_errors: yes |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Lutris | Remove PPA (Debian) |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: |  | ||||||
|     - "mv {{ lutris_source_list }} ~/TRASH/" |  | ||||||
|     - "mv {{ lutris_keyfile }} ~/TRASH/" |  | ||||||
|     - "sudo apt update" |  | ||||||
|   when: ansible_distribution in ("Debian") and gaming != true and lutris_source_exists.stat.exists |  | ||||||
| @@ -24,7 +24,7 @@ | |||||||
|     name: |     name: | ||||||
|     - "{{ ffmpeg }}" |     - "{{ ffmpeg }}" | ||||||
|     state: present |     state: present | ||||||
|   when: editing in (true, "video", "audio") |   when: editing == true | ||||||
|  |  | ||||||
|  |  | ||||||
| ## Other Stuff | ## Other Stuff | ||||||
| @@ -38,16 +38,40 @@ | |||||||
|       - "{{ appimagelauncher }}" |       - "{{ appimagelauncher }}" | ||||||
|       - "{{ evolution }}" |       - "{{ evolution }}" | ||||||
|       - "{{ evolution }}*" |       - "{{ evolution }}*" | ||||||
|       - gparted |  | ||||||
|       - hugo |  | ||||||
|     state: present |     state: present | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | Packages | GS Connect (KDE Connect, Android Tool) | # Lutris # | ||||||
|  |  | ||||||
|  | - name: Workstation | Linux | Software | Packages | Add Lutris PPA (Ubuntu) | ||||||
|  |   apt_repository: | ||||||
|  |     repo: ppa:lutris-team/lutris | ||||||
|  |     update_cache: yes | ||||||
|  |     state: present | ||||||
|  |   when: ansible_distribution == "Ubuntu" and gaming == true | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
|  | - name: Workstation | Linux | Software | Packages | Add Lutris (besides ARM) | ||||||
|   package: |   package: | ||||||
|     name: |     name: | ||||||
|     - gnome-shell-extension-gsconnect |       - lutris | ||||||
|     state: present |     state: present | ||||||
|   when: ansible_distribution in ("Debian") |   when: ansible_architecture != "aarch64" and gaming == true | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
|  | - name: Workstation | Linux | Software | Packages | Remove Lutris (besides ARM) | ||||||
|  |   package: | ||||||
|  |     name: | ||||||
|  |       - lutris | ||||||
|  |     state: absent | ||||||
|  |   when: ansible_architecture != "aarch64" and gaming is not defined | ||||||
|  |   ignore_errors: yes | ||||||
|  |  | ||||||
|  | - name: Workstation | Linux | Software | Packages | Remove Lutris PPA (Ubuntu) | ||||||
|  |   apt_repository: | ||||||
|  |     repo: ppa:lutris-team/lutris | ||||||
|  |     update_cache: yes | ||||||
|  |     state: absent | ||||||
|  |   when: ansible_distribution == "Ubuntu" and gaming is not defined | ||||||
|   ignore_errors: yes |   ignore_errors: yes | ||||||
|  |  | ||||||
| # Remove Repo Software # | # Remove Repo Software # | ||||||
|   | |||||||
| @@ -1,70 +0,0 @@ | |||||||
| --- |  | ||||||
| # Install version of Codium which can use local compilers and SDKs like Flutter |  | ||||||
| #   properly. Flatpaks need workarounds to do this. This also lets us remove |  | ||||||
| #   CodeOSS and use Codium in 2 ways. |  | ||||||
| # Commands sourced and modified based on: |  | ||||||
| #   https://vscodium.com/#install-on-debian-ubuntu-deb-package |  | ||||||
| # This also exists but was not utilized: |  | ||||||
| #   https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo |  | ||||||
|  |  | ||||||
| ## Facts ## |  | ||||||
|  |  | ||||||
| # Paths |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | VS Codium | Facts |  | ||||||
|   set_fact: |  | ||||||
|     vscodium_source_list: "/etc/apt/sources.list.d/vscodium.list" |  | ||||||
|     vscodium_keyfile: "/usr/share/keyrings/vscodium.gpg" |  | ||||||
|   when: ansible_pkg_mgr == "apt" |  | ||||||
|  |  | ||||||
| # Checks |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | VS Codium | Check PPA |  | ||||||
|   stat: |  | ||||||
|     path: "{{ vscodium_source_list }}" |  | ||||||
|     get_attributes: false |  | ||||||
|     get_checksum: false |  | ||||||
|     get_mime: false |  | ||||||
|   register: vscodium_source_exists |  | ||||||
|   when: ansible_pkg_mgr == "apt" |  | ||||||
|  |  | ||||||
| ## Install Repo ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | VS Codium | Add PPA |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: |  | ||||||
|     - "wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg \ |  | ||||||
|       | gpg --dearmor \ |  | ||||||
|       | sudo tee {{ vscodium_keyfile }} > /dev/null" |  | ||||||
|     - "echo 'deb [arch=amd64,arm64 signed-by={{ vscodium_keyfile }}] https://download.vscodium.com/debs vscodium main' \ |  | ||||||
|       | sudo tee {{ vscodium_source_list }}" |  | ||||||
|     - "sudo apt update" |  | ||||||
|   when: ansible_pkg_mgr == "apt" and coding == true and not vscodium_source_exists.stat.exists |  | ||||||
|  |  | ||||||
| ## Install Package ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | VS Codium | Install |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - codium |  | ||||||
|     state: present |  | ||||||
|   when: ansible_pkg_mgr == "apt" and coding == true |  | ||||||
|  |  | ||||||
| ## Remove Package ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | VS Codium | Uninstall |  | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - codium |  | ||||||
|     state: absent |  | ||||||
|   when: ansible_pkg_mgr == "apt" and coding != true |  | ||||||
|  |  | ||||||
| ## Remove Repo ## |  | ||||||
|  |  | ||||||
| - name: Workstation | Linux | Software | VS Codium | Remove PPA |  | ||||||
|   shell: "{{ item }}" |  | ||||||
|   loop: |  | ||||||
|     - "mv {{ vscodium_source_list }} ~/TRASH/" |  | ||||||
|     - "mv /etc/apt/keyrings/vscodium*.gpg ~/TRASH/" |  | ||||||
|     - "sudo apt update" |  | ||||||
|   when: ansible_pkg_mgr == "apt" and coding != true and vscodium_source_exists.stat.exists |  | ||||||
| @@ -1,5 +1,5 @@ | |||||||
| --- | --- | ||||||
| # Download packages from Homebrew. | # Download packages from Homebrew.  | ||||||
| # Should this just be done in a Generic view? Is this really mac-specific, or just the facts? | # Should this just be done in a Generic view? Is this really mac-specific, or just the facts? | ||||||
| # FreeBSD has its own. May be good to keep it separate so it's more to-the-point. | # FreeBSD has its own. May be good to keep it separate so it's more to-the-point. | ||||||
|  |  | ||||||
| @@ -22,19 +22,13 @@ | |||||||
|     status: present |     status: present | ||||||
|   when: coding == true |   when: coding == true | ||||||
|  |  | ||||||
| - name: Workstation | Mac OS | Software | Brew | Install Packages (Editing:Video) | - name: Workstation | Mac OS | Software | Brew | Install Packages (Editing) | ||||||
|   package: |  | ||||||
|     name: |  | ||||||
|       - shotcut |  | ||||||
|     status: present |  | ||||||
|   when: editing in (true, "video") |  | ||||||
|  |  | ||||||
| - name: Workstation | Mac OS | Software | Brew | Install Packages (Editing:Audio) |  | ||||||
|   package: |   package: | ||||||
|     name: |     name: | ||||||
|       - audacity |       - audacity | ||||||
|  |       - shotcut | ||||||
|     status: present |     status: present | ||||||
|   when: editing in (true, "audio") |   when: editing == true | ||||||
|  |  | ||||||
| - name: Workstation | Mac OS | Software | Brew | Install Packages (Gaming) | - name: Workstation | Mac OS | Software | Brew | Install Packages (Gaming) | ||||||
|   package: |   package: | ||||||
|   | |||||||
| @@ -13,15 +13,15 @@ | |||||||
|                       , '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' | ||||||
|                       , 'codium.desktop' |                       , 'com.google.AndroidStudio.desktop' | ||||||
|                       , 'org.shotcut.Shotcut.desktop' |                       , 'org.shotcut.Shotcut.desktop' | ||||||
|                       , 'io.lmms.LMMS.desktop' |                       , 'io.lmms.LMMS.desktop' | ||||||
|                       , 'io.lbry.lbry-app.desktop', 'lbry.desktop' |                       , 'io.lbry.lbry-app.desktop', 'lbry.desktop' | ||||||
|                       , 'com.valvesoftware.Steam.desktop' |                       , 'com.valvesoftware.Steam.desktop' | ||||||
|                       , 'net.lutris.Lutris.desktop' |  | ||||||
|                       ]" |                       ]" | ||||||
|     dconf_terminal: gnome-terminal |     dconf_terminal: gnome-terminal | ||||||
|     dconf_theme: Adwaita-dark |     dconf_theme: Adwaita-dark | ||||||
| @@ -33,14 +33,8 @@ | |||||||
| #, 'org.mozilla.Thunderbird.desktop' | #, 'org.mozilla.Thunderbird.desktop' | ||||||
| # 2025-01-01 | # 2025-01-01 | ||||||
| # Reduce the amount of icons on the sidebar, things that may get added back. | # Reduce the amount of icons on the sidebar, things that may get added back. | ||||||
| #, 'org.godotengine.Godot.desktop' |  | ||||||
| # 2025-03-07 Removed in place of a 2nd VS Codium install (apt version). |  | ||||||
| #, '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. | #, 'org.godotengine.Godot.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: | ||||||
| @@ -219,12 +213,7 @@ | |||||||
|       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts false && inc_dconf && |       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts false && inc_dconf && | ||||||
|       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable false && inc_dconf && |       dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable false && inc_dconf && | ||||||
|  |  | ||||||
|       # Red Mode (Night Light) |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled true | ||||||
|       typeset -l redmode |  | ||||||
|       redmode="{{ redmode }}" |  | ||||||
|       if [[ $redmode == "true" ]]; then |  | ||||||
|         dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled true |  | ||||||
|       fi |  | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic false |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic false | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature "uint32 3170" |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature "uint32 3170" | ||||||
|       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from 2.0 |       dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from 2.0 | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user