summaryrefslogtreecommitdiffstats
path: root/molecule
diff options
context:
space:
mode:
Diffstat (limited to 'molecule')
-rw-r--r--molecule/archlinux-gnome/Dockerfile.j223
-rw-r--r--molecule/archlinux-gnome/converge.yml76
-rw-r--r--molecule/archlinux-gnome/molecule.yml51
-rw-r--r--molecule/archlinux/converge.yml2
4 files changed, 150 insertions, 2 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
diff --git a/molecule/archlinux/converge.yml b/molecule/archlinux/converge.yml
index 25cd96ca..56d52922 100644
--- a/molecule/archlinux/converge.yml
+++ b/molecule/archlinux/converge.yml
@@ -62,7 +62,6 @@
- role: "nginx"
- role: "prometheus"
- role: "grafana"
- - role: "gnome"
- role: "rsync"
- role: "gpg"
- role: "dotfiles"
@@ -74,5 +73,4 @@
- role: "fonts"
- role: "alacritty"
- role: "ghostty"
- - role: "cage"
- role: "hyprland"