My personal computing configuration that I wish to sync between machines.
- Install
nix
on the system (with flakes enabled) by running bootstrap.sh - Create system configuration with
nix run github:carlthome/dotfiles#switch-system
- Create user configuration with
nix run github:carlthome/dotfiles#switch-home
Run installed packages by nix run self#<name>
where <name>
is the package name.
Use nix flake show self
to list all installed packages.
- Clone this flake to the current working directory by
nix flake clone github:carlthome/dotfiles --dest .
- Stage declarative changes (in flake.nix etc.) as needed
- Lint source with
nix flake check
- Build all packages with
nix build
- Apply changes with
nix run .#update-and-switch
which will:- Pull currently tracked remote branch
- Update flake inputs and commit any flake.lock changes
- Build and switch system configuration
- Build and switch user configuration
- Install all included utility scripts
- Push flake.lock to currently tracked remote branch (if previous steps succeeded)