Hyperling 107374d93c
General Improvements + FreeBSD Fixes (#15)
* Remove Thunderbird and Audacity. Don't add Geary to new installs but don't remove it in case it comes with the distro.

* Remove Thunderbird from Favorites.

* Add more systems to Dev branch.

* Add sudo so older distros don't ask for password on every app update.

* Alias for sync to help save some time typing.

* Post less often to hopefully allow keeping up a year of data in less than 16GB.

* Allow workstations to use printers without manual intervention.

* Section does more than UI work.

* Fix file path.

* Upgrade nanominer to 3.3.13.

* Add more chances for script to automatically restart.

* Add the minhashrate for x570.

* Up the minimum for x570.

* Fix "1: syntax error, unexpected USERGROUP, expecting END or ':' or '\n'" on FreeBSD.

* Correct FreeBSD package manager.
```
ansible -m setup localhost | grep ansible_pkg_mgr
        "ansible_pkg_mgr": "pkgng"
```

* Set vi as EDITOR.

* Add FreeBSD to distros that include make. It does not have an install from pkg.

* Make on FreeBSD hates dash-to-dock's Makefile. GMake has better luck.

* Update supported OS's.
2021-10-18 07:13:49 -05:00

196 lines
5.4 KiB
YAML

---
# Create users for all machines.
## Variables ##
- name: General | Account Management | Users | Use BASH (Default)
set_fact:
ling_shell: "{{ bash_exec.stdout }}"
- name: General | Account Management | Users | Use ZSH (Arch+Manjaro)
set_fact:
ling_shell: "{{ zsh_exec.stdout }}"
when: ansible_distribution == "Archlinux"
## Root ##
- name: General | Account Management | Users | Root
user:
name: root
shell: "{{ bash_exec.stdout }}"
create_home: yes
generate_ssh_key: yes
register: user_root
## Scheduler ##
- name: General | Account Management | Users | Ansible
user:
name: ansible
comment: Ansible
system: yes
register: user_ansible
## Superuser ##
- name: General | Account Management | Users | Hyperling
user:
name: ling
comment: Hyperling
groups:
- sudo
- video
- render
append: yes
shell: "{{ ling_shell }}"
create_home: yes
generate_ssh_key: yes
register: user_ling
- name: General | Account Management | Users | Hyperling | Test Logging In
shell: "echo SUCCESS"
args:
executable: "{{ ling_shell }}"
become_user: ling
## Folders ##
- name: General | Account Management | Users | Folders | Root | Create bin, Downloads, TRASH
file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ user_root.home }}/bin"
- "{{ user_root.home }}/Downloads"
- "{{ user_root.home }}/TRASH"
when: user_root.home != ""
- name: General | Account Management | Users | Folders | Hyperling | Create bin, LBRY, TRASH
file:
path: "{{ item }}"
state: directory
mode: '0755'
loop:
- "{{ user_ling.home }}/bin"
- "{{ user_ling.home }}/LBRY"
- "{{ user_ling.home }}/TRASH"
become_user: ling
when: user_ling.home != ""
- name: General | Account Management | Users | Folders | Home Directories 700
shell: "chmod 700 {{ user_ling.home }}/../*"
## Files ##
- name: General | Account Management | Users | Files | RC Variables
set_fact:
alias_cp: alias cp='cp -v'
alias_mv: alias mv='mv -v'
alias_rm: alias rm='echo "Use mv ~/TRASH/ instead!"'
alias_clean: alias clean='mv * ~/TRASH/'
alias_clean_trash: alias clean-trash='sh -c "rm -rfv ~/TRASH/*"'
path_additions: export PATH="~/bin:$PATH"
function_wttr: |
function weather() {
# 20210301 - Someone showed me an awesome weather API! Had to implement it!
if [[ "$1" == "-"* || $2 != "" ]]; then
echo 'USAGE: weather [location]
Any "-" paramaters call the usage since this function does not take any options.
Location is optional since the API can determine your connection'"'"'s location.
Useful location types:
$zip_code | Ex: 12345
$city,$state | Ex: Austin,Texas
@$domain_dot_extension | Ex: @github.com
~$special_location | Ex: ~Manitou Incline
Full documentation: https://github.com/chubin/wttr.in'
return 1
fi
curl "https://wttr.in/${1//\ /+}"
}
PS1: export PS1='[\u@\h \w]\$ '
remount: alias remount='sudo umount /mnt/*; sudo umount /mnt/*/*; sudo mount -a; echo -e "\nRemount completed!"; mount | grep /mnt'
update: |
function update() {
PROG=$FUNCNAME
usage="Usage: $PROG [-y]
$PROG is used to run all the system's package manager commands
in one swoop. Flow stops if any command returns a failure code.
The hope is to run something as easy as 'pacman -Syyu'.
-y : Assume yes to any prompts."
unset OPTIND
while getopts ":hy" opt; do
case $opt in
h) echo -e "$usage"
return 0 ;;
y) accept="-y" ;;
*) echo "ERROR: -$OPTARG is not a recognized option."
echo -e "$usage"
return 1 ;;
esac
done
{{ update_package_manager }}
{{ update_flatpak }}
return 0
echo "ERROR: $PROG experienced a problem and has aborted."
return 1
}
sync: alias sync='date && echo "Syncing!" && sync && date'
editor: export EDITOR='vi'
- name: General | Account Management | Users | Files | Common Variable
set_fact:
rc_common: |
{{ path_additions }}
{{ alias_cp }}
{{ alias_mv }}
{{ alias_rm }}
{{ alias_clean }}
{{ alias_clean_trash }}
{{ function_wttr }}
{{ PS1 }}
{{ remount }}
{{ update }}
{{ sync }}
{{ editor }}
- name: General | Account Management | Users | Files | .bashrc
blockinfile:
path: "{{ item }}/.bashrc"
block: |
{{ rc_common }}
[[ $(whoami) != "root" ]] && echo "`date` - Ansible .bashrc preferences loaded successfully!"
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
state: present
create: yes
backup: yes
loop:
- "{{ user_root.home }}"
- "{{ user_ling.home }}"
ignore_errors: yes
when: user_root.home != "" and user_ling.home != ""
- name: General | Account Management | Users | Files | .zshrc
blockinfile:
path: "{{ item }}/.zshrc"
block: |
{{ rc_common }}
[[ $(whoami) != "root" ]] && echo "`date` - Ansible .zshrc preferences loaded successfully!"
marker: '# {mark} MANAGED BY ANSIBLE | Aliases'
state: present
create: yes
backup: yes
loop:
- "{{ user_root.home }}"
- "{{ user_ling.home }}"
ignore_errors: yes
when: user_root.home != "" and user_ling.home != ""