Crosup

License: MIT release

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

🚚 Installation

sh curl -sSL https://raw.githubusercontent.com/tsirysndr/crosup/master/install.sh | bash

📦 Supported OS

🚀 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:

```toml

Crosfile.toml

[install.pkg.vim] packages = ["vim"] version_check = "vim --version"

[install.pkg.git] packages = ["git"] version_check = "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:

```toml

Crosfile.toml

[brew.install.pkg.neovim] version_check = "nvim --version"

[git.install.repo.blesh] url = "https://github.com/akinomyoga/ble.sh.git" install = "make -C ble.sh install PREFIX=~/.local" preinstall = "sudo apt-get install -y gawk build-essential" postinstall = "echo 'source ~/.local/share/blesh/ble.sh' >> ~/.bashrc" installcheck = "~/.local/share/blesh/ble.sh" recursive = true depth = 1 shallowsubmodules = true

[nix.install.pkg.flox] impure = true experimentalfeatures = "nix-command flakes" acceptflakeconfig = true preinstall = "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" flake = "github:flox/floxpkgs#flox.fromCatalog" versioncheck = ". /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && flox --version"

[nix.install.pkg.cachix] flake = "github:cachix/cachix"

[nix.install.pkg.devenv] acceptflakeconfig = true preinstall = """ echo \"trusted-users = root $USER\" | sudo tee -a /etc/nix/nix.conf sudo pkill nix-daemon cachix use devenv""" flake = "github:cachix/devenv/latest" dependson = ["cachix"] versioncheck = ". /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && devenv version"

[curl.install.script.devbox] url = "https://get.jetpack.io/devbox" versioncheck = "devbox version" shell = "bash" dependson = ["nix"]

[curl.install.script.devbox.env] FORCE = "1"

[curl.install.script.atuin] url = "https://raw.githubusercontent.com/ellie/atuin/main/install.sh" version_check = "atuin --version" shell = "bash"

[curl.install.script.nix] url = "https://install.determinate.systems/nix" enablesudo = true versioncheck = ". /nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh && nix --version" args = "install --no-confirm"

[curl.install.script.homebrew] url = "https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh" postinstall = "echo 'eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)' >> ~/.bashrc" version_check = "brew --version" shell = "bash"

[curl.install.script.homebrew.env] NONINTERACTIVE = "true"

[apt.install.pkg.docker] gpgkey = "https://download.docker.com/linux/debian/gpg" gpgpath = "/etc/apt/keyrings/docker.gpg" setuprepository = "echo \"deb [arch=\"$(dpkg --print-architecture)\" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \"$(. /etc/os-release && echo \"$VERSIONCODENAME\")\" stable\" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null" aptupdate = true packages = [ "docker-ce", "docker-ce-cli", "containerd.io", "docker-buildx-plugin", "docker-compose-plugin", ] dependson = [ "ca-certificates", "curl", "gnupg", ] postinstall = "sudo usermod -aG docker $USER && newgrp docker" version_check = "docker --version"

[apt.install.pkg.vscode] url = "https://code.visualstudio.com/sha/download?build=stable&os=linux-deb-x64" version_check = "code --version"

```

🤝 Contributing

Contributions, issues and feature requests are welcome! See CONTRIBUTING for more information.

📝 License

MIT