This is an automated archive.
The original was posted on /r/opensource by /u/polygamma93 on 2023-08-06 11:24:46+00:00.
I wrote some software and put it on GitHub:
What is this good for?
Introduction
This project allows creating highly customizable Arch Linux Podman images based on the official Arch Linux Docker image.
Automatic installation of packages during building utilizes pacman and aurman with the supported “package sources” being:
- Official Arch Linux packages (installed via pacman)
- Chaotic-AUR (installed via pacman)
- Arch User Repository (installed via aurman)
Images will also contain:
- Xfce4 desktop environment
- LightDM display manager (in general not needed, but may be used to spawn Xfce4 on hosts without desktop environment)
- X2Go server (allows connecting graphically to containers utilizing Xfce4)
- OpenSSH server (allows connecting to containers)
Some more features are:
- A Python helper script, which allows intuitive and easy usage of this project
- The Python helper may be used from command-line only, see e.g. the GitHub workflow of this project
- Images may be imported and exported as a single file via the Python helper
- systemd services for automatic starting of containers may be created via the Python helper
- Xhost may be executed via the Python helper to grant containers access to the X screen of the host
- Automatic fetching of fastest pacman mirrors during building
- Some makepkg optimizations for the aurman package installation
- Scripting capabilities for containers are available via a shell script that gets executed via a systemd service at container start
- Hot plugging works - this is achieved via mdev
- Additional parameters for podman run may be included e.g. to mount stuff into containers
- Podman works inside the containers, so this project may be developed using this project
Example use cases
Consistent environments across different devices
An image built with this project may be distributed to various devices, ensuring a consistent environment across them. This applies to both development and deployment, allowing development in the exact environment where the software will eventually run. Switching between images/environments is straightforward using the Python helper’s import and export functions.
One environment for everything
Since you can include basically anything in an image, the limitation of using this project is your own creativity. E.g. IDEs, compilers, libraries, browsers, drivers, and more can all be integrated into a single image. When you switch X2Go to fullscreen or use LightDM, it’s nearly imperceptible that you’re even working inside a Podman container.