Skip to content

dennybaa/dotfiles

Repository files navigation

Workstation Setup Guide

Setting up a workstation involves two main phases:

  1. Bootstrap – Install Nix on a Debian-based system and the base tools (populating nix/base)
  2. Provision – Install APT/Flatpak packages and apply configurations via mise

Prerequisites

The setup process requires the dennybaa/dotfiles repository (you're already here). Install Git and perform the initial configuration:

sudo apt install git -y

# Clone the repository
cd ~ && git clone git@github.com:dennybaa/dotfiles.git

# Alternative: clone via public HTTPS
# cd ~ && git clone https://github.com/dennybaa/dotfiles.git

Provision a Workstation

The provision phase installs required software and applies system configurations. This process is orchestrated by mise and leverages:

  • nu/install-packages.nu – Handles package operations: updating APT sources, installing APT and Flatpak packages, and managing pre-built Nix profiles
  • mise – Executes configuration hooks

Bootstrap

  1. Bootstrap installs Nix on your Debian-based system—the first step to using this repository.

    cd ~/dotfiles && ./bootstrap.sh && . /etc/profile.d/nix.sh

    Once bootstrapped, proceed with full provisioning using mise tasks.

  2. Run the necessary bootstrap tasks (post-Nix setup).

    mise run bootstrap
  3. Configure GitHub token for tools

    Why this matters: Configuring authentication prevents GitHub API rate limiting when package managers like Nix or mise fetch sources.

    Recommended approach: Create and use a fine-grained personal access token (PAT) for:

    Use the setup:github-token task: This will prompt you for the token input and update necessary files:

    mise run setup:github-token

Workstation Configuration

Mise tasks:

mise tasks
mise run nix:add --help # for details about the command adding packages from nix/<bundle> flakes into profile

Provision a Pre-configured System Preset

Choose the appropriate command based on your system type:

  • Console system (terminal-only):

    mise provision
  • Desktop system (includes GUI applications):

    mise provision:desktop

Note: Use the --update (or -u) flag to refresh installed packages.

Packages

System package configuration is defined in packages.nu. Here's what it contains:

  • AptSources – Files to be placed in /etc/apt/sources.list.d/ and optional GPG key URLs for provisioning
  • AptPackages and FlatpakPackages – Application bundles organized by type (base, desktop, etc.)

For example, to install both base and desktop APT package bundles:

mise packages:apt base desktop

Note: Management of flake-based Nix profiles is intentionally not grouped under the mise packages:nix task.

Nix Profile Packages

Nix profiles are defined in nix/*/flake.nix files. A Nix flake may have multiple outputs—for instance, nix/code/flake.nix contains default and desktop outputs. When installing a Nix profile, you cannot install multiple output sets simultaneously. Choose the specific output you need:

mise nix -o desktop nix/code

Note: If you previously installed a different flake output for a given profile, the operation will fail.

About

Dotfiles for desktop and cli (nix and nushell)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors