--- - name: Enable wake-on-lan for all ethernet connections ansible.builtin.copy: dest: /etc/NetworkManager/conf.d/wake-on-lan.conf mode: '0644' content: | [connection] ethernet.wake-on-lan=64 - name: Prepare directory for apt-daily override ansible.builtin.file: path: /etc/systemd/system/apt-daily.timer.d/ mode: '0755' state: directory - name: Run apt update early to avoid outdated package lists ansible.builtin.copy: dest: /etc/systemd/system/apt-daily.timer.d/override.conf mode: '0644' content: | [Timer] RandomizedDelaySec=30m # Avoid suspend - name: Create directory to avoid suspend ansible.builtin.file: path: /etc/systemd/sleep.conf.d/ state: directory mode: '0755' when: misc_avoid_suspend - name: Avoid suspending ansible.builtin.blockinfile: path: /etc/systemd/sleep.conf.d/nosuspend.conf create: true mode: '0644' block: | [Sleep] AllowSuspend=no AllowHibernation=no AllowSuspendThenHibernate=no AllowHybridSleep=no when: misc_avoid_suspend # Auto Poweroff - name: Copy pwroff script ansible.builtin.copy: src: pwroff dest: /usr/local/sbin/ mode: '0755' - name: Provide services and timers for pwroff ansible.builtin.copy: src: "{{ item }}" dest: "/etc/systemd/system/{{ item }}" mode: '0644' loop: - pwroff.service - pwroff.timer when: misc_pwroff - name: Enable pwroff.timer ansible.builtin.systemd: name: pwroff.timer enabled: true when: misc_pwroff # Shut down when idle for too long - name: Shut down when idle for too long ansible.builtin.copy: dest: /etc/xdg/powermanagementprofilesrc mode: '0644' content: | [AC][SuspendSession] idleTime=7200000 suspendType=8 when: misc_pwroff_idle # Boot splash - name: Enable boot splash screen ansible.builtin.replace: dest: "/etc/default/grub" regexp: '"quiet"$' replace: '"quiet splash"' notify: Run update-grub # Grub settings - name: Protect editing grub menu entries ansible.builtin.blockinfile: path: /etc/grub.d/40_custom block: | set superusers='root' export superusers password_pbkdf2 root {{ grub_pwd }} notify: Run update-grub when: grub_pwd|default(false) - name: Allow booting grub menu entries ansible.builtin.lineinfile: dest: /etc/grub.d/10_linux line: CLASS="${CLASS} --unrestricted" insertafter: '^CLASS=.*' firstmatch: true notify: Run update-grub - name: Disable Grub submenus ansible.builtin.lineinfile: dest: /etc/default/grub line: 'GRUB_DISABLE_SUBMENU=true' insertafter: '^GRUB_TIMEOUT=.*' notify: Run update-grub - name: Grub timeout ansible.builtin.lineinfile: dest: /etc/default/grub regexp: '^(GRUB_TIMEOUT=).*' line: '\g<1>1' backrefs: true notify: Run update-grub # PXE first boot order - name: Copy some scripts ansible.builtin.copy: src: bootorder.sh dest: /usr/local/sbin/ mode: '0755' when: misc_pxe_first - name: PXE first boot order ansible.builtin.command: /usr/local/sbin/bootorder.sh register: cmd_result changed_when: cmd_result.stdout is not search('Nothing to do.') when: misc_pxe_first # Disable Caps Lock - name: Keyboard compose key ansible.builtin.lineinfile: dest: /etc/default/keyboard regexp: '^(XKBOPTIONS=).*' line: '\1"compose:caps"' backrefs: true # Activate unattended upgrades - name: Install unattended-upgrades ansible.builtin.apt: name: - unattended-upgrades - name: Update all packages unattended ansible.builtin.replace: path: /etc/apt/apt.conf.d/50unattended-upgrades regexp: '^//(\s+"origin=.+-updates";)$' replace: ' \1' # Install reporter - name: Copy reporter ansible.builtin.template: src: reporter.j2 dest: /usr/local/sbin/reporter mode: '0755' - name: Provide services and timers for reporter ansible.builtin.copy: src: "{{ item }}" dest: "/etc/systemd/system/{{ item }}" mode: '0644' loop: - reporter.service - reporter.timer when: misc_reporter - name: Enable reporter.timer ansible.builtin.systemd: name: reporter.timer enabled: true when: misc_reporter # Prepare CloneScreen on Presenter PCs - name: Fix primary screen for class room PCs with projector when: misc_clonescreen block: - name: Set primary screen for login ansible.builtin.blockinfile: path: /usr/share/sddm/scripts/Xsetup block: | xrandr --output {{ dual_screen[0] }} --primary when: dual_screen is defined - name: Reset primary screen for login ansible.builtin.blockinfile: path: /usr/share/sddm/scripts/Xsetup state: absent when: dual_screen is not defined - name: Deploy fix-screen script ansible.builtin.template: src: lmn-fix-screen.j2 dest: /usr/local/bin/lmn-fix-screen mode: '0755' - name: Deploy fix-screen autostarter ansible.builtin.copy: dest: /etc/xdg/autostart/lmn-fix-screen.desktop mode: '0644' content: | [Desktop Entry] Name=fix-screen Exec=lmn-fix-screen Type=Application NoDisplay=true