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:
diff Show the difference between the current configuration and the previous one
help Print this message or the help of the given subcommand(s)
history Show the change history of the configuration file
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.