34 Commits

Author SHA1 Message Date
me 8e46cb16a5 arch, change checks for Archlinux to looking for pacman in case forks decide to use their own name in the future. 2026-08-05 16:21:41 -07:00
me 785db7e893 setup, if BRANCH is already set, don't use main. 2026-08-05 15:40:35 -07:00
me 94431dff43 setup, refactor and reword a few sections, especially related to the getopts and hosts file. 2026-08-05 14:12:29 -07:00
me dcf4b3d451 setup, handle the lowercase branch variable more properly. 2026-08-05 13:40:21 -07:00
me 58f5f13b28 bash env, change how Firefox is found. 2026-08-05 13:29:31 -07:00
me fe022d7a9c setup, lowercase branch was not being set properly due to scope. 2026-08-05 12:38:28 -07:00
me 0ef5e0cc6a bash env, only run the keymap command if the X session is set. 2026-08-05 12:30:53 -07:00
me ccabad9c30 packages, move base-devel to general in the task section. 2026-08-05 12:25:02 -07:00
me f83fe61296 packages, move base-devel to general in the task section, indent all the lists. 2026-08-05 12:22:01 -07:00
me da9c34a9da base-devel, move back to General, it's for AUR which is done for all pacman-using devices. 2026-08-04 18:06:13 -07:00
me 8c3c3fb381 msmtp, mta version does not exist on Fedora. 2026-08-04 18:02:53 -07:00
me d617334a54 locate, put value back for apt. 2026-08-04 18:00:28 -07:00
me 52c6dba409 dig, add package name for OpenSUSE and Fedora. 2026-08-04 17:32:42 -07:00
me 21d69f230b README, update the supported distro list. 2026-08-04 17:23:25 -07:00
me 3a815d319c fedora, change all package managers to use fastfetch. 2026-08-04 17:23:02 -07:00
me 94b6db2000 setup, freebsd, allow pkg to see globs. 2026-08-04 14:47:53 -07:00
me 564485145e vscode, settings, hide release notes and fix dart indents to tabs. 2026-08-04 14:26:05 -07:00
me 814451fa44 Change i3 to be a shared playbook. Group more playbooks in blocks. 2026-08-04 14:09:03 -07:00
me bd9460c8bb i3, prepare to move playbook to shared from linux. 2026-08-04 14:02:31 -07:00
me 55a531f1b4 setup, change FreeBSD to take any version of Python. 2026-08-04 13:33:31 -07:00
me c2f910aabc mullvad, only link sv if runit is being used. 2026-08-04 11:09:27 -07:00
me ccfa27fcaf tlp, fix missing quote. 2026-08-04 10:59:45 -07:00
me 3c6c7de5e1 i3, allow the backlight checks to fail (such as VMs). 2026-08-04 10:47:43 -07:00
me 24c5a2973f pacman, fix the when clause for package names. 2026-08-04 10:45:03 -07:00
me 262cfa002e TLP, try a few more changes. 2026-08-04 10:37:01 -07:00
me 4fe8daf347 TLP, wifi, do not let the card go to sleep. 2026-08-04 10:15:16 -07:00
me ea589d09b2 reconnect, fix the connection test return status. 2026-08-04 10:05:51 -07:00
me dd0412d821 AUR, use shell rather than command, change user's name. 2026-08-04 10:04:45 -07:00
me 14a0d21633 sendmail, fix typo in mta variable. 2026-08-04 09:57:18 -07:00
me 0d42c2419c workstation, move the base-devel requirement from generic. 2026-08-04 09:55:43 -07:00
me ccd87b92bb service report, don't create the enabled file for inits other than systemd. 2026-08-04 09:52:13 -07:00
me 82e32c0f95 sendmail, ensure something is installed so that cronie can log mail. 2026-08-04 09:46:49 -07:00
me 73dfdce734 bashrc, reconnect, add a reboot of the wifi if rebooting Mullvad doesn't work. 2026-08-04 09:35:33 -07:00
me bf57faaac5 workstation, move development package names to the proper fact playbook. 2026-08-04 09:26:28 -07:00
14 changed files with 295 additions and 225 deletions
+11 -7
View File
@@ -19,28 +19,32 @@ This information is as of 2025-11-21.
These are the operating systems used as my daily driver. These are the operating systems used as my daily driver.
#### Artix (`runit`)
2026-08-04: Completed adapting playbooks and now using this as a daily driver.
2026-07-31: Began experimenting and adapting playbooks using VMs.
#### Debian Trixie #### Debian Trixie
This has been used as my primary server and workstation OS since at least 2024. This has been used as my primary server and workstation OS since at least 2024.
The `apt` version of `ansible` in both Bookworm and Trixie are sufficient, The `apt` version of `ansible` in both Bookworm and Trixie are sufficient,
no longer need to use `ansible` out of `pip`. no longer need to use `ansible` out of `pip`.
Stopped using as a workstation on all devices in August 2026. Stopped using as a workstation on all devices in August 2026.
#### Devuan (with `runit`) #### Devuan (`runit`)
2026-07-30: Distribution has beed added with a few caveats. 2026-07-30: Distribution has beed added with a few caveats.
- `runit` is the currently the expected init system (not OpenRC or SysVInit) - `runit` is the currently the expected init system (not OpenRC or SysVInit)
- Mullvad needs installed via .dev file [here](). - Mullvad needs installed via .dev file [TBD: link here]().
#### Artix Linux (OpenRC or runit)
2026-07-31: Began experimenting and adapting playbooks using VMs.
### Secondary ### Secondary
These are tested via my Docker project's `ProvisionsTests` container but not currently used as daily drivers. These are tested via my Docker project's `ProvisionsTests` containers
but not currently used as daily drivers. [TBD: Link]()
#### Arch #### Arch
+9 -44
View File
@@ -10,33 +10,15 @@
nethogs: nethogs nethogs: nethogs
ntp_server: chrony ntp_server: chrony
dig: dig dig: dig
neofetch: neofetch neofetch: fastfetch
lightdm: lightdm lightdm: lightdm
sddm: sddm sddm: sddm
tmux: tmux tmux: tmux
base_devel: htop # Placeholder for Arch package. base_devel: htop # Placeholder for Arch package.
macbook_wifi_driver: broadcom-sta-dkms sendmail: msmtp
xz: xz sendmail_mta: msmtp-mta
mesa: mesa ca_certificates: ca-certificates
mesa_utils: mesa-utils locate: mlocate
ninja: ninja
notify_send: libnotify
fyi: fyi
gtk3: gtk3
xz_libs: xz
cpp: libstdc++
c_libs: glibc
cpp_libs: libstdc++
z_libs: zlib
bzip: bzip2
dunst: dunst
android_jdk: openjdk
ncurses: ncurses
android_fastboot: fastboot
android_adb: adb
android_sdkmanager: sdkmanager
android_udev: android-udev
gnome_boxes: gnome-boxes
- name: General | Facts | Package | Parrot OS Fixes - name: General | Facts | Package | Parrot OS Fixes
set_fact: set_fact:
@@ -53,22 +35,6 @@
cron: cron cron: cron
encfs: encfs encfs: encfs
dig: dnsutils dig: dnsutils
neofetch: fastfetch
xz: xz-utils
mesa: libglu1-mesa
mesa_utils: libglu1-mesa
ninja: ninja-build
notify_send: libnotify-bin
gtk3: libgtk-3-dev
xz_libs: liblzma-dev
cpp: libstdc++-12-dev
c_libs: libc6:amd64
cpp_libs: libstdc++6
z_libs: lib32z1
bzip: libbz2-1.0
android_jdk: default-jdk
ncurses: libncurses5
android_udev: android-udev-rules
when: ansible_pkg_mgr == "apt" when: ansible_pkg_mgr == "apt"
- name: General | Facts | Package | pacman - name: General | Facts | Package | pacman
@@ -81,10 +47,6 @@
encfs: encfs encfs: encfs
dig: bind dig: bind
base_devel: base-devel base_devel: base-devel
macbook_wifi_driver: broadcom-wl-dkms
android_jdk: jdk-openjdk
android_fastboot: android-tools
android_adb: android-tools
when: ansible_pkg_mgr == "pacman" when: ansible_pkg_mgr == "pacman"
- name: General | Facts | Package | FreeBSD - name: General | Facts | Package | FreeBSD
@@ -99,7 +61,7 @@
encfs: fusefs-encfs encfs: fusefs-encfs
when: ansible_system == "FreeBSD" when: ansible_system == "FreeBSD"
- name: General | Facts | Package | dnf (Fixes) # TBD: Fix + test package names: mlocate, dig, neofetch - name: General | Facts | Package | dnf (Fixes)
set_fact: set_fact:
ansible_pkg_mgr: dnf ansible_pkg_mgr: dnf
when: ansible_pkg_mgr in ("dnf5") when: ansible_pkg_mgr in ("dnf5")
@@ -113,6 +75,8 @@
microcode_intel: microcode_ctl microcode_intel: microcode_ctl
cron: cronie cron: cronie
encfs: fuse-encfs encfs: fuse-encfs
dig: bind-utils
sendmail_mta: msmtp
when: ansible_pkg_mgr == "dnf" when: ansible_pkg_mgr == "dnf"
- name: General | Facts | Package | zypper - name: General | Facts | Package | zypper
@@ -123,6 +87,7 @@
microcode_intel: ucode-intel microcode_intel: ucode-intel
cron: cronie cron: cronie
encfs: encfs encfs: encfs
dig: bind-utils
when: ansible_pkg_mgr == "zypper" when: ansible_pkg_mgr == "zypper"
+1 -1
View File
@@ -21,7 +21,7 @@
set_fact: set_fact:
crond: cronie crond: cronie
crond_pattern: cronie crond_pattern: cronie
when: ansible_distribution in ("Archlinux") when: ansible_pkg_mgr == "pacman"
- name: General | Facts | Service | Fedora - name: General | Facts | Service | Fedora
set_fact: set_fact:
+50 -5
View File
@@ -27,15 +27,55 @@
sassc: sassc sassc: sassc
ffmpeg: ffmpeg ffmpeg: ffmpeg
wireless_tools: wireless-tools wireless_tools: wireless-tools
macbook_wifi_driver: broadcom-sta-dkms
xz: xz
mesa: mesa
mesa_utils: mesa-utils
ninja: ninja
notify_send: libnotify
fyi: fyi
gtk3: gtk3
xz_libs: xz
cpp: libstdc++
c_libs: glibc
cpp_libs: libstdc++
z_libs: zlib
bzip: bzip2
dunst: dunst
android_jdk: openjdk
ncurses: ncurses
android_fastboot: fastboot
android_adb: adb
android_sdkmanager: sdkmanager
android_udev: android-udev
gnome_boxes: gnome-boxes
- name: Workstation | Facts | Package | apt (All Distros)
set_fact:
xz: xz-utils
mesa: libglu1-mesa
mesa_utils: libglu1-mesa
ninja: ninja-build
notify_send: libnotify-bin
gtk3: libgtk-3-dev
xz_libs: liblzma-dev
cpp: libstdc++-12-dev
c_libs: libc6:amd64
cpp_libs: libstdc++6
z_libs: lib32z1
bzip: libbz2-1.0
android_jdk: default-jdk
ncurses: libncurses5
android_udev: android-udev-rules
when: ansible_pkg_mgr == "apt"
- name: Workstation | Facts | Package | Pop_OS! - name: Workstation | Facts | Package | Pop_OS!
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
firefox_esr: firefox firefox_esr: firefox
when: ansible_distribution == "Pop!_OS" when: ansible_distribution == "Pop!_OS"
- name: Workstation | Facts | Package | Ubuntu - name: Workstation | Facts | Package | Ubuntu
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
@@ -43,28 +83,33 @@
dmenu: suckless-tools dmenu: suckless-tools
when: ansible_distribution == "Ubuntu" when: ansible_distribution == "Ubuntu"
- name: Workstation | Facts | Package | Debian & Devuan - name: Workstation | Facts | Package | Debian & Devuan
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
dmenu: suckless-tools dmenu: suckless-tools
firefox: firefox-esr
when: ansible_distribution in ("Debian", "Devuan") when: ansible_distribution in ("Debian", "Devuan")
- name: Workstation | Facts | Package | Mint - name: Workstation | Facts | Package | Mint
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
firefox_esr: firefox firefox_esr: firefox
when: ansible_distribution == "Linux Mint" when: ansible_distribution == "Linux Mint"
- name: Workstation | Facts | Package | Parrot OS - name: Workstation | Facts | Package | Parrot OS
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
firefox_esr: firefox-esr
when: ansible_distribution == "Parrot OS" when: ansible_distribution == "Parrot OS"
- name: Workstation | Facts | Package | pacman (All Distros)
set_fact:
macbook_wifi_driver: broadcom-wl-dkms
android_jdk: jdk-openjdk
android_fastboot: android-tools
android_adb: android-tools
when: ansible_pkg_mgr == "pacman"
- name: Workstation | Facts | Package | Arch / Manjaro / Artix - name: Workstation | Facts | Package | Arch / Manjaro / Artix
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
+8 -7
View File
@@ -4,6 +4,7 @@
"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": "",
"update.showReleaseNotes": false,
"workbench.startupEditor": "none", "workbench.startupEditor": "none",
"editor.rulers": [ "editor.rulers": [
80, 120, 200 80, 120, 200
@@ -18,11 +19,11 @@
"files.trimFinalNewlines": true, "files.trimFinalNewlines": true,
"git.confirmSync": false, "git.confirmSync": false,
"[dart]": { "[dart]": {
"editor.formatOnSave": true, "editor.formatOnSave": true,
"editor.formatOnType": true, "editor.formatOnType": true,
"editor.selectionHighlight": false, "editor.selectionHighlight": false,
"editor.tabCompletion": "onlySnippets", "editor.tabCompletion": "onlySnippets",
"editor.wordBasedSuggestions": "off" "editor.wordBasedSuggestions": "off"
} }
} }
+34 -47
View File
@@ -131,8 +131,7 @@
# Window Managers without true Desktop Environments # # Window Managers without true Desktop Environments #
- include_tasks: tasks/workstation/shared/software/dwm.yml - include_tasks: tasks/workstation/shared/software/dwm.yml
- include_tasks: tasks/workstation/shared/software/i3.yml
- include_tasks: tasks/workstation/linux/software/i3.yml
# Polished Desktop Environments # # Polished Desktop Environments #
- include_tasks: tasks/workstation/freebsd/software/gnome.yml - include_tasks: tasks/workstation/freebsd/software/gnome.yml
@@ -142,7 +141,6 @@
block: block:
- include_tasks: tasks/workstation/linux/software/gnome.yml - include_tasks: tasks/workstation/linux/software/gnome.yml
when: ansible_service_mgr == "systemd" when: ansible_service_mgr == "systemd"
- include_tasks: tasks/workstation/linux/software/cinnamon.yml - include_tasks: tasks/workstation/linux/software/cinnamon.yml
- include_tasks: tasks/workstation/linux/software/lxqt.yml - include_tasks: tasks/workstation/linux/software/lxqt.yml
when: ansible_system == "Linux" when: ansible_system == "Linux"
@@ -150,21 +148,15 @@
## Software Tasks ## ## Software Tasks ##
- include_tasks: tasks/workstation/linux/software/packages.yml - block:
when: ansible_system == "Linux" - include_tasks: tasks/workstation/linux/software/packages.yml
- include_tasks: tasks/workstation/linux/software/tlp.yml
- include_tasks: tasks/workstation/linux/software/tlp.yml - include_tasks: tasks/workstation/linux/software/lutris.yml
- include_tasks: tasks/workstation/linux/software/vscodium.yml
- include_tasks: tasks/workstation/linux/software/lutris.yml - include_tasks: tasks/workstation/linux/software/vpn.yml
when: ansible_system == "Linux" - include_tasks: tasks/workstation/linux/software/nodejs.yml
- include_tasks: tasks/workstation/linux/software/brave.yml
- include_tasks: tasks/workstation/linux/software/vscodium.yml when: ansible_pkg_mgr in ("apt", "dnf", "zypper") and not mobile
when: ansible_system == "Linux"
- include_tasks: tasks/workstation/linux/software/brave.yml
when: ansible_pkg_mgr in ("apt", "dnf", "zypper") and not mobile
- include_tasks: tasks/workstation/linux/software/vpn.yml
when: ansible_system == "Linux" when: ansible_system == "Linux"
- include_tasks: tasks/workstation/freebsd/software/packages.yml - include_tasks: tasks/workstation/freebsd/software/packages.yml
@@ -173,17 +165,16 @@
- include_tasks: tasks/workstation/mac-os/software/brew.yml - include_tasks: tasks/workstation/mac-os/software/brew.yml
when: ansible_system == "Darwin" when: ansible_system == "Darwin"
- include_tasks: tasks/workstation/linux/software/nodejs.yml
## Configuration Tasks ## ## Configuration Tasks ##
- include_tasks: tasks/workstation/shared/settings/gnome.yml - block:
when: not mobile - include_tasks: tasks/workstation/shared/settings/gnome.yml
- include_tasks: tasks/workstation/shared/settings/cinnamon.yml - include_tasks: tasks/workstation/shared/settings/cinnamon.yml
when: not mobile
- include_tasks: tasks/workstation/linux/cron/ansible.yml - include_tasks: tasks/workstation/linux/cron/ansible.yml
when: ansible_system == "Linux" and not mobile when: ansible_system == "Linux"
when: not mobile
- include_tasks: tasks/workstation/shared/settings/nfs.yml - include_tasks: tasks/workstation/shared/settings/nfs.yml
@@ -194,20 +185,17 @@
when: vnc == true when: vnc == true
- include_tasks: tasks/workstation/shared/settings/services.yml - include_tasks: tasks/workstation/shared/settings/services.yml
- include_tasks: tasks/workstation/shared/settings/templates.yml - include_tasks: tasks/workstation/shared/settings/templates.yml
## Final Tasks (SLOW) ## ## Final Tasks (SLOW) ##
- include_tasks: tasks/workstation/linux/software/flutter.yml - block:
- include_tasks: tasks/workstation/linux/software/flutter.yml
- include_tasks: tasks/workstation/linux/software/android.yml
- include_tasks: tasks/workstation/linux/software/flatpaks.yml
when: flatpak_distro
when: ansible_system == "Linux" when: ansible_system == "Linux"
- include_tasks: tasks/workstation/linux/software/android.yml
when: ansible_system == "Linux"
- include_tasks: tasks/workstation/linux/software/flatpaks.yml
when: ansible_system == "Linux" and flatpak_distro
when: workstation == true when: workstation == true
@@ -260,22 +248,21 @@
- include_tasks: tasks/server/software/services.yml - include_tasks: tasks/server/software/services.yml
- include_tasks: tasks/server/software/certbot.yml - block:
when: certbot == true - include_tasks: tasks/server/software/certbot.yml
- include_tasks: tasks/server/cron/certbot.yml - include_tasks: tasks/server/cron/certbot.yml
when: certbot == true when: certbot == true
- include_tasks: tasks/server/software/onlyoffice.yml - block:
when: onlyoffice == true and ansible_pkg_mgr == "apt" - include_tasks: tasks/server/software/onlyoffice.yml
when: onlyoffice == true
- include_tasks: tasks/server/software/influxdb1.yml - include_tasks: tasks/server/software/influxdb1.yml
when: influxdb1 == true and ansible_pkg_mgr == "apt" when: influxdb1 == true
- include_tasks: tasks/server/software/influxdb2.yml
- include_tasks: tasks/server/software/influxdb2.yml when: influxdb2 == true
when: influxdb2 == true and ansible_pkg_mgr == "apt" - include_tasks: tasks/server/software/grafana.yml
when: grafana == true
- include_tasks: tasks/server/software/grafana.yml when: ansible_pkg_mgr == "apt"
when: grafana == true and ansible_pkg_mgr == "apt"
- include_tasks: tasks/server/software/hugo.yml - include_tasks: tasks/server/software/hugo.yml
when: hugo == true when: hugo == true
+38 -23
View File
@@ -7,12 +7,23 @@ 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://git.hyperling.com/me/env-ansible" URL="https://git.hyperling.com/me/env-ansible"
BRANCH="main" if [[ -z $BRANCH ]]; then
export BRANCH="main"
fi
LINUX_HOSTS_DIR=/etc/ansible
LINUX_HOSTS_FILE="$LINUX_HOSTS_DIR/hosts"
FREEBSD_HOSTS_DIR="/usr/local/etc/ansible"
FREEBSD_HOSTS_FILE="$FREEBSD_HOSTS_DIR/hosts"
HOSTS_DIR="$LINUX_HOSTS_DIR"
HOSTS_FILE="$LINUX_HOSTS_FILE"
config_dir="/usr/local/etc/hyperling-scm" config_dir="/usr/local/etc/hyperling-scm"
general_config="$config_dir/general.ini" general_config="$config_dir/general.ini"
workstation_config="$config_dir/workstation.ini" workstation_config="$config_dir/workstation.ini"
server_config="$config_dir/server.ini" server_config="$config_dir/server.ini"
branch=""
## Functions ## ## Functions ##
@@ -45,10 +56,10 @@ while getopts ":lb:gwsfh" arg; do
case $arg in case $arg in
l) local="Y" && echo "Running $LOCAL as the playbook." ;; l) local="Y" && echo "Running $LOCAL as the playbook." ;;
b) branch="$OPTARG" && echo "Using branch $branch instead of $BRANCH." ;; b) branch="$OPTARG" && echo "Using branch $branch instead of $BRANCH." ;;
g) create_general="Y" && echo "Requested '$general_config'." ;; g) create_general="Y" && echo "Generating test '$general_config'." ;;
w) create_workstation="Y" && echo "Requested '$workstation_config'." ;; w) create_workstation="Y" && echo "Generating test '$workstation_config'." ;;
s) create_server="Y" && echo "Requested '$server_config'." ;; s) create_server="Y" && echo "Generating test '$server_config'." ;;
f) show_facts="Y" ;; f) show_facts="Y" && echo "Displaying ansible facts then exiting." ;;
h) usage ;; h) usage ;;
*) echo "ERROR: Parameter $OPTARG was not recognized." && usage 1 ;; *) echo "ERROR: Parameter $OPTARG was not recognized." && usage 1 ;;
esac esac
@@ -60,9 +71,13 @@ if [[ ! -z $1 && $1 != "-"* ]]; then
usage 1 usage 1
fi fi
if [[ -z "$local" && "$branch" == "" ]]; then if [[ "$branch" == "" ]]; then
echo "Using default branch $BRANCH."
branch="$BRANCH" branch="$BRANCH"
if [[ -z "$local" ]]; then
echo "Running against default branch '$branch'."
else
echo "Set branch to '$branch'."
fi
fi fi
if [[ -n "$create_general" && -f "$general_config" ]]; then if [[ -n "$create_general" && -f "$general_config" ]]; then
@@ -92,41 +107,41 @@ if [[ `which ansible > /dev/null; echo $?` != 0 ]]; then
if [[ $os == *Debian* || $os == *Ubuntu* || $os == *"Pop!_OS"* || $os == *Mint* || $os == *Parrot* ]]; then if [[ $os == *Debian* || $os == *Ubuntu* || $os == *"Pop!_OS"* || $os == *Mint* || $os == *Parrot* ]]; then
sudo apt update sudo apt update
sudo apt install -y ansible git <<< N sudo apt install -y ansible git <<< N
sudo mkdir -p /etc/ansible
sudo sh -c 'echo "localhost ansible_connection=local" > /etc/ansible/hosts'
elif [[ $os == *FreeBSD* ]]; then elif [[ $os == *FreeBSD* ]]; then
sudo pkg install -y py38-ansible git sudo pkg install -y -g py*-ansible git
sudo mkdir -p /usr/local/etc/ansible HOSTS_DIR="$FREEBSD_HOSTS_DIR"
sudo sh -c 'echo "localhost ansible_connection=local" > /usr/local/etc/ansible/hosts' HOSTS_FILE="$FREEBSD_HOSTS_FILE"
elif [[ $os == *Arch* || $os == *Manjaro* || $os == *Artix* ]]; then elif [[ $os == *Arch* || $os == *Manjaro* || $os == *Artix* ]]; then
sudo pacman -Sy --noconfirm ansible git sudo pacman -Sy --noconfirm ansible git
sudo mkdir -p /etc/ansible
sudo sh -c 'echo "localhost ansible_connection=local" > /etc/ansible/hosts'
elif [[ $os == *Darwin* ]]; then elif [[ $os == *Darwin* ]]; then
bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
echo "TESTING - EXIT!"
exit 0
brew install ansible git brew install ansible git
HOSTS_DIR=""
HOSTS_FILE=""
elif [[ $os == *Fedora* ]]; then elif [[ $os == *Fedora* ]]; then
sudo dnf install -y ansible git python3-libselinux sudo dnf install -y ansible git python3-libselinux
sudo mkdir -p /etc/ansible
sudo sh -c 'echo "localhost ansible_connection=local" > /etc/ansible/hosts'
elif [[ $os == *openSUSE* ]]; then elif [[ $os == *openSUSE* ]]; then
sudo zypper install -y ansible git sudo zypper install -y ansible git
sudo mkdir -p /etc/ansible
sudo sh -c 'echo "localhost ansible_connection=local" > /etc/ansible/hosts'
elif [[ $os == *NixOS* ]]; then elif [[ $os == *NixOS* ]]; then
$DIR/files/scripts/nixos.sh -b $branch $DIR/files/scripts/nixos.sh -b $branch
sudo mkdir -p /etc/ansible
sudo sh -c 'echo "localhost ansible_connection=local" > /etc/ansible/hosts'
else else
echo -e "ERROR: OS not detected." echo -e "ERROR: OS not recognized."
echo -e "$os" echo -e "$os"
exit 1 exit 1
fi fi
fi fi
echo "Installed!" echo "Installed!"
if [[ -n $HOSTS_DIR && -n $HOSTS_FILE ]]; then
echo "Ensuring hosts file exists..."
if [[ ! -e $HOSTS_FILE ]]; then
sudo mkdir -pv $HOSTS_DIR
sudo sh -c "echo 'localhost ansible_connection=local' > $HOSTS_FILE"
fi
echo "$HOSTS_FILE: '`cat $HOSTS_FILE`'"
echo "Hosts file created successfully!"
fi
if [[ "$show_facts" == "Y" ]]; then if [[ "$show_facts" == "Y" ]]; then
echo "Showing Ansible Facts" echo "Showing Ansible Facts"
ansible localhost -m setup --connection=local ansible localhost -m setup --connection=local
+37 -6
View File
@@ -16,12 +16,12 @@
backup: yes backup: yes
create: no create: no
state: present state: present
when: ansible_distribution == "Archlinux" when: ansible_pkg_mgr == "pacman"
#- name: General | Account Management | Users | Use ZSH (Arch+Manjaro) #- name: General | Account Management | Users | Use ZSH (Arch+Manjaro)
# set_fact: # set_fact:
# user_shell: "{{ zsh_exec.stdout }}" # user_shell: "{{ zsh_exec.stdout }}"
# when: ansible_distribution == "Archlinux" # when: ansible_pkg_mgr == "pacman"
# #
#- name: General | Account Management | Users | Allow ZSH (Arch) #- name: General | Account Management | Users | Allow ZSH (Arch)
# lineinfile: # lineinfile:
@@ -32,7 +32,7 @@
# backup: yes # backup: yes
# create: no # create: no
# state: present # state: present
# when: ansible_distribution == "Archlinux" # when: ansible_pkg_mgr == "pacman"
## Root ## ## Root ##
@@ -128,8 +128,17 @@
export_path_sbin: export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin" export_path_sbin: export PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin"
#export_terminal: export TERMINAL="alacritty" # colors look weird. #export_terminal: export TERMINAL="alacritty" # colors look weird.
export_terminal: export TERMINAL="kitty" export_terminal: export TERMINAL="kitty"
export_browser: export BROWSER="`which firefox || which firefox-esr || which firefox-flatpak`" export_browser: |
keyboard_settings: setxkbmap -layout us -variant altgr-intl function find-firefox {
which firefox 2>/dev/null ||
which firefox-esr 2>/dev/null ||
which firefox-flatpak 2>/dev/null
}
export BROWSER="`find-firefox`"
keyboard_settings: |
if [[ -n "$XDG_SESSION_ID" ]]; then
setxkbmap -layout us -variant altgr-intl
fi
- name: General | Account Management | Users | Files | RC Variables - name: General | Account Management | Users | Files | RC Variables
set_fact: set_fact:
@@ -1122,6 +1131,9 @@
test_domain="git.hyperling.com" test_domain="git.hyperling.com"
test_connection() { test_connection() {
ping -c 3 $test_domain ping -c 3 $test_domain
status="$?"
echo "* Status Returned: '$status'"
return $status
} }
test_connection && test_connection &&
echo -e "\n* Looks good! Not trying anything." && echo -e "\n* Looks good! Not trying anything." &&
@@ -1147,7 +1159,26 @@
show_connection show_connection
echo -e "\n* Testing Again..." echo -e "\n* Testing Again..."
test_connection test_connection &&
echo -e "\n* Looks good! Not trying anything else." &&
return 0 ||
echo -e "\n* Connection failed, troubleshooting more..."
reset_wifi() {
wifi off
sleep 5
wifi on
sleep 5
}
echo -e "\n* Turning WiFi Off & On Again"
reset_wifi
echo "Done!"
echo -e "\n* Testing Again..."
test_connection &&
echo -e "\n* Looks good now!" &&
return 0 ||
echo -e "\n* Connection still failed, maybe try rebooting?"
} }
alias test_wifi="reconnect" alias test_wifi="reconnect"
alias test_network="reconnect" alias test_network="reconnect"
+4 -3
View File
@@ -4,7 +4,7 @@
- name: General | Software | AUR | Facts 01 - name: General | Software | AUR | Facts 01
set_fact: set_fact:
aur_user: aur-user aur_user: aurbuilder
aur_build_dir: ~/src aur_build_dir: ~/src
aur_helper: yay aur_helper: yay
aur_helper_url: https://aur.archlinux.org/yay-bin.git aur_helper_url: https://aur.archlinux.org/yay-bin.git
@@ -12,6 +12,7 @@
- name: General | Software | AUR | Facts 02 - name: General | Software | AUR | Facts 02
set_fact: set_fact:
aur_helper_dir: "{{ aur_build_dir }}/{{ aur_helper }}" aur_helper_dir: "{{ aur_build_dir }}/{{ aur_helper }}"
aur_sudoers: "/etc/sudoers.d/sudoers_{{ aur_user }}"
- name: General | Software | AUR | User - name: General | Software | AUR | User
user: user:
@@ -21,7 +22,7 @@
- name: General | Software | AUR | Sudoers - name: General | Software | AUR | Sudoers
lineinfile: lineinfile:
path: /etc/sudoers.d/aurbuilder path: "{{ aur_sudoers }}"
line: "{{ aur_user }} ALL=(ALL) NOPASSWD: /usr/bin/pacman" line: "{{ aur_user }} ALL=(ALL) NOPASSWD: /usr/bin/pacman"
create: true create: true
mode: '0440' mode: '0440'
@@ -42,7 +43,7 @@
dest: "{{ aur_helper_dir }}" dest: "{{ aur_helper_dir }}"
- name: General | Software | AUR | Install | Build & Integrate - name: General | Software | AUR | Install | Build & Integrate
command: "cd {{ aur_helper_dir }} && makepkg -si --noconfirm" shell: "cd {{ aur_helper_dir }} && makepkg -si --noconfirm"
changed_when: true changed_when: true
when: yay_check.rc != 0 when: yay_check.rc != 0
+43 -40
View File
@@ -40,35 +40,38 @@
- name: General | Software | Packages | Install Software - name: General | Software | Packages | Install Software
package: package:
name: name:
- bash - bash
- sudo - sudo
- nmap - nmap
- "{{ neofetch }}" - "{{ neofetch }}"
- "{{ sshfs }}" - "{{ sshfs }}"
- "{{ locate }}" - "{{ locate }}"
- zsh - zsh
- "{{ opensshd }}" - "{{ opensshd }}"
- "{{ tar }}" - "{{ tar }}"
- curl - curl
- at - at
- gcc - gcc
- vim - vim
- "{{ cron }}" - "{{ cron }}"
- "{{ encfs }}" - "{{ encfs }}"
- rsync - rsync
- "{{ iftop }}" - "{{ iftop }}"
- "{{ nethogs }}" - "{{ nethogs }}"
- "{{ ntp_server }}" - "{{ ntp_server }}"
- "{{ dig }}" - "{{ dig }}"
- "{{ tmux }}" - "{{ tmux }}"
- "{{ base_devel }}" - "{{ base_devel }}"
- "{{ sendmail }}"
- "{{ sendmail_mta }}"
- "{{ ca_certificates }}"
state: present state: present
- name: General | Software | Packages | Install Software (DEV) - name: General | Software | Packages | Install Software (DEV)
package: package:
name: name:
- "{{ microcode_amd }}" - "{{ microcode_amd }}"
- "{{ microcode_intel }}" - "{{ microcode_intel }}"
state: present state: present
when: branch == "dev" when: branch == "dev"
ignore_errors: yes ignore_errors: yes
@@ -76,10 +79,10 @@
- name: General | Software | Packages | Add Generic Kernel + Tools (Ubuntu) - name: General | Software | Packages | Add Generic Kernel + Tools (Ubuntu)
package: package:
name: name:
- linux-image-generic - linux-image-generic
- linux-headers-generic - linux-headers-generic
- linux-tools-generic - linux-tools-generic
- linux-tools-common - linux-tools-common
state: present state: present
when: ansible_distribution == "Ubuntu" when: ansible_distribution == "Ubuntu"
ignore_errors: yes ignore_errors: yes
@@ -87,8 +90,8 @@
- name: General | Software | Packages | Add Generic Kernel + Headers (Debian) - name: General | Software | Packages | Add Generic Kernel + Headers (Debian)
package: package:
name: name:
- linux-image-amd64 - linux-image-amd64
- linux-headers-amd64 - linux-headers-amd64
state: present state: present
when: ansible_distribution == "Debian" when: ansible_distribution == "Debian"
ignore_errors: yes ignore_errors: yes
@@ -102,10 +105,10 @@
- name: General | Software | Packages | Install "Bloat" (Looking at you, Arch Base) - name: General | Software | Packages | Install "Bloat" (Looking at you, Arch Base)
package: package:
name: name:
- which - which
- "{{ cron }}" - "{{ cron }}"
state: present state: present
when: ansible_distribution == "Archlinux" when: ansible_pkg_mgr == "pacman"
- name: General | Software | Packages | Install Fix (Looking at you, openSUSE) - name: General | Software | Packages | Install Fix (Looking at you, openSUSE)
package: package:
@@ -122,17 +125,17 @@
- name: General | Software | Packages | Update Software (Disabled) - name: General | Software | Packages | Update Software (Disabled)
package: package:
name: name:
- ansible - ansible
- git - git
state: latest state: latest
when: 1 == 0 when: 1 == 0
- name: General | Software | Packages | Remove Software - name: General | Software | Packages | Remove Software
package: package:
name: name:
- cowsay # Sorry ;) - cowsay # Sorry ;)
- chromium - chromium
- chromium-browser - chromium-browser
state: absent state: absent
# Ubuntu still uses snap for critical components like GNOME, must keep. # Ubuntu still uses snap for critical components like GNOME, must keep.
@@ -148,7 +151,7 @@
- name: General | Software | Packages | Remove Snap (Besides Ubuntu) - name: General | Software | Packages | Remove Snap (Besides Ubuntu)
package: package:
name: name:
- snapd - snapd
state: absent state: absent
when: ansible_distribution != "Ubuntu" when: ansible_distribution != "Ubuntu"
ignore_errors: yes ignore_errors: yes
@@ -156,7 +159,7 @@
- name: General | Software | Packages | Other Debian Packages - name: General | Software | Packages | Other Debian Packages
package: package:
name: name:
- usbutils - usbutils
state: present state: present
when: ansible_distribution in ("Debian") when: ansible_distribution in ("Debian")
ignore_errors: yes ignore_errors: yes
+1
View File
@@ -30,6 +30,7 @@
- "date > {{ services_enabled_file }}" - "date > {{ services_enabled_file }}"
- "echo '\n-= Enabled + Sorted =-\n' >> {{ services_enabled_file }}" - "echo '\n-= Enabled + Sorted =-\n' >> {{ services_enabled_file }}"
- "grep 'enabled' {{ services_report_file }} | sort >> {{ services_enabled_file }}" - "grep 'enabled' {{ services_report_file }} | sort >> {{ services_enabled_file }}"
when: ansible_service_mgr == "systemd"
- name: General | Tests | Services | Make Viewable - name: General | Tests | Services | Make Viewable
file: file:
+9
View File
@@ -75,6 +75,9 @@
create: yes create: yes
backup: yes backup: yes
loop: loop:
- { "key": '^[\#]?TLP_ENABLE', "value": 'TLP_ENABLE=1'}
- { "key": '^[\#]?TLP_DEFAULT_MODE', "value": 'TLP_DEFAULT_MODE=SAV'}
## Device Controls ##
- { "key": '^[\#]?DEVICES_TO_DISABLE_ON_STARTUP', "value": 'DEVICES_TO_DISABLE_ON_STARTUP="bluetooth nfc wwan"'} - { "key": '^[\#]?DEVICES_TO_DISABLE_ON_STARTUP', "value": 'DEVICES_TO_DISABLE_ON_STARTUP="bluetooth nfc wwan"'}
# Ensure these stay commented, once the device is booted the user is in control. # # Ensure these stay commented, once the device is booted the user is in control. #
- { "key": '^[\#]?DEVICES_TO_ENABLE_ON_STARTUP', "value": '#DEVICES_TO_ENABLE_ON_STARTUP=""'} - { "key": '^[\#]?DEVICES_TO_ENABLE_ON_STARTUP', "value": '#DEVICES_TO_ENABLE_ON_STARTUP=""'}
@@ -85,6 +88,12 @@
- { "key": '^[\#]?STOP_CHARGE_THRESH_BAT0', "value": '{{ "" if battery else "#" }}STOP_CHARGE_THRESH_BAT0=80'} - { "key": '^[\#]?STOP_CHARGE_THRESH_BAT0', "value": '{{ "" if battery else "#" }}STOP_CHARGE_THRESH_BAT0=80'}
- { "key": '^[\#]?START_CHARGE_THRESH_BAT1', "value": '{{ "" if battery else "#" }}START_CHARGE_THRESH_BAT1=60'} - { "key": '^[\#]?START_CHARGE_THRESH_BAT1', "value": '{{ "" if battery else "#" }}START_CHARGE_THRESH_BAT1=60'}
- { "key": '^[\#]?STOP_CHARGE_THRESH_BAT1', "value": '{{ "" if battery else "#" }}STOP_CHARGE_THRESH_BAT1=80'} - { "key": '^[\#]?STOP_CHARGE_THRESH_BAT1', "value": '{{ "" if battery else "#" }}STOP_CHARGE_THRESH_BAT1=80'}
# Do not let the WiFi device go DORMANT.
- { "key": '^[\#]?WIFI_PWR_ON_AC', "value": 'WIFI_PWR_ON_AC=off'}
- { "key": '^[\#]?WIFI_PWR_ON_BAT', "value": 'WIFI_PWR_ON_BAT=off'}
# Do not let USB devices go dormant.
- { "key": '^[\#]?USB_AUTOSUSPEND', "value": 'USB_AUTOSUSPEND=0'}
## Enable + Start ## ## Enable + Start ##
+1
View File
@@ -47,6 +47,7 @@
dest: "/run/runit/services/mullvad" dest: "/run/runit/services/mullvad"
state: link state: link
force: true force: true
when: ansible_service_mgr == "runit"
when: ansible_distribution in ("Debian", "Ubuntu", "Arch", "Artix") when: ansible_distribution in ("Debian", "Ubuntu", "Arch", "Artix")
@@ -5,7 +5,7 @@
# work to change things around. Good alternative to DWM and so lightweight that # work to change things around. Good alternative to DWM and so lightweight that
# it doesn´t even matter if both are installed!! # it doesn´t even matter if both are installed!!
- name: Workstation | Linux | Software | i3 | Facts | General [1/2] - name: Workstation | Shared | Software | i3 | i3 | Facts 01
set_fact: set_fact:
i3_config: "settings/i3.config" i3_config: "settings/i3.config"
i3_config_dir: "{{ user_user.home }}/.config/i3" i3_config_dir: "{{ user_user.home }}/.config/i3"
@@ -19,31 +19,31 @@
i3_theme02: arc-theme i3_theme02: arc-theme
i3_theme03: numix-gtk-theme i3_theme03: numix-gtk-theme
- name: Workstation | Linux | Software | i3 | Facts | General [1/2] - name: Workstation | Shared | Software | i3 | i3 | Facts 02
set_fact: set_fact:
i3_config_file: "{{ i3_config_dir }}/config" i3_config_file: "{{ i3_config_dir }}/config"
- name: Workstation | Linux | Software | i3 | Facts | pacman - name: Workstation | Shared | Software | i3 | i3 | Facts | non-apt
set_fact: set_fact:
i3_theme01: htop i3_theme01: htop
i3_theme02: htop i3_theme02: htop
i3_theme03: htop i3_theme03: htop
when: ansible_pkg_mgr == "pacman" when: ansible_pkg_mgr != "apt"
- name: Workstation | Linux | Software | i3 | Facts | yay - name: Workstation | Shared | Software | i3 | i3 | Facts | yay
set_fact: set_fact:
i3_yay_packages: i3_yay_packages:
- greybird-gtk-theme - greybird-gtk-theme
#- enlightenment-arc-theme #- enlightenment-arc-theme
- numix-gtk-theme - numix-gtk-theme
when: ansible_pkg_mgr == "pacman" when: ansible_pkg_mgr == "pacman"
#- name: Workstation | Linux | Software | i3 | Facts | TBD #- name: Workstation | Shared | Software | i3 | i3 | Facts | TBD
# set_fact: # set_fact:
# i3_package: i3-wm # i3_package: i3-wm
# when: ansible_distribution in ("TBD") # when: ansible_distribution in ("TBD")
- name: Workstation | Linux | Software | i3 | Install - name: Workstation | Shared | Software | i3 | i3 | Install
package: package:
name: name:
- "{{ i3_package }}" - "{{ i3_package }}"
@@ -59,14 +59,14 @@
state: present state: present
update_cache: yes update_cache: yes
- name: Workstation | Linux | Software | i3 | Install (yay) - name: Workstation | Shared | Software | i3 | i3 | Install (yay)
shell: "yay -Qs {{ item }} || yay --noconfirm -S {{ item }}" shell: "yay -Qs {{ item }} || yay --noconfirm -S {{ item }}"
loop: "{{ i3_yay_packages }}" loop: "{{ i3_yay_packages }}"
when: ansible_pkg_mgr == "pacman" when: ansible_pkg_mgr == "pacman"
become_user: "{{ aur_user }}" become_user: "{{ aur_user }}"
ignore_errors: true ignore_errors: true
- name: Workstation | Linux | Software | i3 | Config | Create Dir - name: Workstation | Shared | Software | i3 | i3 | Config | Create Dir
ansible.builtin.file: ansible.builtin.file:
path: "{{ i3_config_dir }}" path: "{{ i3_config_dir }}"
state: directory state: directory
@@ -74,7 +74,7 @@
owner: "{{ user }}" owner: "{{ user }}"
group: "{{ user }}" group: "{{ user }}"
- name: Workstation | Linux | Software | i3 | Config | Copy File - name: Workstation | Shared | Software | i3 | i3 | Config | Copy File
copy: copy:
src: "{{ i3_config }}" src: "{{ i3_config }}"
dest: "{{ i3_config_file }}" dest: "{{ i3_config_file }}"
@@ -104,42 +104,49 @@
# # sudo udevadm trigger # # sudo udevadm trigger
# #
- name: Workstation | Linux | Software | i3 | Light | Check Backlights - name: Workstation | Shared | Software | i3 | i3 | Light (Linux Only)
ansible.builtin.find: block:
paths: /sys/class/backlight
file_type: any # Options: file, directory, any
patterns: "*" # Wildcard patterns (e.g., "*.log")
recurse: no # Set to 'yes' for subdirectories
register: i3_light_device_check
#- name: Display var _ DELETEME - name: Workstation | Shared | Software | i3 | i3 | Light | Check Backlights
# ansible.builtin.debug: ansible.builtin.find:
# msg: "{{ i3_light_device_check }}" paths: /sys/class/backlight
file_type: any # Options: file, directory, any
patterns: "*" # Wildcard patterns (e.g., "*.log")
recurse: no # Set to 'yes' for subdirectories
register: i3_light_device_check
ignore_errors: yes
- name: Workstation | Linux | Software | i3 | Light | Pull Backlight Name #- name: Display var _ DELETEME
set_fact: # ansible.builtin.debug:
i3_light_device_name: "{{ i3_light_device_check.files[0].path | basename }}" # msg: "{{ i3_light_device_check }}"
#- name: Display var - DELETEME - name: Workstation | Shared | Software | i3 | i3 | Light | Pull Backlight Name
# ansible.builtin.debug: set_fact:
# msg: "{{ i3_light_device_name }}" i3_light_device_name: "{{ i3_light_device_check.files[0].path | basename }}"
ignore_errors: yes
- name: Workstation | Linux | Software | i3 | Light | udev Rules | Create #- name: Display var - DELETEME
ansible.builtin.copy: # ansible.builtin.debug:
dest: /etc/udev/rules.d/backlight.rules # msg: "{{ i3_light_device_name }}"
content: |
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="{{ i3_light_device_name }}", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="{{ i3_light_device_name }}", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
owner: root
group: root
mode: '0644'
- name: Workstation | Linux | Software | i3 | Light | udev Rules | Reload - name: Workstation | Shared | Software | i3 | i3 | Light | udev Rules | Create
command: "{{ item }}" ansible.builtin.copy:
loop: dest: /etc/udev/rules.d/backlight.rules
- udevadm control --reload-rules content: |
- udevadm trigger ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="{{ i3_light_device_name }}", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="{{ i3_light_device_name }}", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
owner: root
group: root
mode: '0644'
ignore_errors: yes
- name: Workstation | Shared | Software | i3 | i3 | Light | udev Rules | Reload
command: "{{ item }}"
loop:
- udevadm control --reload-rules
- udevadm trigger
when: ansible_system == "Linux"
#- name: FAIL - DELETEME #- name: FAIL - DELETEME
# meta: end_play # meta: end_play