Added post-install config for Arch Linux
This commit is contained in:
parent
76de2ca0bf
commit
1aec6c6c05
1 changed files with 309 additions and 0 deletions
309
installation/archinstall.yml
Normal file
309
installation/archinstall.yml
Normal file
|
|
@ -0,0 +1,309 @@
|
|||
|
||||
---
|
||||
- name: Arch Linux post-install setup
|
||||
hosts: all
|
||||
become: true
|
||||
|
||||
- name: Install base packages with pacman
|
||||
pacman:
|
||||
name:
|
||||
- rsync
|
||||
- slurp
|
||||
- swayimg
|
||||
- wl-clipboard
|
||||
- meson
|
||||
- scdoc
|
||||
- alsa-utils
|
||||
- ansible
|
||||
- baresip
|
||||
- base
|
||||
- base-devel
|
||||
- bat
|
||||
- bluez
|
||||
- bluez-utils
|
||||
- calc
|
||||
- cava
|
||||
- certbot
|
||||
- certbot-nginx
|
||||
- chafa
|
||||
- darktable
|
||||
- docker
|
||||
- dunst
|
||||
- fastfetch
|
||||
- figlet
|
||||
- filezilla
|
||||
- fish
|
||||
- flatpak
|
||||
- foot
|
||||
- git
|
||||
- greetd
|
||||
- grim
|
||||
- grub
|
||||
- hypridle
|
||||
- hyprland
|
||||
- hyprlock
|
||||
- hyprpaper
|
||||
- hyprpicker
|
||||
- kitty
|
||||
- lf
|
||||
- man-db
|
||||
- man-pages
|
||||
- mpd
|
||||
- mpv
|
||||
- ncmpcpp
|
||||
- nginx
|
||||
- noto-fonts
|
||||
- noto-fonts-cjk
|
||||
- noto-fonts-emoji
|
||||
- openssh
|
||||
- pavucontrol
|
||||
- piper
|
||||
- pipewire-alsa
|
||||
- pipewire-pulse
|
||||
- qbittorrent
|
||||
- qt5-wayland
|
||||
- remmina
|
||||
- torbrowser-launcher
|
||||
- ttf-dejavu
|
||||
- ttf-liberation
|
||||
- ufw
|
||||
- unzip
|
||||
- vim
|
||||
- waybar
|
||||
- wayland
|
||||
- wayland-protocols
|
||||
- webkit2gtk
|
||||
- wget
|
||||
- whois
|
||||
- wireguard-tools
|
||||
- wl-clipboard
|
||||
- wlroots
|
||||
- wofi
|
||||
- go
|
||||
- proton-vpn-gtk-app
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: Add flathub remote if not already added
|
||||
command: flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
|
||||
args:
|
||||
creates: /var/lib/flatpak/repo/flathub.trustedkeys.gpg
|
||||
|
||||
- name: Install Flatpak applications
|
||||
become: true
|
||||
flatpak:
|
||||
name:
|
||||
- ch.threema.threema-desktop
|
||||
- com.discordapp.Discord
|
||||
- com.valvesoftware.Steam
|
||||
state: present
|
||||
method: system
|
||||
|
||||
- name: Create user directories
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/{{ item }}"
|
||||
state: directory
|
||||
mode: '0755'
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
loop:
|
||||
- downloads
|
||||
- pictures
|
||||
- music
|
||||
- desktop
|
||||
|
||||
- name: Ensure rsync is installed on target
|
||||
package:
|
||||
name: rsync
|
||||
state: present
|
||||
|
||||
|
||||
- name: Copy ~/pictures from control to target
|
||||
copy:
|
||||
src: "{{ lookup('env','HOME') }}/pictures"
|
||||
dest: "/home/{{ ansible_user }}/pictures"
|
||||
mode: '0755'
|
||||
remote_src: no
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
|
||||
- name: Set ownership of pictures directory on remote
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/pictures"
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
recurse: yes
|
||||
|
||||
|
||||
- name: Clean up /tmp directory (non-sudo, only user-owned files)
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
shell: >
|
||||
find /tmp -maxdepth 1 -user "$(whoami)" -type f -delete &&
|
||||
find /tmp -maxdepth 1 -user "$(whoami)" -type d ! -path /tmp -exec rm -rf {} +
|
||||
|
||||
- name: Remove .config directory on remote
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/.config"
|
||||
state: absent
|
||||
|
||||
- name: Recreate .config directory on target
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/.config"
|
||||
state: directory
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Remove old config tarball if it exists
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
file:
|
||||
path: /tmp/configs.tar.gz
|
||||
state: absent
|
||||
|
||||
- name: Create a tarball of contents of .config on localhost
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
shell: >
|
||||
tar czf /tmp/configs.tar.gz -C "{{ lookup('env','HOME') }}/.config" .
|
||||
|
||||
- name: Copy tarball to remote
|
||||
copy:
|
||||
src: /tmp/configs.tar.gz
|
||||
dest: /tmp/configs.tar.gz
|
||||
force: yes
|
||||
|
||||
- name: Extract config tarball on target
|
||||
unarchive:
|
||||
src: /tmp/configs.tar.gz
|
||||
dest: "/home/{{ ansible_user }}/.config"
|
||||
remote_src: yes
|
||||
extra_opts: [--no-overwrite-dir]
|
||||
|
||||
- name: Set ownership of extracted config files
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/.config"
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
recurse: yes
|
||||
|
||||
- name: Clean up /tmp directory (non-sudo, only user-owned files)
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
shell: >
|
||||
find /tmp -maxdepth 1 -user "$(whoami)" -type f -delete &&
|
||||
find /tmp -maxdepth 1 -user "$(whoami)" -type d ! -path /tmp -exec rm -rf {} +
|
||||
|
||||
- name: Remove pictures directory on remote
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/pictures"
|
||||
state: absent
|
||||
|
||||
- name: Recreate pictures directory on target
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/pictures"
|
||||
state: directory
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Remove old config tarball if it exists
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
file:
|
||||
path: /tmp/configs.tar.gz
|
||||
state: absent
|
||||
|
||||
- name: Create a tarball of contents of pictures on localhost
|
||||
delegate_to: localhost
|
||||
become: false
|
||||
shell: >
|
||||
tar czf /tmp/configs.tar.gz -C "{{ lookup('env','HOME') }}/pictures" .
|
||||
|
||||
- name: Copy tarball to remote
|
||||
copy:
|
||||
src: /tmp/configs.tar.gz
|
||||
dest: /tmp/configs.tar.gz
|
||||
force: yes
|
||||
|
||||
- name: Extract config tarball on target
|
||||
unarchive:
|
||||
src: /tmp/configs.tar.gz
|
||||
dest: "/home/{{ ansible_user }}/pictures"
|
||||
remote_src: yes
|
||||
extra_opts: [--no-overwrite-dir]
|
||||
|
||||
- name: Set ownership of extracted config files
|
||||
file:
|
||||
path: "/home/{{ ansible_user }}/pictures"
|
||||
owner: "{{ ansible_user }}"
|
||||
group: "{{ ansible_user }}"
|
||||
recurse: yes
|
||||
|
||||
- name: Copy /usr/share/fonts from control to target
|
||||
copy:
|
||||
src: "/usr/share/fonts"
|
||||
dest: "/usr/share/fonts"
|
||||
mode: '0755'
|
||||
remote_src: no
|
||||
delegate_to: localhost
|
||||
|
||||
- name: Set ownership of fonts on remote
|
||||
file:
|
||||
path: "/usr/share/fonts"
|
||||
owner: root
|
||||
group: root
|
||||
recurse: yes
|
||||
|
||||
- name: Ensure base-devel is installed
|
||||
pacman:
|
||||
name: base-devel
|
||||
state: present
|
||||
update_cache: true
|
||||
|
||||
- name: Install git
|
||||
pacman:
|
||||
name: git
|
||||
state: present
|
||||
|
||||
- name: Create AUR build user
|
||||
ansible.builtin.user:
|
||||
name: aur_builder
|
||||
create_home: yes
|
||||
group: wheel
|
||||
shell: /bin/bash
|
||||
become: yes
|
||||
|
||||
- name: Allow passwordless pacman for aur_builder
|
||||
lineinfile:
|
||||
path: /etc/sudoers.d/aur_builder
|
||||
line: 'aur_builder ALL=(ALL) NOPASSWD: /usr/bin/pacman'
|
||||
create: yes
|
||||
validate: 'visudo -cf %s'
|
||||
mode: '0644'
|
||||
become: yes
|
||||
|
||||
- name: Install yay with makepkg
|
||||
kewlfft.aur.aur:
|
||||
name: yay
|
||||
use: makepkg
|
||||
state: present
|
||||
become: yes
|
||||
become_user: aur_builder
|
||||
|
||||
- name: Install AUR packages using yay
|
||||
kewlfft.aur.aur:
|
||||
use: yay
|
||||
name:
|
||||
- cmatrix-git
|
||||
- onlyoffice-bin
|
||||
- proton-mail-bin
|
||||
- proton-pass-bin
|
||||
- tofi
|
||||
- vesktop-bin
|
||||
- vscodium-bin
|
||||
- zen-browser-bin
|
||||
- snapd
|
||||
become: true
|
||||
become_user: aur_builder
|
||||
Loading…
Reference in a new issue