Skip to content

kachick/dotfiles

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2,820 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

dotfiles

~/ on Linux ~/ on Darwin Windows Devshell on Linux Package on Linux Package on Darwin Go Container

Personal dotfiles that can be placed in the public repository
Also known as 盆栽(bonsai) 🌳

block-beta
    columns 3

    block:os:3
        nixos(("❄")) macos(("🍎")) windows(("πŸͺŸ"))
    end

    block:vm:3
        lima("Lima") wsl2("WSL2")
    end

    block:container:3
        podman("🦭") k8s("☸️") 
    end

    nixos --> lima
    macos --> lima
    windows --> wsl2

    vm --> container
    nixos --> container
Loading

For visitors

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 2>/dev/null | jq '.packages | ."x86_64-linux" | to_entries | map("\(.key) # \(.value.description)")'

NixOS

List defined hostnames

nix eval --json 'github:kachick/dotfiles#nixosConfigurations' --apply 'builtins.attrNames' | jq '.[]'

Using flake style is disabled in NixOS by default and you should inject git command to use flakes.

NOTICE: This command might drop all existing users except which defined in configurations.

nix --extra-experimental-features 'nix-command flakes' shell 'github:NixOS/nixpkgs/nixos-25.11#gitMinimal' \
  --command sudo nixos-rebuild switch \
  --flake "github:kachick/dotfiles#$(hostname)" \
  --show-trace

Finally, reboot the device

sudo reboot now

Refer to the sample flake for an example of inheriting modules from another repository.

home-manager

List definitions

nix eval --json 'github:kachick/dotfiles#homeConfigurations' --apply 'builtins.attrNames' | jq '.[]'

Ubuntu

  1. Install and configure Nix:

    curl -fsSL https://raw.githubusercontent.com/kachick/dotfiles/main/scripts/install-nix.bash | bash
  2. If you forgot something adding in the installation phase, manually add it.
    Some config needs rebooting to apply it such as trusted-users.

  3. Make sure there is a nix directory that is used in the home-manager.
    This is a workaround, See the thread for detail

    mkdir -p ~/.local/state/nix/profiles
  4. Restart current shell to load Nix as a PATH

    bash
  5. Apply dotfiles

    nix run 'github:kachick/dotfiles#home-manager' -- switch -b backup --flake 'github:kachick/dotfiles#wsl-ubuntu'
  6. Apply system level dotfiles with sudo for nix command

    sudoc nix run 'github:kachick/dotfiles#apply-system'
  7. Enable tailscale ssh if required

    sudoc tailscale up --ssh

Podman on Ubuntu

  1. Install uidmap without Nix for use of podman even if the podman will be installed from nixpkgs

    sudo apt-get install --assume-yes uidmap
  2. Make sure the cgroup v1 is disabled if you on WSL, See the docs

  3. Make sure you can run containers as podman run public.ecr.aws/debian/debian:stable-slim cat /etc/os-release

Debian

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

Windows

  1. Install WSL2 with default Ubuntu. Activate home-manager as kachick@wsl-ubuntu
  2. Install NixOS-WSL. Activate home-manager with $(whoami)@wsl-nixos
  3. Adjust Windows experience as written in extracted steps and as written in CI for further detail.

Multi-booting on Windows and Linux

Check traps

Windows on Linux

Use winboat.
The full-desktop feature is powered-by FreeRDP.
You can exit the full-screen RDP session with Ctrl + Alt + Enter. (Not the End or Pause/Break keys)

macOS

I basically give up to maintain my old Intel Mac.
However I should keep the minimum environment for now.

  1. Make sure installing official Nix. Determinate Nix dropped x86_64-darwin. It is earlier than nixpkgs.
  2. Apply home-manager with kachick@macbook for minimum packages.
  3. Install some packages without Nix
  4. Use Lima for development tasks.

Lima

  1. Start a standard Docker guest with Lima:

    limactl start --name=docker-nix template:docker
  2. Install and configure Nix in the guest:

    REV=main; \
      curl -fsSL "https://raw.githubusercontent.com/kachick/dotfiles/$REV/scripts/install-nix.bash" | limactl shell docker-nix bash -s -- "$REV"
  3. Apply home-manager:

    limactl shell docker-nix nix run --accept-flake-config "github:kachick/dotfiles#home-manager" -- switch -b backup --flake "github:kachick/dotfiles#kachick@lima"
  4. Run containers:

    limactl shell docker-nix docker run --rm hello-world

How to setup secrets

Extracted to wiki

Shorthand

If you are developing this repository, putting .env makes easy reactivations.

echo 'HM_HOST_SLUG=wsl-ubuntu' > .env

Then you can enable configurations with

task apply

About

πŸ€€βœ‚πŸŒ³ || 😩 πŸͺ’πŸ¦¬

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors