summaryrefslogtreecommitdiffstats
path: root/molecule/archlinux-gnome
diff options
context:
space:
mode:
authorAhmed AbdelHalim <[email protected]>2025-12-13 15:04:29 +0100
committerAhmed AbdelHalim <[email protected]>2025-12-13 15:08:31 +0100
commit82c9572d74cea544db2f302cf3fca2c70390be62 (patch)
tree0df63bbad81508d954781d738f18ba15cb8ba5ab /molecule/archlinux-gnome
parent272e7fbd211c9b5d88d22a2a625e86318063fdfb (diff)
Fix testing archlinux (gnome/hyprland conflict)
Since the setup is intended to use either gnome or hyprland on archlinux but not both on the same machine to avoid complicated and unexpected behavior. This splits the testing of archlinux into 2 different branches for each of the desktop environments
Diffstat (limited to 'molecule/archlinux-gnome')
-rw-r--r--molecule/archlinux-gnome/Dockerfile.j223
-rw-r--r--molecule/archlinux-gnome/converge.yml76
-rw-r--r--molecule/archlinux-gnome/molecule.yml51
3 files changed, 150 insertions, 0 deletions
diff --git a/molecule/archlinux-gnome/Dockerfile.j2 b/molecule/archlinux-gnome/Dockerfile.j2
new file mode 100644
index 00000000..3dc35f2d
--- /dev/null
+++ b/molecule/archlinux-gnome/Dockerfile.j2
@@ -0,0 +1,23 @@
+FROM docker.io/library/archlinux
+
+ENV container docker
+
+RUN pacman -Syu --noconfirm --needed python3 systemd udev \
+ && pacman -Scc --noconfirm
+
+RUN (cd /lib/systemd/system/sysinit.target.wants/; \
+ for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
+ rm -f /lib/systemd/system/multi-user.target.wants/*;\
+ rm -f /etc/systemd/system/*.wants/*;\
+ rm -f /lib/systemd/system/local-fs.target.wants/*; \
+ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
+ rm -f /lib/systemd/system/basic.target.wants/*;\
+ rm -f /lib/systemd/system/anaconda.target.wants/*;
+
+# Workaround archlinux not including any non-indo-european locales
+# https://gitlab.archlinux.org/archlinux/archlinux-docker/-/issues/59
+RUN cp -r /usr/share/i18n/locales/en_US /usr/share/i18n/locales/de_DE;
+
+VOLUME ["/sys/fs/cgroup"]
+
+CMD ["/lib/systemd/systemd"]
diff --git a/molecule/archlinux-gnome/converge.yml b/molecule/archlinux-gnome/converge.yml
new file mode 100644
index 00000000..c8a6c9ed
--- /dev/null
+++ b/molecule/archlinux-gnome/converge.yml
@@ -0,0 +1,76 @@
+---
+- name: "Bootstrap"
+ hosts: "archlinux-gnome"
+ gather_facts: true
+ environment:
+ PATH: "{{ ansible_env.HOME }}/.local/bin:{{ ansible_env.PATH }}"
+ vars:
+ ansible_become_method: su
+ user_public_keys:
+ - "ssh-ed25519 AAAA...fMo"
+ - "ssh-rsa AAAA...4I3"
+ user_groups: ["wheel", "test_group"]
+ roles:
+ - role: "hostname"
+ - role: "network"
+ - role: "user"
+ - role: "ssh"
+ - role: "password_policy"
+ tasks:
+ - name: "Configure passwordless sudo for testing"
+ ansible.builtin.copy:
+ content: "%test_group ALL=(ALL) NOPASSWD: ALL\n"
+ dest: "/etc/sudoers.d/test_group"
+ mode: "0440"
+ validate: 'visudo -cf %s'
+
+- name: "Configure"
+ hosts: "archlinux-gnome"
+ gather_facts: true
+ remote_user: "{{ username }}"
+ environment:
+ PATH: "{{ ansible_env.HOME }}/.local/bin:{{ ansible_env.PATH }}"
+ vars:
+ ansible_become_method: sudo
+ ansible_is_chroot: false
+ locales:
+ - "en_US.UTF-8 UTF-8"
+ timezone: "GMT"
+ wireguard_autostart_connection: ""
+ gateway_enabled: true
+ gateway_local_ipv4_subnet: "10.0.0.0/24"
+ python_global_version: "3.13"
+ python_versions:
+ - "3.13"
+ vimrc_repo_url: "https://git.sr.ht/~a14m/.vim"
+ password_store_repo_url: "https://github.com/octocat/Spoon-Knife"
+ firefox_install_browserpass: true
+ firefox_install_passff: true
+ roles:
+ - role: "locales"
+ - role: "timezone"
+ - role: "jq"
+ - role: "yay"
+ - role: "wireguard"
+ - role: "gateway"
+ - role: "python"
+ - role: "go"
+ - role: "rust"
+ - role: "docker"
+ - role: "podman"
+ - role: "ansible"
+ - role: "nginx"
+ - role: "prometheus"
+ - role: "grafana"
+ - role: "gnome"
+ - role: "rsync"
+ - role: "gpg"
+ - role: "dotfiles"
+ - role: "vim"
+ - role: "neomutt"
+ - role: "password_store"
+ - role: "which"
+ - role: "firefox"
+ - role: "fonts"
+ - role: "alacritty"
+ - role: "ghostty"
diff --git a/molecule/archlinux-gnome/molecule.yml b/molecule/archlinux-gnome/molecule.yml
new file mode 100644
index 00000000..67532576
--- /dev/null
+++ b/molecule/archlinux-gnome/molecule.yml
@@ -0,0 +1,51 @@
+---
+role_name_check: 1
+dependency:
+ name: galaxy
+ options:
+ requirements-file: ../../requirements.yml
+ ignore-errors: true
+driver:
+ name: podman
+platforms:
+ - name: archlinux-gnome
+ image: archlinux
+ dockerfile: Dockerfile.j2
+ platform: "linux/amd64"
+ pre_build_image: false
+ privileged: true
+ command: ${MOLECULE_COMMAND:-"/lib/systemd/systemd"}
+ tmpfs:
+ "/tmp": "rw"
+ "/run": "rw,exec"
+ volumes:
+ - "/sys/fs/cgroup:/sys/fs/cgroup:rw"
+ cgroupns_mode: host
+
+provisioner:
+ name: ansible
+ inventory:
+ links:
+ host_vars: "../../host_vars/"
+ group_vars: "../../group_vars/"
+ env:
+ ANSIBLE_ROLES_PATH: "../../roles"
+ config_options:
+ defaults:
+ callback_result_format: yaml
+ interpreter_python: /usr/bin/python3
+ ssh_connection:
+ pipelining: true
+ playbooks:
+ converge: converge.yml
+verifier:
+ name: ansible
+
+scenario:
+ test_sequence:
+ - destroy
+ - syntax
+ - create
+ - converge
+ - idempotence
+ - destroy