Linux workstation bootstrapper · YAML-driven

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.

Install
$ 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.

workstation.yaml
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
$ 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.

Tested against
Ubuntu Debian Fedora Arch / EndeavourOS openSUSE Tumbleweed

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.

Latest release (recommended)
$ curl --proto '=https' --tlsv1.2 --proto-redir '=https' -sSfL https://worxbend.github.io/fluxion/install.sh | sh
Pin a specific version
$ curl --proto '=https' --tlsv1.2 --proto-redir '=https' -sSfL https://worxbend.github.io/fluxion/install.sh | sh -s -- --version v1.0.3
Inspect the script before running it
$ 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.

Prefer a manual download?

Every release publishes the native Linux binary, a runnable JAR for other platforms, and a .sha256 checksum file — see the latest release.