automatrop: Run ansible-lint --fix

This commit is contained in:
Geoffrey Frogeye 2023-11-02 19:51:54 +01:00
parent d60f5aaa9d
commit 9c3dcba2e5
Signed by: geoffrey
GPG key ID: C72403E7F82E6AD8
18 changed files with 342 additions and 333 deletions

View file

@ -1,3 +1,4 @@
---
- name: Default
hosts: all
roles:

View file

@ -1,22 +1,23 @@
---
- name: Set variables
set_fact:
ansible.builtin.set_fact:
manjaro: "{{ ansible_lsb.id == 'Manjaro' or ansible_lsb.id == 'Manjaro-ARM' }}"
- name: Enable passwordless sudo access to wheel group (Others)
lineinfile:
ansible.builtin.lineinfile:
path: /etc/sudoers
line: "%wheel ALL=(ALL) NOPASSWD: ALL"
regexp: "^#? *%wheel ALL=\\(ALL\\) NOPASSWD: ALL$"
become: yes
become: true
when: not manjaro
- name: Enable passwordless sudo access to wheel group (Manjaro)
copy:
ansible.builtin.copy:
content: "%wheel ALL=(ALL) NOPASSWD: ALL"
dest: /etc/sudoers.d/11-wheel-nopasswd
mode: "u=rwx,g=rx,o="
mode: u=rwx,g=rx,o=
when: manjaro
become: yes
become: true
# /etc/sudoers.d/10-installer is the same thing,
# but **with** a password, and it's overwritten
# with each upgrade of manjaro-system, hence this.

View file

@ -1,14 +1,11 @@
- name: xrdb-reload
command: "xrdb -I{{ ansible_env.HOME }} {{ ansible_env.HOME }}/.config/Xresources/main"
- name: i3-reload
command: i3-msg reload
- name: shell-reload
command: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApply"
- name: fzf-reload
shell: "source {{ ansible_env.HOME }}/.local/bin/colorSchemeApplyFzf"
- name: qutebrowser-reload
shell: "! pgrep qutebrowser || qutebrowser :config-source"
---
- name: Xrdb-reload
ansible.builtin.command: xrdb -I{{ ansible_env.HOME }} {{ ansible_env.HOME }}/.config/Xresources/main
- name: I3-reload
ansible.builtin.command: i3-msg reload
- name: Shell-reload
ansible.builtin.command: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApply"
- name: Fzf-reload
ansible.builtin.command: source {{ ansible_env.HOME }}/.local/bin/colorSchemeApplyFzf
- name: Qutebrowser-reload
ansible.builtin.shell: "! pgrep qutebrowser || qutebrowser :config-source"

View file

@ -1,22 +1,24 @@
---
- name: Ensure directories for desktop applications are present
file:
ansible.builtin.file:
state: directory
path: "{{ ansible_user_dir }}/{{ item }}"
mode: "u=rwx,g=rx,o=rx"
mode: u=rwx,g=rx,o=rx
with_items:
- ".config/Xresources"
- ".config/rofi"
- ".local/bin"
- ".local/share/fonts"
- ".config/qutebrowser"
- ".config/tridactyl/themes"
- .config/Xresources
- .config/rofi
- .local/bin
- .local/share/fonts
- .config/qutebrowser
- .config/tridactyl/themes
# Download fonts
- name: Download Nerd fonts
get_url:
url: "https://raw.githubusercontent.com/ryanoasis/nerd-fonts/704336735f576781b2a57b12a0c723e3316cbdec/patched-fonts/DejaVuSansMono/{{ item.folder }}/complete/{{ item.filename | urlencode }}"
ansible.builtin.get_url:
url: https://raw.githubusercontent.com/ryanoasis/nerd-fonts/704336735f576781b2a57b12a0c723e3316cbdec/patched-fonts/DejaVuSansMono/{{ item.folder }}/complete/{{
item.filename | urlencode }}
dest: "{{ ansible_user_dir }}/.local/share/fonts/{{ item.filename }}"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
loop:
- filename: DejaVu Sans Mono Bold Nerd Font Complete Mono.ttf
folder: Bold
@ -28,14 +30,14 @@
folder: Italic
- name: Download icon fonts
get_url:
url: "https://raw.githubusercontent.com/FortAwesome/Font-Awesome/a8386aae19e200ddb0f6845b5feeee5eb7013687/fonts/fontawesome-webfont.ttf"
ansible.builtin.get_url:
url: https://raw.githubusercontent.com/FortAwesome/Font-Awesome/a8386aae19e200ddb0f6845b5feeee5eb7013687/fonts/fontawesome-webfont.ttf
dest: "{{ ansible_user_dir }}/.local/share/fonts/fontawesome-webfont.ttf"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
# TODO Either replace with ForkAwesome or Nerd Fonts
- name: Install python dependencies for lemonbar
pip:
ansible.builtin.pip:
requirements: "{{ ansible_user_dir }}/.dotfiles/config/lemonbar/requirements.txt"
extra_args: --break-system-packages # It's fine, it's local anyways
@ -59,20 +61,20 @@
- i3
- name: Configure Alacritty
template:
ansible.builtin.template:
src: "{{ ansible_env.HOME }}/.config/alacritty/alacritty.yml.j2"
dest: "{{ ansible_env.HOME }}/.config/alacritty/alacritty.yml"
mode: "u=rw,g=r,o=r"
# Alacritty has live config reload, so no command to execute
# However, it doesn't work with yaml includes, hence the template
mode: u=rw,g=r,o=r
# Alacritty has live config reload, so no command to execute
# However, it doesn't work with yaml includes, hence the template
tags:
- color
- name: Set base16 theme for Xresources
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['xresources']['xresources']['base16-' + base16_scheme + '-256.Xresources'] }}"
dest: "{{ ansible_env.HOME }}/.config/Xresources/theme"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
notify:
- xrdb-reload
tags:
@ -80,30 +82,30 @@
when: display_server == 'x11'
- name: Download base16 theme for qutebrowser
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['qutebrowser']['themes/minimal']['base16-' + base16_scheme + '.config.py'] }}"
dest: "{{ ansible_env.HOME }}/.config/qutebrowser/theme.py"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
notify:
- qutebrowser-reload
tags:
- color
- name: Download base16 theme for Tridactyl
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['tridactyl']['base16-' + base16_scheme + '.config.py'] }}"
# url: "https://raw.githubusercontent.com/bezmi/base16-tridactyl/master/base16-{{ base16_scheme }}.css"
dest: "{{ ansible_env.HOME }}/.config/tridactyl/themes/theme.css"
mode: "u=rw,g=r,o=r"
when: False # Not currently used
mode: u=rw,g=r,o=r
when: false # Not currently used
tags:
- color
- name: Configure i3
template:
ansible.builtin.template:
src: "{{ ansible_env.HOME }}/.config/i3/config.j2"
dest: "{{ ansible_env.HOME }}/.config/i3/config"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
notify:
- i3-reload
tags:
@ -112,10 +114,10 @@
when: display_server == 'x11'
- name: Set base16 theme for rofi
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['rofi']['themes']['base16-' + base16_scheme + '.' + item] }}"
dest: "{{ ansible_env.HOME }}/.config/rofi/theme.{{ item }}"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
tags:
- color
loop:
@ -123,49 +125,49 @@
- rasi
- name: Configure Dunst
template:
ansible.builtin.template:
src: "{{ ansible_env.HOME }}/.config/dunst/dunstrc.j2"
dest: "{{ ansible_env.HOME }}/.config/dunst/dunstrc"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
tags:
- color
when: display_server == 'x11'
- name: Download base16 theme for fzf
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['fzf']['bash']['base16-' + base16_scheme + '.config'] }}"
dest: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApplyFzf"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
notify:
- fzf-reload
tags:
- color
- name: Download base16 theme for shell
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['shell']['script']['base16-' + base16_scheme + '.sh'] }}"
dest: "{{ ansible_env.HOME }}/.local/bin/colorSchemeApply"
mode: "u=rwx,g=rx,o=rx"
mode: u=rwx,g=rx,o=rx
notify:
- shell-reload
when: False # Not currently used
when: false # Not currently used
tags:
- color
- name: Set used base16 theme for vim
copy:
ansible.builtin.copy:
path: "{{ ansible_env.HOME }}/.config/vim/colorscheme.vim"
mode: "u=rw,g=r,o=r"
content: "colorscheme base16-{{ base16_scheme }}"
when: False # Not currently used
mode: u=rw,g=r,o=r
content: colorscheme base16-{{ base16_scheme }}
when: false # Not currently used
tags:
- color
- name: Enable user services
systemd:
ansible.builtin.systemd:
name: "{{ item }}"
state: started
enabled: yes
enabled: true
scope: user
loop:
- pulseaudio

View file

@ -1,3 +1,3 @@
- name: install dotfiles
command: "{{ ansible_user_dir }}/.dotfiles/config/scripts/dotfiles install"
# TODO A python module to do that, so without an handler
---
- name: Install dotfiles
ansible.builtin.command: "{{ ansible_user_dir }}/.dotfiles/config/scripts/dotfiles install"

View file

@ -1,32 +1,32 @@
---
- name: Ensure directories for applications are present
file:
ansible.builtin.file:
state: directory
path: "{{ ansible_user_dir }}/{{ item }}"
mode: "u=rwx,g=rx,o=rx"
mode: u=rwx,g=rx,o=rx
with_items:
- ".cache/zsh"
- ".cache/mpd"
- ".ssh"
- ".local/bin"
- ".ansible/collections/ansible_collections/geoffreyfrogeye"
- .cache/zsh
- .cache/mpd
- .ssh
- .local/bin
- .ansible/collections/ansible_collections/geoffreyfrogeye
- name: Install dotfiles repository
git:
ansible.builtin.git:
repo: "{% if has_forge_access %}git@git.frogeye.fr:{% else %}https://git.frogeye.fr/{% endif %}geoffrey/dotfiles.git"
dest: "{{ ansible_user_dir }}/.dotfiles"
update: yes
update: true
notify: install dotfiles
tags: dotfiles_repo
# TODO Put actual dotfiles in a subdirectory of the repo, so we don't have to put everything in config
- name: Register as Ansible collection
file:
ansible.builtin.file:
state: link
src: "{{ ansible_user_dir }}/.dotfiles/config/automatrop"
path: "{{ ansible_user_dir }}/.ansible/collections/ansible_collections/geoffreyfrogeye/automatrop"
- name: Install python dependencies for scripts
pip:
ansible.builtin.pip:
requirements: "{{ ansible_user_dir }}/.dotfiles/config/scripts/requirements.txt"
extra_args: --break-system-packages # It's fine, it's local anyways

View file

@ -1,34 +1,35 @@
---
- name: Setup pam_encryptfs auth
blockinfile:
ansible.builtin.blockinfile:
path: /etc/pam.d/system-auth
block: |
auth [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
auth required pam_ecryptfs.so unwrap
insertafter: '^(auth\s+required\s+pam_unix.so|auth\s+\[default=die\]\s+pam_faillock.so\s+authfail)$'
insertafter: ^(auth\s+required\s+pam_unix.so|auth\s+\[default=die\]\s+pam_faillock.so\s+authfail)$
marker: "# {mark} AUTOMATROP ECRYPTFS_AUTOMOUNT AUTH"
become: yes
become: true
notify:
- etc changed
- name: Setup pam_encryptfs password
blockinfile:
ansible.builtin.blockinfile:
path: /etc/pam.d/system-auth
block: |
password optional pam_ecryptfs.so unwrap
insertbefore: '^(password\s+required\s+pam_unix.so|-password\s+\[success=1\s+default=ignore\]\s+pam_systemd_home.so)$'
insertbefore: ^(password\s+required\s+pam_unix.so|-password\s+\[success=1\s+default=ignore\]\s+pam_systemd_home.so)$
marker: "# {mark} AUTOMATROP ECRYPTFS_AUTOMOUNT PASSWORD"
become: yes
become: true
notify:
- etc changed
- name: Setup pam_encryptfs session
blockinfile:
ansible.builtin.blockinfile:
path: /etc/pam.d/system-auth
block: |
session [success=1 default=ignore] pam_succeed_if.so service = systemd-user quiet
session optional pam_ecryptfs.so unwrap
insertafter: '^session\s+required\s+pam_unix.so$'
insertafter: ^session\s+required\s+pam_unix.so$
marker: "# {mark} AUTOMATROP ECRYPTFS_AUTOMOUNT SESSION"
become: yes
become: true
notify:
- etc changed

View file

@ -1,13 +1,14 @@
---
- name: Load extensions
include_role:
name: "geoffreyfrogeye.{{ extension }}automatrop.entry"
ansible.builtin.include_role:
name: geoffreyfrogeye.{{ extension }}automatrop.entry
loop: "{{ extensions }}"
loop_control:
loop_var: extension
tags: always
- name: Configure extensions rc sourcing
template:
ansible.builtin.template:
src: extrc.sh.j2
dest: "{{ ansible_user_dir }}/.config/shell/extrc"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r

View file

@ -1,5 +1,6 @@
---
- name: Set facts
set_fact:
ansible.builtin.set_fact:
arch_based: "{{ ansible_distribution == 'Archlinux' }}"
arch: "{{ ansible_lsb.id == 'Arch' }}"
manjaro: "{{ ansible_lsb.id == 'Manjaro' or ansible_lsb.id == 'Manjaro-ARM' }}"
@ -11,7 +12,7 @@
- always
- name: Set composed facts
set_fact:
ansible.builtin.set_fact:
debian_based: "{{ debian or ubuntu }}"
can_chown: "{{ not junest }}"
has_systemd: "{{ not junest }}"

View file

@ -1,22 +1,23 @@
---
- name: Create GnuPG directory
file:
ansible.builtin.file:
path: "{{ gnupghome }}"
state: directory
mode: "u=rwx"
mode: u=rwx
- name: Create GnuPG configuration files
file:
ansible.builtin.file:
path: "{{ gnupghome }}/{{ item }}"
state: file
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
loop:
- gpg-agent.conf
- gpg.conf
- name: Configure GnuPG
lineinfile:
ansible.builtin.lineinfile:
path: "{{ gnupghome }}/gpg.conf"
regex: "^#?\\s*{{ item.key }}\\s"
regex: ^#?\s*{{ item.key }}\s
line: "{{ item.key }}{% if item.value is defined %} {{ item.value }}{% endif %}"
loop:
# Remove fluff
@ -25,7 +26,7 @@
- key: no-comments
# Output format that I prefer
- key: keyid-format
value: 0xlong
value: "0xlong"
# Show fingerprints
- key: with-fingerprint
# Make sure to show if key is invalid

View file

@ -1 +1,2 @@
---
gnupghome: "{{ ansible_user_dir }}/.config/gnupg"

View file

@ -1,23 +1,24 @@
---
- name: Create and install meta package for Arch Linux
when: arch_based
block:
- name: Generate meta package PKGBUILD
template:
ansible.builtin.template:
src: PKGBUILD.j2
dest: "{{ ansible_user_dir }}/.cache/automatrop/PKGBUILD"
listen: "software changed"
listen: software changed
- name: Install meta package
aur:
name: "automatrop-packages-{{ inventory_hostname_short }}"
name: automatrop-packages-{{ inventory_hostname_short }}
local_pkgbuild: "{{ ansible_user_dir }}/.cache/automatrop"
use: makepkg
state: latest
listen: "software changed"
listen: software changed
when: root_access
when: arch_based
- name: update pacman cache
pacman:
update_cache: yes
become: yes
- name: Update pacman cache
community.general.pacman:
update_cache: true
become: true
when: arch_based

View file

@ -1,43 +1,43 @@
---
# TODO Install python if not done
# Or maybe not, it requires a lot of automation for something that can be done
# very quickly manually and is usually already installed
- name: Install python-apt dependency for Termux
when: termux
vars:
version: 2.39
block:
# TODO Check if the correct version
- name: Check for DistUtilsExtra (Termux)
command: python -c 'import DistUtilsExtra'
changed_when: False
ansible.builtin.command: python -c 'import DistUtilsExtra'
changed_when: false
rescue:
- name: Create temporarty folder for DistUtilsExtra (Termux)
tempfile:
ansible.builtin.tempfile:
state: directory
suffix: python-distutils-extra
# path: /data/data/com.termux/files/usr/tmp/
register: pde_tempdir
- name: Download DistUtilsExtra (Termux)
get_url:
url: "https://launchpad.net/python-distutils-extra/trunk/{{ version }}/+download/python-distutils-extra-{{ version }}.tar.gz"
ansible.builtin.get_url:
url: https://launchpad.net/python-distutils-extra/trunk/{{ version }}/+download/python-distutils-extra-{{ version }}.tar.gz
dest: "{{ pde_tempdir.path }}/python-distutils-extra.tar.gz"
- name: Extract DistUtilsExtra (Termux)
unarchive:
ansible.builtin.unarchive:
src: "{{ pde_tempdir.path }}/python-distutils-extra.tar.gz"
remote_src: yes
remote_src: true
dest: "{{ pde_tempdir.path }}"
- name: Install DistUtilsExtra (Termux)
command:
ansible.builtin.command:
cmd: python3 setup.py install
chdir: "{{ pde_tempdir.path }}/python-distutils-extra-{{ version }}"
when: termux
vars:
version: 2.39
- name: Install python-apt (Termux)
pip:
ansible.builtin.pip:
name: python-apt
when: termux
@ -62,112 +62,110 @@
# TODO Patch sudo-fake so it allows using -u so `become` works
- name: Enable multilib repo
lineinfile:
ansible.builtin.lineinfile:
path: /etc/pacman.conf
regexp: '^#?\s*\[multilib\]$'
line: '[multilib]'
become: yes
regexp: ^#?\s*\[multilib\]$
line: "[multilib]"
become: true
when: arch_based and ansible_architecture == "x86_64"
notify: udpate pacman cache
- name: Configure multilib repo
lineinfile:
ansible.builtin.lineinfile:
path: /etc/pacman.conf
regexp: '^#?\s*Include\s*=\s*/etc/pacman.d/mirrorlist'
line: 'Include = /etc/pacman.d/mirrorlist'
insertafter: '^\[multilib\]$'
become: yes
regexp: ^#?\s*Include\s*=\s*/etc/pacman.d/mirrorlist
line: Include = /etc/pacman.d/mirrorlist
insertafter: ^\[multilib\]$
become: true
when: arch_based and ansible_architecture == "x86_64"
notify: udpate pacman cache
- name: Update cache if needed
meta: flush_handlers
ansible.builtin.meta: flush_handlers
- name: Install ccache
pacman:
community.general.pacman:
name: ccache
state: present
extra_args: "--asdeps"
become: yes
extra_args: --asdeps
become: true
when: arch_based
- name: Enable makepkg color
replace:
ansible.builtin.replace:
path: /etc/makepkg.conf
regexp: '^BUILDENV=(.+)!color(.+)$'
replace: 'BUILDENV=\1color\2'
become: yes
regexp: ^BUILDENV=(.+)!color(.+)$
replace: BUILDENV=\1color\2
become: true
when: arch_based
- name: Enable makepkg ccache
replace:
ansible.builtin.replace:
path: /etc/makepkg.conf
regexp: '^BUILDENV=(.+)!ccache(.+)$'
replace: 'BUILDENV=\1ccache\2'
become: yes
regexp: ^BUILDENV=(.+)!ccache(.+)$
replace: BUILDENV=\1ccache\2
become: true
when: arch_based
- name: Remove -mtune from makepkg CFLAGS
replace:
ansible.builtin.replace:
path: /etc/makepkg.conf
regexp: '^#? *CFLAGS=(.+)-mtune=\S+\s(.*)$'
replace: "CFLAGS=\\1\\2"
become: yes
regexp: ^#? *CFLAGS=(.+)-mtune=\S+\s(.*)$
replace: CFLAGS=\1\2
become: true
when: arch_based
- name: Change -march to native from makepkg CFLAGS
replace:
ansible.builtin.replace:
path: /etc/makepkg.conf
regexp: '^#? *CFLAGS=(.+)-march=\S+(\s)(.*)$'
replace: "CFLAGS=\\1-march=native\\2\\3"
become: yes
regexp: ^#? *CFLAGS=(.+)-march=\S+(\s)(.*)$
replace: CFLAGS=\1-march=native\2\3
become: true
when: arch_based
- name: Set makepkg MAKEFLAGS
replace:
ansible.builtin.replace:
path: /etc/makepkg.conf
regexp: '^#? *MAKEFLAGS=(.+)-j[0-9]+(.+)$'
replace: "MAKEFLAGS=\\1-j{{ j }}\\2"
become: yes
regexp: ^#? *MAKEFLAGS=(.+)-j[0-9]+(.+)$
replace: MAKEFLAGS=\1-j{{ j }}\2
become: true
vars:
j: "{{ [ansible_processor_nproc - 1, 1] | max | int }}"
when: arch_based
- name: Enable pacman ParallelDownloads
lineinfile:
ansible.builtin.lineinfile:
path: /etc/pacman.conf
regexp: '^#?ParallelDownloads'
line: 'ParallelDownloads = 5'
insertafter: '^\[options\]$'
become: yes
regexp: ^#?ParallelDownloads
line: ParallelDownloads = 5
insertafter: ^\[options\]$
become: true
when: arch_based
- name: Enable pacman colors
lineinfile:
ansible.builtin.lineinfile:
path: /etc/pacman.conf
regexp: '^#?Color'
line: 'Color'
insertafter: '^\[options\]$'
become: yes
regexp: ^#?Color
line: Color
insertafter: ^\[options\]$
become: true
when: arch_based
- name: Enable pacman pac-man
lineinfile:
ansible.builtin.lineinfile:
path: /etc/pacman.conf
regexp: '^#?ILoveCandy'
line: 'ILoveCandy'
insertafter: '^#?Color'
become: yes
regexp: ^#?ILoveCandy
line: ILoveCandy
insertafter: ^#?Color
become: true
when: arch_based
# Install alternative package managers
- name: Install dependencies for AUR helpers
pacman:
community.general.pacman:
name:
- base-devel
- fakeroot
become: yes
become: true
when: arch_based
# Do not install sudo because maybe sudo-fake is installed (otherwise it conflicts)
# It should already be installed already anyway
@ -178,41 +176,41 @@
when: arch
- name: Install AUR package manager (Manjaro)
pacman:
community.general.pacman:
name: yay
become: yes
become: true
when: manjaro
# Not sure if regular Manjaro has yay in its community packages,
# but Manjaro-ARM sure does
- name: Create cache folder
file:
ansible.builtin.file:
state: directory
mode: "u=rwx,g=rx,o=rx"
mode: u=rwx,g=rx,o=rx
path: "{{ ansible_user_dir }}/.cache/automatrop"
- name: Generate list of packages for package manager
set_fact:
ansible.builtin.set_fact:
packages: "{{ query('template', 'package_manager.j2')[0].split('\n')[:-1]|sort|unique }}"
tags: softwarelist
- name: Install packages (Arch-based)
aur:
name: "{{ packages }}"
extra_args: "--asdeps --needed"
extra_args: --asdeps --needed
# Nothing is set as installed manually so it can
# be removed by dependency check.
# Current packages will be kept by the meta package
use: yay
notify: "software changed"
notify: software changed
tags: softwarelist
when: arch_based
- name: Check if list of packages changed
copy:
ansible.builtin.copy:
content: "{% for package in packages %}{{ package }}\n{% endfor %}"
dest: "{{ ansible_user_dir }}/.cache/automatrop/package_manager"
notify: "software changed"
notify: software changed
tags: softwarelist
# translate-shell

View file

@ -1,46 +1,47 @@
---
- name: Create a etckeeper commit
command: "etckeeper commit 'automatrop {{ ansible_date_time.iso8601 }}'"
listen: "etc changed"
become: yes
ansible.builtin.command: etckeeper commit 'automatrop {{ ansible_date_time.iso8601 }}'
listen: etc changed
become: true
register: etckeeper_commit
failed_when: "etckeeper_commit.rc != 0 and 'nothing to commit' not in etckeeper_commit.stdout"
failed_when: etckeeper_commit.rc != 0 and 'nothing to commit' not in etckeeper_commit.stdout
changed_when: "'nothing to commit' not in etckeeper_commit.stdout"
- name: Restart chrony
systemd:
ansible.builtin.systemd:
name: chronyd
state: restarted
listen: chrony reconfigured
become: yes
become: true
- name: Reload systemd daemon
systemd:
daemon_reload: yes
ansible.builtin.systemd:
daemon_reload: true
listen: systemd changed
become: yes
become: true
- name: Restart wpa_supplicant
systemd:
name: "wpa_supplicant@{{ item }}"
ansible.builtin.systemd:
name: wpa_supplicant@{{ item }}
state: restarted
become: yes
become: true
loop: "{{ ansible_interfaces }}"
when: "item.startswith('wl')"
when: item.startswith('wl')
listen: wpa_supplicant changed
# Could probably use something better like
# listing /sys/class/ieee80211/*/device/net/
- name: Warn about changed Wi-Fi setup
debug:
msg: "The Wi-Fi configuration was changed, but not applied to let this playbook finish. A reboot is required."
ansible.builtin.debug:
msg: The Wi-Fi configuration was changed, but not applied to let this playbook finish. A reboot is required.
listen: wifi setup changed
- name: Warn about changed Panfrost config
debug:
msg: "The Panfrost display driver configuration was changed, but needs a reboot to be applied."
ansible.builtin.debug:
msg: The Panfrost display driver configuration was changed, but needs a reboot to be applied.
listen: panfrost config changed
- name: Reload systemd-logind
command: systemctl kill -s HUP systemd-logind
become: yes
ansible.builtin.command: systemctl kill -s HUP systemd-logind
become: true
listen: systemd-logind config changed

View file

@ -1,3 +1,4 @@
---
# TODO For other distributions
# Package are installed with --asdeps because they are needed
@ -5,97 +6,96 @@
# Etckeeper
- name: Check if etckeeper is initialized
stat:
ansible.builtin.stat:
path: /etc/.git
register: etckeeper
become: yes
become: true
- name: Initialize etckeeper
command: "etckeeper init"
become: yes
ansible.builtin.command: etckeeper init
become: true
when: not etckeeper.stat.exists
changed_when: yes
changed_when: true
- name: Configure git user.name for etckeeper
git_config:
community.general.git_config:
scope: local
repo: /etc
name: "{{ item.name }}"
value: "{{ item.value }}"
loop:
- name: "user.name"
value: "etckeeper on {{ inventory_hostname_short }}"
- name: "user.email"
value: "etckeeper@{{ inventory_hostname }}"
become: yes
- name: user.name
value: etckeeper on {{ inventory_hostname_short }}
- name: user.email
value: etckeeper@{{ inventory_hostname }}
become: true
# Manjaro configuration
- name: Remove Manjaro's pamac
pacman:
community.general.pacman:
name: pamac
state: absent
become: yes
become: true
when: arch_based and False # I'm trying to remember why I usually delete this thing
# Verbose logging during boot
- name: Check if using Uboot
stat:
ansible.builtin.stat:
path: /boot/extlinux/extlinux.conf
register: extlinux
# This (and the following) was made with the Pinebook in mind,
# not sure about compatibility
- name: Remove non-tty1 console (Uboot)
replace:
ansible.builtin.replace:
path: /boot/extlinux/extlinux.conf
regexp: '^APPEND(.*) console=(?!tty1)\S+(.*)$'
replace: 'APPEND\1\2'
become: yes
regexp: ^APPEND(.*) console=(?!tty1)\S+(.*)$
replace: APPEND\1\2
become: true
when: extlinux.stat.exists
# Only one console= will be removed because regular expression are either hard
# or somewhat limited. It's just what I need anyway
- name: Remove bootsplash.bootfile (Uboot)
replace:
ansible.builtin.replace:
path: /boot/extlinux/extlinux.conf
regexp: '^APPEND(.*) bootsplash.bootfile=\S+(.*)$'
replace: 'APPEND\1\2'
become: yes
regexp: ^APPEND(.*) bootsplash.bootfile=\S+(.*)$
replace: APPEND\1\2
become: true
when: extlinux.stat.exists
- name: Remove bootsplash packages (Arch based)
pacman:
community.general.pacman:
name:
- bootsplash-systemd
- bootsplash-theme-manjaro
state: absent
become: yes
become: true
when: arch_based
# Display Manager
- name: Remove display manager packages (Arch based)
pacman:
community.general.pacman:
name:
- sddm
- sddm-breath2-theme
state: absent
become: yes
become: true
when: arch_based
# Xorg configuration
- name: Check if there is nvidia-xrun is installed
stat:
ansible.builtin.stat:
path: /etc/X11/nvidia-xorg.conf
register: nvidia_xrun
when: display_server == 'x11'
- name: Add nvidia-xrun xorg config directory
set_fact:
ansible.builtin.set_fact:
xorg_common_config_dirs: "{{ xorg_default_config_dirs + xorg_nvidia_config_dirs }}"
vars:
xorg_default_config_dirs:
@ -104,78 +104,78 @@
when: display_server == 'x11'
- name: Configure Xorg keyboard layout
copy:
ansible.builtin.copy:
src: xorg/keyboard.conf
dest: "{{ item }}/00-keyboard.conf"
become: yes
become: true
when: display_server == 'x11'
notify: etc changed
loop: "{{ xorg_common_config_dirs }}"
- name: Use Alt keys for numpad
patch:
ansible.posix.patch:
src: us_qwert_alt_numpad.patch
dest: /usr/share/X11/xkb/symbols/us_qwerty-fr
become: yes
become: true
when: display_server == 'x11'
# This is not very nice but it's updated so infrequently that it's not worth
# the trouble
- name: Check if there is Intel backlight
stat:
ansible.builtin.stat:
path: /sys/class/backlight/intel_backlight
register: intel_backlight
when: display_server == 'x11'
- name: Install Intel video drivers (Arch based)
pacman:
community.general.pacman:
name: xf86-video-intel
# state: "{{ intel_backlight.stat.exists }}"
state: present
become: yes
become: true
when: display_server == 'x11' and intel_backlight.stat.exists and arch_based
# TODO With software role? Would permit other distributions
- name: Configure Xorg Intel backlight
copy:
ansible.builtin.copy:
src: xorg/intel_backlight.conf
dest: "{{ item }}/20-intel_backlight.conf"
become: yes
become: true
when: display_server == 'x11' and intel_backlight.stat.exists
notify: etc changed
loop: "{{ xorg_common_config_dirs }}"
- name: Configure Xorg touchpad behaviour
copy:
ansible.builtin.copy:
src: xorg/touchpad.conf
dest: "{{ item }}/30-touchpad.conf"
become: yes
become: true
when: display_server == 'x11'
notify: etc changed
loop: "{{ xorg_common_config_dirs }}"
- name: Configure Xorg joystick behaviour
copy:
ansible.builtin.copy:
src: xorg/joystick.conf
dest: "{{ item }}/50-joystick.conf"
become: yes
become: true
when: display_server == 'x11'
notify: etc changed
loop: "{{ xorg_common_config_dirs }}"
- name: List modules we're using
slurp:
ansible.builtin.slurp:
src: /proc/modules
register: modules
when: display_server
# Not sure the module will be loaded in early setup stages though
- name: Make panfrost use OpenGL 3.3
lineinfile:
ansible.builtin.lineinfile:
path: /etc/environment
line: 'PAN_MESA_DEBUG="gl3"'
regexp: '^#? ?PAN_MESA_DEBUG='
become: yes
line: PAN_MESA_DEBUG="gl3"
regexp: ^#? ?PAN_MESA_DEBUG=
become: true
when: display_server and using_panfrost
vars:
using_panfrost: "{{ 'panfrost' in (modules.content | b64decode) }}"
@ -183,21 +183,21 @@
# Numlock on boot
- name: set numlock on boot
copy:
- name: Set numlock on boot
ansible.builtin.copy:
src: getty.service
dest: /etc/systemd/system/getty@.service.d/override.conf
become: yes
become: true
notify:
- etc changed
- systemd changed
when: auto_numlock
- name: Unset numlock on boot
file:
ansible.builtin.file:
path: /etc/systemd/system/getty@.service.d/override.conf
state: absent
become: yes
become: true
notify:
- etc changed
- systemd changed
@ -206,163 +206,163 @@
# TLP configuration
- name: Start/enable TLP
systemd:
ansible.builtin.systemd:
name: tlp
state: started
enabled: yes
become: yes
enabled: true
become: true
notify: etc changed
# Network configuration
- name: Start/enable dhcpcd
systemd:
ansible.builtin.systemd:
name: dhcpcd
state: started
enabled: yes
become: yes
enabled: true
become: true
notify: etc changed
- name: Configure wpa_supplicant
template:
ansible.builtin.template:
src: wpa_supplicant.conf.j2
dest: /etc/wpa_supplicant/wpa_supplicant.conf
notify:
- etc changed
- wpa_supplicant changed
become: yes
become: true
tags:
- wificonf
- name: Prepare directory for wpa_supplicant service override
file:
ansible.builtin.file:
path: /etc/systemd/system/wpa_supplicant@.service.d
state: directory
mode: "u=rwx,g=rx,o=rx"
become: yes
mode: u=rwx,g=rx,o=rx
become: true
- name: Make wpa_supplicant use a common configuration file
copy:
ansible.builtin.copy:
src: wpa_supplicant.service
dest: /etc/systemd/system/wpa_supplicant@.service.d/override.conf
become: yes
become: true
notify:
- etc changed
- systemd changed
- wifi setup changed
- name: Disable wpa_supplicant for networkmanager
systemd:
ansible.builtin.systemd:
name: wpa_supplicant
enabled: no
become: yes
enabled: false
become: true
notify:
- etc changed
- wifi setup changed
- name: Start/enable wpa_supplicant for interface
systemd:
name: "wpa_supplicant@{{ item }}"
enabled: yes
become: yes
ansible.builtin.systemd:
name: wpa_supplicant@{{ item }}
enabled: true
become: true
notify:
- etc changed
- wifi setup changed
loop: "{{ ansible_interfaces }}"
when: "item.startswith('wl')"
when: item.startswith('wl')
# Could probably use something better like
# listing /sys/class/ieee80211/*/device/net/
- name: Uninstall networkmanager
pacman:
community.general.pacman:
name: networkmanager
state: absent
extra_args: "--cascade --recursive"
extra_args: --cascade --recursive
when: arch_based
become: yes
become: true
notify:
- wifi setup changed
- name: Mask systemd-networkd
systemd:
ansible.builtin.systemd:
name: systemd-networkd
state: stopped
enabled: no
masked: yes
become: yes
enabled: false
masked: true
become: true
notify: etc changed
# Time synchronisation
- name: Mask systemd-timesyncd
systemd:
ansible.builtin.systemd:
name: systemd-timesyncd
state: stopped
enabled: no
masked: yes
become: yes
enabled: false
masked: true
become: true
notify: etc changed
- name: Configure chrony
copy:
ansible.builtin.copy:
src: chrony.conf
dest: /etc/chrony.conf
become: yes
become: true
notify:
- etc changed
- chrony reconfigured
# TODO More configuration, RTC configuration
- name: Enable chronyd
systemd:
ansible.builtin.systemd:
name: chronyd
enabled: yes
become: yes
enabled: true
become: true
notify:
- etc changed
- chrony reconfigured
- name: Configure dhcpcd chrony hook
copy:
ansible.builtin.copy:
src: dhcpcd.exit-hook
dest: /etc/dhcpcd.exit-hook
become: yes
become: true
notify: etc changed
- name: Empty motd
copy:
ansible.builtin.copy:
content: ""
dest: /etc/motd
mode: "u=rw,g=r,o=r"
become: yes
mode: u=rw,g=r,o=r
become: true
notify:
- etc changed
# VPN configuration
- name: Prepare directory for openvpn-client service override
file:
ansible.builtin.file:
path: /etc/systemd/system/openvpn-client@.service.d
state: directory
mode: "u=rwx,g=rx,o=rx"
become: yes
mode: u=rwx,g=rx,o=rx
become: true
- name: Make openvpn use hooks for resolvconf
copy:
ansible.builtin.copy:
src: openvpn-client.service
dest: /etc/systemd/system/openvpn-client@.service.d/override.conf
become: yes
become: true
notify:
- etc changed
- systemd changed
- name: Disable power button
lineinfile:
ansible.builtin.lineinfile:
path: /etc/systemd/logind.conf
line: 'HandlePowerKey=ignore'
regexp: '^#? *HandlePowerKey='
insertafter: '^\[Login\]$'
become: yes
line: HandlePowerKey=ignore
regexp: ^#? *HandlePowerKey=
insertafter: ^\[Login\]$
become: true
notify: systemd-logind config changed
# Reason: I sometimes press it accidentally
# (hoping to start it when it's already started,

View file

@ -1,16 +1,17 @@
---
- name: Create Termux directory
file:
ansible.builtin.file:
state: directory
path: "{{ ansible_user_dir }}/.termux"
mode: "u=rwx,g=rx,o=rx"
mode: u=rwx,g=rx,o=rx
# TODO This is a dotfiles directory.
# Make it not install unless it's Termux
- name: Silence Termux login message
file:
ansible.builtin.file:
state: file
path: "{{ ansible_user_dir }}/.hushlogin"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
# Build a single color scheme and template and assign it to a variable
- base16_builder:
@ -22,10 +23,10 @@
- color
- name: Download base16 theme for Termux
copy:
ansible.builtin.copy:
content: "{{ base16_schemes['schemes'][base16_scheme]['termux']['colors']['base16-' + base16_scheme + '.properties'] }}"
dest: "{{ ansible_env.HOME }}/.termux/colors.properties"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
tags:
- color

View file

@ -1,11 +1,12 @@
---
- name: Upgrade Neovim plugins
command: "nvim +PlugUpgrade +PlugUpdate +PlugInstall +qall!"
ansible.builtin.command: nvim +PlugUpgrade +PlugUpdate +PlugInstall +qall!
listen: nvim plugins changed
environment:
VIMINIT: "source {{ ansible_user_dir }}/.config/nvim/plugininstall.vim"
VIMINIT: source {{ ansible_user_dir }}/.config/nvim/plugininstall.vim
- name: Upgrade Vim plugins
command: "vim +PlugUpgrade +PlugUpdate +PlugInstall +qall!"
ansible.builtin.command: vim +PlugUpgrade +PlugUpdate +PlugInstall +qall!
listen: vim plugins changed
environment:
VIMINIT: "source {{ ansible_user_dir }}/.config/vim/plugininstall.vim"
VIMINIT: source {{ ansible_user_dir }}/.config/vim/plugininstall.vim

View file

@ -1,5 +1,6 @@
---
- name: Set vim variants to use
set_fact:
ansible.builtin.set_fact:
vim_variants:
- vim
- nvim
@ -7,37 +8,37 @@
# TODO Select those in a clever way
- name: Create vim configuration directory
file:
ansible.builtin.file:
state: directory
path: "{{ ansible_user_dir }}/.config/{{ item }}"
mode: "u=rwx,g=rx,o=rx"
mode: u=rwx,g=rx,o=rx
loop: "{{ vim_variants }}"
- name: Install vim-plug
get_url:
ansible.builtin.get_url:
url: https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
dest: "{{ ansible_user_dir }}/.config/vim/plug.vim"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
- name: Install loader
template:
ansible.builtin.template:
src: loader.j2
dest: "{{ ansible_user_dir }}/.config/vim/loader.vim"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
- name: Install theme
template:
ansible.builtin.template:
src: theme.j2
dest: "{{ ansible_user_dir }}/.config/vim/theme.vim"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
tags:
- color
- name: Configure vim plugin list
template:
ansible.builtin.template:
src: plugininstall.j2
dest: "{{ ansible_user_dir }}/.config/{{ variant }}/plugininstall.vim"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
notify:
- "{{ variant }} plugins changed"
loop: "{{ vim_variants }}"
@ -45,10 +46,10 @@
loop_var: variant
- name: Configure vim
template:
ansible.builtin.template:
src: init.vim.j2
dest: "{{ ansible_user_dir }}/.config/{{ variant }}/init.vim"
mode: "u=rw,g=r,o=r"
mode: u=rw,g=r,o=r
loop: "{{ vim_variants }}"
loop_control:
loop_var: variant