Install new computer (inc) 0.1.21#

Install basic software for different operating systems:

See documentation

Installation for users#

First install uv:

curl -LsSf https://astral.sh/uv/install.sh | sh

Then install inc:

uv tool install inc --python 3.12

Usage#

inc --help

Update inc#

When installed with uv tool install, update to the latest release with:

inc self update

List available scripts#

inc ls

Example output:

Available bash scripts:
  conda_python311
  conda_python312
  dotfiles
  gmsh
  new_mac

Run a script#

inc run <script_name>

For example, to install gmsh:

inc run gmsh

To see what a script would do without running it:

inc run gmsh --dry-run

Install applications#

Install an individual application with the native package manager:

inc apps install gh

For the same short workflow used by the script runner, catalog applications are also available through inc run and appear in its completion list:

inc run gh

App and profile names support shell completion after running inc --install-completion. For example, type inc apps install g and press Tab.

Preview the command without installing anything:

inc apps install gh --dry-run

Install a predefined group of applications without confirmation:

inc apps install --profile core --yes
inc apps install --profile dev --yes

Inspect the catalog and current installation state:

inc apps list
inc apps status
inc doctor

Applications and platform package mappings are declared in inc/apps.toml. The supported package families are Arch/Manjaro, Debian/Ubuntu, Fedora/RHEL, openSUSE, macOS/Homebrew, and Windows/WinGet.

View script contents#

inc cat <script_name>

Installation for developers#

git clone https://github.com/joamatab/install_new_computer.git ~/install_new_computer
cd ~/install_new_computer
uv sync

Install the local checkout as an editable command that works from any directory:

just tool-install
just tool-check

For MacOs type this into a terminal first:

xcode-select --install

Testing the Mac setup flow#

uv sync --extra dev
uv run pytest

tests/test_mac_setup.py runs the setup scripts with temporary home directories, local Git repositories, and substitutes for system-changing commands. It covers sudo authorization, Fish returning to setup, dotfiles cloning and updates, package failures, and paths with spaces. When Fish is installed, it also checks the installer arguments with the real executable. CI installs Fish for this check.

These tests do not install the full application list or change macOS settings. Before relying on a release for a fresh computer, also run inc run new_mac on a disposable Mac or macOS VM and confirm the dotfiles links and applications work.

References#