--- - name: "Detect NVIDIA driver" ansible.builtin.command: cmd: "modinfo nvidia" register: "hyprland_nvidia_detected" changed_when: false failed_when: false - name: "Ensure hyprland packages are installed" become: true ansible.builtin.package: name: - "swaybg" - "hyprlock" - "hypridle" - "hyprpicker" - "hyprsunset" - "hyprshot" - "satty" - "hyprland" - "kanshi" state: "present" - name: "Ensure hyprland AUR packages are installed" become: true become_user: "aur_builder" kewlfft.aur.aur: name: "{{ item }}" state: "present" use: "yay" loop: - "hyprshutdown" - name: "Configure greetd" become: true ansible.builtin.copy: dest: "/etc/greetd/config.toml" owner: "greeter" group: "greeter" mode: "0644" content: | [terminal] vt = 2 [default_session] command = "tuigreet -c 'uwsm start hyprland.desktop' --theme=border=cyan" user = "greeter" notify: - "Restart greetd" - name: "Create config directories" become: true ansible.builtin.file: path: "{{ item }}" state: "directory" mode: "0755" loop: - "/etc/hypr" - "/etc/hypr/scripts" - "/etc/xdg/uwsm" - "/etc/xdg/xdg-desktop-portal" - "/etc/xdg/kanshi" - "{{ ansible_facts['env']['HOME'] }}/.config/hypr" - "{{ ansible_facts['env']['HOME'] }}/.config/kanshi" - name: "Configure system defaults" become: true ansible.builtin.template: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "0644" loop: - src: "hypr/autostart.conf.j2" dest: "/etc/hypr/autostart.conf" - src: "hypr/monitors.conf.j2" dest: "/etc/hypr/monitors.conf" - src: "hypr/input.conf.j2" dest: "/etc/hypr/input.conf" - src: "hypr/bindings.conf.j2" dest: "/etc/hypr/bindings.conf" - src: "hypr/looknfeel.conf.j2" dest: "/etc/hypr/looknfeel.conf" - src: "hypr/rules.conf.j2" dest: "/etc/hypr/rules.conf" - src: "hypr/hyprlock.conf.j2" dest: "/etc/hypr/hyprlock.conf" - src: "hypr/hypridle.conf.j2" dest: "/etc/hypr/hypridle.conf" - src: "hypr/hyprland.conf.j2" dest: "/etc/hypr/hyprland.conf" - src: "hypr/kanshi.conf.j2" dest: "/etc/xdg/kanshi/config" - src: "uwsm/env.j2" dest: "/etc/xdg/uwsm/env" - src: "uwsm/env-hyprland.j2" dest: "/etc/xdg/uwsm/env-hyprland" - src: "xdg-desktop-portal/portals.conf.j2" dest: "/etc/xdg/xdg-desktop-portal/portals.conf" - name: "Configure user defaults" block: - name: "Configure user hyprland configuration" ansible.builtin.blockinfile: path: "{{ ansible_facts['env']['HOME'] }}/.config/hypr/hyprland.conf" state: "present" prepend_newline: true append_newline: true marker: "# ==== {mark} ANSIBLE HYPRLAND CONFIG" block: | # System defaults source = /etc/hypr/hyprland.conf - name: "Configure user hypridle configuration" ansible.builtin.blockinfile: path: "{{ ansible_facts['env']['HOME'] }}/.config/hypr/hypridle.conf" state: "present" prepend_newline: true append_newline: true marker: "# ==== {mark} ANSIBLE HYPRLAND CONFIG" block: | # System defaults source = /etc/hypr/hypridle.conf - name: "Configure user kanshi configuration" ansible.builtin.blockinfile: path: "{{ ansible_facts['env']['HOME'] }}/.config/kanshi/config" state: "present" prepend_newline: true append_newline: true marker: "# ==== {mark} ANSIBLE KANSHI CONFIG" block: | # System defaults include /etc/xdg/kanshi/config - name: "Copy hyprland scripts" become: true ansible.builtin.copy: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "0755" loop: - src: "scripts/brightness.sh" dest: "/etc/hypr/scripts/brightness.sh" - src: "scripts/volume.sh" dest: "/etc/hypr/scripts/volume.sh" - src: "scripts/sunset.sh" dest: "/etc/hypr/scripts/sunset.sh" - src: "scripts/wifi.sh" dest: "/etc/hypr/scripts/wifi.sh" - src: "scripts/bluetooth.sh" dest: "/etc/hypr/scripts/bluetooth.sh" - src: "scripts/power.sh" dest: "/etc/hypr/scripts/power.sh" - src: "scripts/screenshot.sh" dest: "/etc/hypr/scripts/screenshot.sh"