This repository provides the central, Make-based workflow for the ARGVUS Linux desktop ecosystem. It creates a predictable local workspace for the independent ARGVUS repositories, clones projects from the configured Git provider, builds Arch Linux packages, collects the resulting artifacts, installs them on the host, and provides cleanup and multi-remote push helpers.
The workflow is intentionally lightweight: the repository itself contains orchestration only. Each cloned project remains an independent checkout with its own Makefile, build system, package metadata, and Git history.
Running a clone target creates the following directories when needed:
.
├── de/ # ARGVUS desktop-environment projects
├── web/ # Website and web-infrastructure projects
├── misc/ # Miscellaneous repositories
└── builds/ # Packages collected for installation
The desktop projects listed in PROJECTS_DE are the installable projects by default. A project is expected to provide a build target and to place its package in build/dist/ (or in the directory configured through PROJECTS_DE_DIST).
The host should provide:
- GNU Make
- Git and access to the configured remote repositories
- The build dependencies required by each ARGVUS project
- Arch Linux
makepkgtooling for package-producing projects pacmanandsudofor installation
The install target installs packages with pacman, so it must be run on an Arch Linux system with permission to elevate privileges.
Clone all configured repositories, build every installable desktop project, and install the collected packages:
make clone-all
make build
make installThe install target depends on collect, so a separate collection step is not required. The shorter build-and-install workflow is therefore:
make build && make installBefore building, make sure the repositories have already been cloned with make clone-de or make clone-all.
| Command | Purpose |
|---|---|
make help |
Show the available commands and configurable variables. |
make clone-de |
Clone all desktop-environment repositories into de/. Existing directories are left untouched. |
make clone-web |
Clone web projects into web/. |
make clone-misc |
Clone miscellaneous projects into misc/. |
make clone-all |
Run all three clone groups. |
make build |
Remove old package artifacts from each project and invoke its build target. |
make build-selected |
Build only the projects in SELECTABLE_PROJECTS_DE. |
make collect |
Remove stale collected package files and copy the newest package from every installable project into builds/. |
make install |
Collect packages and install the resulting argvus-*.pkg.tar.zst files with pacman. |
make clean:dist |
Remove per-project package output directories for installable desktop projects. |
make clean:all |
Run available clean targets and remove generated package output, node_modules, and builds/ across all cloned project groups. |
make push:<branch> |
Push the selected branch of each desktop checkout to the configured lab and gitea remotes when available. |
Build and collection are deliberately strict: collect fails if an installable project has no expected package. This prevents install from silently installing only a partial desktop environment.
Variables can be overridden on the command line without editing the Makefile:
| Variable | Default | Description |
|---|---|---|
BASE_URL |
git@gitlab:argvus |
Base Git URL used to construct clone URLs such as $(BASE_URL)/argvus-shell.git. |
PROJECTS_DE_DIST |
build/dist |
Package output directory inside each desktop project. |
BUILD_DIR |
builds |
Local directory used to collect packages before installation. |
SELECTABLE_PROJECTS_DE |
argvus-control-center |
Projects built by build-selected. |
REMOTES_PUSH |
lab gitea |
Git remotes used by push:<branch>. |
Examples:
make clone-all BASE_URL=git@github.com:argvus
make build-selected
make collect BUILD_DIR=/tmp/argvus-builds
make install BUILD_DIR=/tmp/argvus-buildsFor each installable project, collect selects the newest file matching:
<project-name>-[0-9]*.pkg.tar.zst
An adjacent .sig file is copied when present. Previously collected package and signature files are removed before collection, avoiding stale packages from older builds. install passes only package archives to pacman; signature files are not included in the installation argument list.
Clone targets skip any project directory that already exists. They do not fetch, reset, or modify an existing checkout. The push helper operates only on desktop projects, skips repositories without the requested local branch or configured remote, and stops if an actual push fails.
This repository owns the cross-project workflow and directory layout. Individual ARGVUS repositories own their source code, package versions, dependencies, and project-specific build and clean implementations. When those contracts change, update the corresponding workflow variables or project Makefiles together.