Personal dotfiles that can be placed in the public repository
Also known as 盆栽(bonsai) 🌳
If you are using Podman, you can test the pre-built ubuntu container-image as follows.
bash <(curl -fsSL https://raw.githubusercontent.com/kachick/dotfiles/main/containers/sandbox-with-ghcr.bash) latest
Or, you can directly use some commands with nix run
without any installation steps.
nix run 'github:kachick/dotfiles#todo'
List them
nix flake show 'github:kachick/dotfiles' --json | jq '.apps | ."x86_64-linux" | keys[]'
Using flake style is disabled in NixOS by default and you should inject git command to use flakes.
For example
nix --extra-experimental-features 'nix-command flakes' shell 'github:NixOS/nixpkgs/nixos-24.05#git' \
--command sudo nixos-rebuild switch \
--flake "github:kachick/dotfiles#$(hostname)" \
--show-trace
sudo reboot now
List defined hostnames
nix flake show 'github:kachick/dotfiles' --json | jq '.nixosConfigurations | keys[]'
This repository intentionally reverts the home-manager NixOS module.
So, you should activate the user dotfiles with standalone home-manager even though NixOS.
nix run 'github:kachick/dotfiles#home-manager' -- switch -b backup --flake 'github:kachick/dotfiles#kachick@desktop'
See GH-680 for background
-
Install Nix package manager with DeterminateSystems/nix-installer to enable Flakes by default.
curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
-
Make sure there is a nix directory that is used in the home-manager.
This is a workaround, See the thread for detailmkdir -p ~/.local/state/nix/profiles
-
Restart current shell to load Nix as a PATH
bash
-
Apply dotfiles for each use
nix run 'github:kachick/dotfiles#home-manager' -- switch -b backup --flake 'github:kachick/dotfiles#user@linux-cli'
Candidates
user@linux-cli
# Used in container
-
If you faced to lcoale errors such as
-bash: warning: setlocale: LC_TIME: cannot change locale (en_DK.UTF-8): No such file or directory
sudo localedef -f UTF-8 -i en_DK en_DK.UTF-8
-
Install uidmap without Nix for use of podman even if the podman will be installed from nixpkgs
- "shadow" in nixpkg is not enough for podman - NixOS/nixpkgs#138423
sudo apt-get install --assume-yes uidmap
-
Make sure putting /etc/containers/policy.json, it is not a home-manager role
sudo mkdir -p /etc/containers cd /etc/containers sudo curl -OL https://raw.githubusercontent.com/kachick/dotfiles/main/config/containers/policy.json
-
Make sure the cgroup v1 is disabled if you on WSL, See the docs
-
Make sure you can run containers as
podman run public.ecr.aws/debian/debian:12.6-slim cat /etc/os-release
After installing missing tools, you can complete same steps as Ubuntu
sudo apt update
sudo apt upgrade
sudo apt install --assume-yes curl
sudo apt install --assume-yes dbus-user-session # For podman
Remember to set special config and reboot if you on WSL
echo '
[boot]
systemd=true' | sudo tee /etc/wsl.conf
- Install WSL2 with default Ubuntu. Activate home-manager as
kachick@wsl-ubuntu
- Install NixOS-WSL. Activate home-manager with
$(whoami)@wsl-nixos
- Adjust Windows experience as written in extracted steps and as written in CI for further detail.
Check traps
I basically give up to maintain macOS environment. Use lima for development tasks as use of WSL2 in Windows
- Add minimum packages with home-manager. Apply home-manager with
kachick@macbook
- Manually setup lima(default Ubuntu guest) and some packages without Nix
- In the lima as
limactl start
, apply home-manager withkachick@lima
- You can run containers as
lima nerdctl run --rm hello-world
. You can also use podman after abovePodman on Ubuntu
setups
Extracted to wiki
If you are developing this repository, the simple reactivation is as follows.
makers apply 'kachick@wsl-ubuntu'
For NixOS
sudo nixos-rebuild switch --flake ".#$(hostname)" --show-trace && \
makers apply 'kachick@desktop'
If you encounter any errors in the above steps, Check and update CI and wiki.