Files
Workstation_Arch_Hyprland/local.yml

349 lines
12 KiB
YAML

---
- name: "Konfigurer Stargate: Atlantis Hyprland Desktop"
hosts: localhost
connection: local
become: true # De fleste opgaver kræver root
# Definer variabler for at gøre playbook'en genbrugelig
vars:
vault_username: !vault |
$ANSIBLE_VAULT;1.1;AES256
61396435643466353531373139343364613266303130323533306461316333313631363130373465
6632663034376535663566353661366132656539326566320a323734313061303131623962303339
66333664613636653362316133666561353039623961393930346661613064306234326161343030
3335353266393066320a336233366636633566363566613866613263303362656464353166346237
3236
username: "{{ vault_username }}" # ERSTAT med det brugernavn du oprettede i Arch-installationen.
# Hvis du ikke har brug for at kryptere dit brugernavn kan du skrive det direkte i her.
aur_helper: "yay" # Vi bruger yay til AUR pakker
tasks:
- name: "SYSTEM :: Opdater systemet"
community.general.pacman:
update_cache: true
upgrade: true
- name: "SYSTEM :: Installer AUR helper ({{ aur_helper }})"
block:
- name: "Installer base-devel og git"
community.general.pacman:
name:
- base-devel
- git
state: present
- name: "Klon, byg og installer {{ aur_helper }}"
become: true
become_user: "{{ username }}"
ansible.builtin.shell: |
cd /tmp
git clone https://aur.archlinux.org/{{ aur_helper }}.git
cd {{ aur_helper }}
makepkg -si --noconfirm
args:
creates: "/usr/bin/{{ aur_helper }}"
- name: "PAKKER :: Installer alle nødvendige pakker fra Pacman og AUR"
become: true
become_user: "{{ username }}"
kewlfft.aur.aur:
use: "{{ aur_helper }}"
name:
# Hyprland og Wayland
- hyprland
- xdg-desktop-portal-hyprland
- kitty # Terminal
- waybar # Statuslinje
- wofi # App starter
- mako # Notifikationer
- swaybg # Baggrund
- polkit-kde-agent
- qt5-wayland
- qt6-wayland
# Skrifttyper & Tema
- ttf-font-awesome
- ttf-jetbrains-mono-nerd
- noto-fonts
# Værktøjer
- grim # Screenshot værktøj
- slurp # Område-vælger til screenshots
- network-manager-applet # Til Waybar tray
- hyprpaper
- sddm # Login Manager
- firefox # Browser
- flatpak
- vscodium # Udviklings editor
- papyrus-icon-theme # Ikon tema til wofi drun
- thunar
- thunar-volman
- tumbler
- gvfs
- ranger
- less
- sof-firmware
- pavucontrol
- pipewire
- pipewire-pulse
- pipewire-audio
- pipewire-alsa
- wireplumber
- alsa-utils
- neofetch
- swayidle
- swaylock-effects
- iptables-nft
- sddm-sugar-candy-git
- ufw # Firewall
state: present
- name: "KEYBINDING SCRIPT :: Opret .local/bin mappe til brugerdefinerede scripts"
become: true
become_user: "{{ username }}"
ansible.builtin.file:
path: "/home/{{ username }}/.local/bin"
state: directory
mode: '0755'
- name: "BRUGER :: Opret konfigurationsmapper"
become: true
become_user: "{{ username }}"
ansible.builtin.file:
path: "/home/{{ username }}/.config/{{ item }}"
state: directory
mode: '0755'
loop:
- hypr
- kitty
- waybar
- mako
- wofi
- name: "DOTFILES :: Kopier skabeloner til brugerens .config"
become: true
become_user: "{{ username }}"
ansible.builtin.template:
src: "templates/{{ item.src }}"
dest: "/home/{{ username }}/.config/{{ item.dest }}"
mode: '0644'
loop:
- { src: 'hyprland.conf.j2', dest: 'hypr/hyprland.conf' }
- { src: 'kitty.conf.j2', dest: 'kitty/kitty.conf' }
- { src: 'waybar-config.j2', dest: 'waybar/config' }
- { src: 'waybar-style.css.j2', dest: 'waybar/style.css' }
- { src: 'wofi-config.j2', dest: 'wofi/config' }
- { src: 'wofi-style.css.j2', dest: 'wofi/style.css' }
- { src: 'wofi-config-network.j2', dest: 'wofi/config-network'}
- name: "SCRIPTS :: Kopier og gør brugerdefinerede scripts eksekverbare"
become: true
become_user: "{{ username }}"
ansible.builtin.template:
src: "templates/{{ item.src }}"
dest: "/home/{{ username }}/.local/bin/{{ item.dest }}"
mode: '0755' # Bemærk: '755' gør dem eksekverbare
loop:
- { src: 'hypr-keys.sh.j2', dest: 'hypr-keys.sh' }
- { src: 'launch-wofi.sh.j2', dest: 'launch_wofi.sh' }
- { src: 'launch-wifi-menu.sh.j2', dest: 'launch-wifi-menu.sh' }
- { src: 'lock-screen.sh.j2', dest: 'lock-screen.sh' }
- name: "TEMA :: Installer Atlantis skrifttype"
ansible.builtin.copy:
src: "files/fonts/"
dest: "/home/{{ username }}/.local/share/fonts/"
mode: '0644'
notify: Opdater font cache
- name: "BRUGER :: Opret Pictures-mappen"
become: true
become_user: "{{ username }}"
ansible.builtin.file:
path: "/home/{{ username }}/Pictures"
state: directory
mode: '0755'
- name: "TEMA :: Kopier Atlantis baggrundsbillede"
become: true
become_user: "{{ username }}"
ansible.builtin.copy:
src: "files/wallpapers/atlantis_wallpaper.jpg"
dest: "/home/{{ username }}/Pictures/atlantis-wallpaper.jpg"
mode: '0644'
- name: "TEMA :: Kopier Atlantis baggrundsbillede"
become: true
become_user: "{{ username }}"
ansible.builtin.copy:
src: "files/wallpapers/atlantis_spaceship.jpg"
dest: "/usr/share/backgrounds/atlantis-spaceship.jpg"
mode: '0644'
- name: "TEMA :: Kopier hyprpaper konfiguration"
become: true
become_user: "{{ username }}"
ansible.builtin.template:
src: "templates/hyprpaper.conf.j2"
dest: "/home/{{ username }}/.config/hypr/hyprpaper.conf"
mode: '0644'
- name: "STYLING :: Opret mappe til SDDM-konfiguration"
become: true
ansible.builtin.file:
path: /etc/sddm.conf.d
state: directory
mode: '0755'
- name: "STYLING :: Konfigurer SDDM til at bruge Sugar Candy temaet"
become: true
ansible.builtin.copy:
dest: /etc/sddm.conf.d/theme.conf
content: |
# ===== SDDM Konfiguration - Stargate Atlantis Tema =====
# Denne fil overskriver standard-indstillingerne for Sugar Candy-temaet.
[Theme]
# Fortæller SDDM hvilket tema der skal bruges
Current=sugar-candy
[General]
# Sætter det generelle baggrundsbillede
background=/usr/share/backgrounds/sddm-wallpaper.jpg
[Blur Settings]
# Aktiverer den slørede "frosted glass" effekt KUN for login-boksen
PartialBlur=true
# Styrken af blur-effekten (højere tal = mere sløret)
BlurRadius=100
# Sektionen til tema-specifikke farver og layout, som du fandt!
[Design Customizations]
# Viser en baggrundsplade bag selve login-felterne (nødvendigt for blur)
HaveFormBackground=true
# Placerer login-boksen i midten
FormPosition=center
# Afrundede hjørner, der matcher resten af dit tema
RoundCorners=5
# Farver baseret på dit Atlantis-tema
# Farven på tekst, ur og inaktive elementer
MainColor=#cad3f5
# Farven på den aktive ring, knapper ved hover, etc.
AccentColor=#74c7ec
# Farven på selve login-boksen. De sidste to tegn (E6) er gennemsigtighed.
BackgroundColor=#24273aE6
mode: '0644'
- name: "FIREWALL :: Konfigurer UFW's standardpolitikker"
tags: firewall
block:
- name: "Sæt standard for indgående trafik til 'deny'"
community.general.ufw:
policy: deny
direction: incoming
- name: "Sæt standard for udgående trafik til 'allow'"
community.general.ufw:
policy: allow
direction: outgoing
# Hvis du har brug for ssh så tilføj følgende regel og tilføj OpenSSH til installations listen
# - name: "FIREWALL :: Tillad SSH-forbindelser (vigtigt for fjernadgang)"
# community.general.ufw:
# rule: allow
# name: OpenSSH # Bruger UFW's applikationsprofil for SSH
# tags: firewall
- name: "FLATPAK :: Installer LibreOffice"
become: true
become_user: "{{ username }}"
community.general.flatpak:
name: org.libreoffice.LibreOffice
state: present
- name: "SHELL :: Tilføj neofetch til .bashrc for automatisk kørsel"
become: true
become_user: "{{ username }}"
ansible.builtin.blockinfile:
path: "/home/{{ username }}/.bashrc"
create: true # Opretter .bashrc filen, hvis den ikke findes
owner: "{{ username }}"
group: "{{ username }}"
mode: '0644'
marker: "# {mark} ANSIBLE MANAGED BLOCK - NEOFETCH"
block: |
# Kør neofetch når en ny interaktiv terminal åbnes
# Tjekker om 'neofetch' kommandoen eksisterer først
if command -v neofetch &> /dev/null
then
neofetch
fi
- name: "FIREWALL :: Aktiver og start UFW service"
community.general.ufw:
state: enabled # Dette aktiverer firewallen, så den starter ved boot
tags: firewall
- name: "SERVICES :: Aktiver NetworkManager"
ansible.builtin.systemd:
name: NetworkManager
enabled: true
state: started
- name: "SERVICES :: Aktiver Display Manager (SDDM)"
ansible.builtin.systemd:
name: sddm.service
enabled: true
- name: "STYLING :: Opret GTK3 konfigurationsmappe"
become: true
become_user: "{{ username }}"
ansible.builtin.file:
path: "/home/{{ username }}/.config/gtk-3.0"
state: directory
mode: '0755'
- name: "STYLING :: Sæt GTK-tema og Papirus som standard ikon-tema"
become: true
become_user: "{{ username }}"
ansible.builtin.copy:
dest: "/home/{{ username }}/.config/gtk-3.0/settings.ini"
content: |
[Settings]
gtk-theme-name=Adwaita
gtk-icon-theme-name=Papirus
gtk-font-name=JetBrains Mono 11
gtk-cursor-theme-name=Adwaita
mode: '0644'
- name: "HARDWARE :: Detekter om systemet har Intel GPU"
become: true
ansible.builtin.shell: "lspci | grep -i 'VGA' | grep -i 'Intel'"
register: intel_gpu_check
changed_when: false
failed_when: false
- name: "KERNEL :: Deaktiver Panel Self Refresh (kun for Intel GPU)"
become: true
ansible.builtin.lineinfile:
path: /etc/default/grub
regexp: '^(GRUB_CMDLINE_LINUX_DEFAULT="((?!i915\.enable_psr=0).)*?)"$'
line: '\1 i915.enable_psr=0"'
backrefs: yes
notify: Regenerate GRUB config
when: intel_gpu_check.rc == 0
# Handlers køres kun hvis en opgave 'notifierer' dem
handlers:
- name: Regenerate GRUB config
become: true
ansible.builtin.command: grub-mkconfig -o /boot/grub/grub.cfg
- name: Opdater font cache
ansible.builtin.command: fc-cache -fv
become: true
become_user: "{{ username }}"
changed_when: false