Crosup 🐧 💻 🚀 ✨
Crosup is a CLI tool to help you quickly setup your development environment on a new Chromebook (ChromeOS) or any Linux distribution. It is designed to be simple and easy to use.
✨ Features
- Compatible with ChromeOS, Debian-based Linux, OpenSUSE, Fedora, RedHat, CentOS, Alpine and more!
- Detects your OS and installs the appropriate tools
- HCL/TOML configuration file
- Installs developer tools like docker, nix, devbox, homebrew, flox, fish, vscode, ble.sh, atuin, tig, fzf, httpie, kubectl, minikube, tilt, zellij, ripgrep, fd, exa, bat, glow, devenv and more!
🚚 Installation
📦 Supported OS
- ChromeOS (Debian Container)
- Debian-based Linux
- OpenSUSE
- Fedora
- RedHat
- CentOS
- Alpine
- Arch
- Gentoo
- Slackware
🚀 Usage
______ __ __
/ ____/________ _____/ / / /___
/ / / ___/ __ \/ ___/ / / / __ \
/ /___/ / / /_/ (__ ) /_/ / /_/ /
\____/_/ \____/____/\____/ .___/
/_/
Quickly install your development tools on your new Chromebook or any Linux distribution
USAGE:
crosup [SUBCOMMAND]
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
help Print this message or the help of the given subcommand(s)
init Generate a default configuration file
install Install developer tools, possible values are: docker, nix, devbox, homebrew,
flox, fish, vscode, ble.sh, atuin, tig, fzf, httpie, kubectl, minikube, tilt,
zellij, ripgrep, fd, exa, bat, glow, devenv
🛠️ Minimal Configuration
This is a minimal configuration file to install vim and git:
# Crosfile.toml
[]
= ["vim"]
= "vim --version"
[]
= ["git"]
= "git --version"
When you run crosup install, it will detect your OS and install the appropriate tools using the default package manager.
📝 Configuration
Crosup uses a configuration file to determine which tools to install. The default configuration is embedded in the binary, but you can generate a default configuration file (Crosfile.hcl) using the crosup init subcommand, you can specify the default format using the --toml flag.
Example of a Crosfile.toml (crosup init --toml) for a Debian-based system:
# Crosfile.toml
[]
= "nvim --version"
[]
= "https://github.com/akinomyoga/ble.sh.git"
= "make -C ble.sh install PREFIX=~/.local"
= "sudo apt-get install -y gawk build-essential"
= "echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc"
= "~/.local/share/blesh/ble.sh"
= true
= 1
= true
[]
= true
= "nix-command flakes"
= true
= "echo 'extra-trusted-substituters = https://cache.floxdev.com' | sudo tee -a /etc/nix/nix.conf && echo 'extra-trusted-public-keys = flox-store-public-0:8c/B+kjIaQ+BloCmNkRUKwaVPFWkriSAd0JJvuDu4F0=' | sudo tee -a /etc/nix/nix.conf"
= "github:flox/floxpkgs#flox.fromCatalog"
= ". /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && flox --version"
[]
= "github:cachix/cachix"
[]
= true
= """
echo \"trusted-users = root $USER\" | sudo tee -a /etc/nix/nix.conf
sudo pkill nix-daemon
cachix use devenv"""
= "github:cachix/devenv/latest"
= ["cachix"]
= ". /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && devenv version"
[]
= "https://get.jetpack.io/devbox"
= "devbox version"
= "bash"
= ["nix"]
[]
= "1"
[]
= "https://raw.githubusercontent.com/ellie/atuin/main/install.sh"
= "atuin --version"
= "bash"
[]
= "https://install.determinate.systems/nix"
= true
= ". /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && nix --version"
= "install --no-confirm"
[]
= "https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh"
= "echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >> ~/.bashrc"
= "brew --version"
= "bash"
[]
= "true"
[]
= "https://download.docker.com/linux/debian/gpg"
= "/etc/apt/keyrings/docker.gpg"
= "echo \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \"$(. /etc/os-release && echo \"$VERSION_CODENAME\")\" stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null"
= true
= [
"docker-ce",
"docker-ce-cli",
"containerd.io",
"docker-buildx-plugin",
"docker-compose-plugin",
]
= [
"ca-certificates",
"curl",
"gnupg",
]
= "sudo usermod -aG docker $USER && newgrp docker"
= "docker --version"
[]
= "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64"
= "code --version"
🤝 Contributing
Contributions, issues and feature requests are welcome! See CONTRIBUTING for more information.