7 个版本
0.2.0 | 2023 年 10 月 7 日 |
---|---|
0.1.5 | 2023 年 6 月 22 日 |
#2789 in 命令行工具
25KB
624 行
Crosup 🐧 💻 🚀 ✨
Crosup 是一个 CLI 工具,帮助您快速在新 Chromebook (ChromeOS) 或任何 Linux 发行版上设置您的开发环境。它设计得简单易用。
✨ 特点
- 兼容 ChromeOS、基于 Debian 的 Linux、OpenSUSE、Fedora、RedHat、CentOS、Alpine 以及更多!
- 检测您的操作系统并安装适当的工具
- HCL/TOML 配置文件
- 安装开发工具,如 docker、nix、devbox、homebrew、floxx、fish、vscode、ble.sh、atuin、tig、fzf、httpie、kubectl、minikube、tilt、zellij、ripgrep、fd、exa、bat、glow、devenv 等!
🚚 安装
bash <(curl -sSL https://raw.githubusercontent.com/tsirysndr/crosup/master/install.sh)
从源码编译
git clone https://github.com/tsirysndr/crosup.git
cd crosup
nix develop --experimental-features "nix-command flakes"
cargo install --path crates/cli
📦 支持的操作系统
- ChromeOS (Debian 容器)
- 基于 Debian 的 Linux
- OpenSUSE
- Fedora
- RedHat
- CentOS
- Alpine
- Arch
- Gentoo
- Slackware
🚀 使用方法
______ __ __
/ ____/________ _____/ / / /___
/ / / ___/ __ \/ ___/ / / / __ \
/ /___/ / / /_/ (__ ) /_/ / /_/ /
\____/_/ \____/____/\____/ .___/
/_/
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:
add Add a new tool to the configuration file
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, e.g. docker, nix, devbox, homebrew, fish, vscode, ble.sh
...
search Search for a package in the nixpkgs repository
🛠️ 最小配置
这是一个最小配置文件,用于安装 vim 和 git
# Crosfile.toml
packages = [
"vim",
"git"
]
当您运行 crosup install
时,它将检测您的操作系统,并使用 nix home-manager 在您的系统上安装适当的工具。
📝 高级配置
Crosup 使用配置文件来确定要安装哪些工具。默认配置嵌入在二进制文件中,但您可以使用 crosup init
子命令生成默认配置文件(Crosfile.hcl),您可以使用 --toml
标志指定默认格式。
基于 Debian 系统的 Crosfile.toml 的示例(crosup init --toml
)
# Crosfile.toml
[brew.install.pkg.minikube]
preinstall = "sudo apt-get install -y qemu-system libvirt-clients libvirt-daemon-system"
postinstall = """
sudo sed -i 's/#user = \"root\"/user = \"root\"/g' /etc/libvirt/qemu.conf
sudo sed -i 's/#group = \"root\"/group = \"root\"/g' /etc/libvirt/qemu.conf
sudo sed -i 's/#dynamic_ownership = 1/dynamic_ownership = 0/g' /etc/libvirt/qemu.conf
sudo sed -i 's/#remember_owner = 1/remember_owner = 0/g' /etc/libvirt/qemu.conf"""
[brew.install.pkg.tilt]
[brew.install.pkg.kubernetes-cli]
version_check = "kubectl"
[brew.install.pkg.bat]
[brew.install.pkg.direnv]
[brew.install.pkg.exa]
[brew.install.pkg.fd]
[brew.install.pkg.fzf]
[brew.install.pkg.fish]
[brew.install.pkg.glow]
[brew.install.pkg.httpie]
version_check = "http"
[brew.install.pkg.tig]
[brew.install.pkg.zellij]
[brew.install.pkg.zoxide]
[brew.install.pkg.ripgrep]
version_check = "rg"
[brew.install.pkg.neovim]
version_check = "nvim"
[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"
install_check = "~/.local/share/blesh/ble.sh"
recursive = true
depth = 1
shallow_submodules = true
[nix.install.pkg.flox]
impure = true
experimental_features = "nix-command flakes"
accept_flake_config = 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"
[nix.install.pkg.cachix]
flake = "github:cachix/cachix"
[nix.install.pkg.devenv]
accept_flake_config = 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"
depends_on = ["cachix"]
[curl.install.script.devbox]
url = "https://get.jetpack.io/devbox"
shell = "bash"
depends_on = ["nix"]
[curl.install.script.devbox.env]
FORCE = "1"
[curl.install.script.atuin]
url = "https://raw.githubusercontent.com/ellie/atuin/main/install.sh"
shell = "bash"
[curl.install.script.nix]
url = "https://install.determinate.systems/nix"
enable_sudo = true
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"
shell = "bash"
[curl.install.script.homebrew.env]
NONINTERACTIVE = "true"
[apt.install.pkg.docker]
gpg_key = "https://download.docker.com/linux/debian/gpg"
gpg_path = "/etc/apt/keyrings/docker.gpg"
setup_repository = "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"
apt_update = true
packages = [
"docker-ce",
"docker-ce-cli",
"containerd.io",
"docker-buildx-plugin",
"docker-compose-plugin",
]
depends_on = [
"ca-certificates",
"curl",
"gnupg",
]
postinstall = "sudo usermod -aG docker $USER && newgrp docker"
[apt.install.pkg.vscode]
url = "https://vscode.js.cn/sha/download?build=stable&os=linux-deb-x64"
version_check = "code"
🚀 作为 GitHub Action
您可以将 crosup 用作 GitHub Action,在 CI/CD 流程中安装开发工具。
name: Setup Crosup
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
jobs:
setup-crosup:
runs-on: ubuntu-latest
continue-on-error: true
steps:
- name: Install Nix
uses: DeterminateSystems/nix-installer-action@v4
- name: Setup Crosup
uses: tsirysndr/setup-crosup@v1
with:
version: 'v0.5.0'
# Add packages to install here
packages: |
deno
zig
- name: Verify Crosup
run: crosup --version
- name: Verify Deno
run: deno --version
- name: Verify Zig
run: zig version
请参阅 action.yml 以获取此操作的输入和输出的完整文档。
🤝 贡献
欢迎贡献、问题和功能请求!请参阅 CONTRIBUTING 获取更多信息。