Personal WSL dotfiles managed with Nix flakes and Home Manager.
From WSL:
git clone git@github.com:joaolucasdp/dotfiles.git ~/dotfiles
cd ~/dotfiles
nix build .#homeConfigurations.wsl.activationPackage
./result/activateFrom Fedora:
git clone git@github.com:joaolucasdp/dotfiles.git ~/dotfiles
cd ~/dotfiles
nix build .#homeConfigurations.fedora.activationPackage
./result/activateFrom macOS:
git clone git@github.com:joaolucasdp/dotfiles.git ~/dotfiles
cd ~/dotfiles
home-manager switch --flake .#macosThe macOS profile assumes Apple Silicon (aarch64-darwin). For Intel Macs,
change the macos system in flake.nix to x86_64-darwin.
If direnv blocks the repository environment, approve it after reviewing .envrc:
direnv allowcd ~/dotfiles
nix build .#homeConfigurations.wsl.activationPackage
./result/activateThe rb shell alias runs the same build and activation flow.
nix fmt
nix flake checknix flake check builds the WSL Home Manager activation package through the configured flake checks.
List available templates:
nix flake show ~/dotfilesInitialize a template:
nix flake init -t ~/dotfiles#basicFor Rust projects, initialize the Nix environment first and then initialize Cargo inside the same directory:
mkdir -p ~/projects/math_eval
cd ~/projects/math_eval
nix flake init -t ~/dotfiles#rust
direnv allow
cargo init --bin --name math_eval
cargo run- Git commit signing uses SSH signing backed by the configured Bitwarden SSH agent flow.
- macOS uses the Bitwarden SSH Agent socket at
~/.bitwarden-ssh-agent.sock. - The WSL profile is defined in
home-configurations/wsl. - The macOS profile is defined in
home-configurations/macos. - The Fedora profile is defined in
home-configurations/fedoraand ships the Proton suite (pkgs/proton.nix): VPN, Pass, Mail/Calendar and Authenticator. - Proton VPN drives the host NetworkManager over D-Bus, so it needs
NetworkManagerrunning on the Fedora side; Nix only provides the client. - Existing package-oriented Home Manager modules live in
pkgs; standalone option modules live inmodules. - Free Claude Code is enabled in the common profile; package and module details
are documented in
pkgs/free-claude-code/README.md.