# TODO For other distributions # Package are installed with --asdeps because they are needed # Etckeeper - name: Check if etckeeper is initialized stat: path: /etc/.git register: etckeeper become: yes - name: Initialize etckeeper command: "etckeeper init" become: yes when: not etckeeper.stat.exists changed_when: yes - name: Configure git user.name for etckeeper 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 # Manjaro configuration - name: Remove Manjaro's pamac pacman: name: pamac state: absent become: yes 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: 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: path: /boot/extlinux/extlinux.conf regexp: '^APPEND(.*) console=(?!tty1)\S+(.*)$' replace: 'APPEND\1\2' become: yes 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: path: /boot/extlinux/extlinux.conf regexp: '^APPEND(.*) bootsplash.bootfile=\S+(.*)$' replace: 'APPEND\1\2' become: yes when: extlinux.stat.exists # Xorg configuration - name: Check if there is nvidia-xrun is installed stat: path: /etc/X11/nvidia-xorg.conf register: nvidia_xrun when: display_server == 'x11' - name: Add nvidia-xrun xorg config directory set_fact: xorg_common_config_dirs: "{{ xorg_default_config_dirs + xorg_nvidia_config_dirs }}" vars: xorg_default_config_dirs: - /etc/X11/xorg.conf.d xorg_nvidia_config_dirs: "{{ ['/etc/X11/nvidia-xorg.conf.d'] if nvidia_xrun.stat.exists else [] }}" when: display_server == 'x11' - name: Configure Xorg keyboard layout copy: src: xorg/keyboard.conf dest: "{{ item }}/00-keyboard.conf" become: yes when: display_server == 'x11' notify: etc changed loop: "{{ xorg_common_config_dirs }}" - name: Use Alt keys for numpad patch: src: us_qwert_alt_numpad.patch dest: /usr/share/X11/xkb/symbols/us_qwerty-fr become: yes 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: path: /sys/class/backlight/intel_backlight register: intel_backlight when: display_server == 'x11' - name: Install Intel video drivers (Arch based) pacman: name: xf86-video-intel # state: "{{ intel_backlight.stat.exists }}" state: present become: yes 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: src: xorg/intel_backlight.conf dest: "{{ item }}/20-intel_backlight.conf" become: yes when: display_server == 'x11' and intel_backlight.stat.exists notify: etc changed loop: "{{ xorg_common_config_dirs }}" - name: Configure Xorg touchpad behaviour copy: src: xorg/touchpad.conf dest: "{{ item }}/30-touchpad.conf" become: yes when: display_server == 'x11' notify: etc changed loop: "{{ xorg_common_config_dirs }}" - name: Configure Xorg joystick behaviour copy: src: xorg/joystick.conf dest: "{{ item }}/50-joystick.conf" become: yes when: display_server == 'x11' notify: etc changed loop: "{{ xorg_common_config_dirs }}" - name: List modules we're using 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: path: /etc/environment line: 'PAN_MESA_DEBUG="gl3"' regexp: '^#? ?PAN_MESA_DEBUG=' become: yes when: display_server and using_panfrost vars: using_panfrost: "{{ 'panfrost' in (modules.content | b64decode) }}" notify: panfrost config changed # Numlock on boot - name: set numlock on boot copy: src: getty.service dest: /etc/systemd/system/getty@.service.d/override.conf become: yes notify: - etc changed - systemd changed when: auto_numlock - name: Unset numlock on boot file: path: /etc/systemd/system/getty@.service.d/override.conf state: absent become: yes notify: - etc changed - systemd changed when: not auto_numlock # TLP configuration - name: Start/enable TLP systemd: name: tlp state: started enabled: yes become: yes notify: etc changed # Network configuration - name: Start/enable dhcpcd systemd: name: dhcpcd state: started enabled: yes become: yes notify: etc changed - name: Configure wpa_supplicant template: src: wpa_supplicant.conf.j2 dest: /etc/wpa_supplicant/wpa_supplicant.conf notify: - etc changed - wpa_supplicant changed become: yes tags: - wificonf - name: Prepare directory for wpa_supplicant service override file: path: /etc/systemd/system/wpa_supplicant@.service.d state: directory mode: "u=rwx,g=rx,o=rx" become: yes - name: Make wpa_supplicant use a common configuration file copy: src: wpa_supplicant.service dest: /etc/systemd/system/wpa_supplicant@.service.d/override.conf become: yes notify: - etc changed - systemd changed - wifi setup changed - name: Disable wpa_supplicant for networkmanager systemd: name: wpa_supplicant enabled: no become: yes notify: - etc changed - wifi setup changed - name: Start/enable wpa_supplicant for interface systemd: name: "wpa_supplicant@{{ item }}" enabled: yes become: yes notify: - etc changed - wifi setup changed loop: "{{ ansible_interfaces }}" when: "item.startswith('wl')" # Could probably use something better like # listing /sys/class/ieee80211/*/device/net/ - name: Uninstall networkmanager pacman: name: networkmanager state: absent extra_args: "--cascade --recursive" when: arch_based become: yes notify: - wifi setup changed # Time synchronisation - name: Mask systemd-timesyncd systemd: name: systemd-timesyncd state: stopped enabled: no masked: yes become: yes notify: etc changed when: arch_based - name: Configure chrony copy: src: chrony.conf dest: /etc/chrony.conf become: yes notify: - etc changed - chrony reconfigured # TODO More configuration, RTC configuration - name: Enable chronyd systemd: name: chronyd enabled: yes become: yes notify: - etc changed - chrony reconfigured - name: Configure dhcpcd chrony hook copy: src: dhcpcd.exit-hook dest: /etc/dhcpcd.exit-hook become: yes notify: etc changed # TODO Hibernation, if that's relevant # $ sudo blkid | grep 'TYPE="swap"' # $ sudoedit /etc/default/grub # Add resume=UUID= to GRUB_CMDLINE_LINUX_DEFAULT # $ sudo grub-mkconfig -o /boot/grub/grub.cfg