Skip to content

About

Small, standalone utilities for setting up a Linux development server

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Linux Toolbox

Check License: MIT

An opinionated installer for turning a fresh Linux environment into a ready-to-use development workstation.

What it installs

Area Tools
System Git, GitHub CLI, Make, archive utilities, and awk when missing
Runtimes Latest Go and latest Node.js LTS through NVM
Shell ShellCheck, shfmt, jq, ripgrep, and actionlint
AI (optional) Claude Code and/or Codex CLI, with Bubblewrap, Ponytail, interface skills, find-skills, and selected Go skills for each selected agent. context-handoff is installed only with Codex.
Releases gh-release-flow and user-wide make targets

The installer supports x86-64 and ARM64 on Ubuntu, Debian, Fedora, and RHEL-family distributions using apt, dnf, or yum.

Install

Run the complete installer as your regular user:

curl -fsSL https://setup.engmariz.com | bash

With wget:

wget -qO- https://setup.engmariz.com | bash

The installer asks for sudo before making system changes. It starts with a menu that shows what is already installed:

 [?] Components to install or update
     Up/Down move, Space or number toggles, Enter installs
   > [x] 1) System packages: git, gh, make, tar             installed
     [x] 2) Go                                              go1.27.2
     [x] 3) Node.js LTS through nvm                         v24.21.0
     [x] 4) Shell tools: jq, ShellCheck, rg, shfmt          installed
     [x] 5) GitHub release flow                             not installed
     [x] 6) Claude Code                                     2.1.296 (Claude Code)
     [ ] 7) Codex CLI                                       not installed
     [ ] 8) Ubuntu cleanup: remove Snap, disable MOTD news  Snap present

Components 1 to 7 start checked. Move with the arrow keys and toggle with Space, or press an item's number to toggle it. Enter installs the checked items. The cleanup appears only on Ubuntu and starts unchecked. Without a terminal, the installer prints the list and uses the default selection.

Installed components are updated in place. Before a step replaces something you may have set up yourself, it asks first, and the default answer keeps what you have:

Step It asks before
System packages Replacing a GitHub CLI package source that has different content
Go Replacing another Go installation or a different /etc/profile.d/go.sh
Node.js Installing next to a Node.js that nvm does not manage, or changing a custom nvm default
Shell tools Adding a copy in ~/.local/bin when the tool already exists elsewhere
Release flow Replacing a ~/.config/make/release-flow.mk that has different content
Git identity Changing an identity that is already set
GitHub Re-running setup when the GitHub CLI is already authenticated

To review the entrypoint first:

curl -fsSL https://setup.engmariz.com -o install.sh
less install.sh
bash install.sh

Options

Skip changes to global Codex and Claude instruction files:

LINUX_TOOLBOX_SKIP_AGENT_GUIDANCE=1 bash install.sh

Skip the menu and every prompt. This installs or updates components 1 to 7, keeps anything you set up yourself, and skips the Ubuntu cleanup:

LINUX_TOOLBOX_NONINTERACTIVE=1 bash install.sh

Install the AI tools for a single agent directly:

./install-ai-tools.sh claude
./install-ai-tools.sh codex

Git and GitHub setup

Configure both Git identity and GitHub authentication:

./setup-git.sh

Configure them separately:

./setup-git.sh identity
./setup-git.sh github

Existing Git name and email values are kept when you press Enter. GitHub CLI authenticates over HTTPS and becomes Git's credential helper.

Ubuntu cleanup

Choose option 8 in the installer menu to run the cleanup. It removes Snap applications, blocks snapd from being reinstalled, disables Ubuntu MOTD news, and purges apport (crash reporter), multipath-tools (SAN-only, spams the journal) and kdump-tools (reserves crashkernel RAM). On bare-metal installs where cloud-init has no datasource it also disables cloud-init (/etc/cloud/cloud-init.disabled); cloud, Proxmox and WSL hosts are left alone. This is destructive and intended only for Ubuntu hosts.

To review and run it on its own:

curl -fLO https://raw.githubusercontent.com/mordilloSan/linux-toolbox/main/ubuntu-cleanup.sh
less ubuntu-cleanup.sh
sudo bash ubuntu-cleanup.sh

Local development

Run the local installer from the repository root:

./install.sh

Local runs use the sibling scripts in the checkout. Piped installs download child scripts from the entrypoint's configured remote source.

Releases

The installer provides release targets without requiring a repository Makefile:

make start-dev VERSION=v1.7.0
# Commit your changes, then:
make open-pr
make merge-release

Run source ~/.bashrc or open a new terminal after first installing the targets. Release branches use the dev/v* naming convention.

Run make check for syntax and style checks, and make test for the isolated installer behavior tests. Pull requests run both targets, and a release is published only when the PR's Check workflow passed. Merging a release PR then creates the tag, publishes all scripts as release assets, and pins the entrypoint to that release.

Security and privacy

No credentials, API keys, access tokens, private keys, or personal configuration are intentionally stored in this repository. Tracked content consists only of public project files.

Authentication is handled interactively by the installed CLIs. Their credentials remain in the current user's local configuration and are not copied into this repository. Never commit .env files, tokens, generated credentials, or machine-specific configuration.

License

Licensed under the MIT License.

About

Small, standalone utilities for setting up a Linux development server

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Used by

Contributors

Languages