Compare commits

...

87 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
752969e2fa Add Music Studio, Migrate from GitHub to Personal Gitea (#1)
Reviewed-on: #1
2025-01-02 13:03:50 -07:00
30 changed files with 1188 additions and 561 deletions

View File

@ -45,7 +45,7 @@ Workstation: Currently failing at `[Workstation | Linux | Flatpak Distro | Packa
### NixOS ### NixOS
99%, still need to get Telegraf going and refactor local.yml but everything else 99%, still need to get Telegraf going and refactor local.yml but everything else
is working well. It is automatically implementing github.com/Hyperling/NixOS. is working well. It is automatically implementing git.hyperling.com/me/env-nixos.
## Currently Supported Unix Systems ## Currently Supported Unix Systems
### FreeBSD 12, 13 ### FreeBSD 12, 13
@ -76,4 +76,4 @@ to exist under the facts tree.
## Other Notes ## Other Notes
### Get Setup Values ### Get Setup Values
Use this command to see the variables for a system: Use this command to see the variables for a system:
`ansible localhost -m setup --connection=local`. `ansible localhost -m setup --connection=local`.

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

@ -8,17 +8,8 @@
st_install_dir: /usr/local/src/st st_install_dir: /usr/local/src/st
global_bin: /usr/local/bin global_bin: /usr/local/bin
x_desktops: /usr/share/xsessions x_desktops: /usr/share/xsessions
repo_github: https://github.com/Hyperling/ansible.git git_repo_http: http://{{ git_host }}/{{ git_user }}/{{ git_project }}
#repo_local: https://git.hyperling.com/ansible.git git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }}
# Local server not working yet, go back to Github even though they throttle me.
repo_local: https://github.com/Hyperling/ansible.git
- name: General | Facts | System | Dev
set_fact:
#repo_local: https://git.hyperling.com/ansible-dev.git
# Local server not working yet, go back to Github even though they throttle me.
repo_local: https://github.com/Hyperling/ansible.git
when: branch == "dev"
- name: General | Facts | System | Linux - name: General | Facts | System | Linux

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

@ -15,7 +15,7 @@ nixos_working_exe=activate.sh
function usage { function usage {
echo -e "\nUsage: $PROG -b BRANCH" >&2 echo -e "\nUsage: $PROG -b BRANCH" >&2
cat <<- EOF cat <<- EOF
Run a setup script for NixOS based on the https://github.com/Hyperling/NixOS project. Run a setup script for NixOS based on the https://git.hyperling.com/me/env-nixos project.
Parameters: Parameters:
-b BRANCH: The branch which should be installed, likely 'main' or 'dev'. -b BRANCH: The branch which should be installed, likely 'main' or 'dev'.
@ -48,7 +48,7 @@ fi
cleanup cleanup
# Install the Hyperling NixOS configurations. # Install the Hyperling NixOS configurations.
git clone https://github.com/Hyperling/NixOS --branch $branch $nixos_working_dir git clone https://git.hyperling.com/me/env-nixos --branch $branch $nixos_working_dir
chmod 755 $nixos_working_dir/$nixos_working_exe chmod 755 $nixos_working_dir/$nixos_working_exe
$nixos_working_dir/$nixos_working_exe $nixos_working_dir/$nixos_working_exe

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,8 +123,11 @@
- 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/flatpaks.yml - include_tasks: tasks/workstation/linux/software/lutris.yml
when: ansible_system == "Linux" and flatpak_distro 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 +158,16 @@
- include_tasks: tasks/workstation/shared/settings/services.yml - include_tasks: tasks/workstation/shared/settings/services.yml
# 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
when: ansible_system == "Linux" and flatpak_distro
when: workstation == true when: workstation == true
@ -228,12 +240,6 @@
- include_tasks: tasks/server/software/hugo.yml - include_tasks: tasks/server/software/hugo.yml
when: hugo == true when: hugo == true
- include_tasks: tasks/server/software/gitlab.yml
when: gitlab and ansible_pkg_mgr in ("apt", "dnf") and ansible_distribution not in ("Fedora")
- include_tasks: tasks/server/software/git.yml
when: git and ansible_pkg_mgr in ("apt")
when: server == true when: server == true

View File

@ -6,7 +6,7 @@
DIR="$(dirname -- "${BASH_SOURCE[0]}")" DIR="$(dirname -- "${BASH_SOURCE[0]}")"
PROG="$(basename -- "${BASH_SOURCE[0]}")" PROG="$(basename -- "${BASH_SOURCE[0]}")"
LOCAL=$DIR/local.yml LOCAL=$DIR/local.yml
URL="https://github.com/Hyperling/ansible" URL="https://git.hyperling.com/me/env-ansible"
BRANCH="main" BRANCH="main"
## Functions ## ## Functions ##

View File

@ -26,35 +26,55 @@
blockinfile: blockinfile:
path: "{{ gen_file }}" path: "{{ gen_file }}"
block: | block: |
;;;;;;; Available options - all require lowercase values ;;;;;; ; Please note that all potions require lowercase keys and values.
;
;;;;;;;;;;;;;;;;;;;; Basic Options ;;;;;;;;;;;;;;;;;;;;
; ;
; enable : Provide true for the provision to occur. ; enable : Provide true for the provision to occur.
; Default: false ; Default: false
; ;
; 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
; ;
; branch : Provide the Github branch that the machine should poll. ; sshd_port : Determine the port which SSHD should listen on.
; Example: main, dev ; Example: 12345
; Default: main ; Default: 22
; ;
; pentesting : Set to true to install tools such as metasploit. ; pentesting : Set to true to install tools such as metasploit.
; nmap is already provided for reporting ; nmap is already provided for reporting
; Default: false ; Default: false
; ;
; no_telem : Set to true to avoid setting up telemetry services. ;;;;;;;;;;;;;;;;;;;; Git Polling ;;;;;;;;;;;;;;;;;;;;
; Disables GitHub updates to this project.
; Disables all telegraf pings.
; Default: false
; ;
; battery : Set to true to attempt to save battery life. ; For syncing this machine to a Git repository of this Ansible project
; Slows down the rate of services such as telegraf and cron. ; in this fashion: ssh://git@GIT_HOST:GIT_SSH_PORT/GIT_USER/GIT_PROJECT
; Default: false ;
; branch : Branch to use on this machine.
; Example: main, dev, prod
; Default: main
;
; git_host : Provide the git host that the machine should poll.
; Example: github.com, gitlab.com. gitea.com
; Default: git.hyperling.com
;
; git_ssh_port : Port of the server host to use for SSH requests.
; Example: 22, 222, 2222
; Default: 22
;
; git_user : Provide the git user which projects are found under.
; Example: Hyperling, JimBobMcGeeJr
; Default: me
;
; git_project : Name of this project on the server host.
; Example: Ansible, ansible-setup, my-env
; Default: env-ansible
;
;;;;;;;;;;;;;;;;;;;; Swap File ;;;;;;;;;;;;;;;;;;;;
; ;
; swap_block : Set to the block size if dd should create a swapfile. ; swap_block : Set to the block size if dd should create a swapfile.
; Preferably keep this under 2G for integrity sakes, the ; Preferably keep this under 2G for integrity sakes, the
@ -70,9 +90,32 @@
; Example: /usr/local/swap ; Example: /usr/local/swap
; Default: /swapfile ; Default: /swapfile
; ;
; sshd_port : Determine the port which SSHD should listen on. ;;;;;;;;;;;;;;;;;;;; Sync Frequency ;;;;;;;;;;;;;;;;;;;;
; Example: 12345 ;
; Default: 22 ; no_telem : Set to true to avoid setting up telemetry services.
; Disables GitHub updates to this project.
; Disables all telegraf pings.
; Default: false
;
; battery : Set to true to attempt to save battery life.
; Slows down the rate of services such as telegraf and cron.
; 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'
@ -93,6 +136,13 @@
swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}" swap_count: "{{ lookup('ini', 'swap_count file={{gen_file}} default=1') }}"
swap_file: "{{ lookup('ini', 'swap_file file={{gen_file}} default=/swapfile') }}" swap_file: "{{ lookup('ini', 'swap_file file={{gen_file}} default=/swapfile') }}"
sshd_port: "{{ lookup('ini', 'sshd_port file={{gen_file}} default=22') }}" sshd_port: "{{ lookup('ini', 'sshd_port file={{gen_file}} default=22') }}"
git_host: "{{ lookup('ini', 'git_host file={{gen_file}} default=git.hyperling.com') }}"
git_user: "{{ lookup('ini', 'git_user file={{gen_file}} default=me') }}"
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') }}"
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:
@ -109,6 +159,13 @@
- { 'swap_count': "{{ swap_count }}" } - { 'swap_count': "{{ swap_count }}" }
- { 'swap_file': "{{ swap_file }}" } - { 'swap_file': "{{ swap_file }}" }
- { 'sshd_port': "{{ sshd_port }}" } - { 'sshd_port': "{{ sshd_port }}" }
- { 'git_host': "{{ git_host }}" }
- { 'git_user': "{{ git_user }}" }
- { 'git_project': "{{ git_project }}" }
- { 'git_ssh_port': "{{ git_ssh_port }}" }
- { 'prod_host': "{{ prod_host }}" }
- { 'prod_port': "{{ prod_port }}" }
- { 'prod_user': "{{ prod_user }}" }
## Workstation ## ## Workstation ##
@ -124,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)
; ;
@ -279,28 +340,6 @@
; ;
; hugo : Set to true to install HUGO static website generator. ; hugo : Set to true to install HUGO static website generator.
; ;
; gitlab : ee - Installs Enterprise Edition Free Tier. Basically CE with an easier upgrade path for Paid Features.
; ce - Installs Community Edition. Excludes paid features if you'll never use them. Supposedly difficult to move to EE.
; Example: ce
;
; gitlab_url : The URL prefix for the server. Using 'http://mygitlabserver' would result in "http://mygitlabserver.((domain))".
; Regardless of whether you choose http or https, the Certbot config will be skipped since the maintainer uses a reverse proxy.
; Example: https://gitlab
;
; git : Set to true for this server to be configured as an HTTP git server.
;
; git_name : Name(s) of project(s) that the Git server should host.
; Example: ansible#ansible-dev
;
; git_branch : Branch(es) of project(s) corresponding with git_name.
; Example: main#dev
;
; git_url : URL(s) of project(s) corresponding with git_name.
; Example: https://github.com/Hyperling/ansible#https://github.com/Hyperling/ansible
;
; git_sep : Separator for git variables above.
; Example: #
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[global] [global]
marker: '; {mark} MANAGED BY ANSIBLE | Server Config' marker: '; {mark} MANAGED BY ANSIBLE | Server Config'
@ -318,13 +357,6 @@
influxdb2: "{{ lookup('ini', 'influxdb2 file={{srv_file}} default=false') }}" influxdb2: "{{ lookup('ini', 'influxdb2 file={{srv_file}} default=false') }}"
certbot: "{{ lookup('ini', 'certbot file={{srv_file}} default=false') }}" certbot: "{{ lookup('ini', 'certbot file={{srv_file}} default=false') }}"
hugo: "{{ lookup('ini', 'hugo file={{srv_file}} default=false') }}" hugo: "{{ lookup('ini', 'hugo file={{srv_file}} default=false') }}"
gitlab: "{{ lookup('ini', 'gitlab file={{srv_file}} default=false') }}"
gitlab_url: "{{ lookup('ini', 'gitlab_url file={{srv_file}} default=false') }}"
git: "{{ lookup('ini', 'git file={{srv_file}} default=false') }}"
git_name: "{{ lookup('ini', 'git_name file={{srv_file}} default=false') }}"
git_branch: "{{ lookup('ini', 'git_branch file={{srv_file}} default=false') }}"
git_url: "{{ lookup('ini', 'git_url file={{srv_file}} default=false') }}"
git_sep: "{{ lookup('ini', 'git_sep file={{srv_file}} default=false') }}"
- name: General | Account Management | Provisioning Configuration | Server | List - name: General | Account Management | Provisioning Configuration | Server | List
set_fact: set_fact:
@ -338,13 +370,6 @@
- { 'influxdb2': "{{ influxdb2 }}" } - { 'influxdb2': "{{ influxdb2 }}" }
- { 'certbot': "{{ certbot }}" } - { 'certbot': "{{ certbot }}" }
- { 'hugo': "{{ hugo }}" } - { 'hugo': "{{ hugo }}" }
- { 'gitlab': "{{ gitlab }}" }
- { 'gitlab_url': "{{ gitlab_url }}" }
- { 'git': "{{ git }}" }
- { 'git_name': "{{ git_name }}" }
- { 'git_branch': "{{ git_branch }}" }
- { 'git_url': "{{ git_url }}" }
- { 'git_sep': "{{ git_sep }}" }
## Exit if not turned on yet ## ## Exit if not turned on yet ##

View File

@ -100,13 +100,22 @@
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"
become_user: "{{ user }}" become_user: "{{ user }}"
when: user_user.home != "" when: user_user.home != ""
- name: General | Account Management | Users | User | Create Folders | Coding
file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ user_user.home }}/Code"
become_user: "{{ user }}"
when: user_user.home != "" and coding == true
- name: General | Account Management | Users | Home Permissions - name: General | Account Management | Users | Home Permissions
shell: "chmod 700 {{ user_user.home }}/../*" shell: "chmod 700 {{ user_user.home }}/../*"
@ -118,8 +127,6 @@
alias_cp: alias cp='cp -v' alias_cp: alias cp='cp -v'
alias_mv: alias mv='mv -v' alias_mv: alias mv='mv -v'
alias_rm: alias rm='echo "Use mv ~/TRASH/ instead!"' alias_rm: alias rm='echo "Use mv ~/TRASH/ instead!"'
alias_clean_dir: alias clean-dir='mv * ~/TRASH/'
alias_clean_trash: alias clean-trash='sh -c "rm -rfv ~/TRASH/*"'
export_path_additions: export PATH="~/bin:"{{ global_bin }}":$PATH" export_path_additions: export PATH="~/bin:"{{ global_bin }}":$PATH"
function_wttr: | function_wttr: |
function weather() { function weather() {
@ -131,7 +138,7 @@
Useful location types: Useful location types:
$zip_code | Ex: 12345 $zip_code | Ex: 12345
$city,$state | Ex: Austin,Texas $city,$state | Ex: Austin,Texas
@$domain_dot_extension | Ex: @github.com @$domain_dot_extension | Ex: @gitea.com
~$special_location | Ex: ~Manitou Incline ~$special_location | Ex: ~Manitou Incline
Full documentation: https://github.com/chubin/wttr.in' Full documentation: https://github.com/chubin/wttr.in'
return 1 return 1
@ -150,23 +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 shutdown
unset only_sys
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
@ -181,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"
@ -191,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
@ -223,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: |
@ -240,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"
@ -270,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
;; ;;
@ -307,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 ..?* .[!.]* *"
@ -317,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 ..?* .[!.]* *"
@ -334,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 ..?* .[!.]* *"
@ -344,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 ..?* .[!.]* *"
@ -359,11 +381,23 @@
return 0 return 0
} }
alias check_trash="check-trash" alias check_trash="check-trash"
alias_clean_trash: alias clean-trash='check-trash --clean'
alias_trash_check: alias trash-check='check-trash'
alias_trash_clean: alias trash-clean='trash-check --clean'
alias_clean_dir: |
function clean-dir() {
clean_dir="`date '+%Y%m%d_%H%M%S'`_CLEANED"
trash_dir="$HOME/TRASH/$clean_dir"
curr_dir="`pwd`"
mkdir -pv "$trash_dir"
echo "$curr_dir is being cleaned at `date`." | tee "$trash_dir"/INFO.txt
mv -v ..?* .[!.]* * "$trash_dir"/ | tee -a "$trash_dir"/INFO.txt
}
function_clean: | function_clean: |
function clean() { function clean() {
sudo df -h sudo du -hs
check-trash --clean clean-dir
sudo df -h sudo du -hs
} }
function_flatpak_usage: | function_flatpak_usage: |
function flatpak-usage() { function flatpak-usage() {
@ -386,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
@ -432,17 +506,46 @@
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
echo "*** `basename $project` ***" if [[ ! -d $project ]]; then
continue
fi
echo -e "\n*** `basename $project` ***"
cd $project cd $project
git pull if [[ -d .git ]]; then
git push git pull
git push
else
echo "Not a Git project, skipping!"
fi
done done
echo -e "\nDone!"
' '
alias_code_reset: | alias_code_reset: |
alias code-reset=' alias code-reset='
@ -456,23 +559,50 @@
git checkout dev git checkout dev
done done
' '
alias_code_reseed: | function_code_reseed: |
alias code-reseed=' function git_projects_to_sync {
unseed_dir="$HOME/TRASH/`date +%Y-%m-%d`_UnseededCodeProjects" # Projects should be followed by the current development branch name.
cat <<- EOF
env-ansible dev
env-docker dev
env-termux dev
nodejs-website dev
ebook-health-protocol dev
flutter-expense-tracker dev
flutter-social-traveler-app dev
nodejs-social-traveler-server dev
misc-spare-change main
flutter-buddy-website dev
EOF
}
function code-reseed {
# 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/*{ansible,docker,nix,break,website,www,tictactoe,-dev}* \ mv -v ~/Code/* "$unseed_dir"/ 2>/dev/null
"$unseed_dir"/ 2>/dev/null
git clone git@github.com:Hyperling/Ansible \ # Git repo information.
--branch dev ~/Code/ansible-dev git_repo_ssh={{ git_repo_ssh }}
git clone git@github.com:Hyperling/Docker \ git_main_project={{ git_project }}
--branch dev ~/Code/docker-dev git_repo_ssh_basename=${git_repo_ssh//$git_main_project/}
git clone git@github.com:Hyperling/Website \
--branch dev ~/Code/website-dev # Loop over project list.
git clone git@github.com:Hyperling/BreakTheHabit \ git_projects_to_sync | while read git_project git_branch; do
--branch dev ~/Code/breakthehabit-dev echo -e "\n*** $git_project ***"
git clone git@github.com:Hyperling/TicTacToeAndroid \
--branch dev ~/Code/tictactoe-dev # 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} \
--branch $git_branch ~/Code/$dest_folder
done
}
function_clean_filenames: | function_clean_filenames: |
function clean-filenames() { function clean-filenames() {
# Must provide the directory you'd like to clean all the filenames in. # Must provide the directory you'd like to clean all the filenames in.
@ -503,7 +633,7 @@
echo -e "\nDone!\n" echo -e "\nDone!\n"
} }
alias_clone: | alias_clone: |
alias clone="rsync -auPh --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"
@ -513,10 +643,102 @@
if [[ -e $DOCKER_SOURCE && $LOGNAME == "root" ]]; then if [[ -e $DOCKER_SOURCE && $LOGNAME == "root" ]]; then
source $DOCKER_SOURCE source $DOCKER_SOURCE
fi fi
alias_scan: |
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 }}
@ -541,18 +763,26 @@
{{ 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 }}
{{ alias_code_reseed }} {{ function_code_reseed }}
{{ function_clean_filenames }} {{ function_clean_filenames }}
{{ function_clean_filenames_tree }} {{ function_clean_filenames_tree }}
{{ alias_clone }} {{ alias_clone }}
{{ export_hyperling }} {{ export_hyperling }}
{{ source_docker_env }} {{ source_docker_env }}
{{ 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,7 +6,7 @@
user: ansible user: ansible
name: "Ansible Sync" name: "Ansible Sync"
minute: "*/30" minute: "*/30"
job: "sudo {{ ansible_pull_exec.stdout }} -o -U {{ repo_local }} --checkout {{ branch }}" job: "sudo {{ ansible_pull_exec.stdout }} -o -U {{ git_repo_http }} --checkout {{ branch }}"
state: present state: present
disabled: "{{ 'yes' if no_telem else 'no' }}" disabled: "{{ 'yes' if no_telem else 'no' }}"

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 {{ repo_github }} 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"
@ -37,7 +35,7 @@
## Main ## ## Main ##
time {{ ansible_pull_exec.stdout }} -U {{ repo_github }} --checkout $branch time {{ ansible_pull_exec.stdout }} -U {{ git_repo_http }} --checkout $branch
marker: '{mark}' marker: '{mark}'
marker_begin: "#!{{ bash_exec.stdout }}" marker_begin: "#!{{ bash_exec.stdout }}"

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 {{ repo_github }} 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"
@ -37,7 +35,7 @@
## Main ## ## Main ##
time sudo {{ ansible_pull_exec.stdout }} -U {{ repo_github }} --checkout $branch time sudo {{ ansible_pull_exec.stdout }} -U {{ git_repo_http }} --checkout $branch
marker: '{mark}' marker: '{mark}'
marker_begin: "#!{{ bash_exec.stdout }}" marker_begin: "#!{{ bash_exec.stdout }}"

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

@ -1,5 +1,5 @@
--- ---
# Update the Nix configuration at github.com/Hyperling/NixOS. # Update the Nix configuration at git.hyperling.com/me/env-nixos.
# This is also done in setup.sh if ansible is not found. # This is also done in setup.sh if ansible is not found.
- name: General | Software | NixOS | Facts - name: General | Software | NixOS | Facts
@ -19,7 +19,7 @@
blockinfile: blockinfile:
path: /etc/nixos/ansible.nix path: /etc/nixos/ansible.nix
block: | block: |
# This file was created by https://github.com/Hyperling/Ansible # This file was created by https://git.hyperling.com/me/env-ansible
# Please do not alter it by hand. Use the proper ini files instead. # Please do not alter it by hand. Use the proper ini files instead.
{ config, pkgs, nix, ... }: { config, pkgs, nix, ... }:

View File

@ -55,6 +55,7 @@
- vim - vim
- "{{ cron }}" - "{{ cron }}"
- "{{ encfs }}" - "{{ encfs }}"
- rsync
state: present state: present
- name: General | Software | Packages | Install Software (DEV) - name: General | Software | Packages | Install Software (DEV)
@ -136,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

@ -1,191 +0,0 @@
---
# Webserver to replace calling GitHub for projects.
# https://www.howtoforge.com/how-to-install-http-git-server-with-nginx-on-debian-11/
#TODO: Use gitweb instead??? I knew there was an easier way than apache/nginx/python stuff...
# https://git-scm.com/docs/gitweb
# Gitweb is nice but doesn;t seem like it allowes cloning.
# Need to figure out how to get git:// to work, fix SSL locally, or somehow use http local and https when external..
## Variables ##
- name: Server | Software | HTTPS Git Server | Check Config Variables
debug:
var: "{{ item }}"
loop:
- git_name
- git_branch
- git_url
- git_sep
- name: Server | Software | HTTPS Git Server | Split Config Variables To Array
set_fact:
git_names: "{{ git_name.split(git_sep) }}"
git_branches: "{{ git_branch.split(git_sep) }}"
git_urls: "{{ git_url.split(git_sep) }}"
git_projects: []
- name: Server | Software | HTTPS Git Server | Check Arrays
debug:
var: "{{ item }}"
loop:
- git_names
- git_branches
- git_urls
- name: Server | Software | HTTPS Git Server | Build Dictionary
set_fact:
git_projects: "{{ git_projects + [{ 'name': git_names[item], 'branch': git_branches[item], 'url': git_urls[item] }] }}"
loop: "{{ range(0, git_names|length) | list }}"
- name: Server | Software | HTTPS Git Server | Display Dictionary
debug:
var: git_projects
- name: Server | Software | HTTPS Git Server | Variables 1
set_fact:
git_web_root: /var/www/html/git
git_config_file: /etc/nginx/conf.d/git.conf
git_nginx_user: www-data
git_ssl_dir: /usr/local/etc/ssl/private
git_ssl_cert_name: cert.pem
git_ssl_key_name: key.pem
- name: Server | Software | HTTPS Git Server | Variables 2
set_fact:
git_cron_commands: "git pull --rebase && cd {{ git_web_root }}/ && chown -R {{ git_nginx_user }} . && chmod -R 775 ."
git_ssl_cert: "{{ git_ssl_dir }}/{{ git_ssl_cert_name }}"
git_ssl_key: "{{ git_ssl_dir }}/{{ git_ssl_key_name }}"
## Pre-reqs ##
- name: Server | Software | HTTPS Git Server | Install
package:
name:
- nginx
- git
- fcgiwrap
- apache2-utils
- unzip
state: present
when: ansible_pkg_mgr == "apt"
- name: Server | Software | HTTPS Git Server | SSL Certificate
shell: "{{ item }}"
loop:
- mkdir -p {{ git_ssl_dir }}
- openssl req -newkey rsa:2048 -new -nodes -x509 -days 3650 -keyout {{ git_ssl_key }} -out {{ git_ssl_cert }} -subj "/C=XX/ST=STATELESS/L=HOMELAB/O={{ domain }}/OU=Git Server/CN={{ domain }}"
## Repositories ##
- name: Server | Software | HTTPS Git Server | Delete
file:
path: "{{ git_web_root }}"
state: absent
- name: Server | Software | HTTPS Git Server | Download
git:
repo: "{{ item.url }}"
dest: "{{ git_web_root }}/{{ item.name }}.git"
version: "{{ item.branch }}"
clone: yes
force: yes
ignore_errors: yes
loop: "{{ git_projects }}"
- name: Server | Software | HTTPS Git Server | Permissions
file:
path: "{{ git_web_root }}/{{ item.name }}.git"
state: directory
mode: '755'
owner: "{{ git_nginx_user }}"
group: "{{ git_nginx_user }}"
recurse: yes
loop: "{{ git_projects }}"
## NGINX ##
- name: Server | Software | HTTPS Git Server | Index
blockinfile:
path: "{{ git_web_root }}/index.html"
block: |
{{ item.name }}.git is cloned from {{ item.url }} using branch {{ item.branch }}.
state: present
mode: '755'
owner: "{{ git_nginx_user }}"
group: "{{ git_nginx_user }}"
create: yes
backup: yes
marker: "<!-- {mark} {{ item.name }} -->"
loop: "{{ git_projects }}"
- name: Server | Software | HTTPS Git Server | Config
blockinfile:
path: "{{ git_config_file }}"
block: |
server {
listen 443;
server_name {{ ansible_hostname }}.{{ domain }};
ssl_certificate {{ git_ssl_cert }};
ssl_certificate_key {{ git_ssl_key }};
root {{ git_web_root }};
# Add index.php to the list if you are using PHP
index index.html;
#autoindex on;
location / {
# First attempt to serve request as file, then
# as directory, then fall back to displaying a 404.
try_files $uri $uri/ =404;
}
location ~ (/.*) {
client_max_body_size 0;
#auth_basic "Hyperling's Git Login";
#auth_basic_user_file "{{ git_web_root }}/htpasswd";
include /etc/nginx/fastcgi_params;
fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend;
fastcgi_param GIT_HTTP_EXPORT_ALL "";
fastcgi_param GIT_PROJECT_ROOT {{ git_web_root }};
fastcgi_param REMOTE_USER $remote_user;
fastcgi_param PATH_INFO $1;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
}
}
state: present
mode: '755'
create: yes
backup: yes
marker: "# {mark} Managed By Ansible Git Server Playbook -->"
- name: Server | Software | HTTPS Git Server | Service
service:
name: nginx
pattern: nginx
enabled: yes
state: restarted
## Cron ##
- name: Server | Software | HTTPS Git Server | Cron | Hourly
cron:
name: "{{ item.name }} hourly"
special_time: hourly
job: "cd {{ git_web_root }}/{{ item.name }}.git && {{ git_cron_commands }}"
loop: "{{ git_projects }}"
- name: Server | Software | HTTPS Git Server | Cron | Reboot
cron:
name: "{{ item.name }} reboot"
special_time: reboot
job: "cd {{ git_web_root }}/{{ item.name }}.git && {{ git_cron_commands }}"
loop: "{{ git_projects }}"

View File

@ -1,106 +0,0 @@
---
# Install a Gitlab server for hosting software projects.
## Checks ##
- name: "Server | Software | GitLab | Checks | Host Variable [gitlab]={{ gitlab }}"
shell: echo "ERROR! Variable has an invalid value!" && exit 1
when: gitlab not in ("ee", "ce")
- name: "Server | Software | GitLab | Checks | Host Variable [gitlab_url]={{ gitlab_url }}"
set_fact:
gitlab_url: "https://gitlab"
when: gitlab_url is not defined or not gitlab
- name: Server | Software | GitLab | Checks | Play Variables
set_fact:
gitlab_bundle: "gitlab-{{ gitlab }}"
gitlab_config: /etc/gitlab/gitlab.rb
# Ensure other version is not installed.
- name: Server | Software | GitLab | Checks | Remove EE
package:
name: gitlab-ee
state: absent
when: gitlab == "ce"
- name: Server | Software | GitLab | Checks | Remove CE
package:
name: gitlab-ce
state: absent
when: gitlab == "ee"
## Install ##
# https://about.gitlab.com/install/?version=ce#ubuntu
# https://about.gitlab.com/install/?version=ce#centos-8 (Fedora)
- name: Server | Software | GitLab | Install | Check
shell: which gitlab-ctl
ignore_errors: yes
register: gitlab_installed
- name: Server | Software | GitLab | Install | Pre-Reqs
package:
update_cache: yes
name:
- curl
- openssh-server
- ca-certificates
- tzdata
- perl
- postfix
state: present
when: gitlab_installed.failed
- name: Server | Software | GitLab | Install | Add Repo (apt)
shell: curl https://packages.gitlab.com/install/repositories/gitlab/{{ gitlab_bundle }}/script.deb.sh | bash
when: gitlab_installed.failed and ansible_pkg_mgr == "apt"
- name: Server | Software | GitLab | Install | Add Repo (dnf)
shell: curl https://packages.gitlab.com/install/repositories/gitlab/{{ gitlab_bundle }}/script.rpm.sh | bash
when: gitlab_installed.failed and ansible_pkg_mgr == "dnf"
- name: Server | Software | GitLab | Install | Install
shell: EXTERNAL_URL="{{ gitlab_url | replace("https","http") }}.{{ domain }}" {{ ansible_pkg_mgr }} install -y {{ gitlab_bundle }}
when: gitlab_installed.failed
- name: Server | Software | GitLab | Install | Get Password
shell: cat /etc/gitlab/initial_root_password && cp /etc/gitlab/initial_root_password ~/
register: gitlab_passwd
when: gitlab_installed.failed
- name: Server | Software | GitLab | Install | Print Password
debug:
var: gitlab_passwd.stdout_lines
when: gitlab_installed.failed
## Configuration ##
# https://docs.gitlab.com/ee/install/next_steps.html
# Need to make server think it's https but not actually listen for it, otherwise reverse proxy doesn't work.
# https://www.itsfullofstars.de/2019/06/gitlab-behind-a-reverse-proxy/
- name: Server | Software | GitLab | Configure | Check External URL
lineinfile:
path: "{{ gitlab_config }}"
regexp: '^external_url '
line: "external_url '{{ gitlab_url }}.{{ domain }}' # Managed by Ansible"
state: present
create: yes
backup: yes
- name: Server | Software | GitLab | Configure | Turn Off Serving Local SSL
blockinfile:
path: "{{ gitlab_config }}"
block: |
nginx['listen_port'] = 80
nginx['listen_https'] = false
marker: "# {mark} MANAGED BY ANSIBLE - {{ gitlab_config }}"
state: present
create: yes
backup: yes
- name: Server | Software | GitLab | Configure | Reconfigure
shell: gitlab-ctl reconfigure

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,19 +39,21 @@
- { 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.gnome.Geary", name: "geary", 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: "net.sourceforge.VMPK", name: "vmpk", extra: "" }
flatpaks_gaming: flatpaks_gaming:
- { app: "com.valvesoftware.Steam", name: "steam", extra: "" } - { app: "com.valvesoftware.Steam", name: "steam", extra: "" }
- { app: "com.play0ad.zeroad", name: "zeroad", extra: "" } - { app: "com.play0ad.zeroad", name: "zeroad", extra: "" }
@ -72,6 +73,8 @@
# End 2022-11-20 # # End 2022-11-20 #
- { app: "io.lbry.lbry-app", name: "lbry", extra: "dbus-launch" } # No longer supported, noticed 2023-09-01. - { app: "io.lbry.lbry-app", name: "lbry", extra: "dbus-launch" } # No longer supported, noticed 2023-09-01.
- { app: "chat.delta.desktop", name: "deltachat", extra: "" } # No longer used, removed 2023-12-18. - { app: "chat.delta.desktop", name: "deltachat", extra: "" } # No longer used, removed 2023-12-18.
- { app: "org.gnome.Geary", name: "geary", extra: "" } # No longer used, removed 2024-12-15
- { app: "org.rncbc.qsynth", name: "qsynth", extra: "" } # 2024-12-15, Not worth the setup, use LMMS or VMPK.
# Generic # # Generic #
@ -155,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:
@ -174,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

@ -12,25 +12,33 @@
, 'org.gnome.Nautilus.desktop' , 'org.gnome.Nautilus.desktop'
, 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop' , 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop'
, 'org.mozilla.firefox.desktop', 'firefox.desktop' , 'org.mozilla.firefox.desktop', 'firefox.desktop'
, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop'
, 'com.google.AndroidStudio.desktop'
, 'org.godotengine.Godot.desktop'
, 'org.shotcut.Shotcut.desktop'
, 'io.lbry.lbry-app.desktop', 'lbry.desktop'
, 'org.signal.Signal.desktop', 'signal-desktop.desktop' , 'org.signal.Signal.desktop', 'signal-desktop.desktop'
, 'im.riot.Riot.desktop' , 'im.riot.Riot.desktop'
, 'org.telegram.desktop.desktop' , 'org.telegram.desktop.desktop'
, 'com.discordapp.Discord.desktop' , 'com.discordapp.Discord.desktop'
, 'com.vscodium.codium.desktop'
, 'codium.desktop'
, 'org.shotcut.Shotcut.desktop'
, 'io.lmms.LMMS.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
dconf_icons: Adwaita dconf_icons: Adwaita
# 2024-01-28 No longer using local email clients. # 2024-01-28 Not currently using local email clients.
#, 'org.gnome.Evolution.desktop' #, 'org.gnome.Evolution.desktop'
#, 'chat.delta.desktop.desktop', 'deltachat.desktop' #, 'chat.delta.desktop.desktop', 'deltachat.desktop'
#, 'org.gnome.Geary.desktop' #, 'org.gnome.Geary.desktop'
#, 'org.mozilla.Thunderbird.desktop' #, 'org.mozilla.Thunderbird.desktop'
# 2025-01-01
# Reduce the amount of icons on the sidebar, things that may get added back.
#, 'org.godotengine.Godot.desktop'
# 2025-03-07 Removed in place of a 2nd VS Codium install (apt version).
#, 'com.visualstudio.code-oss.desktop', 'code-oss.desktop'
# 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: