Skip to content

My idiosyncratic config for personal computing

License

Notifications You must be signed in to change notification settings

carlthome/dotfiles

Repository files navigation

dotfiles

My personal computing configuration that I wish to sync between machines.

Install

  1. Install nix on the system (with flakes enabled) by running bootstrap.sh
  2. Create system configuration with nix run github:carlthome/dotfiles#switch-system
  3. Create user configuration with nix run github:carlthome/dotfiles#switch-home

Usage

Run installed packages by nix run self#<name> where <name> is the package name.

Use nix flake show self to list all installed packages.

Develop

  1. Clone this flake to the current working directory by nix flake clone github:carlthome/dotfiles --dest .
  2. Stage declarative changes (in flake.nix etc.) as needed
  3. Lint source with nix flake check
  4. Build all packages with nix build
  5. Apply changes with nix run .#update-and-switch which will:
    1. Pull currently tracked remote branch
    2. Update flake inputs and commit any flake.lock changes
    3. Build and switch system configuration
    4. Build and switch user configuration
    5. Install all included utility scripts
    6. Push flake.lock to currently tracked remote branch (if previous steps succeeded)