This repository contains my system configuration. It makes a lot of assumptions and as such won't necessarily work in your environment.
It must be checked out at
$HOME/Workspace/src/github.com/freshstrangemusic/config because it contains
relative symlinks up into $HOME (e.g.,
dotfiles/layers/macOS/Library/Application Support/pypoetry).
This repository uses just as the task runner. It has the following tasks:
install-dotfiles: install dotfiles withstowuninstall-dotfiles: uninstall dotfiles withstowrebuild: rebuild the nix environment (withdarwin-rebuildon macOS andnixos-rebuildon NixOS); the bookmark for the current host will be moved to the latest non-empty commitnix-flake-update: update the nix flakeedit-host-configuration: open theconfiguration.nixfor the current host in$EDITORfmt: format all nix files in the tree withnixfmt.
My dotfiles, organized into layers that apply on top of each other:
base: the base layer, which is common to all systems;macOS: a layer that contains macOS-specific configuration (and symlinks from macOS-specific locations to Linux / XDG Home Specification locations);windows: a layer that contains Windows-specific configuration (this layer is not automatically linked); andwsl: a layer that contains WSL-specific configuration.
The dotfiles are managed with GNU stow.
My nix configuration:
flake.nix: the main flake and entry-point into the configuration;hosts/: per-host configuration;modules/: common configuration refactored out to be re-used across multiple hosts;packages/: custom packages:flake-updated: A tool that checks if the nixpkgs timestamp in your flake.lock is recent (< 1 week).macOS-update-notify: useterminal-notifierandflake-updatedto inform you if your flake is up-to-date.rust-analyzer-wrapper: a wrapper script for launching rust-analyzer inside ofnix-shell. Read more.
Workspace configuration that cannot be committed to repositories for one reason or another (e.g., they are a work repository with no Nix buy-in from other developers). These environments are packaged as combinations of VSCode Workspaces and nix shells.
Scripts and utilities that are used from this repository and not installed globally:
-
bootstrap.sh: a script to bootstrap the configuration of a nix environment on a new machine.To configure a new machine with the name
HOSTNAME, run:curl --proto '=https' \ --tlsv1.2 \ -sSf \ -L \ https://raw.githubusercontent.com/freshstrangemusic/config/main/bin/bootstrap.sh | \ /usr/bin/env bash -- -H HOSTNAME
-
install-dotfiles.ps1: used byjust install-dotfilesto symlink dotfiles on Windows hosts. -
install-dotfiles: used byjust install-dotfilesto symlink dotfiles on POSIX hosts. -
uninstall-dotfiles.ps1: used byjust uninstall-dotfilesto remove symlinked dotfiles on Windows hosts. -
uninstall-dotfiles: used byjust uninstall-dotfilesto remove symlinked dotfiles on POSIX hosts.