Compare commits

..

86 Commits

Author SHA1 Message Date
1db8c0b7b0 Fix tabs in usage to spaces. 2025-06-16 18:07:23 -06:00
116087928d Strip metadata from converted images. 2025-06-16 18:01:59 -06:00
b6e820570f Allow re-expanding the filename in a consistent way so it's not one big number. 2025-06-16 18:01:41 -06:00
1f41651409 Merge pull request 'General Enhancements' (#4) from dev into main
Reviewed-on: #4
2025-06-16 12:33:14 -07:00
5f63ad1a59 Enahnce the docker aliases to all allow logging after the requested action. 2025-06-16 13:59:19 -06:00
7305e3a90c Add lsusb for Debian. 2025-05-18 11:37:49 -07:00
1e65b565cd Add GS Connect. 2025-05-09 17:41:02 -07:00
c828131bad Change expense tracker to DEV branch. Add the new version of the Buddy project. 2025-04-25 08:43:15 -07:00
3bca080de1 UNTESTED: Add cleaning of the video filename. 2025-04-03 14:50:01 -07:00
e308beec07 Do the size as an extra extension so that it is no longer cleaned into the date. 2025-04-03 10:34:51 -07:00
e155d36ab4 Fix null size variable bug with determining the default bitrate. 2025-03-31 15:09:00 -07:00
4bb075b747 Add a TBD file. 2025-03-21 15:07:22 -07:00
204a1fbb16 Hide Android Studio from taskbar. 2025-03-21 11:07:21 -07:00
9bb813ea78 Add aliases for chmod and chown showing changes. 2025-03-21 10:43:45 -07:00
066c8132e9 No longer using the LBRY folder. 2025-03-19 05:30:44 -07:00
9e61af8aa4 Add aliases for update-firmware. 2025-03-08 20:38:40 -07:00
69c1093289 Update usage for update. 2025-03-08 20:36:38 -07:00
c7c21bc2f8 Add note as to why -g is for shutdown. 2025-03-08 20:35:58 -07:00
466d8b5de5 Update already has code to skip Flatpaks if shutting down. 2025-03-08 20:33:41 -07:00
1eb41df822 Change parameter to not be an alias / function name. 2025-03-08 20:24:10 -07:00
152635e0b3 Don't do Flatpaks during goodbye. 2025-03-08 11:21:24 -07:00
17b78cc361 Goodbye isn't working anymore, try adding the shopt right before the attempt at bye. 2025-03-08 11:19:47 -07:00
a4ff66a9c9 Use dev branches on social traveler project so main is empty until a working version exists. 2025-03-07 12:11:17 -07:00
ea4d4070a6 Continue improving output text. 2025-03-07 12:10:36 -07:00
48777cf25c Attempt to fix Flutter project detection. 2025-03-07 12:02:02 -07:00
e4d784b6c7 Add output for what happens initially. 2025-03-07 12:01:11 -07:00
d6cf29d51d Further enhancements to code-reseed, including specifying the branch and providing better output. 2025-03-07 11:52:01 -07:00
51f8cae0ec Remove extra newline. 2025-03-07 09:06:03 -07:00
6e1884b912 Add -flatpak to the Flatpak's executable. 2025-03-07 09:05:43 -07:00
695a7fc30b No real need to update the key every time, recombine the step. 2025-03-07 08:48:00 -07:00
a447389af2 Move keyring to share while also modifying playbook to only do Debian steps when PPA does not already exist. 2025-03-07 08:46:53 -07:00
048d4d16c1 Update settings based on recent Codium development. 2025-03-07 08:26:26 -07:00
f9421585c9 Clean up log: Remove reference to old Lynis install directory. 2025-03-07 08:22:13 -07:00
660429eab0 Clean up log: No longer allow failures in Brave playbook. 2025-03-07 08:19:43 -07:00
05bf09c557 Add comments. 2025-03-07 08:13:06 -07:00
5c72168a7b Add the apt version of VS Codium for enhanced Flutter development over Flatpak version of Code OSS. Does ot compete with the Flatpak version of VS Codium. 2025-03-07 08:11:04 -07:00
87037148a7 Add URL which had the added commands for Debian. 2025-03-07 07:24:27 -07:00
aacb53081a Add Lutris to favorites if it's installed. 2025-03-06 14:44:16 -07:00
fd156c6382 Move lutris to its own playbook while adding Debian support. 2025-03-06 12:52:16 -07:00
82269f8cc2 Also add the Lutris ppa for Debian. 2025-03-06 12:41:01 -07:00
3c5617e64a Merge pull request 'Move Test Branch To Dev' (#3) from test-then-move-to-dev into dev
Reviewed-on: #3
2025-03-06 07:51:50 -07:00
c796d62fc3 Add flutter projects to reseed list. Also remove projects not being touched much. 2025-02-26 15:16:50 -07:00
50d499e91f Add fun output script for some Ansible provision facts. 2025-02-26 10:47:00 -07:00
72f48d64ab Add alias sdk-updater for update-sdks 2025-02-26 10:25:25 -07:00
bc0cb93b02 Get the END messages up against the license messages. 2025-02-26 10:24:38 -07:00
5a3c700380 Contain the output a little better. 2025-02-26 10:21:22 -07:00
2e223c5e28 Fix newline in output. 2025-02-26 10:19:49 -07:00
2c19c63a09 Fix if statement, Ansible variable was True rather than true. 2025-02-26 10:19:34 -07:00
af13e2c3a4 Create shortcut for updating SDKs. Remove updating Android SDK from its playbook. 2025-02-26 10:10:04 -07:00
02c153d260 Add aliases for using stress. 2025-02-26 09:21:13 -07:00
6eb48e4d9f Fix having sdkmanager in $PATH. 2025-02-26 09:10:26 -07:00
5ffe4d5b63 Fix typo in option. 2025-02-26 08:59:57 -07:00
f9ffc9839f Become user more often; make life easier. 2025-02-26 08:59:45 -07:00
659d46d088 Fix sdk location option for sdkmanager. 2025-02-26 08:55:51 -07:00
a6c819a086 Ensure directory exists to untar into. 2025-02-26 08:37:13 -07:00
e3887098a0 Modify variable names and attempt to get the tar extracted to the correct ansible/ subdirectory. 2025-02-26 08:36:36 -07:00
2e8c2205c3 Enhance comment. Fix typo. Fix conditional. 2025-02-26 08:33:54 -07:00
4bc52d984c adb and fastboot were moved to android.yml. 2025-02-26 08:30:17 -07:00
f64a9584be Save a little time in the script if system is not for coding. 2025-02-26 08:29:55 -07:00
2708e367df Attempt to fix when Sdk/ already exists but latest/sdkmanager is not present yet. 2025-02-26 08:29:31 -07:00
d0d5a5306b Create playbook which installs and configures an Android SDK. Ensures Flutter has everything it needs for Android deployment. 2025-02-26 07:54:41 -07:00
07ba3e8e35 Place commands which may be reused in other plybooks into more specific cmmands. 2025-02-26 07:53:51 -07:00
59704e4c6e Add gparted for disk editing. 2025-02-26 05:23:17 -07:00
4aa5e90dd9 Ensure the group gets set too. 2025-02-25 15:42:14 -07:00
79050c8ba6 Ensure aliases are understood in all functions and scripts. 2025-02-25 13:38:22 -07:00
2c6c4fee25 Add cleaning of flutter projects. 2025-01-30 16:37:24 -07:00
85ba9946c3 Add a newline before the final message. 2025-01-29 13:33:59 -07:00
76bc8535c1 Add newline between repos and extra before/after messaging. 2025-01-29 12:17:08 -07:00
8289e2a0ca Merge pull request 'General Enhancements' (#2) from dev into main
Reviewed-on: #2
2025-01-29 11:38:56 -07:00
b387fe2c2a Pull from the git repo rather than creating a local directory. 2025-01-29 11:22:15 -07:00
3370552070 Need to have Code OSS back since Flutter wipes the workspace setup. Either it or Codium should be dedicated to Flutter, and the other will be all the other projects. 2025-01-20 17:40:04 -07:00
135ef241da Remove extra text. 2025-01-20 17:26:35 -07:00
127820d971 Disable analytics as part of the report. 2025-01-20 17:20:20 -07:00
95d1f71491 Add flutter and dependencies. 2025-01-20 17:17:32 -07:00
e69b5d2d33 Determine default video bitrates based on dimensions. Add file options to extension. Fix shrinking to certain sizes by using -2 as width. Tested successfully! 2025-01-19 16:37:02 -07:00
4a3ac3622f Allow shrinking a shrunk image. Add size to tag. Add defaults to usage. Tested successfully! 2025-01-19 12:41:16 -07:00
8fc05c43b5 Add fastboot too! 2025-01-09 17:24:36 -07:00
aa97e9ba6e Add adb to the default workstation packages. 2025-01-09 17:23:37 -07:00
7cd8fc4eac Add alias for command so that it is consistent with code-check, code-reseed, etc. 2025-01-09 16:26:40 -07:00
658f13d74a Add helper to clean up Code folder. 2025-01-09 13:25:23 -07:00
eba289c1d7 Automatically exclude unnecessary Android files when copying data. 2025-01-09 11:37:42 -07:00
3dffbc11db Fancify the editing setting to allow only audio or only video programs. Move GIMP to Generic so that it's always installed.. 2025-01-05 16:59:37 -07:00
391129e19b Give the desktop update function nice output like just done in Termux. 2025-01-03 12:31:51 -07:00
ae3112d969 Fix the new summarize feature on check-trash. 2025-01-02 15:59:50 -07:00
db3e610c91 Add a prod alias similar to how the env-termux project does it. 2025-01-02 15:51:41 -07:00
76ec891138 Add summarize parameter to check-trash. 2025-01-02 13:37:22 -07:00
22 changed files with 1057 additions and 169 deletions

View File

@ -95,30 +95,39 @@
case $pkg_mgr in case $pkg_mgr in
apt) apt)
if [[ $distribution != "ParrotOS" ]]; then if [[ $distribution != "ParrotOS" ]]; then
echo "*** Apt ***" && echo -e "******* Apt *******\n*** Update Cache ***" &&
sudo apt update && sudo apt update &&
echo -e "\n*** Auto Remove ***" &&
sudo apt autoremove {{ update_accept_var }} && sudo apt autoremove {{ 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 "*** Parrot ***" echo -e "******* Parrot *******\n*** Update Cache ***" &&
sudo apt update && sudo apt update &&
echo -e "\n*** Auto Remove ***" &&
sudo apt autoremove {{ update_accept_var }} && sudo apt autoremove {{ 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)

View File

@ -34,9 +34,12 @@ 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.
@ -48,15 +51,17 @@ function usage() {
## Parameters ## ## Parameters ##
while getopts ":s:l:rfdcAhx" opt; do while getopts ":s:l:rfFdcAhx" 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" ;;
A) recurse="Y" && search="find" && force="Y" && delete="Y" && clean="Y" ;; e) expand="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 ;;
@ -70,7 +75,7 @@ if [[ -n "$in_size" && "$size" != "$in_size" ]]; then
usage 1 usage 1
fi fi
convert_exe="`which convert`" convert_exe="`which convert` -strip"
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'."
@ -90,8 +95,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. # Avoid processing files previously shrunk, unless we are FORCEing.
[[ "$image" == *"$tag"* ]] && continue [[ "$image" == *"$tag"* && -z "$super_force" ]] && continue
echo -e "\n$image" echo -e "\n$image"
@ -106,8 +111,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.$extension"
## Clean Filename ## ## Clean Filename ##
# Prevent directory from having its name cleaned too. # Prevent directory from having its name cleaned too.
@ -120,13 +124,31 @@ $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// /}"
# Add directory back to the full path. ## Expanded Filename ##
# 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" && (-e "$new_image" || -e $new_image_clean) ]]; then if [[ -n "$force" &&
(-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" 2>/dev/null rm -v "$new_image" "$new_image_clean" "$new_image_exp" 2>/dev/null
fi fi
# Skip if a compressed image was already created today. # Skip if a compressed image was already created today.
@ -135,10 +157,14 @@ $search "$location" | sort | while read image; do
continue continue
fi fi
# Whether or not to use the cleaned version or the normal version. # Whether or not to use the cleaned 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.

View File

@ -32,7 +32,14 @@ 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 to '2000k'. Defaults are based on the size passed.
>= 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.
@ -41,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.
@ -52,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"
;; ;;
@ -70,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`"
;; ;;
@ -95,14 +105,44 @@ if [[ -z "$input" ]]; then
input="." input="."
fi fi
if [[ -z "$video_bitrate" ]]; then if [[ -z $size ]]; then
video_bitrate="2000k" size="720"
fi 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
# Based roughly on the 2.5 step iteration used for 720 and 1080.
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
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
@ -121,11 +161,6 @@ 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
@ -172,26 +207,41 @@ $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" ]]; 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` ***"

View File

@ -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"
}
} }

View File

@ -75,7 +75,6 @@
- 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
@ -124,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
@ -154,6 +159,12 @@
- 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

View File

@ -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: ling ; Default: user
; ;
; 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: Hyperling ; Default: User
; ;
; 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,6 +101,22 @@
; 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
@ -124,6 +140,9 @@
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:
@ -144,6 +163,9 @@
- { '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 ##
@ -159,6 +181,10 @@
; 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)
; ;
; 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)
; ;

View File

@ -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"
@ -281,16 +288,20 @@
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
;; ;;
@ -318,8 +329,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 with contents:" echo "Found $trash:"
$sudo du -ha $trash | sort -h $sudo du $du_params $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 ..?* .[!.]* *"
@ -328,8 +339,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 with contents:" echo "Found $trash:"
$sudo du -ha $trash | sort -h $sudo du $du_params $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 ..?* .[!.]* *"
@ -345,8 +356,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 with contents:" echo "Found $trash:"
sudo du -ha $trash | sort -h sudo du $du_params $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 ..?* .[!.]* *"
@ -355,8 +366,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 with contents:" echo "Found $trash:"
sudo du -ha $trash | sort -h sudo du $du_params $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 ..?* .[!.]* *"
@ -409,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
@ -455,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
@ -473,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='
@ -488,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: |
@ -543,7 +633,7 @@
echo -e "\nDone!\n" echo -e "\nDone!\n"
} }
alias_clone: | alias_clone: |
alias clone="rsync -auPhz --delete" alias clone="rsync -auPhz --delete --exclude '.gradle' --exclude 'app/build'"
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"
@ -555,10 +645,100 @@
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 "\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'
- 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 }}
@ -583,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 }}
@ -596,6 +776,13 @@
{{ 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 }}
- name: General | Account Management | Users | Files | .bashrc - name: General | Account Management | Users | Files | .bashrc
blockinfile: blockinfile:

View File

@ -6,9 +6,7 @@
path: "{{ user_root.home }}/bin/scm.sh" path: "{{ user_root.home }}/bin/scm.sh"
block: | block: |
# 20210211 - Make life easier! # 20210211 - Make life easier!
git clone {{ git_repo_http }} ansible-pull time {{ ansible_pull_exec.stdout }} -U {{ git_repo_http }}
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"

View File

@ -6,9 +6,7 @@
path: "{{ user_user.home }}/bin/scm.sh" path: "{{ user_user.home }}/bin/scm.sh"
block: | block: |
# 20210211 - Make life easier! # 20210211 - Make life easier!
git clone {{ git_repo_http }} ansible-pull time {{ ansible_pull_exec.stdout }} -U {{ git_repo_http }}
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"

View 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

View File

@ -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

View File

@ -9,12 +9,8 @@
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: yes clone: yes
@ -22,7 +18,7 @@
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'
@ -31,12 +27,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'

View File

@ -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 == true when: editing in (true, "video")
- 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 == true when: not editing in (true, "video")
# 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

View 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

View File

@ -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

View File

@ -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
@ -40,17 +39,18 @@
- { app: "org.signal.Signal", name: "signal", extra: "" } - { app: "org.signal.Signal", name: "signal", extra: "" }
- { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } - { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" }
- { app: "com.transmissionbt.Transmission", name: "transmission", extra: "" } - { app: "com.transmissionbt.Transmission", name: "transmission", 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: "" }
- { app: "com.visualstudio.code-oss", name: "code", extra: "" } - { app: "com.visualstudio.code-oss", name: "code", extra: "" }
flatpaks_editing: flatpaks_editing_video:
- { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" } - { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" }
- { app: "com.obsproject.Studio", name: "obs", extra: "" } - { app: "com.obsproject.Studio", name: "obs", extra: "" }
- { 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: "" }
@ -158,14 +158,62 @@
# Media Editors # # Media Editors #
- name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Installs - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Installs
flatpak: flatpak:
name: "{{ item.app }}" name: "{{ item.app }}"
remote: flathub remote: flathub
state: present state: present
loop: "{{ flatpaks_editing }}" loop: "{{ flatpaks_editing_video }}"
ignore_errors: yes ignore_errors: yes
when: editing == true when: editing in (true, "video")
- 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:
@ -177,34 +225,34 @@
marker_end: "exit 0" marker_end: "exit 0"
state: present state: present
create: yes create: yes
loop: "{{ flatpaks_editing }}" loop: "{{ flatpaks_editing_audio }}"
become_user: "{{ user }}" become_user: "{{ user }}"
when: editing == true when: editing in (true, "audio")
- 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 }}" loop: "{{ flatpaks_editing_audio }}"
when: editing == true when: editing in (true, "audio")
- 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 }}" loop: "{{ flatpaks_editing_audio }}"
ignore_errors: yes ignore_errors: yes
when: not editing == true when: not editing in (true, "audio")
- 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 }}" loop: "{{ flatpaks_editing_audio }}"
ignore_errors: yes ignore_errors: yes
when: not editing == true when: not editing in (true, "audio")
# Gaming # # Gaming #

View File

@ -0,0 +1,171 @@
---
# 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/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 }}"
register: flutter_sdk_stat
when: coding == true
- name: Workstation | Linux | Software | Flutter | Check Download Exists
stat:
path: "{{ flutter_download_file }}"
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

View 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

View File

@ -24,7 +24,7 @@
name: name:
- "{{ ffmpeg }}" - "{{ ffmpeg }}"
state: present state: present
when: editing == true when: editing in (true, "video", "audio")
## Other Stuff ## Other Stuff
@ -38,42 +38,9 @@
- "{{ appimagelauncher }}" - "{{ appimagelauncher }}"
- "{{ evolution }}" - "{{ evolution }}"
- "{{ evolution }}*" - "{{ evolution }}*"
- gparted
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

View 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

View File

@ -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,13 +22,19 @@
status: present status: present
when: coding == true when: coding == true
- name: Workstation | Mac OS | Software | Brew | Install Packages (Editing) - name: Workstation | Mac OS | Software | Brew | Install Packages (Editing:Video)
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 == true when: editing in (true, "audio")
- name: Workstation | Mac OS | Software | Brew | Install Packages (Gaming) - name: Workstation | Mac OS | Software | Brew | Install Packages (Gaming)
package: package:

View File

@ -17,11 +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.google.AndroidStudio.desktop' , 'codium.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,8 +34,11 @@
#, '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.
#, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop'
#, '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: