{"id":20428334,"url":"https://github.com/rodolpheche/archlinux-workstation","last_synced_at":"2025-10-24T21:16:08.880Z","repository":{"id":112983167,"uuid":"239382536","full_name":"rodolpheche/archlinux-workstation","owner":"rodolpheche","description":"Project to setup Archlinux OS with Ansible on my workstation","archived":false,"fork":false,"pushed_at":"2023-10-03T20:32:17.000Z","size":186,"stargazers_count":3,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-26T13:45:32.806Z","etag":null,"topics":["ansible","archlinux","bootstrap","packer","qemu"],"latest_commit_sha":null,"homepage":"","language":"Jinja","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rodolpheche.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-09T22:14:50.000Z","updated_at":"2023-05-17T11:21:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"52710916-e8ea-4fcd-b901-44c2062c5d9c","html_url":"https://github.com/rodolpheche/archlinux-workstation","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodolpheche%2Farchlinux-workstation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodolpheche%2Farchlinux-workstation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodolpheche%2Farchlinux-workstation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rodolpheche%2Farchlinux-workstation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rodolpheche","download_url":"https://codeload.github.com/rodolpheche/archlinux-workstation/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248619282,"owners_count":21134386,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","archlinux","bootstrap","packer","qemu"],"created_at":"2024-11-15T07:25:18.695Z","updated_at":"2025-10-24T21:16:03.817Z","avatar_url":"https://github.com/rodolpheche.png","language":"Jinja","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Archlinux Workstation\n\nProject to setup Archlinux OS on my workstation.\n\nFeel free to fork and custom it for your needs.\n\n## Summary\n\n\u003c!-- TOC --\u003e\n\n- [Summary](#summary)\n- [The stack](#the-stack)\n- [Getting started](#getting-started)\n    - [Requirements](#requirements)\n    - [Test on a local qemu VM](#test-on-a-local-qemu-vm)\n        - [Build image](#build-image)\n        - [Test base image](#test-base-image)\n        - [Test final image](#test-final-image)\n    - [Provision workstation](#provision-workstation)\n        - [Burn USB live iso](#burn-usb-live-iso)\n        - [Prepare workstation](#prepare-workstation)\n        - [Provision](#provision)\n            - [Init](#init)\n            - [Setup](#setup)\n\n\u003c!-- /TOC --\u003e\n\n## The stack\n\n- Core\n  - kernel: Linux lts\n  - crypted partition: LUKS\n  - partition: gpt\n  - filesystem: ext4\n  - boot: uefi\n  - boot manager: systemd-boot\n  - network: systemd-networkd / systemd-resolved / iwd\n  - init: systemd\n  - sound: pulseaudio\n  - bluetooth: bluez\n- Display\n  - server: Xorg\n  - desktop: i3\n  - lock: i3lock\n  - menu: rofi\n- GUI\n  - terminal: alacritty / tmux\n  - browser: brave\n  - file explorer: thunar\n  - image viewer: feh\n  - video player: vlc\n  - archive manager: file-roller\n- Dev\n  - git\n  - rust\n  - nasm\n  - jdk11\n  - maven\n  - nvm / npm / node\n  - yarn\n  - code\n- Ops\n  - qemu\n  - edk2-ovmf\n  - libvirt\n  - libguestfs\n  - virt-manager\n  - virt-viewer\n  - qemu\n  - packer\n  - terraform\n  - ansible\n  - docker / docker-compose\n\n## Getting started\n\n### Requirements\n\n- packer\n- qemu\n- qemu-ui-gtk\n- edk2-ovmf\n- ansible\n- sshpass\n- python-passlib\n\n### Test on a local qemu VM\n\n#### Build image\n\nThis is based on the [qemu](https://www.packer.io/plugins/builders/qemu) Packer builder\n\nIf the file `/usr/share/edk2-ovmf/x64/OVMF.fd` doesn't exist on your system, find its right location, then adapt the `firwmare` path in the `config.pkr.hcl` file.\n\nThen, build the qcow images with command:\n\n```bash\npacker build -force -parallel-builds=1 .\n```\n\n\u003e 2 qcow images should be generated at `dist/base/archlinux-workstation` and `dist/final/archlinux-workstation`\n\n#### Test base image\n\nIf the file `/usr/share/edk2-ovmf/x64/OVMF.fd` doesn't exist on your system, find its right location, then adapt the `bios` path in the command below.\n\n```bash\nqemu-system-x86_64 \\\n  -enable-kvm \\\n  -cpu host \\\n  -smp 4 \\\n  -m 8192M \\\n  -bios /usr/share/edk2-ovmf/x64/OVMF.fd \\\n  -device virtio-vga-gl \\\n  -display gtk,gl=on \\\n  -device virtio-net,netdev=net0 \\\n  -netdev user,id=net0,hostfwd=tcp::2222-:22 \\\n  -drive file=dist/base/archlinux-workstation,if=virtio\n```\n\n\u003e A qemu window should appear\n\nType `password` to decrypt the root partition.\n\nThen, login:\n- Username: `username`\n- Password: `password`\n\n\u003e You're on the prompt of the base system !\n\n#### Test final image\n\nIf the file `/usr/share/edk2-ovmf/x64/OVMF.fd` doesn't exist on your system, find its right location, then adapt the `bios` path in the command below.\n\n```bash\nqemu-system-x86_64 \\\n  -enable-kvm \\\n  -cpu host \\\n  -smp 4 \\\n  -m 8192M \\\n  -bios /usr/share/edk2-ovmf/x64/OVMF.fd \\\n  -device virtio-vga-gl \\\n  -display gtk,gl=on \\\n  -device virtio-net,netdev=net0 \\\n  -netdev user,id=net0,hostfwd=tcp::2222-:22 \\\n  -drive file=dist/final/archlinux-workstation,if=virtio\n```\n\n\u003e A qemu window should appear\n\nType `password` to decrypt the root partition.\n\nThen, login:\n- Username: `username`\n- Password: `password`\n\n\u003e You're on i3 desktop !\n\n### Provision workstation\n\n#### Burn USB live iso\n\nDownload Archlinux live iso at https://archlinux.org/download/:\n\n```bash\ncurl https://mir.archlinux.fr/iso/latest/archlinux-x86_64.iso -o /tmp/archlinux.iso\n```\n\nThen, copy it on a USB device with `dd`:\n\n```bash\ndd if=/tmp/archlinux.iso of=/dev/sdX bs=4M status=progress # replace /dev/sdX with your USB device\n```\n\n\u003e It may take a while\n\n#### Prepare workstation\n\nBoot the USB key in UEFI mode on the workstation you want to install Archlinux to.\n\n\u003e A root shell should appear after a few seconds\n\nExecute these commands to give ssh access to ansible:\n\n```bash\necho \"root:root\" | chpasswd\n```\n\nChecks:\n- Internet connection\n- Reachable by the machine which will run ansible\n\nNote the workstation IP address for the next:\n```bash\nip addr\n```\n\n\u003e The workstation is ready to be provisionned\n\n#### Provision\n\nThen, from a system which has access to the workstation, clone this repository:\n\n```bash\ngit clone https://github.com/rodolpheche/archlinux-workstation.git\n```\n\nNow, fill informations in the `inventories/group_vars/all/all.yml` and `inventories/host_vars/remote.yml` files\n\n##### Init\n\nRun this command to install the base system on the workstation:\n\n```bash\nansible-playbook -i inventories/remote init.yml -D\n```\n\n\u003e Reboot the workstation, it will load the base system\n\n##### Setup\n\nOnce the system is booted, run the following command:\n\n```bash\nansible-playbook -i inventories/remote setup.yml -D\n```\n\n\u003e Reboot the workstation, and voila !\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodolpheche%2Farchlinux-workstation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frodolpheche%2Farchlinux-workstation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frodolpheche%2Farchlinux-workstation/lists"}