106 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
me 9406d4aca2 AUR, only install if using pacman. 2026-08-04 09:08:21 -07:00
me 4cf848d4a9 workstation, add gnome-boxes. 2026-08-04 09:00:21 -07:00
me 09f6a1e96b firefox, add the BROWSER env variable. 2026-08-04 08:45:46 -07:00
me 2d5fa52294 flutter, fix fact task numbering. 2026-08-04 08:42:03 -07:00
me d54131a1b2 android, fix playbook to also work on Artix. 2026-08-04 08:41:07 -07:00
me 8a79822ae5 dunst, add program which handled DBUS for notify-send and fyi on non-systemd machines. 2026-08-04 08:15:08 -07:00
me c66938f738 flutter, get it installing on Artix by converting the rest of the package names to variables. 2026-08-04 08:05:20 -07:00
me be849d9c70 bashrc, add a reconnect function with aliases. 2026-08-04 07:35:46 -07:00
me b69be78382 workstation packages, use fyi and notify-send side by side. 2026-08-04 06:56:13 -07:00
me 845b042d21 Add notify-send as a workstation pre-req. 2026-08-03 11:55:40 -07:00
me 42b88fb8bd flutter, change ni ja to be a variable. Others will likely need changed too. 2026-08-03 11:49:57 -07:00
me e98ad94a90 flutter, fix the mesa variable to only hold one variable, create another for the utils. 2026-08-03 11:39:24 -07:00
me dfb72122a0 i3, ensure the flatpak version of firefox is last. 2026-08-03 11:33:30 -07:00
me 671d21b9d3 i3, add shortcut to start transmission if it gets closed. 2026-08-02 13:48:26 -07:00
me edec84400e runit, fix the enabling and disabling for services and tlp playbooks. 2026-08-02 13:47:44 -07:00
me b4eeff4386 services, fix the disabling of cupsd on runit. 2026-08-02 13:22:08 -07:00
me 331cf32737 flatpak, do the executable extension more programatically. 2026-08-02 13:10:22 -07:00
me 9fb39f8503 flatpak, add -flatpak to all the executable names. 2026-08-02 13:04:10 -07:00
me b1cc1473db android, only worry about adb and fastboot for apt distros. 2026-08-02 12:46:03 -07:00
me d0580925ac service tests, change runit to use the new variable. 2026-08-02 12:45:39 -07:00
me 5732c36d1d tlp, fix the -runit package installation. 2026-08-02 12:39:55 -07:00
me 29435e43e2 android, refactor and allow the removal on non-coding devices to fail. 2026-08-02 12:34:49 -07:00
me b051bce767 tlp, attempt to automate enabling with runit. 2026-08-02 12:28:24 -07:00
me fa732599fe Flutter, allow the facts to be set and registered so that the SDK and download can be deleted. 2026-08-02 12:07:39 -07:00
me bed26990bd Flutter, ensure all tasks have coding == true while refactoring. 2026-08-02 12:02:57 -07:00
me bcfc716b46 Flutter, change a few dependencies to be handled better across different distros. 2026-08-02 11:58:52 -07:00
me 33a645fea0 yay, change the command modules to shell so that || works properly. 2026-08-02 11:50:58 -07:00
me 8e0cc7fa45 TLP, change the package manager variable to be correct (pkg not package). 2026-08-02 11:46:39 -07:00
me 13459f8f4b Packages, firefox-esr exists on Artix, allow it to be installed too. 2026-08-02 11:40:53 -07:00
me 5155952dc7 Packages, last commit also changed yay to allow errors. This one fixes a messup in how the Firefox listings were pasted. 2026-08-02 11:39:50 -07:00
me 19970515ca Install the repo version of Firefox and uninstall mail clients. 2026-08-02 11:36:25 -07:00
me 1aaf64404f i3, change Internet shortcut to also prefer local Firefoxes over Flatpak. 2026-08-02 11:30:17 -07:00
me 65a0d8b670 Changes from 2 days ago to keep getting Artix closer to a complete provision. 2026-08-02 11:26:38 -07:00
me b6b0e620cf GNOME, fix the DELETEME note to be a comment. 2026-08-02 11:25:53 -07:00
me a10480c692 i3, remove old rogue yay attempt. 2026-07-31 15:18:44 -07:00
me 00218a447f i3, allow the AUR step to be skipped. 2026-07-31 15:10:31 -07:00
me b9d0e31631 i3, allow yay to run without prompts. 2026-07-31 15:09:52 -07:00
me 5435da309a i3, correct the syntax for the list to loop over. 2026-07-31 15:07:33 -07:00
me 5ebfa7e8bb Continue fixing i3 installation for Artix. 2026-07-31 14:59:31 -07:00
me 712b0b8ffe Begin adding yay as a package manager so that themes^Can be installed seamlessly. 2026-07-31 14:53:03 -07:00
me 99cf761528 Add commands to get Mullvad SUCCESSFULLY working on Artixgit add tasks/workstation/linux/software/vpn.yml :D 2026-07-31 12:57:23 -07:00
me dbb9528f26 Fix typo. 2026-07-31 12:56:53 -07:00
me 0122f086b2 Just remove the metasploit package, don't do autoremove since it does not work in non-interactive shells very well. 2026-07-31 11:36:11 -07:00
me 0b878674d3 Change how removal is done to properly handle multiple packages. 2026-07-31 11:35:36 -07:00
me 6e86149f59 Article had the wrong package name, use ttf-font-awesome. 2026-07-31 10:06:20 -07:00
me a2ec622582 Don't charge laptops unless the battery falls under 60%. 2026-07-31 10:04:38 -07:00
me ab478153ec Fix package name for font-awesome on Arch distros and also enable flatpak for Artix (and any Arch forks). 2026-07-31 10:02:25 -07:00
me caa7bd9285 Dig command is in the bind package on Arch. 2026-07-31 09:56:40 -07:00
me 19ce3dde3b Add notes of new distros being tested. 2026-07-31 09:12:19 -07:00
me 1bd66a0df9 Fix the dconf block from referencing NixOS. 2026-07-31 09:12:05 -07:00
me 73a6ea092b Add a configuration file for Cinnamon. 2026-07-31 09:10:13 -07:00
me 85c2a4d4b1 Do not enable tlp with runit (yet). 2026-07-30 13:39:03 -07:00
me 063928ebb8 Bulk of changes to continue getting Devuan to work. 2026-07-30 13:22:55 -07:00
me 1679eb2522 Change tabs to spaces. 2026-07-30 13:06:23 -07:00
Hyperling 65cf20f932 Allow firefox-esr to stay. 2026-07-30 12:42:47 -07:00
me a1935588a4 Refactor when clauses. 2026-07-30 11:06:39 -07:00
me 44060a6d1d Do not require runit to enable cron. It's already working anyways. 2026-07-30 11:06:28 -07:00
me f756182d12 Change spacing of services task. 2026-07-30 10:51:23 -07:00
me b41a381385 Refactor the services task to better handle systemd vs runit. 2026-07-30 10:50:38 -07:00
me faddea7492 Fix typo in ansible_service_mgr. 2026-07-30 09:41:41 -07:00
me a85cbf277f Fix quotes. 2026-07-30 09:39:02 -07:00
me 15a79578e6 Add a report for runit to list all services and their status. 2026-07-30 09:36:47 -07:00
me 57e8824d16 Only try removing Metasploit if it exists. 2026-07-30 09:25:46 -07:00
me f46b0bad96 Change services to properly handle runit now that fact has been found. 2026-07-30 09:23:08 -07:00
me f76b635e40 Also patch the other two modules which check if the service is running. 2026-07-30 09:16:24 -07:00
me 0fc27e94b0 Allow the service module to no longer have a state header. 2026-07-30 09:14:36 -07:00
me 08fbce5f44 Add nodejs playbook for having a more recent version on development machines with apt. 2026-07-30 07:58:38 -07:00
me 1ea368184d Change neofetch to fastfetch for all apt distros. 2026-07-29 17:34:03 -07:00
me 5710f284ba Add automatic removal of metasploit if it is no longer true. 2026-07-26 18:35:20 -07:00
me b4e8bf6f15 Use mullvad-vpn, not going to create an alias for mullvad-gui after all. 2026-07-26 18:18:02 -07:00
me e0395dda04 Add symlinks for the Mullvad GUI. 2026-07-26 18:15:20 -07:00
me 625f4c899f Remove Mullvad from PATH. 2026-07-26 18:10:29 -07:00
28 changed files with 1251 additions and 463 deletions
+23 -4
View File
@@ -19,15 +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.
#### Devuan (`runit`)
2026-07-30: Distribution has beed added with a few caveats.
- `runit` is the currently the expected init system (not OpenRC or SysVInit)
- Mullvad needs installed via .dev file [TBD: link here]().
### 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
@@ -88,14 +105,14 @@ terrible while updating. Ubuntu Rolling Rhino filled the gap.
Workstation: 100%, Workstation: 100%,
Server: 100% Server: 100%
## Suse Family ### Suse Family
### openSUSE Tumbleweed v2022-02-17 #### openSUSE Tumbleweed v2022-02-17
Generic: 100%, Generic: 100%,
Workstation: 100% Workstation: 100%
### openSUSE Leap 15.4 #### openSUSE Leap 15.4
Generic: 100% Generic: 100%
Workstation: Currently failing at `[Workstation | Linux | Flatpak Distro | Package Manager | Install From Repo]` with message `Problem: nothing provides libedataserver-1.2.so.24 needed by the to be installed evolution-data-server-32bit-3.34.4-3.3.1.x86_64`. Workstation: Currently failing at `[Workstation | Linux | Flatpak Distro | Package Manager | Install From Repo]` with message `Problem: nothing provides libedataserver-1.2.so.24 needed by the to be installed evolution-data-server-32bit-3.34.4-3.3.1.x86_64`.
@@ -127,6 +144,8 @@ after update problems due to a long computer hiatus.
Specifically for the Pinephone. Specifically for the Pinephone.
## Unsupported
## Future Goals ## Future Goals
Eventually some of the scripts and install files will be put into the files Eventually some of the scripts and install files will be put into the files
+1
View File
@@ -1,6 +1,7 @@
[defaults] [defaults]
inventory=hosts inventory=hosts
interpreter_python=auto_silent interpreter_python=auto_silent
inject_facts_as_vars=True
[inventory] [inventory]
localhost_warning=False localhost_warning=False
+12 -7
View File
@@ -10,10 +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.
sendmail: msmtp
sendmail_mta: msmtp-mta
ca_certificates: ca-certificates
locate: mlocate
- name: General | Facts | Package | Parrot OS Fixes - name: General | Facts | Package | Parrot OS Fixes
set_fact: set_fact:
@@ -32,11 +37,6 @@
dig: dnsutils dig: dnsutils
when: ansible_pkg_mgr == "apt" when: ansible_pkg_mgr == "apt"
- name: General | Facts | Package | apt | Debian Trixie
set_fact:
neofetch: fastfetch
when: ansible_pkg_mgr == "apt" and ansible_distribution_release == "trixie"
- name: General | Facts | Package | pacman - name: General | Facts | Package | pacman
set_fact: set_fact:
locate: mlocate locate: mlocate
@@ -45,6 +45,8 @@
microcode_intel: intel-ucode microcode_intel: intel-ucode
cron: cronie cron: cronie
encfs: encfs encfs: encfs
dig: bind
base_devel: base-devel
when: ansible_pkg_mgr == "pacman" when: ansible_pkg_mgr == "pacman"
- name: General | Facts | Package | FreeBSD - name: General | Facts | Package | FreeBSD
@@ -59,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")
@@ -73,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
@@ -83,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:
+9 -3
View File
@@ -12,6 +12,8 @@
git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }} git_repo_ssh: ssh://git@{{ git_host }}:{{ git_ssh_port }}/{{ git_user }}/{{ git_project }}
shared_rc_install_dir: ~/.git-env-shared shared_rc_install_dir: ~/.git-env-shared
notify_log: "ansible.notify.log" notify_log: "ansible.notify.log"
runit_script_dir: /etc/runit/sv
runit_service_dir: /etc/runit/runsvdir/default
- name: General | Facts | System | Global [2/2] - name: General | Facts | System | Global [2/2]
set_fact: set_fact:
@@ -27,7 +29,6 @@
shutdown_command: sudo shutdown -h now shutdown_command: sudo shutdown -h now
when: ansible_system == "Linux" when: ansible_system == "Linux"
- name: General | Facts | System | FreeBSD - name: General | Facts | System | FreeBSD
set_fact: set_fact:
rc_conf: /etc/rc.conf rc_conf: /etc/rc.conf
@@ -35,14 +36,19 @@
shutdown_command: sudo shutdown -p now shutdown_command: sudo shutdown -p now
when: ansible_system == "FreeBSD" when: ansible_system == "FreeBSD"
- name: General | Facts | System | Report File Names - name: General | Facts | System | Report File Names
set_fact: set_fact:
lynis_report: "lynis_hardness_check.txt" lynis_report: "lynis_hardness_check.txt"
nmap_report: "nmap_port_check.txt" nmap_report: "nmap_port_check.txt"
- name: General | Facts | System | Ansible Branch - name: General | Facts | System | Ansible Branch
set_fact: set_fact:
branch: main branch: main
when: branch is not defined when: branch is not defined
- name: General | Facts | System | runit (Devuan)
set_fact:
runit_script_dir: /etc/sv
runit_service_dir: /etc/services
when: ansible_pkg_mgr == "apt"
+59 -11
View File
@@ -26,15 +26,56 @@
dmenu: dmenu dmenu: dmenu
sassc: sassc sassc: sassc
ffmpeg: ffmpeg ffmpeg: ffmpeg
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
@@ -42,13 +83,12 @@
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
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
dmenu: suckless-tools dmenu: suckless-tools
when: ansible_distribution == "Debian" firefox: firefox-esr
when: ansible_distribution in ("Debian", "Devuan")
- name: Workstation | Facts | Package | Mint - name: Workstation | Facts | Package | Mint
set_fact: set_fact:
@@ -56,21 +96,29 @@
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 | Arch + Manjaro - 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
set_fact: set_fact:
flatpak_distro: true flatpak_distro: true
firefox_esr: firefox
psutil: python-psutil psutil: python-psutil
appimagelauncher: appimagelauncher #appimagelauncher: appimagelauncher # No longer in the repos, AUR.
when: ansible_distribution == "Archlinux" font_awesome: ttf-font-awesome
wireless_tools: wireless_tools
nfs: nfs-utils
when: ansible_pkg_mgr == "pacman"
- name: Workstation | Facts | Package | FreeBSD - name: Workstation | Facts | Package | FreeBSD
+8 -6
View File
@@ -131,8 +131,7 @@ bindsym $mod+t exec lxappearance
bindsym $mod+m exec thunar bindsym $mod+m exec thunar
# Internet. # Internet.
#bindsym $mod+i exec firefox bindsym $mod+i exec "firefox || firefox-esr || firefox-flatpak"
bindsym $mod+i exec firefox-flatpak
# Code. # Code.
bindsym $mod+c exec codium-flatpak bindsym $mod+c exec codium-flatpak
@@ -254,10 +253,11 @@ assign [class="(?i).*Mullvad.*"] $ws10
## Workspace Specific Workflows ## ## Workspace Specific Workflows ##
bindsym $ctrl+$shift+1 workspace $ws1; exec i3-sensible-terminal; bindsym $ctrl+$shift+1 workspace $ws1; exec i3-sensible-terminal;
bindsym $ctrl+$shift+2 workspace $ws2; exec firefox-flatpak; bindsym $ctrl+$shift+2 workspace $ws2; exec "firefox || firefox-esr || firefox-flatpak";
bindsym $ctrl+$shift+3 workspace $ws3; exec codium-flatpak; bindsym $ctrl+$shift+3 workspace $ws3; exec codium-flatpak;
bindsym $ctrl+$shift+4 workspace $ws4; exec code-flatpak; bindsym $ctrl+$shift+4 workspace $ws4; exec code-flatpak;
bindsym $ctrl+$shift+5 workspace $ws5; exec "session; dino" bindsym $ctrl+$shift+5 workspace $ws5; exec "session; dino"
bindsym $ctrl+$shift+7 workspace $ws7; exec "transmission || transmission-gtk || transmission-flatpak"
## Reloads, Restarts, Exit ## ## Reloads, Restarts, Exit ##
@@ -324,12 +324,14 @@ bar {
## Startup Applications ## ## Startup Applications ##
exec mullvad-gui exec mullvad-vpn
exec i3-sensible-terminal exec i3-sensible-terminal
#exec firefox-flatpak exec "transmission || transmission-gtk || transmission-flatpak"
exec transmission
exec light -O exec light -O
exec light -N 0 exec light -N 0
exec setxkbmap -layout us -variant altgr-intl exec setxkbmap -layout us -variant altgr-intl
exec --no-startup-id dunst
+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"
} }
} }
+45 -49
View File
@@ -88,6 +88,9 @@
- include_tasks: tasks/general/software/sendmail.yml - include_tasks: tasks/general/software/sendmail.yml
when: ansible_system == "FreeBSD" when: ansible_system == "FreeBSD"
- include_tasks: tasks/general/software/aur.yml
when: ansible_pkg_mgr == "pacman"
# 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
@@ -109,7 +112,6 @@
when: ansible_system == "FreeBSD" when: ansible_system == "FreeBSD"
- include_tasks: tasks/general/software/metasploit.yml - include_tasks: tasks/general/software/metasploit.yml
when: pentesting == true
when: provision == true when: provision == true
@@ -129,35 +131,32 @@
# 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
when: ansible_system == "FreeBSD" when: ansible_system == "FreeBSD"
- include_tasks: tasks/workstation/linux/software/gnome.yml - name: Main | Workstation | Fancy Desktop Environments
block:
- include_tasks: tasks/workstation/linux/software/gnome.yml
when: ansible_service_mgr == "systemd"
- include_tasks: tasks/workstation/linux/software/cinnamon.yml
- include_tasks: tasks/workstation/linux/software/lxqt.yml
when: ansible_system == "Linux" when: ansible_system == "Linux"
# TBD: Implement this: and extra_desktops == true
- include_tasks: tasks/workstation/linux/software/cinnamon.yml
- include_tasks: tasks/workstation/linux/software/lxqt.yml
## 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/lutris.yml - include_tasks: tasks/workstation/linux/software/lutris.yml
when: ansible_system == "Linux" - include_tasks: tasks/workstation/linux/software/vscodium.yml
- include_tasks: tasks/workstation/linux/software/vpn.yml
- include_tasks: tasks/workstation/linux/software/vscodium.yml - include_tasks: tasks/workstation/linux/software/nodejs.yml
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/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
@@ -166,13 +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"
## 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/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
@@ -183,22 +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/linux/software/tlp.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
@@ -251,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
+78 -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 ##
@@ -126,10 +126,19 @@
set_fact: set_fact:
export_path_additions: export PATH="$HOME/bin:"{{ global_bin }}":"{{ shared_rc_bin }}":$PATH" export_path_additions: export PATH="$HOME/bin:"{{ global_bin }}":"{{ shared_rc_bin }}":$PATH"
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_path_mullvad: export PATH="$PATH:/opt/Mullvad\ VPN"
#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"
keyboard_settings: setxkbmap -layout us -variant altgr-intl export_browser: |
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:
@@ -1117,6 +1126,68 @@
done done
sh -c "rm '{{ notify_log_file_wip }}'" sh -c "rm '{{ notify_log_file_wip }}'"
fi fi
function_reconnect: |
function reconnect {
test_domain="git.hyperling.com"
test_connection() {
ping -c 3 $test_domain
status="$?"
echo "* Status Returned: '$status'"
return $status
}
test_connection &&
echo -e "\n* Looks good! Not trying anything." &&
return 0 ||
echo -e "\n* Connection failed, troubleshooting..."
show_connection() {
ip addr | grep ' UP '
ip addr | grep ' inet'
#ip addr | grep -i 'mullvad'
}
echo -e "\n* Current Connections:"
show_connection
reset_mullvad() {
mullvad disconnect && sleep 5 && mullvad connect && sleep 5
}
echo -e "\n* Turning Mullvad Off & On Again"
reset_mullvad
echo "Done!"
echo -e "\n* Checking Connections"
show_connection
echo -e "\n* Testing Again..."
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_network="reconnect"
alias test_connection="reconnect"
alias test_connections="reconnect"
alias fix_wifi="reconnect"
alias fix_network="reconnect"
alias fix_connection="reconnect"
alias fix_connections="reconnect"
- name: General | Account Management | Users | Files | Common Variable - name: General | Account Management | Users | Files | Common Variable
@@ -1124,8 +1195,8 @@
profile_common: | profile_common: |
{{ export_path_additions }} {{ export_path_additions }}
{{ export_path_sbin }} {{ export_path_sbin }}
{{ export_path_mullvad }}
{{ export_terminal }} {{ export_terminal }}
{{ export_browser }}
{{ keyboard_settings}} {{ keyboard_settings}}
rc_common: | rc_common: |
# Fixes "command not found" when using aliases within functions. # Fixes "command not found" when using aliases within functions.
@@ -1205,6 +1276,7 @@
{{ alias_commit }} {{ alias_commit }}
{{ function_loop }} {{ function_loop }}
{{ process_notify_log }} {{ process_notify_log }}
{{ function_reconnect }}
- name: General | Account Management | Users | Files | .profile + .xsessionrc - name: General | Account Management | Users | Files | .profile + .xsessionrc
blockinfile: blockinfile:
+51
View File
@@ -0,0 +1,51 @@
---
# 20260731 - Hyperling
# Install the AUR on pacman-related distros.
- name: General | Software | AUR | Facts 01
set_fact:
aur_user: aurbuilder
aur_build_dir: ~/src
aur_helper: yay
aur_helper_url: https://aur.archlinux.org/yay-bin.git
- name: General | Software | AUR | Facts 02
set_fact:
aur_helper_dir: "{{ aur_build_dir }}/{{ aur_helper }}"
aur_sudoers: "/etc/sudoers.d/sudoers_{{ aur_user }}"
- name: General | Software | AUR | User
user:
name: "{{ aur_user }}"
groups: wheel
create_home: true
- name: General | Software | AUR | Sudoers
lineinfile:
path: "{{ aur_sudoers }}"
line: "{{ aur_user }} ALL=(ALL) NOPASSWD: /usr/bin/pacman"
create: true
mode: '0440'
validate: 'visudo -cf %s'
- name: General | Software | AUR | Check
command: "which {{ aur_helper }}"
register: yay_check
changed_when: false
failed_when: false
- name: General | Software | AUR | Install
block:
- name: General | Software | AUR | Install | Clone Repo
git:
repo: "{{ aur_helper_url }}"
dest: "{{ aur_helper_dir }}"
- name: General | Software | AUR | Install | Build & Integrate
shell: "cd {{ aur_helper_dir }} && makepkg -si --noconfirm"
changed_when: true
when: yay_check.rc != 0
become_user: "{{ aur_user }}"
+24 -5
View File
@@ -5,6 +5,7 @@
set_fact: set_fact:
metasploit_installer: msfinstall metasploit_installer: msfinstall
when: ansible_system in ("Linux", "Darwin") when: ansible_system in ("Linux", "Darwin")
and pentesting == true
- name: General | Software | Metasploit | Check Install Status - name: General | Software | Metasploit | Check Install Status
stat: stat:
@@ -18,8 +19,9 @@
- "mv -fv /usr/share/keyrings/metasploit-framework.gpg /tmp/apt/metasploit-framework.gpg.old" - "mv -fv /usr/share/keyrings/metasploit-framework.gpg /tmp/apt/metasploit-framework.gpg.old"
- "mv -fv /etc/apt/sources.list.d/metasploit-framework.list /tmp/apt/metasploit-framework.list.old" - "mv -fv /etc/apt/sources.list.d/metasploit-framework.list /tmp/apt/metasploit-framework.list.old"
- "mv -fv /etc/apt/preferences.d/pin-metasploit.pref /tmp/apt/pin-metasploit.pref.old" - "mv -fv /etc/apt/preferences.d/pin-metasploit.pref /tmp/apt/pin-metasploit.pref.old"
when: ansible_system in ("Linux") and when: ansible_system in ("Linux") and ansible_pkg_mgr == "apt"
not metasploit_status.stat.exists and not metasploit_status.stat.exists
and pentesting == true
ignore_errors: true ignore_errors: true
- name: General | Software | Metasploit | Install - name: General | Software | Metasploit | Install
@@ -28,7 +30,24 @@
- "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > {{ metasploit_installer }}" - "curl https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb > {{ metasploit_installer }}"
- "chmod 755 {{ metasploit_installer }}" - "chmod 755 {{ metasploit_installer }}"
- "mkdir -p {{ global_bin }}" - "mkdir -p {{ global_bin }}"
- "mv -fv ./msfinstall {{ global_bin }}/{{ metasploit_installer }}" - "mv -fv ./{{ metasploit_installer }} {{ global_bin }}/{{ metasploit_installer }}"
- yes y | "{{ global_bin }}/{{ metasploit_installer }}" - yes y | "{{ global_bin }}/{{ metasploit_installer }}"
when: ansible_system in ("Linux", "Darwin") and when: ansible_system in ("Linux", "Darwin")
not metasploit_status.stat.exists and not metasploit_status.stat.exists
and pentesting == true
- name: General | Software | Metasploit | Remove (Darwin)
shell: "{{ item }}"
loop:
- "/opt/metasploit-framework/bin/msfremove"
when: ansible_system in ("Darwin")
and not metasploit_status.stat.exists
and pentesting == false
- name: General | Software | Metasploit | Remove
package:
name: "metasploit-framework"
state: absent
when: ansible_system in ("Linux")
and metasploit_status.stat.exists
and pentesting == false
+47 -43
View File
@@ -40,34 +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 }}"
- "{{ 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
@@ -75,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
@@ -86,27 +90,27 @@
- 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
- name: General | Software | Services | Install killall (Looking at you, Debian) - name: General | Software | Packages | Install killall (Looking at you, Debian)
package: package:
name: psmisc name: psmisc
state: present state: present
when: ansible_distribution == "Debian" when: ansible_distribution == "Debian"
- name: General | Software | Services | 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 | Services | Install Fix (Looking at you, openSUSE) - name: General | Software | Packages | Install Fix (Looking at you, openSUSE)
package: package:
name: name:
# openSUSE Tumbleweed comes without gnome-control-center being able to open # openSUSE Tumbleweed comes without gnome-control-center being able to open
@@ -121,21 +125,21 @@
- 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.
- name: General | Software | Services | Disable Snap Daemon - name: General | Software | Packages | Disable Snap Daemon
service: service:
name: snapd name: snapd
pattern: snapd pattern: snapd
@@ -147,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
@@ -155,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
+39 -20
View File
@@ -10,30 +10,20 @@
state: started state: started
enabled: yes enabled: yes
when: ansible_virtualization_type != 'docker' when: ansible_virtualization_type != 'docker'
and ansible_service_mgr != "runit"
register: cron_status register: cron_status
until: cron_status.state == "started" until: cron_status.state == "started"
retries: 3 retries: 3
delay: 3 delay: 3
- name: General | Software | Services | CROND | Enable (runit)
## CUPS ##
- name: General | Software | Services | CUPS | Disable
service: service:
name: "{{ cups }}" name: "{{ crond }}"
pattern: "{{ cups_pattern }}" state: started
state: stopped enabled: yes
enabled: no when: ansible_virtualization_type != 'docker'
ignore_errors: yes and ansible_service_mgr == "runit"
ignore_errors: true # Service module seems experimental for this init system.
- name: General | Software | Services | CUPS-Browse | Disable
service:
name: "{{ cups_browse }}"
pattern: "{{ cups_browse_pattern }}"
state: stopped
enabled: no
ignore_errors: yes
## SSHD ## ## SSHD ##
@@ -82,20 +72,20 @@
state: reloaded state: reloaded
enabled: yes enabled: yes
when: ansible_virtualization_type != 'docker' when: ansible_virtualization_type != 'docker'
and ansible_service_mgr != "runit"
register: sshd_status register: sshd_status
until: sshd_status.state == "started" until: sshd_status.state == "started"
retries: 3 retries: 3
delay: 3 delay: 3
## JournalCTL ## ## JournalCTL ##
- name: General | Software | Services | JournalCTL | Reduce Log Size - name: General | Software | Services | JournalCTL | Reduce Log Size
shell: journalctl --vacuum-size=100M shell: journalctl --vacuum-size=100M
when: ansible_system == "Linux" when: ansible_system == "Linux"
and ansible_service_mgr == "systemd"
ignore_errors: yes ignore_errors: yes
## Bluetooth ## ## Bluetooth ##
# Do people seriously depend on Bluetooth? Plug your devices in, silly! # Do people seriously depend on Bluetooth? Plug your devices in, silly!
# Hehe, I use it now for a few rare things so disabling this for now. # Hehe, I use it now for a few rare things so disabling this for now.
@@ -117,6 +107,7 @@
state: started state: started
enabled: yes enabled: yes
when: ansible_virtualization_type != 'docker' when: ansible_virtualization_type != 'docker'
and ansible_service_mgr != "runit"
register: ntp_status register: ntp_status
until: ntp_status.state == "started" until: ntp_status.state == "started"
retries: 3 retries: 3
@@ -128,3 +119,31 @@
# Add a field to general.yml config file which gets applied via timedatectl and /etc/localtime. # Add a field to general.yml config file which gets applied via timedatectl and /etc/localtime.
# Example of what to do to file: # Example of what to do to file:
# /etc/localtime -> ../usr/share/zoneinfo/America/Phoenix # /etc/localtime -> ../usr/share/zoneinfo/America/Phoenix
## Disable ##
- name: General | Software | Services | Disable
service:
name: "{{ item.name }}"
pattern: "{{ item.pattern }}"
state: stopped
enabled: no
ignore_errors: yes
loop:
- {name: "{{ cups }}" , pattern: "{{ cups_pattern }}"}
- {name: "{{ cups_browse }}", pattern: "{{ cups_browse_pattern }}"}
when: ansible_service_mgr != "runit"
- name: General | Software | Services | Disable (runit)
shell: |
if [[ -e {{ runit_service_dir }}/{{ item.name }} ]]; then
rm -v {{ runit_service_dir }}/{{ item.name }}
fi
ignore_errors: yes
loop:
- {name: "{{ cups }}" }
- {name: "{{ cups_pattern }}" }
- {name: "{{ cups_browse }}" }
- {name: "{{ cups_browse_pattern }}"}
when: ansible_service_mgr == "runit"
+11
View File
@@ -5,7 +5,17 @@
set_fact: set_fact:
services_report_file: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.services.txt" services_report_file: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.services.txt"
services_enabled_file: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.services-enabled.txt" services_enabled_file: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.services-enabled.txt"
services_command: "echo 'Service Manager {{ ansible_service_mgr }} Not Recognized'"
- name: General | Tests | Services | Set Facts | SystemD
set_fact:
services_command: "systemctl list-unit-files" services_command: "systemctl list-unit-files"
when: ansible_service_mgr == "systemd"
- name: General | Tests | Services | Set Facts | runit
set_fact:
services_command: 'for s in {{ runit_service_dir }}/*; do sv status "$s"; done'
when: ansible_service_mgr == "runit"
- name: General | Tests | Services | Create Main Report - name: General | Tests | Services | Create Main Report
shell: "{{ item }}" shell: "{{ item }}"
@@ -20,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:
+28 -17
View File
@@ -173,21 +173,23 @@
- name: Workstation | Linux | Software | Android | Dependencies [Install] - name: Workstation | Linux | Software | Android | Dependencies [Install]
package: package:
name: name:
- default-jdk - "{{ android_jdk }}"
- libc6 - "{{ c_libs }}"
- libncurses5 - "{{ ncurses }}"
- libstdc++6 - "{{ cpp_libs }}"
- lib32z1 - "{{ z_libs }}"
- libbz2-1.0 - "{{ bzip }}"
- "{{ android_udev }}"
state: present state: present
when: coding == true when: coding == true
- name: Workstation | Linux | Software | Android | Dependencies [Remove] - name: Workstation | Linux | Software | Android | Dependencies [Remove]
package: package:
name: name:
- sdkmanager - "{{ android_sdkmanager }}"
state: absent state: absent
when: coding == true when: coding == true
and ansible_pkg_mgr == "apt"
## Install SDK ## ## Install SDK ##
@@ -219,7 +221,8 @@
group: "{{ user }}" group: "{{ user }}"
become_user: "{{ user }}" become_user: "{{ user }}"
when: coding == true and not android_sdkmanager_temp_stat.stat.exists when: coding == true
and not android_sdkmanager_temp_stat.stat.exists
- name: Workstation | Linux | Software | Android | Delete Archive - name: Workstation | Linux | Software | Android | Delete Archive
file: file:
@@ -237,7 +240,8 @@
- platform-tools - platform-tools
- emulator - emulator
become_user: "{{ user }}" become_user: "{{ user }}"
when: coding == true and not android_sdkmanager_final_stat.stat.exists when: coding == true
and not android_sdkmanager_final_stat.stat.exists
# These are safe to run multiple times, and uses the new `latest` version. # These are safe to run multiple times, and uses the new `latest` version.
- name: Workstation | Linux | Software | Android | Install | Required Modules - name: Workstation | Linux | Software | Android | Install | Required Modules
@@ -257,14 +261,17 @@
fi fi
loop: "{{ android_downloads_additional }}" loop: "{{ android_downloads_additional }}"
become_user: "{{ user }}" become_user: "{{ user }}"
when: coding == true and sdks == true when: coding == true
and sdks == true
# Remove extra downloads if system is not meant for full amount of testing. # Remove extra downloads if system is not meant for full amount of testing.
- name: Workstation | Linux | Software | Android | Uninstall | Additional Modules - name: Workstation | Linux | Software | Android | Uninstall | Additional Modules
shell: "yes | {{ android_sdkmanager_final }} --uninstall '{{ item }}' --sdk_root={{ android_sdk_location }}" shell: "yes | {{ android_sdkmanager_final }} --uninstall '{{ item }}' --sdk_root={{ android_sdk_location }}"
loop: "{{ android_downloads_additional }}" loop: "{{ android_downloads_additional }}"
become_user: "{{ user }}" become_user: "{{ user }}"
when: coding != true or sdks != true when: coding != true
or sdks != true
ignore_errors: yes
# Remove any versions which used to be part of this script and no longer used. # Remove any versions which used to be part of this script and no longer used.
- name: Workstation | Linux | Software | Android | Uninstall | Unused Modules - name: Workstation | Linux | Software | Android | Uninstall | Unused Modules
@@ -317,7 +324,9 @@
- "{{ user_root.home }}" - "{{ user_root.home }}"
- "{{ user_user.home }}" - "{{ user_user.home }}"
ignore_errors: yes ignore_errors: yes
when: coding == true and user_root.home != "" and user_user.home != "" when: coding == true
and user_root.home != ""
and user_user.home != ""
- name: Workstation | Linux | Software | Android | Modify PATH (.zshrc) - name: Workstation | Linux | Software | Android | Modify PATH (.zshrc)
blockinfile: blockinfile:
@@ -332,7 +341,9 @@
- "{{ user_root.home }}" - "{{ user_root.home }}"
- "{{ user_user.home }}" - "{{ user_user.home }}"
ignore_errors: yes ignore_errors: yes
when: coding == true and user_root.home != "" and user_user.home != "" when: coding == true
and user_root.home != ""
and user_user.home != ""
## Uninstall SDK ## ## Uninstall SDK ##
@@ -349,15 +360,15 @@
- name: Workstation | Linux | Software | Android | System Tools [Install] - name: Workstation | Linux | Software | Android | System Tools [Install]
package: package:
name: name:
- fastboot - "{{ android_fastboot }}"
- adb - "{{ android_adb }}"
state: present state: present
when: not coding == true when: not coding == true
- name: Workstation | Linux | Software | Android | System Tools [Remove] - name: Workstation | Linux | Software | Android | System Tools [Remove]
package: package:
name: name:
- fastboot - "{{ android_fastboot }}"
- adb - "{{ android_adb }}"
state: absent state: absent
when: coding == true when: coding == true
+22 -18
View File
@@ -10,6 +10,10 @@
# Then remove, autoremove, and purge flatpak executable with package manager. # Then remove, autoremove, and purge flatpak executable with package manager.
# Source: https://softhints.com/how-to-completely-remove-flatpak-linux-mint/ # Source: https://softhints.com/how-to-completely-remove-flatpak-linux-mint/
- name: Workstation | Linux | Flatpak Distro | Flatpak | Facts
set_fact:
flatpak_extension: "-flatpak"
## Flatpak Pre-reqs ## ## Flatpak Pre-reqs ##
- name: Workstation | Linux | Flatpak Distro | Flatpak | Install - name: Workstation | Linux | Flatpak Distro | Flatpak | Install
@@ -34,7 +38,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays - name: Workstation | Linux | Flatpak Distro | Flatpak | Arrays
set_fact: set_fact:
flatpaks_generic: flatpaks_generic:
- { app: "org.mozilla.firefox", name: "firefox-flatpak", extra: "" } - { app: "org.mozilla.firefox", name: "firefox", extra: "" }
- { app: "io.gitlab.librewolf-community", name: "librewolf", extra: "" } - { app: "io.gitlab.librewolf-community", name: "librewolf", extra: "" }
- { app: "org.signal.Signal", name: "signal", extra: "" } - { app: "org.signal.Signal", name: "signal", extra: "" }
- { app: "im.riot.Riot", name: "element", extra: "" } - { app: "im.riot.Riot", name: "element", extra: "" }
@@ -50,10 +54,10 @@
- { app: "app.organicmaps.desktop", name: "organic-maps", extra: "" } - { app: "app.organicmaps.desktop", name: "organic-maps", extra: "" }
- { app: "im.dino.Dino", name: "dino", extra: "" } - { app: "im.dino.Dino", name: "dino", extra: "" }
flatpaks_coding: flatpaks_coding:
- { app: "com.vscodium.codium", name: "codium-flatpak", extra: "" } - { app: "com.vscodium.codium", name: "codium", extra: "" }
- { app: "com.google.AndroidStudio", name: "android-studio", extra: "" } - { app: "com.google.AndroidStudio", name: "android-studio", extra: "" }
- { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" } - { app: "io.dbeaver.DBeaverCommunity", name: "dbeaver", extra: "" }
- { app: "com.visualstudio.code-oss", name: "code-flatpak", extra: "" } - { app: "com.visualstudio.code-oss", name: "code", extra: "" }
- { app: "org.gnome.Boxes", name: "boxes", extra: "" } - { app: "org.gnome.Boxes", name: "boxes", extra: "" }
flatpaks_editing_video: flatpaks_editing_video:
- { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" } - { app: "org.shotcut.Shotcut", name: "shotcut", extra: "" }
@@ -98,7 +102,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Generic | Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Generic | Executables
blockinfile: blockinfile:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
block: | block: |
{{ item.extra }} {{ flatpak_exec }} {{ item.app }} {{ item.extra }} {{ flatpak_exec }} {{ item.app }}
marker: '{mark}' marker: '{mark}'
@@ -111,7 +115,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Generic | Executable Permissions - name: Workstation | Linux | Flatpak Distro | Flatpak | Generic | Executable Permissions
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: file state: file
mode: '0755' mode: '0755'
loop: "{{ flatpaks_generic }}" loop: "{{ flatpaks_generic }}"
@@ -129,7 +133,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Coding | Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Coding | Executables
blockinfile: blockinfile:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
block: | block: |
{{ item.extra }} {{ flatpak_exec }} {{ item.app }} {{ item.extra }} {{ flatpak_exec }} {{ item.app }}
marker: '{mark}' marker: '{mark}'
@@ -143,7 +147,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Coding | Executable Permissions - name: Workstation | Linux | Flatpak Distro | Flatpak | Coding | Executable Permissions
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: file state: file
mode: '0755' mode: '0755'
loop: "{{ flatpaks_coding }}" loop: "{{ flatpaks_coding }}"
@@ -160,7 +164,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Coding | Remove Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Coding | Remove Executables
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: absent state: absent
loop: "{{ flatpaks_coding }}" loop: "{{ flatpaks_coding }}"
ignore_errors: yes ignore_errors: yes
@@ -179,7 +183,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Executables
blockinfile: blockinfile:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
block: | block: |
{{ item.extra }} {{ flatpak_exec }} {{ item.app }} {{ item.extra }} {{ flatpak_exec }} {{ item.app }}
marker: '{mark}' marker: '{mark}'
@@ -193,7 +197,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Executable Permissions - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Executable Permissions
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: file state: file
mode: '0755' mode: '0755'
loop: "{{ flatpaks_editing_video }}" loop: "{{ flatpaks_editing_video }}"
@@ -210,7 +214,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Remove Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Video Editors | Remove Executables
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: absent state: absent
loop: "{{ flatpaks_editing_video }}" loop: "{{ flatpaks_editing_video }}"
ignore_errors: yes ignore_errors: yes
@@ -227,7 +231,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Audio/Video Editors | Executables
blockinfile: blockinfile:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
block: | block: |
{{ item.extra }} {{ flatpak_exec }} {{ item.app }} {{ item.extra }} {{ flatpak_exec }} {{ item.app }}
marker: '{mark}' marker: '{mark}'
@@ -241,7 +245,7 @@
- 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 }}{{ flatpak_extension }}"
state: file state: file
mode: '0755' mode: '0755'
loop: "{{ flatpaks_editing_audio }}" loop: "{{ flatpaks_editing_audio }}"
@@ -258,7 +262,7 @@
- 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 }}{{ flatpak_extension }}"
state: absent state: absent
loop: "{{ flatpaks_editing_audio }}" loop: "{{ flatpaks_editing_audio }}"
ignore_errors: yes ignore_errors: yes
@@ -277,7 +281,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Gaming | Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Gaming | Executables
blockinfile: blockinfile:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
block: | block: |
{{ item.extra }} {{ flatpak_exec }} {{ item.app }} {{ item.extra }} {{ flatpak_exec }} {{ item.app }}
marker: '{mark}' marker: '{mark}'
@@ -291,7 +295,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Gaming | Executable Permissions - name: Workstation | Linux | Flatpak Distro | Flatpak | Gaming | Executable Permissions
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: file state: file
mode: '0755' mode: '0755'
loop: "{{ flatpaks_gaming }}" loop: "{{ flatpaks_gaming }}"
@@ -308,7 +312,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Gaming | Remove Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Gaming | Remove Executables
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: absent state: absent
loop: "{{ flatpaks_gaming }}" loop: "{{ flatpaks_gaming }}"
ignore_errors: yes ignore_errors: yes
@@ -326,7 +330,7 @@
- name: Workstation | Linux | Flatpak Distro | Flatpak | Uninstalls | Remove Executables - name: Workstation | Linux | Flatpak Distro | Flatpak | Uninstalls | Remove Executables
file: file:
path: "{{ flatpak_exec_dir }}/{{ item.name }}" path: "{{ flatpak_exec_dir }}/{{ item.name }}{{ flatpak_extension }}"
state: absent state: absent
loop: "{{ flatpaks_remove }}" loop: "{{ flatpaks_remove }}"
ignore_errors: yes ignore_errors: yes
+24 -23
View File
@@ -3,25 +3,22 @@
## Facts ## ## Facts ##
- name: Workstation | Linux | Software | Flutter | Facts [1/4] - name: Workstation | Linux | Software | Flutter | Facts 1
set_fact: set_fact:
flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz" flutter_url: "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_3.27.2-stable.tar.xz"
flutter_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz" flutter_download_file: "{{ user_user.home }}/Downloads/flutter.tar.xz"
flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter" flutter_sdk_location: "{{ user_user.home }}/SDKs/Flutter"
flutter_report: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.flutter.txt" flutter_report: "{{ user_user.home }}/Reports/{{ ansible_hostname }}.sdk.flutter.txt"
when: coding == true
- name: Workstation | Linux | Software | Flutter | Facts [2/4] - name: Workstation | Linux | Software | Flutter | Facts 2
set_fact: set_fact:
flutter_bin_location: "{{ flutter_sdk_location }}/flutter/bin" flutter_bin_location: "{{ flutter_sdk_location }}/flutter/bin"
when: coding == true
- name: Workstation | Linux | Software | Flutter | Facts [3/4] - name: Workstation | Linux | Software | Flutter | Facts 3
set_fact: set_fact:
flutter: "{{ flutter_bin_location }}/flutter" flutter: "{{ flutter_bin_location }}/flutter"
when: coding == true
- name: Workstation | Linux | Software | Flutter | Facts [3/3] - name: Workstation | Linux | Software | Flutter | Facts 4
set_fact: set_fact:
flutter_report_commands: flutter_report_commands:
- "date > {{ flutter_report }}" - "date > {{ flutter_report }}"
@@ -29,7 +26,6 @@
- "date >> {{ flutter_report }}" - "date >> {{ flutter_report }}"
- "{{ flutter }} doctor -v >> {{ flutter_report }}" - "{{ flutter }} doctor -v >> {{ flutter_report }}"
- "date >> {{ flutter_report }}" - "date >> {{ flutter_report }}"
when: coding == true
## Checks ## ## Checks ##
@@ -40,7 +36,6 @@
get_checksum: false get_checksum: false
get_mime: false get_mime: false
register: flutter_sdk_stat register: flutter_sdk_stat
when: coding == true
- name: Workstation | Linux | Software | Flutter | Check Download Exists - name: Workstation | Linux | Software | Flutter | Check Download Exists
stat: stat:
@@ -49,7 +44,6 @@
get_checksum: false get_checksum: false
get_mime: false get_mime: false
register: flutter_download_stat register: flutter_download_stat
when: coding == true
## Packages ## ## Packages ##
@@ -59,9 +53,10 @@
- curl - curl
- git - git
- unzip - unzip
- xz-utils - "{{ xz }}"
- zip - zip
- libglu1-mesa - "{{ mesa }}"
- "{{ mesa_utils }}"
state: present state: present
when: coding == true when: coding == true
@@ -72,11 +67,11 @@
- clang - clang
- cmake - cmake
- git - git
- ninja-build - "{{ ninja }}"
- pkg-config - pkg-config
- libgtk-3-dev - "{{ gtk3 }}"
- liblzma-dev - "{{ xz_libs }}"
- libstdc++-12-dev - "{{ cpp }}"
state: present state: present
when: coding == true when: coding == true
@@ -84,10 +79,10 @@
- name: Workstation | Linux | Software | Flutter | Android App Dependencies - name: Workstation | Linux | Software | Flutter | Android App Dependencies
package: package:
name: name:
- libc6:amd64 - "{{ c_libs }}"
- libstdc++6 - "{{ cpp_libs }}"
- lib32z1 - "{{ z_libs }}"
- libbz2-1.0 - "{{ bzip }}"
state: present state: present
when: coding == true when: coding == true
@@ -121,12 +116,14 @@
group: "{{ user }}" group: "{{ user }}"
become_user: "{{ user }}" become_user: "{{ user }}"
when: coding == true and not flutter_sdk_stat.stat.exists when: coding == true
and not flutter_sdk_stat.stat.exists
- name: Workstation | Linux | Software | Flutter | Delete Archive - name: Workstation | Linux | Software | Flutter | Delete Archive
file: file:
path: "{{ flutter_download_file }}" path: "{{ flutter_download_file }}"
state: absent state: absent
when: coding == true
## Configure Environment ## ## Configure Environment ##
@@ -143,7 +140,9 @@
- "{{ user_root.home }}" - "{{ user_root.home }}"
- "{{ user_user.home }}" - "{{ user_user.home }}"
ignore_errors: yes ignore_errors: yes
when: coding == true and user_root.home != "" and user_user.home != "" when: coding == true
and user_root.home != ""
and user_user.home != ""
- name: Workstation | Linux | Software | Flutter | Modify PATH (.zshrc) - name: Workstation | Linux | Software | Flutter | Modify PATH (.zshrc)
blockinfile: blockinfile:
@@ -158,7 +157,9 @@
- "{{ user_root.home }}" - "{{ user_root.home }}"
- "{{ user_user.home }}" - "{{ user_user.home }}"
ignore_errors: yes ignore_errors: yes
when: coding == true and user_root.home != "" and user_user.home != "" when: coding == true
and user_root.home != ""
and user_user.home != ""
## Test SDK ## ## Test SDK ##
-122
View File
@@ -1,122 +0,0 @@
---
# 20260716 - Hyperling
# Add the setup for a simple i3 configuration. It´s pretty easy to use and
# functions super well. Very easy to get going and does not need a whole lot of
# work to change things around. Good alternative to DWM and so lightweight that
# it doesn´t even matter if both are installed!!
- name: Workstation | Linux | Software | i3 | Facts | General [1/2]
set_fact:
i3_config: "settings/i3.config"
i3_config_dir: "{{ user_user.home }}/.config/i3"
i3_package: i3
i3_light: light
i3_files: thunar
i3_term01: alacritty
i3_term02: kitty
i3_theming: lxappearance
i3_theme01: greybird-gtk-theme
i3_theme02: arc-theme
i3_theme03: numix-gtk-theme
- name: Workstation | Linux | Software | i3 | Facts | General [1/2]
set_fact:
i3_config_file: "{{ i3_config_dir }}/config"
#- name: Workstation | Linux | Software | i3 | Facts | TBD
# set_fact:
# i3_package: i3-wm
# when: ansible_distribution in ("TBD")
- name: Workstation | Linux | Software | i3 | Install
package:
name:
- "{{ i3_package }}"
- "{{ lightdm }}"
- "{{ i3_light }}"
- "{{ i3_files }}"
- "{{ i3_term01 }}"
- "{{ i3_term02 }}"
- "{{ i3_theming }}"
- "{{ i3_theme01 }}"
- "{{ i3_theme02 }}"
- "{{ i3_theme03 }}"
state: present
update_cache: yes
- name: Workstation | Linux | Software | i3 | Config | Create Dir
ansible.builtin.file:
path: "{{ i3_config_dir }}"
state: directory
mode: '0755'
owner: "{{ user }}"
group: "{{ user }}"
- name: Workstation | Linux | Software | i3 | Config | Copy File
copy:
src: "{{ i3_config }}"
dest: "{{ i3_config_file }}"
owner: "{{ user }}"
group: "{{ user }}"
mode: '0664'
# TBD: Automate getting the brightness keys to work.
#
# User is already part of the video group. Just need to configure udev rules.
#
# Get the folder name from here: `ls /sys/class/backlight/`
#
# That is your <DEVICE> for the following lines, which go here: /etc/udev/rules.d/backlight.rules
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<DEVICE>", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<DEVICE>", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
#
# So, for example:
# [18:12:20 root@device ~]# cat /etc/udev/rules.d/backlight.rules
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
# [18:12:21 root@device ~]#
#
# It then required a reboot. Doing the commands below was not enough.
#
# # sudo udevadm control --reload-rules
# # sudo udevadm trigger
#
- name: Workstation | Linux | Software | i3 | Light | Check Backlights
ansible.builtin.find:
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
# ansible.builtin.debug:
# msg: "{{ i3_light_device_check }}"
- name: Workstation | Linux | Software | i3 | Light | Pull Backlight Name
set_fact:
i3_light_device_name: "{{ i3_light_device_check.files[0].path | basename }}"
#- name: Display var - DELETEME
# ansible.builtin.debug:
# msg: "{{ i3_light_device_name }}"
- name: Workstation | Linux | Software | i3 | Light | udev Rules | Create
ansible.builtin.copy:
dest: /etc/udev/rules.d/backlight.rules
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
command: "{{ item }}"
loop:
- udevadm control --reload-rules
- udevadm trigger
#- name: FAIL - DELETEME
# meta: end_play
@@ -0,0 +1,35 @@
---
# 20260730 - Hyperling
# Install much more recent Node versions.
# https://linuxcapable.com/how-to-install-node-js-on-debian-linux/
- name: Workstation | Software | NodeJS
block:
- name: Workstation | Software | NodeJS | Facts
set_fact:
node_version: node_24.x
- name: Workstation | Software | NodeJS | Old | Remove
package:
name: npm
state: absent
- name: Workstation | Software | NodeJS | extrepo | Install
package:
name: extrepo
state: present
update_cache: yes
- name: Workstation | Software | NodeJS | extrepo | Enable {{ node_version }}
shell: "extrepo enable {{ node_version }}"
- name: Workstation | Software | NodeJS | Install
package:
name: nodejs
state: latest
update_cache: yes
when: ansible_pkg_mgr == "apt"
and coding == true
+32 -15
View File
@@ -22,7 +22,7 @@
- name: Workstation | Linux | Software | Packages | Install Software (Editing) - name: Workstation | Linux | Software | Packages | Install Software (Editing)
package: package:
name: name:
- "{{ ffmpeg }}" - "{{ ffmpeg }}"
state: present state: present
when: editing in (true, "video", "audio") when: editing in (true, "video", "audio")
@@ -36,17 +36,35 @@
name: name:
- vlc - vlc
- "{{ appimagelauncher }}" - "{{ appimagelauncher }}"
- "{{ evolution }}"
- "{{ evolution }}*"
- gparted - gparted
- hugo - hugo
- wireless-tools - "{{ firefox }}"
- "{{ firefox_esr }}"
- "{{ wireless_tools }}"
- "{{ notify_send }}"
- "{{ fyi }}"
- "{{ gnome_boxes }}"
state: present state: present
- name: Workstation | Linux | Software | Packages | Extra For Liberated Init Systems
package:
name:
- "{{ dunst }}"
state: present
when: ansible_service_mgr != "systemd"
- name: Workstation | Linux | Software | Packages | Install From AUR
shell: "yay -Qs {{ item }} || yay --noconfirm -S {{ item }}"
loop:
- appimagelauncher
when: ansible_pkg_mgr == "pacman"
become_user: "{{ aur_user }}"
ignore_errors: yes
- name: Workstation | Linux | Software | Packages | GS Connect (KDE Connect, Android Tool) - name: Workstation | Linux | Software | Packages | GS Connect (KDE Connect, Android Tool)
package: package:
name: name:
- gnome-shell-extension-gsconnect - gnome-shell-extension-gsconnect
state: present state: present
when: ansible_distribution in ("Debian") when: ansible_distribution in ("Debian")
ignore_errors: yes ignore_errors: yes
@@ -56,14 +74,13 @@
- name: Workstation | Linux | Software | Packages | Remove Applications - name: Workstation | Linux | Software | Packages | Remove Applications
package: package:
name: name:
- "{{ firefox }}" - "{{ thunderbird }}"
- "{{ firefox_esr }}" - "{{ evolution }}"
- "{{ thunderbird }}" - steam
- steam - vscode
- vscode - code
- code - libreoffice
- libreoffice - "*libreoffice*"
- "*libreoffice*" - '*libreoffice*'
- '*libreoffice*' - gimp
- gimp
state: absent state: absent
+34 -5
View File
@@ -7,16 +7,24 @@
- name: Workstation | Linux | Software | TLP | Facts - name: Workstation | Linux | Software | TLP | Facts
set_fact: set_fact:
tlp: "tlp" tlp_package: "tlp"
tlp_rdw: "tlp-rdw" tlp_rdw: "tlp-rdw"
tlp_smart: "smartmontools" tlp_smart: "smartmontools"
tlp_config: "/etc/tlp.conf" tlp_config: "/etc/tlp.conf"
tlp_service: "tlp" tlp_service: "tlp"
tlp_run_script: "tlp"
ppd_package: "power-profiles-daemon" ppd_package: "power-profiles-daemon"
ppd_service: "power-profiles-daemon" ppd_service: "power-profiles-daemon"
acf_package: "auto-cpufreq" acf_package: "auto-cpufreq"
acf_service: "auto-cpufreq" acf_service: "auto-cpufreq"
- name: Workstation | Linux | Software | TLP | Facts (Artix)
set_fact:
ppd_package: "power-profiles-daemon power-profiles-daemon-runit"
tlp_run_script: tlp-runit
when: ansible_pkg_mgr == "pacman"
and ansible_service_mgr == "runit"
## Conflicts ## ## Conflicts ##
#- name: Workstation | Linux | Software | TLP | Conflicts | Disable #- name: Workstation | Linux | Software | TLP | Conflicts | Disable
@@ -31,7 +39,9 @@
- name: Workstation | Linux | Software | TLP | Conflicts | Remove - name: Workstation | Linux | Software | TLP | Conflicts | Remove
package: package:
name: "{{ ppd_package }} {{ acf_package }}" name:
- "{{ ppd_package }}"
- "{{ acf_package }}"
state: absent state: absent
## Install TLP + Associated Software ## ## Install TLP + Associated Software ##
@@ -39,9 +49,10 @@
- name: Workstation | Linux | Software | TLP | Install - name: Workstation | Linux | Software | TLP | Install
package: package:
name: name:
- "{{ tlp }}" - "{{ tlp_package }}"
- "{{ tlp_rdw }}" - "{{ tlp_rdw }}"
- "{{ tlp_smart }}" - "{{ tlp_smart }}"
- "{{ tlp_run_script }}"
update_cache: yes update_cache: yes
## Configuration ## ## Configuration ##
@@ -64,16 +75,25 @@
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=""'}
- { "key": '^[\#]?DEVICES_TO_ENABLE_ON_AC', "value": '#DEVICES_TO_ENABLE_ON_AC=""'} - { "key": '^[\#]?DEVICES_TO_ENABLE_ON_AC', "value": '#DEVICES_TO_ENABLE_ON_AC=""'}
- { "key": '^[\#]?DEVICES_TO_DISABLE_ON_BAT', "value": '#DEVICES_TO_DISABLE_ON_BAT=""'} - { "key": '^[\#]?DEVICES_TO_DISABLE_ON_BAT', "value": '#DEVICES_TO_DISABLE_ON_BAT=""'}
# Help preserve battery life by not fully charging. # # Help preserve battery life by not fully charging. #
- { "key": '^[\#]?START_CHARGE_THRESH_BAT0', "value": '{{ "" if battery else "#" }}START_CHARGE_THRESH_BAT0=75'} - { "key": '^[\#]?START_CHARGE_THRESH_BAT0', "value": '{{ "" if battery else "#" }}START_CHARGE_THRESH_BAT0=60'}
- { "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=75'} - { "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 ##
@@ -84,3 +104,12 @@
name: "{{ tlp_service }}" name: "{{ tlp_service }}"
state: started state: started
enabled: true enabled: true
when: ansible_service_mgr not in ("runit")
- name: Workstation | Linux | Software | TLP | Enable + Start (runit)
shell: |
if [[ ! -e {{ runit_service_dir }}/tlp ]]; then
ln -s {{ runit_script_dir }}/tlp {{ runit_service_dir }}/tlp
fi
when: ansible_service_mgr == "runit"
+49 -18
View File
@@ -1,23 +1,54 @@
--- ---
# Install VPN client(s). # Install VPN client(s).
# https://mullvad.net/en/help/install-mullvad-app-linux
- name: Workstation | Software | VPN | Add Mullvad Repo [apt] - name: Workstation | Software | VPN | Mullvad
shell: "{{ item }}" block:
loop:
- sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc
- echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list
- apt update
when: ansible_pkg_mgr == "apt"
- name: Workstation | Software | VPN | Add Mullvad Repo [dnf] # https://mullvad.net/en/help/install-mullvad-app-linux
shell: "{{ item }}"
loop:
- sudo dnf config-manager --add-repo https://repository.mullvad.net/rpm/stable/mullvad.repo
when: ansible_pkg_mgr == "dnf"
- name: Workstation | Software | VPN | Install - name: Workstation | Software | VPN | Mullvad | Add Repo [apt]
package: shell: "{{ item }}"
name: loop:
- mullvad-vpn - sudo curl -fsSLo /usr/share/keyrings/mullvad-keyring.asc https://repository.mullvad.net/deb/mullvad-keyring.asc
state: present - echo "deb [signed-by=/usr/share/keyrings/mullvad-keyring.asc arch=$( dpkg --print-architecture )] https://repository.mullvad.net/deb/stable $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/mullvad.list
- apt update
when: ansible_pkg_mgr == "apt"
- name: Workstation | Software | VPN | Mullvad | Add Repo [dnf]
shell: "{{ item }}"
loop:
- sudo dnf config-manager --add-repo https://repository.mullvad.net/rpm/stable/mullvad.repo
when: ansible_pkg_mgr == "dnf"
- name: Workstation | Software | VPN | Install
package:
name:
- mullvad-vpn
state: present
- name: Workstation | Software | VPN | Install (Artix, runit)
package:
name:
- mullvad-vpn-runit
state: present
when: ansible_distribution == "Artix"
and ansible_service_mgr == "runit"
- name: Workstation | Software | VPN | Mullvad | Symlink GUI
ansible.builtin.file:
src: "/opt/Mullvad VPN/mullvad-vpn"
dest: "{{ global_bin }}/mullvad-vpn"
state: link
force: true
- name: Workstation | Software | VPN | Mullvad | Enable (Artix, runit)
ansible.builtin.file:
src: "/etc/runit/sv/mullvad-daemon"
dest: "/run/runit/services/mullvad"
state: link
force: true
when: ansible_service_mgr == "runit"
when: ansible_distribution in ("Debian", "Ubuntu", "Arch", "Artix")
# TBD: VPNs for distros like Devuan.
+67 -59
View File
@@ -7,64 +7,72 @@
# This also exists but was not utilized: # This also exists but was not utilized:
# https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo # https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo
## Facts ## - name: Workstation | Linux | Software | VS Codium
block:
## 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"
# Checks
- name: Workstation | Linux | Software | VS Codium | Check PPA
stat:
path: "{{ vscodium_source_list }}"
get_attributes: false
get_checksum: false
get_mime: false
register: vscodium_source_exists
## 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: 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: 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: coding != true
and vscodium_source_exists.stat.exists
# 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" when: ansible_pkg_mgr == "apt"
and ansible_distribution in ("Debian", "Ubuntu")
# Checks
- name: Workstation | Linux | Software | VS Codium | Check PPA
stat:
path: "{{ vscodium_source_list }}"
get_attributes: false
get_checksum: false
get_mime: false
register: vscodium_source_exists
when: ansible_pkg_mgr == "apt"
## Install Repo ##
- name: Workstation | Linux | Software | VS Codium | Add PPA
shell: "{{ item }}"
loop:
- "wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg \
| gpg --dearmor \
| sudo tee {{ vscodium_keyfile }} > /dev/null"
- "echo 'deb [arch=amd64,arm64 signed-by={{ vscodium_keyfile }}] https://download.vscodium.com/debs vscodium main' \
| sudo tee {{ vscodium_source_list }}"
- "sudo apt update"
when: ansible_pkg_mgr == "apt" and coding == true and not vscodium_source_exists.stat.exists
## Install Package ##
- name: Workstation | Linux | Software | VS Codium | Install
package:
name:
- codium
state: present
when: ansible_pkg_mgr == "apt" and coding == true
## Remove Package ##
- name: Workstation | Linux | Software | VS Codium | Uninstall
package:
name:
- codium
state: absent
when: ansible_pkg_mgr == "apt" and coding != true
## Remove Repo ##
- name: Workstation | Linux | Software | VS Codium | Remove PPA
shell: "{{ item }}"
loop:
- "mv {{ vscodium_source_list }} ~/TRASH/"
- "mv /etc/apt/keyrings/vscodium*.gpg ~/TRASH/"
- "sudo apt update"
when: ansible_pkg_mgr == "apt" and coding != true and vscodium_source_exists.stat.exists
@@ -0,0 +1,338 @@
---
# 20260731 - Hyperling
# Cinnakon settings, copied from GNOME settings.
# Temporarily removed while it's broken:
# , 'com.vscodium.codium.desktop', 'codium.desktop'
- name: Workstation | Account Management | Cinnamon | Facts
set_fact:
# Only do multiple entries per line if they are for the same exact program.
cinnamon_favorites: "[ 'org.gnome.Terminal.desktop'
, 'org.gnome.Console.desktop'
, 'gnome-system-monitor.desktop', 'org.gnome.SystemMonitor.desktop'
, 'org.gnome.Nautilus.desktop'
, 'io.gitlab.librewolf-community.desktop', 'librewolf.desktop'
, 'org.mozilla.firefox.desktop', 'firefox.desktop'
, 'com.vscodium.codium.desktop'
, 'codium.desktop'
, 'org.shotcut.Shotcut.desktop'
, 'io.lmms.LMMS.desktop'
, 'app.grayjay.Grayjay.desktop'
, 'io.lbry.lbry-app.desktop', 'lbry.desktop'
, 'com.valvesoftware.Steam.desktop'
, 'net.lutris.Lutris.desktop'
, 'mullvad-vpn.desktop'
, 'network.loki.Session.desktop'
, 'org.signal.Signal.desktop', 'signal-desktop.desktop'
, 'org.telegram.desktop.desktop'
, 'com.discordapp.Discord.desktop'
]"
dconf_terminal: gnome-terminal
dconf_theme: Adwaita-dark
dconf_icons: Adwaita
# 2024-01-28 Not currently using local email clients.
#, 'org.gnome.Evolution.desktop'
#, 'chat.delta.desktop.desktop', 'deltachat.desktop'
#, 'org.gnome.Geary.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'
# 2025-08-31 Not used a whole lot, installed again just to explore.
#, 'im.riot.Riot.desktop'
#, 'chat.simplex.simplex.desktop'
- name: Workstation | Account Management | Cinnamon | Facts (NixOS)
set_fact:
dconf_terminal: kgx
when: ansible_distribution in ("NixOS")
- name: Workstation | Account Management | Cinnamon | Facts (Ubuntu)
set_fact:
dconf_theme: Yaru-purple-dark
dconf_icons: Yaru-purple-dark
when: ansible_distribution in ("Ubuntu")
# Make sure Gnome-Tweaks is installed
- name: Workstation | Account Management | Cinnamon | Install Dependencies
package:
name:
- "{{ gnome_tweaks }}"
- "{{ dconf_editor }}"
- "{{ psutil }}"
state: present
when: ansible_distribution not in ("NixOS")
# Apply dconf settings through RC files due to distros without working psutil.
# Use the command 'dconf watch /' then change settings to see find these values.
- name: Workstation | Account Management | Cinnamon | Settings
blockinfile:
path: "{{ user_user.home }}/{{ item }}"
block: |
# Disable Cinnamon Settings While Converting From GNOME
if [[ 1 == 0 ]]; then
## Temporary Variables + Functions ##
dconf_count=1
function inc_dconf() {
dconf_count=$(( dconf_count + 1 ))
}
## Dash to Dock ##
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-position \
"'LEFT'" && inc_dconf &&
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed \
true && inc_dconf &&
dconf write /org/gnome/shell/extensions/dash-to-dock/dash-max-icon-size \
24 && inc_dconf &&
dconf write /org/gnome/shell/favorite-apps \
"{{ gnome_favorites }}" && inc_dconf &&
dconf write /org/gnome/shell/extensions/dash-to-dock/apply-custom-theme \
true && inc_dconf &&
dconf write /org/gnome/shell/extensions/dash-to-dock/custom-theme-shrink \
true && inc_dconf &&
dconf write /org/gnome/shell/extensions/dash-to-dock/dock-fixed \
false && inc_dconf &&
dconf write /org/gnome/shell/extensions/dash-to-dock/intellihide-mode \
"'ALL_WINDOWS'" && inc_dconf &&
## Generic ##
dconf write /org/gnome/desktop/interface/color-scheme \
"'prefer-dark'" && inc_dconf &&
dconf write /org/gnome/desktop/interface/gtk-theme \
"'{{ dconf_theme }}'" && inc_dconf &&
dconf write /org/gnome/desktop/interface/icon-theme \
"'{{ dconf_icons }}'" && inc_dconf &&
dconf write /org/gnome/desktop/interface/clock-show-date \
true && inc_dconf &&
dconf write /org/gnome/desktop/interface/clock-format \
"'24h'" && inc_dconf &&
dconf write /org/gnome/desktop/interface/clock-show-seconds \
true && inc_dconf &&
dconf write /org/gnome/desktop/interface/clock-show-weekday \
true && inc_dconf &&
dconf write /org/gnome/desktop/calendar/show-weekdate \
true && inc_dconf &&
dconf write /org/gnome/desktop/interface/show-battery-percentage \
true && inc_dconf &&
dconf write /org/gnome/desktop/wm/preferences/button-layout \
"'appmenu:minimize,maximize,close'" && inc_dconf &&
dconf write /org/gnome/desktop/wm/preferences/num-workspaces \
1 && inc_dconf &&
dconf write /org/gnome/mutter/dynamic-workspaces \
false && inc_dconf &&
dconf write /org/gnome/mutter/edge-tiling \
true && inc_dconf &&
dconf write /org/gnome/desktop/interface/enable-hot-corners \
false && inc_dconf &&
dconf write /org/gnome/mutter/center-new-windows \
true && inc_dconf &&
dconf write /org/gnome/desktop/notifications/show-banners \
true && inc_dconf &&
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable-sound-alerts \
false && inc_dconf &&
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution-alarm-notify/enable \
false && inc_dconf &&
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable-sound-alerts \
false && inc_dconf &&
dconf write /org/gnome/desktop/notifications/application/org-gnome-evolution/enable \
false && inc_dconf &&
# Stop Update Notifications
dconf write /org/gnome/software/allow-updates \
false && inc_dconf &&
dconf write /org/gnome/software/download-updates \
false && inc_dconf &&
dconf write /org/gnome/software/download-updates-notify \
false && inc_dconf &&
# Red Mode (Night Light)
(
typeset -l redmode
redmode="{{ redmode }}"
if [[ $redmode == "true" ]]; then
dconf write /org/gnome/settings-daemon/plugins/color/night-light-enabled \
true && inc_dconf
fi
) &&
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-automatic \
false && inc_dconf &&
#dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from \
# 2.0 && inc_dconf &&
#dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to \
# 1.99 && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-from \
19.00 && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/color/night-light-schedule-to \
07.00 && inc_dconf &&
# 1700 is max through GNOME Settings, looks pretty red but can still see green vs blue.
# 1200 is max on f.lux type apps, pretty difficult to see the difference between green and blue.
# 0500 is the max on Red Moon, super intense on a laptop, not as much on a phone screen.
# - Basically makes everything like the dash of a Z31 300ZX, lol.
dconf write /org/gnome/settings-daemon/plugins/color/night-light-temperature \
"uint32 1700" && inc_dconf &&
## Keyboard Shortcuts ##
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/binding \
"'<Control><Alt>t'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command \
"'{{ dconf_terminal }}'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/name \
"'Open Terminal'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/binding \
"'<Super>t'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/command \
"'{{ dconf_terminal }}'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/name \
"'Open Terminal 2'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/media-keys/custom-keybindings "
[ '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/'
, '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/'
]" && inc_dconf &&
## Privacy ##
dconf write /org/gnome/desktop/privacy/disable-camera \
true && inc_dconf &&
dconf write /org/gnome/desktop/privacy/disable-microphone \
true && inc_dconf &&
dconf write /org/gnome/desktop/privacy/recent-files-max-age \
7 && inc_dconf &&
dconf write /org/gnome/desktop/privacy/remember-recent-files \
false && inc_dconf &&
dconf write /org/gnome/desktop/privacy/old-files-age \
"uint32 14" && inc_dconf &&
dconf write /org/gnome/desktop/privacy/remove-old-trash-files \
true && inc_dconf &&
dconf write /org/gnome/desktop/privacy/remove-old-temp-files \
true && inc_dconf &&
dconf write /org/gnome/desktop/notifications/show-in-lock-screen \
false && inc_dconf &&
dconf write /org/gnome/desktop/screensaver/lock-enabled \
true && inc_dconf &&
dconf write /org/gnome/desktop/screensaver/lock-delay \
"uint32 0" && inc_dconf &&
dconf write /org/gnome/desktop/session/idle-delay \
"uint32 900" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/power/sleep-inactive-ac-type \
"'nothing'" && inc_dconf &&
dconf write /org/gnome/settings-daemon/plugins/power/power-button-action \
"'nothing'" && inc_dconf &&
dconf write /org/gnome/desktop/media-handling/autorun-never \
true && inc_dconf &&
## Gnome Terminal ##
# TBD: Do not start new tabs in previous tab's directory.
# The profile ID is likely unique and will need to be retrieved first.
#/org/gnome/terminal/legacy/profiles:/:b1dcc9dd-5262-4d8d-a863-c897e6d979b9/preserve-working-directory
#'never'
## Wellbeing ##
dconf write /org/gnome/desktop/screen-time-limits/daily-limit-enabled \
true && inc_dconf &&
dconf write /org/gnome/desktop/screen-time-limits/daily-limit-seconds \
"uint32 33333" && inc_dconf &&
dconf write /org/gnome/desktop/screen-time-limits/grayscale \
true && inc_dconf &&
dconf write /org/gnome/desktop/screen-time-limits/history-enabled \
true && inc_dconf &&
#dconf write /org/gnome/desktop/break-reminders/selected-breaks \
# "['eyesight', 'movement']" && inc_dconf &&
#dconf write /org/gnome/desktop/break-reminders/selected-breaks \
# "['movement']" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/selected-breaks \
"@as []" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/duration-seconds \
"uint32 180" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/interval-seconds \
"uint32 1800" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/countdown \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/delay-seconds \
"uint32 180" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/fade-screen \
true && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/notify \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/notify-overdue \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/notify-upcoming \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/play-sound \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/eyesight/interval-seconds \
"uint32 1800" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/duration-seconds \
"uint32 180" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/interval-seconds \
"uint32 1800" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/countdown \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/delay-seconds \
"uint32 60" && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/fade-screen \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/notify \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/notify-overdue \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/notify-upcoming \
false && inc_dconf &&
dconf write /org/gnome/desktop/break-reminders/movement/play-sound \
false && inc_dconf &&
## Success ##
sleep 0 ||
## Error Catch ##
echo "ERROR: DConf setting# $dconf_count failed!"
## Cleanup ##
unset -f inc_dconf
unset dconf_count
fi # End Disable Cinnamon Settings
marker: '# {mark} MANAGED BY ANSIBLE | Cinnamon Settings'
state: present
create: yes
backup: yes
become_user: "{{ user }}"
loop:
- .bashrc
- .zshrc
+16 -1
View File
@@ -428,7 +428,7 @@
unset -f inc_dconf unset -f inc_dconf
unset dconf_count unset dconf_count
marker: '# {mark} MANAGED BY ANSIBLE | NixOS GNOME Settings' marker: '# {mark} MANAGED BY ANSIBLE | GNOME Settings'
state: present state: present
create: yes create: yes
backup: yes backup: yes
@@ -436,3 +436,18 @@
loop: loop:
- .bashrc - .bashrc
- .zshrc - .zshrc
# Remove the dconf settings which had the marker related to NixOS.
- name: Workstation | Account Management | GNOME | Settings (NixOS)
blockinfile:
path: "{{ user_user.home }}/{{ item }}"
block: |
# TBD: No longer used. Remove in 2027.
marker: '# {mark} MANAGED BY ANSIBLE | NixOS GNOME Settings'
state: present
create: no
backup: no
become_user: "{{ user }}"
loop:
- .bashrc
- .zshrc
+152
View File
@@ -0,0 +1,152 @@
---
# 20260716 - Hyperling
# Add the setup for a simple i3 configuration. It´s pretty easy to use and
# functions super well. Very easy to get going and does not need a whole lot of
# work to change things around. Good alternative to DWM and so lightweight that
# it doesn´t even matter if both are installed!!
- name: Workstation | Shared | Software | i3 | i3 | Facts 01
set_fact:
i3_config: "settings/i3.config"
i3_config_dir: "{{ user_user.home }}/.config/i3"
i3_package: i3
i3_light: light
i3_files: thunar
i3_term01: alacritty
i3_term02: kitty
i3_theming: lxappearance
i3_theme01: greybird-gtk-theme
i3_theme02: arc-theme
i3_theme03: numix-gtk-theme
- name: Workstation | Shared | Software | i3 | i3 | Facts 02
set_fact:
i3_config_file: "{{ i3_config_dir }}/config"
- name: Workstation | Shared | Software | i3 | i3 | Facts | non-apt
set_fact:
i3_theme01: htop
i3_theme02: htop
i3_theme03: htop
when: ansible_pkg_mgr != "apt"
- name: Workstation | Shared | Software | i3 | i3 | Facts | yay
set_fact:
i3_yay_packages:
- greybird-gtk-theme
#- enlightenment-arc-theme
- numix-gtk-theme
when: ansible_pkg_mgr == "pacman"
#- name: Workstation | Shared | Software | i3 | i3 | Facts | TBD
# set_fact:
# i3_package: i3-wm
# when: ansible_distribution in ("TBD")
- name: Workstation | Shared | Software | i3 | i3 | Install
package:
name:
- "{{ i3_package }}"
- "{{ lightdm }}"
- "{{ i3_light }}"
- "{{ i3_files }}"
- "{{ i3_term01 }}"
- "{{ i3_term02 }}"
- "{{ i3_theming }}"
- "{{ i3_theme01 }}"
- "{{ i3_theme02 }}"
- "{{ i3_theme03 }}"
state: present
update_cache: yes
- name: Workstation | Shared | Software | i3 | i3 | Install (yay)
shell: "yay -Qs {{ item }} || yay --noconfirm -S {{ item }}"
loop: "{{ i3_yay_packages }}"
when: ansible_pkg_mgr == "pacman"
become_user: "{{ aur_user }}"
ignore_errors: true
- name: Workstation | Shared | Software | i3 | i3 | Config | Create Dir
ansible.builtin.file:
path: "{{ i3_config_dir }}"
state: directory
mode: '0755'
owner: "{{ user }}"
group: "{{ user }}"
- name: Workstation | Shared | Software | i3 | i3 | Config | Copy File
copy:
src: "{{ i3_config }}"
dest: "{{ i3_config_file }}"
owner: "{{ user }}"
group: "{{ user }}"
mode: '0664'
# TBD: Automate getting the brightness keys to work.
#
# User is already part of the video group. Just need to configure udev rules.
#
# Get the folder name from here: `ls /sys/class/backlight/`
#
# That is your <DEVICE> for the following lines, which go here: /etc/udev/rules.d/backlight.rules
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<DEVICE>", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="<DEVICE>", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
#
# So, for example:
# [18:12:20 root@device ~]# cat /etc/udev/rules.d/backlight.rules
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness"
# ACTION=="add", SUBSYSTEM=="backlight", KERNEL=="intel_backlight", RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
# [18:12:21 root@device ~]#
#
# It then required a reboot. Doing the commands below was not enough.
#
# # sudo udevadm control --reload-rules
# # sudo udevadm trigger
#
- name: Workstation | Shared | Software | i3 | i3 | Light (Linux Only)
block:
- name: Workstation | Shared | Software | i3 | i3 | Light | Check Backlights
ansible.builtin.find:
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: Display var _ DELETEME
# ansible.builtin.debug:
# msg: "{{ i3_light_device_check }}"
- name: Workstation | Shared | Software | i3 | i3 | Light | Pull Backlight Name
set_fact:
i3_light_device_name: "{{ i3_light_device_check.files[0].path | basename }}"
ignore_errors: yes
#- name: Display var - DELETEME
# ansible.builtin.debug:
# msg: "{{ i3_light_device_name }}"
- name: Workstation | Shared | Software | i3 | i3 | Light | udev Rules | Create
ansible.builtin.copy:
dest: /etc/udev/rules.d/backlight.rules
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'
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
# meta: end_play