General Enhancements #4
@@ -110,8 +110,7 @@ $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-$size.$extension"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	## Clean Filename ##
 | 
						## Clean Filename ##
 | 
				
			||||||
	# Prevent directory from having its name cleaned too.
 | 
						# Prevent directory from having its name cleaned too.
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -48,7 +48,8 @@ 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.
 | 
				
			||||||
		  -A : Recursively Force and Delete.
 | 
							  -l : Clean the filename of dashes and underscores so dates line up.
 | 
				
			||||||
 | 
							  -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.
 | 
				
			||||||
@@ -59,7 +60,7 @@ function usage {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Parameters ##
 | 
					## Parameters ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
while getopts ":i:v:a:c:s:rfdAmVxh" opt; do
 | 
					while getopts ":i:v:a:c:s:rfdlAmVxh" opt; do
 | 
				
			||||||
	case $opt in
 | 
						case $opt in
 | 
				
			||||||
		i) input="$OPTARG"
 | 
							i) input="$OPTARG"
 | 
				
			||||||
			;;
 | 
								;;
 | 
				
			||||||
@@ -77,7 +78,9 @@ while getopts ":i:v:a:c:s:rfdAmVxh" opt; do
 | 
				
			|||||||
			;;
 | 
								;;
 | 
				
			||||||
		d) delete="Y"
 | 
							d) delete="Y"
 | 
				
			||||||
			;;
 | 
								;;
 | 
				
			||||||
		A) search_command="find" && force="Y" && delete="Y"
 | 
							l) clean="Y"
 | 
				
			||||||
 | 
								;;
 | 
				
			||||||
 | 
							A) search_command="find" && force="Y" && delete="Y" #&& clean="Y"
 | 
				
			||||||
			;;
 | 
								;;
 | 
				
			||||||
		m) time_command="`which time`"
 | 
							m) time_command="`which time`"
 | 
				
			||||||
			;;
 | 
								;;
 | 
				
			||||||
@@ -102,25 +105,38 @@ 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.
 | 
						# Based roughly on the 2.5 step iteration used for 720 and 1080.
 | 
				
			||||||
	if (( $size >= 2160 )); then
 | 
						if (( size_int >= 2160 )); then
 | 
				
			||||||
		video_bitrate="30M"
 | 
							video_bitrate="30M"
 | 
				
			||||||
	elif (( $size >= 1440 )); then
 | 
						elif (( size_int >= 1440 )); then
 | 
				
			||||||
		video_bitrate="12M"
 | 
							video_bitrate="12M"
 | 
				
			||||||
	elif (( $size >= 1080 )); then
 | 
						elif (( size_int >= 1080 )); then
 | 
				
			||||||
		video_bitrate="5M"
 | 
							video_bitrate="5M"
 | 
				
			||||||
	elif (( $size >= 720 )); then
 | 
						elif (( size_int >= 720 )); then
 | 
				
			||||||
		video_bitrate="2000k"
 | 
							video_bitrate="2000k"
 | 
				
			||||||
	elif (( $size >= 480 )); then
 | 
						elif (( size_int >= 480 )); then
 | 
				
			||||||
		video_bitrate="750k"
 | 
							video_bitrate="750k"
 | 
				
			||||||
	elif (( $size >= 360 )); then
 | 
						elif (( size_int >= 360 )); then
 | 
				
			||||||
		video_bitrate="250k"
 | 
							video_bitrate="250k"
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
		video_bitrate="100k"
 | 
							video_bitrate="100k"
 | 
				
			||||||
	fi
 | 
						fi
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
compress_tags="$video_bitrate"
 | 
					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
 | 
				
			||||||
@@ -145,15 +161,6 @@ else
 | 
				
			|||||||
	time_command="$time_command -p"
 | 
						time_command="$time_command -p"
 | 
				
			||||||
fi
 | 
					fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ -z $size ]]; then
 | 
					 | 
				
			||||||
	size="720"
 | 
					 | 
				
			||||||
fi
 | 
					 | 
				
			||||||
while (( ${#size} < 4 )); do
 | 
					 | 
				
			||||||
    size="0$size"
 | 
					 | 
				
			||||||
done
 | 
					 | 
				
			||||||
compress_tags="$size-$compress_tags"
 | 
					 | 
				
			||||||
size="-filter:v scale=-2:$size"
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
## Main ##
 | 
					## Main ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if [[ "$verbose" == "Y" ]]; then
 | 
					if [[ "$verbose" == "Y" ]]; then
 | 
				
			||||||
@@ -208,21 +215,33 @@ $search_command "$input" | sort | while read file; do
 | 
				
			|||||||
		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" ]]; then
 | 
						if [[ -e "$newfile" || -e "$new_video_clean" ]]; 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" ~/TRASH/
 | 
									mv -v "$newfile" "$new_video_clean" ~/TRASH/ 2>/dev/null
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				rm -v "$newfile"
 | 
									rm -v "$newfile" "$new_video_clean" 2>/dev/null
 | 
				
			||||||
			fi
 | 
								fi
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			echo "SKIP: Already has a compressed version ($newfile)."
 | 
								echo "SKIP: Already has a compressed version."
 | 
				
			||||||
 | 
								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,6 +3,7 @@
 | 
				
			|||||||
	"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
 | 
				
			||||||
@@ -11,5 +12,14 @@
 | 
				
			|||||||
	"editor.tabSize": 3,
 | 
						"editor.tabSize": 3,
 | 
				
			||||||
	"editor.insertSpaces": false,
 | 
						"editor.insertSpaces": false,
 | 
				
			||||||
	"files.insertFinalNewline": true,
 | 
						"files.insertFinalNewline": true,
 | 
				
			||||||
	"files.trimFinalNewlines": true
 | 
						"files.trimFinalNewlines": true,
 | 
				
			||||||
 | 
						"git.confirmSync": false,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    "[dart]": {
 | 
				
			||||||
 | 
					        "editor.formatOnSave": true,
 | 
				
			||||||
 | 
					        "editor.formatOnType": true,
 | 
				
			||||||
 | 
					        "editor.selectionHighlight": false,
 | 
				
			||||||
 | 
					        "editor.tabCompletion": "onlySnippets",
 | 
				
			||||||
 | 
					        "editor.wordBasedSuggestions": "off"
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -123,6 +123,12 @@
 | 
				
			|||||||
      - 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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -156,6 +162,9 @@
 | 
				
			|||||||
      - include_tasks: tasks/workstation/linux/software/flutter.yml
 | 
					      - include_tasks: tasks/workstation/linux/software/flutter.yml
 | 
				
			||||||
        when: ansible_system == "Linux"
 | 
					        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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -100,7 +100,6 @@
 | 
				
			|||||||
    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"
 | 
				
			||||||
@@ -158,26 +157,27 @@
 | 
				
			|||||||
    function_update: |
 | 
					    function_update: |
 | 
				
			||||||
      function update() {
 | 
					      function update() {
 | 
				
			||||||
        PROG=$FUNCNAME
 | 
					        PROG=$FUNCNAME
 | 
				
			||||||
        usage="Usage: $PROG [-y]
 | 
					        usage="Usage: $PROG [-y] [-g] [-s] [-f]
 | 
				
			||||||
        $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 : Shutdown after updating.
 | 
					        -g : Goodbye - 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 goodbye
 | 
					        unset shutdown
 | 
				
			||||||
        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) goodbye="Y" ;;
 | 
					              g) shutdown="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 [[ "$goodbye" == "Y" && "{{ battery }}" == "True" ]]; then
 | 
					        if [[ "$shutdown" == "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,7 +202,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        echo "*** Completed Successfully ***"
 | 
					        echo "*** Completed Successfully ***"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if [[ $goodbye == "Y" ]]; then
 | 
					        if [[ $shutdown == "Y" ]]; then
 | 
				
			||||||
 | 
					          shopt -s expand_aliases
 | 
				
			||||||
          bye
 | 
					          bye
 | 
				
			||||||
        fi
 | 
					        fi
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -234,6 +235,8 @@
 | 
				
			|||||||
        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: |
 | 
				
			||||||
@@ -251,8 +254,12 @@
 | 
				
			|||||||
      '
 | 
					      '
 | 
				
			||||||
      alias init-prog=init-program
 | 
					      alias init-prog=init-program
 | 
				
			||||||
    bye_aliases: |
 | 
					    bye_aliases: |
 | 
				
			||||||
      alias bye="{{ shutdown_command }}"
 | 
					      function bye {
 | 
				
			||||||
      alias goodbye="update -yg"
 | 
					        {{ shutdown_command }}
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
 | 
					      function goodbye {
 | 
				
			||||||
 | 
					        update -yg
 | 
				
			||||||
 | 
					      }
 | 
				
			||||||
    metasploit_aliases: |
 | 
					    metasploit_aliases: |
 | 
				
			||||||
      alias metasploit="msfconsole"
 | 
					      alias metasploit="msfconsole"
 | 
				
			||||||
      alias hax="metasploit"
 | 
					      alias hax="metasploit"
 | 
				
			||||||
@@ -413,23 +420,63 @@
 | 
				
			|||||||
      }
 | 
					      }
 | 
				
			||||||
    alias_vim: alias vi=vim
 | 
					    alias_vim: alias vi=vim
 | 
				
			||||||
    alias_here: alias here='ls -alh `pwd`/*'
 | 
					    alias_here: alias here='ls -alh `pwd`/*'
 | 
				
			||||||
    alias_docker_reload: |
 | 
					    function_docker_reload: |
 | 
				
			||||||
      alias docker-reload='
 | 
					      function 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
 | 
				
			||||||
      '
 | 
					
 | 
				
			||||||
    alias_docker_update: |
 | 
					        if [[ -n "$1" ]]; then
 | 
				
			||||||
      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
 | 
				
			||||||
 | 
					          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
 | 
				
			||||||
@@ -459,16 +506,37 @@
 | 
				
			|||||||
        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
 | 
				
			||||||
 | 
					          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
 | 
					          if [[ ! -d $project ]]; then
 | 
				
			||||||
            continue
 | 
					            continue
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
          echo "*** `basename $project` ***"
 | 
					          echo -e "\n*** `basename $project` ***"
 | 
				
			||||||
          cd $project
 | 
					          cd $project
 | 
				
			||||||
          if [[ -d .git ]]; then
 | 
					          if [[ -d .git ]]; then
 | 
				
			||||||
            git pull
 | 
					            git pull
 | 
				
			||||||
@@ -477,6 +545,7 @@
 | 
				
			|||||||
            echo "Not a Git project, skipping!"
 | 
					            echo "Not a Git project, skipping!"
 | 
				
			||||||
          fi
 | 
					          fi
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
 | 
					        echo -e "\nDone!"
 | 
				
			||||||
      '
 | 
					      '
 | 
				
			||||||
    alias_code_reset: |
 | 
					    alias_code_reset: |
 | 
				
			||||||
      alias code-reset='
 | 
					      alias code-reset='
 | 
				
			||||||
@@ -492,29 +561,46 @@
 | 
				
			|||||||
      '
 | 
					      '
 | 
				
			||||||
    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
 | 
					          env-ansible dev
 | 
				
			||||||
          env-docker
 | 
					          env-docker dev
 | 
				
			||||||
          env-termux
 | 
					          env-termux dev
 | 
				
			||||||
          nodejs-website
 | 
					          nodejs-website dev
 | 
				
			||||||
          android-break-the-habit
 | 
					          ebook-health-protocol dev
 | 
				
			||||||
          android-tictactoe
 | 
					          flutter-expense-tracker dev
 | 
				
			||||||
          android-expense-tracker
 | 
					          flutter-social-traveler-app dev
 | 
				
			||||||
          android-example-database-room
 | 
					          nodejs-social-traveler-server dev
 | 
				
			||||||
          android-carb-up
 | 
					          misc-spare-change main
 | 
				
			||||||
          ebook-health-protocol
 | 
					          flutter-buddy-website dev
 | 
				
			||||||
      EOF
 | 
					      EOF
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      function code-reseed {
 | 
					      function code-reseed {
 | 
				
			||||||
        unseed_dir="$HOME/TRASH/`date ++%Y%m%d_%H%M%S`_UnseededCodeProjects"
 | 
					        # Unseed current projects.
 | 
				
			||||||
 | 
					        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 dev ~/Code/$git_project
 | 
					            --branch $git_branch ~/Code/$dest_folder
 | 
				
			||||||
        done
 | 
					        done
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
    function_clean_filenames: |
 | 
					    function_clean_filenames: |
 | 
				
			||||||
@@ -570,13 +656,89 @@
 | 
				
			|||||||
        find ~/Code/android-*/ -maxdepth 1 -type d -name ".gradle" \
 | 
					        find ~/Code/android-*/ -maxdepth 1 -type d -name ".gradle" \
 | 
				
			||||||
          -exec du -hs {} \; -exec rm -rf {} \;
 | 
					          -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 "\n*** Done! ***"
 | 
					        echo -e "\n*** Done! ***"
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      alias code-clean="clean-code"
 | 
					      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'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- 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 }}
 | 
				
			||||||
@@ -601,10 +763,10 @@
 | 
				
			|||||||
      {{ function_flatpak_purge }}
 | 
					      {{ function_flatpak_purge }}
 | 
				
			||||||
      {{ alias_vim }}
 | 
					      {{ alias_vim }}
 | 
				
			||||||
      {{ alias_here }}
 | 
					      {{ alias_here }}
 | 
				
			||||||
      {{ alias_docker_reload }}
 | 
					      {{ function_docker_reload }}
 | 
				
			||||||
      {{ alias_docker_update }}
 | 
					      {{ function_docker_update }}
 | 
				
			||||||
      {{ function_docker_upgrade }}
 | 
					      {{ function_docker_upgrade }}
 | 
				
			||||||
      {{ alias_docker_restart }}
 | 
					      {{ function_docker_restart }}
 | 
				
			||||||
      {{ alias_code_check }}
 | 
					      {{ alias_code_check }}
 | 
				
			||||||
      {{ alias_code_reset }}
 | 
					      {{ alias_code_reset }}
 | 
				
			||||||
      {{ function_code_reseed }}
 | 
					      {{ function_code_reseed }}
 | 
				
			||||||
@@ -616,6 +778,11 @@
 | 
				
			|||||||
      {{ alias_scan }}
 | 
					      {{ alias_scan }}
 | 
				
			||||||
      {{ alias_prod }}
 | 
					      {{ alias_prod }}
 | 
				
			||||||
      {{ function_clean_code }}
 | 
					      {{ function_clean_code }}
 | 
				
			||||||
 | 
					      {{ alias_kill_battery }}
 | 
				
			||||||
 | 
					      {{ alias_kill_system }}
 | 
				
			||||||
 | 
					      {{ function_update_sdks }}
 | 
				
			||||||
 | 
					      {{ function_ansible_vars }}
 | 
				
			||||||
 | 
					      {{ alias_permission_commands }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: General | Account Management | Users | Files | .bashrc
 | 
					- name: General | Account Management | Users | Files | .bashrc
 | 
				
			||||||
  blockinfile:
 | 
					  blockinfile:
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										6
									
								
								tasks/general/software/hyperling.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tasks/general/software/hyperling.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,6 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					# 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
 | 
				
			||||||
@@ -137,3 +137,19 @@
 | 
				
			|||||||
    state: absent
 | 
					    state: absent
 | 
				
			||||||
  when: ansible_distribution != "Ubuntu"
 | 
					  when: ansible_distribution != "Ubuntu"
 | 
				
			||||||
  ignore_errors: yes
 | 
					  ignore_errors: yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: General | Software | Packages | GS Connect (KDE Connect, Android Tool)
 | 
				
			||||||
 | 
					  package:
 | 
				
			||||||
 | 
					    name:
 | 
				
			||||||
 | 
					    - gnome-shell-extension-gsconnect
 | 
				
			||||||
 | 
					    state: present
 | 
				
			||||||
 | 
					  when: ansible_distribution in ("Debian")
 | 
				
			||||||
 | 
					  ignore_errors: yes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: General | Software | Packages | Other Debian Packages
 | 
				
			||||||
 | 
					  package:
 | 
				
			||||||
 | 
					    name:
 | 
				
			||||||
 | 
					    - usbutils
 | 
				
			||||||
 | 
					    state: present
 | 
				
			||||||
 | 
					  when: ansible_distribution in ("Debian")
 | 
				
			||||||
 | 
					  ignore_errors: yes
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,10 +9,6 @@
 | 
				
			|||||||
  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
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										223
									
								
								tasks/workstation/linux/software/android.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										223
									
								
								tasks/workstation/linux/software/android.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,223 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					# 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 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"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Checks ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Workstation | Linux | Software | Android | Check SDK Manager Exists [1/2]
 | 
				
			||||||
 | 
					  stat:
 | 
				
			||||||
 | 
					    path: "{{ android_sdkmanager_temp }}"
 | 
				
			||||||
 | 
					  register: android_sdkmanager_temp_stat
 | 
				
			||||||
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Workstation | Linux | Software | Android | Check SDK Manager Exists [2/2]
 | 
				
			||||||
 | 
					  stat:
 | 
				
			||||||
 | 
					    path: "{{ android_sdkmanager_final }}"
 | 
				
			||||||
 | 
					  register: android_sdkmanager_final_stat
 | 
				
			||||||
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- name: Workstation | Linux | Software | Android | Check Download Exists
 | 
				
			||||||
 | 
					  stat:
 | 
				
			||||||
 | 
					    path: "{{ android_download_file }}"
 | 
				
			||||||
 | 
					  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 Modules
 | 
				
			||||||
 | 
					  shell: "yes | {{ android_sdkmanager_final }} --install '{{ item }}' --sdk_root={{ android_sdk_location }}"
 | 
				
			||||||
 | 
					  loop:
 | 
				
			||||||
 | 
					    # 34
 | 
				
			||||||
 | 
					    - build-tools;34.0.0
 | 
				
			||||||
 | 
					    - platforms;android-34
 | 
				
			||||||
 | 
					    - sources;android-34
 | 
				
			||||||
 | 
					    # 35
 | 
				
			||||||
 | 
					    - build-tools;35.0.0
 | 
				
			||||||
 | 
					    - build-tools;35.0.1
 | 
				
			||||||
 | 
					    - platforms;android-35
 | 
				
			||||||
 | 
					    - sources;android-35
 | 
				
			||||||
 | 
					    # Images
 | 
				
			||||||
 | 
					    #- system-images;android-35;default;x86_64
 | 
				
			||||||
 | 
					    #- system-images;android-35;aosp_atd;x86_64
 | 
				
			||||||
 | 
					    - system-images;android-35;google_apis_playstore;x86_64
 | 
				
			||||||
 | 
					  become_user: "{{ user }}"
 | 
				
			||||||
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- 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 | Licenses 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,28 +60,21 @@
 | 
				
			|||||||
      - 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: "{{ item }}"
 | 
					  shell: rm /etc/apt/sources.list.d/brave-browser-*.list && apt update || echo "Not Needed"
 | 
				
			||||||
  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
 | 
					    - rm /etc/yum.repos.d/brave-browser-*.repo || echo "Not Needed"
 | 
				
			||||||
    - rpm -e gpg-pubkey-c2d4e821-5e7252b8
 | 
					    - rpm -e gpg-pubkey-c2d4e821-5e7252b8 || echo "Not Needed"
 | 
				
			||||||
  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
 | 
					    - zypper removerepo brave-browser || echo "Not Needed"
 | 
				
			||||||
    - rpm -e gpg-pubkey-c2d4e821-5e7252b8
 | 
					    - rpm -e gpg-pubkey-c2d4e821-5e7252b8 || echo "Not Needed"
 | 
				
			||||||
  when: ansible_pkg_mgr == "zypper"
 | 
					  when: ansible_pkg_mgr == "zypper"
 | 
				
			||||||
  ignore_errors: yes
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,7 +24,6 @@
 | 
				
			|||||||
    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
 | 
				
			||||||
@@ -42,7 +41,7 @@
 | 
				
			|||||||
      - { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" }
 | 
					      - { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" }
 | 
				
			||||||
      - { app: "org.gimp.GIMP", name: "gimp", extra: "" }
 | 
					      - { app: "org.gimp.GIMP", name: "gimp", extra: "" }
 | 
				
			||||||
    flatpaks_coding:
 | 
					    flatpaks_coding:
 | 
				
			||||||
      - { app: "com.vscodium.codium", name: "codium", extra: "" }
 | 
					      - { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" }
 | 
				
			||||||
      - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" }
 | 
					      - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" }
 | 
				
			||||||
      - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" }
 | 
					      - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" }
 | 
				
			||||||
      - { app: "org.godotengine.Godot", name: "godot", extra: "" }
 | 
					      - { app: "org.godotengine.Godot", name: "godot", extra: "" }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,16 +3,33 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
## Facts ##
 | 
					## Facts ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Linux | Software | Flutter | Facts [1/2]
 | 
					- name: Workstation | Linux | Software | Flutter | Facts [1/4]
 | 
				
			||||||
  set_fact:
 | 
					  set_fact:
 | 
				
			||||||
    flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz"
 | 
					    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_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz"
 | 
				
			||||||
    flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter"
 | 
					    flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter"
 | 
				
			||||||
    flutter_report: "{{ user_user.home }}/Reports/flutter.txt"
 | 
					    flutter_report: "{{ user_user.home }}/Reports/flutter.txt"
 | 
				
			||||||
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Linux | Software | Flutter | Facts [2/2]
 | 
					- name: Workstation | Linux | Software | Flutter | Facts [2/4]
 | 
				
			||||||
  set_fact:
 | 
					  set_fact:
 | 
				
			||||||
    flutter_bin_location: "{{ flutter_sdk_location }}/flutter/bin"
 | 
					    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 ##
 | 
					## Checks ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -20,11 +37,13 @@
 | 
				
			|||||||
  stat:
 | 
					  stat:
 | 
				
			||||||
    path: "{{ flutter_sdk_location }}"
 | 
					    path: "{{ flutter_sdk_location }}"
 | 
				
			||||||
  register: flutter_sdk_stat
 | 
					  register: flutter_sdk_stat
 | 
				
			||||||
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Linux | Software | Flutter | Check Download Exists
 | 
					- name: Workstation | Linux | Software | Flutter | Check Download Exists
 | 
				
			||||||
  stat:
 | 
					  stat:
 | 
				
			||||||
    path: "{{ flutter_download_file }}"
 | 
					    path: "{{ flutter_download_file }}"
 | 
				
			||||||
  register: flutter_download_stat
 | 
					  register: flutter_download_stat
 | 
				
			||||||
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Packages ##
 | 
					## Packages ##
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -60,9 +79,9 @@
 | 
				
			|||||||
  package:
 | 
					  package:
 | 
				
			||||||
    name:
 | 
					    name:
 | 
				
			||||||
      - libc6:amd64
 | 
					      - libc6:amd64
 | 
				
			||||||
      - libstdc++6:amd64
 | 
					      - libstdc++6
 | 
				
			||||||
      - lib32z1
 | 
					      - lib32z1
 | 
				
			||||||
      - libbz2-1.0:amd64
 | 
					      - libbz2-1.0
 | 
				
			||||||
    state: present
 | 
					    state: present
 | 
				
			||||||
  when: coding == true
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -76,6 +95,7 @@
 | 
				
			|||||||
      url: "{{ flutter_url }}"
 | 
					      url: "{{ flutter_url }}"
 | 
				
			||||||
      dest: "{{ flutter_download_file }}"
 | 
					      dest: "{{ flutter_download_file }}"
 | 
				
			||||||
      owner: "{{ user }}"
 | 
					      owner: "{{ user }}"
 | 
				
			||||||
 | 
					      group: "{{ user }}"
 | 
				
			||||||
      mode: '0664'
 | 
					      mode: '0664'
 | 
				
			||||||
    when: not flutter_download_stat.stat.exists
 | 
					    when: not flutter_download_stat.stat.exists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -84,6 +104,7 @@
 | 
				
			|||||||
      path: "{{ flutter_sdk_location }}"
 | 
					      path: "{{ flutter_sdk_location }}"
 | 
				
			||||||
      state: directory
 | 
					      state: directory
 | 
				
			||||||
      owner: "{{ user }}"
 | 
					      owner: "{{ user }}"
 | 
				
			||||||
 | 
					      group: "{{ user }}"
 | 
				
			||||||
      mode: '0755'
 | 
					      mode: '0755'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  - name: Workstation | Linux | Software | Flutter | Extract SDK
 | 
					  - name: Workstation | Linux | Software | Flutter | Extract SDK
 | 
				
			||||||
@@ -91,7 +112,9 @@
 | 
				
			|||||||
      src: "{{ flutter_download_file }}"
 | 
					      src: "{{ flutter_download_file }}"
 | 
				
			||||||
      dest: "{{ flutter_sdk_location }}"
 | 
					      dest: "{{ flutter_sdk_location }}"
 | 
				
			||||||
      owner: "{{ user }}"
 | 
					      owner: "{{ user }}"
 | 
				
			||||||
 | 
					      group: "{{ user }}"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  become_user: "{{ user }}"
 | 
				
			||||||
  when: coding == true and not flutter_sdk_stat.stat.exists
 | 
					  when: coding == true and not flutter_sdk_stat.stat.exists
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Linux | Software | Flutter | Delete Archive
 | 
					- name: Workstation | Linux | Software | Flutter | Delete Archive
 | 
				
			||||||
@@ -135,12 +158,8 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Linux | Software | Flutter | Doctor Report
 | 
					- name: Workstation | Linux | Software | Flutter | Doctor Report
 | 
				
			||||||
  shell: "{{ item }}"
 | 
					  shell: "{{ item }}"
 | 
				
			||||||
  loop:
 | 
					  loop: "{{ flutter_report_commands }}"
 | 
				
			||||||
    - "date > {{ flutter_report }}"
 | 
					  become_user: "{{ user }}"
 | 
				
			||||||
    - "{{ flutter_bin_location }}/flutter --disable-analytics >> {{ flutter_report }}"
 | 
					 | 
				
			||||||
    - "date >> {{ flutter_report }}"
 | 
					 | 
				
			||||||
    - "{{ flutter_bin_location }}/flutter doctor -v >> {{ flutter_report }}"
 | 
					 | 
				
			||||||
    - "date >> {{ flutter_report }}"
 | 
					 | 
				
			||||||
  when: coding == true
 | 
					  when: coding == true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Uninstall SDK ##
 | 
					## Uninstall SDK ##
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										76
									
								
								tasks/workstation/linux/software/lutris.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								tasks/workstation/linux/software/lutris.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					# 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 }}"
 | 
				
			||||||
 | 
					  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
 | 
				
			||||||
@@ -38,44 +38,9 @@
 | 
				
			|||||||
      - "{{ appimagelauncher }}"
 | 
					      - "{{ appimagelauncher }}"
 | 
				
			||||||
      - "{{ evolution }}"
 | 
					      - "{{ evolution }}"
 | 
				
			||||||
      - "{{ evolution }}*"
 | 
					      - "{{ evolution }}*"
 | 
				
			||||||
      - adb
 | 
					      - gparted
 | 
				
			||||||
      - fastboot
 | 
					 | 
				
			||||||
    state: present
 | 
					    state: present
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# 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:
 | 
					 | 
				
			||||||
    name:
 | 
					 | 
				
			||||||
      - lutris
 | 
					 | 
				
			||||||
    state: present
 | 
					 | 
				
			||||||
  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
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Remove Repo Software #
 | 
					# Remove Repo Software #
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Linux | Software | Packages | Remove Applications
 | 
					- name: Workstation | Linux | Software | Packages | Remove Applications
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										67
									
								
								tasks/workstation/linux/software/vscodium.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								tasks/workstation/linux/software/vscodium.yml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
				
			|||||||
 | 
					---
 | 
				
			||||||
 | 
					# 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 }}"
 | 
				
			||||||
 | 
					  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
 | 
				
			||||||
@@ -17,12 +17,12 @@
 | 
				
			|||||||
                      , 'org.telegram.desktop.desktop'
 | 
					                      , 'org.telegram.desktop.desktop'
 | 
				
			||||||
                      , 'com.discordapp.Discord.desktop'
 | 
					                      , 'com.discordapp.Discord.desktop'
 | 
				
			||||||
                      , 'com.vscodium.codium.desktop'
 | 
					                      , 'com.vscodium.codium.desktop'
 | 
				
			||||||
                      , 'com.visualstudio.code-oss.desktop', 'code-oss.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
 | 
				
			||||||
@@ -35,6 +35,10 @@
 | 
				
			|||||||
# 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'
 | 
					#, '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'
 | 
				
			||||||
 | 
					# 2025-03-21 Not really using Android Studio now that Flutter is working.
 | 
				
			||||||
 | 
					#, 'com.google.AndroidStudio.desktop'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- name: Workstation | Account Management | GNOME | Facts (NixOS)
 | 
					- name: Workstation | Account Management | GNOME | Facts (NixOS)
 | 
				
			||||||
  set_fact:
 | 
					  set_fact:
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user