Turn a fresh Linux box into your machine.
One YAML profile describes the packages, Flatpaks, dotfiles, fonts, and binaries you want. Fluxion shows you the plan first, then applies only the parts that make sense on this distro — and remembers what it did, so reruns skip the work.
$ curl --proto '=https' --tlsv1.2 --proto-redir '=https' -sSfL https://worxbend.github.io/fluxion/install.sh | sh
Always installs the latest release. Verifies the published SHA-256 checksum before it
writes anything, installs into ~/.local/bin, and never touches your shell
startup files.
You write the profile. Fluxion writes the plan.
No bash soup, no hidden ordering. The left side is what you keep in git; the right side is what you get to inspect before a single package is touched.
profile: my-laptop jobs: - name: base steps: - type: package name: cli-tools packages: [git, zsh, ripgrep, fzf] - type: compiled-binary name: kubectl url: https://dl.k8s.io/.../kubectl # pinned — verified before install checksum: algorithm: SHA-256 value: c6e9c45ce3f8... - name: desktop needs: [base] steps: - type: flatpak name: apps packages: [com.spotify.Client]
$ fluxion dry-run -c workstation.yaml plan my-laptop · 2 jobs · 4 steps base + package cli-tools git, zsh, ripgrep, fzf (dnf) · compiled-binary kubectl already installed — skipped desktop needs: base + flatpak apps com.spotify.Client nothing has been changed. run `fluxion apply -c workstation.yaml` to proceed.
Built to be boring, in the good way
Bootstrapping a machine is a job you do rarely and need to trust completely. Fluxion is designed around that.
Dry run first
Every run can be previewed. See the resolved plan, the installer chosen for each step, and what will be skipped — before anything is touched.
Distro-aware
One profile, many machines. Package steps resolve to apt, dnf, pacman, or zypper based on the host, and steps that do not apply are skipped.
Verified supply chain
Downloads are pinned to SHA-256 checksums, repository keys are verified before publication, and install destinations are checked against a trusted ancestry.
State that survives
Fluxion records what it installed, so reruns skip completed work and interrupted runs can resume instead of starting over.
CLI or TUI
Plain, parseable output for scripts and CI — or an interactive terminal UI for picking exactly which jobs and steps to run.
Many installer kinds
Packages, Flatpaks and their remotes, shell installers, dotfiles, Nerd Fonts, toolchains, git repos, GPG keys, and prebuilt binaries — in one file.
Install
A single native binary built with GraalVM. No JVM required at runtime, no daemon, no system-wide install.
Run the installer
Downloads the latest release for your architecture, verifies its checksum, and
installs to ~/.local/bin/fluxion.
Generate a starting profile
fluxion generate --os fedora --profile my-laptop --output workstation.yaml
Preview, then apply
fluxion dry-run -c workstation.yaml — and when it looks right,
fluxion apply -c workstation.yaml.
$ curl --proto '=https' --tlsv1.2 --proto-redir '=https' -sSfL https://worxbend.github.io/fluxion/install.sh | sh
$ curl --proto '=https' --tlsv1.2 --proto-redir '=https' -sSfL https://worxbend.github.io/fluxion/install.sh | sh -s -- --version v1.0.3
$ curl --proto '=https' --tlsv1.2 --proto-redir '=https' -sSfL https://worxbend.github.io/fluxion/install.sh -o install.sh && less install.sh
Piping a script into a shell means trusting the host that served it. Reading it first is always reasonable — the installer is short and does nothing clever.
Every release publishes the native Linux binary, a runnable JAR for other platforms,
and a .sha256 checksum file —
see the latest release.