Hey 👋 This repo holds config files for the tools that I use.
The list of tools can be found in Brewfile
.
Explore, get inspired, and beware, because here be dragons! If you have any questions feel free to reach out to me at tymek.makowski@gmail.com, enjoy!
Caution
I haven't tried the MacOS setup on a clean OS yet.
- Run:
xcode-select --install
- Install
brew
:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Clone the repo:
git clone https://github.com/TymekDev/dotfiles ~/personal/dotfiles git -C ~/personal/dotfiles remote set-url origin git@github.com:TymekDev/dotfiles
- Symlink config files:
make --directory ~/personal/dotfiles restow
⚠️ Make sure that~/.config/karabiner
is a symlink (details)
- Install programs:
/opt/homebrew/bin/brew bundle --file ~/personal/dotfiles/Brewfile install /opt/homebrew/bin/bob use stable # installs Neovim
- Configure
fish
:echo "/opt/homebrew/bin/fish" | sudo tee -a /etc/shells chsh -s /opt/homebrew/bin/fish
- Install WezTerm terminfo:
tempfile=$(mktemp) \ && curl -o $tempfile https://raw.githubusercontent.com/wez/wezterm/master/termwiz/data/wezterm.terminfo \ && tic -x -o ~/.terminfo $tempfile 8000 span> \ && rm $tempfile
- Open WezTerm—it should start fish and have
$PATH
properly set up - Start Neovim and install its plugins via
:Lazy
- Install by hand:
- Tailscale: https://pkgs.tailscale.com/stable/#macos
- Google Chrome
- Disable Firefox title bar
- Add the following snippet at the very bottom of
~/.ssh/config
:Host * IdentityAgent "SSH_AUTH_SOCK"
- Install Neovim spell files
- Note: Enable NetRW and disable oil.nvim to download spell files (see stevearc/oil.nvim#163)
Note: This uses the sffpc
host.
Adjust the host, paths, and URIs accordingly if needed.
- Download the minimal NixOS ISO image and create a bootable USB
- Run the live version from the USB
- Use disko with
nix/disko/sffpc.nix
to partition the disk:- Make sure that the
device
value innix/disko/sffpc.nix
is up to date - Run:
curl -o /tmp/disko.nix https://raw.githubusercontent.com/TymekDev/dotfiles/main/nix/disko/sffpc.nix sudo nix --experimental-features "nix-command flakes" run github:nix-community/disko/latest -- --mode destroy,format,mount /tmp/disko.nix
- Verify that
mount | grep /mnt
shows new entries for/mnt
and/mnt/boot
- Make sure that the
- (Only if setting up a new machine) Retrieve
hardware-configuration.nix
:- Run:
sudo nixos-generate-config --no-filesystems --root /mnt
- Add
/mnt/etc/nixos/hardware-configuration.nix
to this repository - Update
flake.nix
to include the added file - Push the updated version
- Run:
- Install the system:
sudo nixos-install --root /mnt --flake github:TymekDev/dotfiles#sffpc --no-write-lock-file
- Set a password for users defined in the configuration:
sudo nixos-enter --root /mnt -c "passwd tymek"
To rebuild the system after making changes run:
nixos-rebuild switch --use-remote-sudo --flake .
Note: If you see an error that a file is missing, then make sure it is tracked by git. Flakes are git-aware and the error doesn't suggest that this might be the issue.
- Install WezTerm (on Windows)
- Install WSL
- Open PowerShell
- Run
wsl --list --online
for the list of available distros - Install the distro
wsl --install -d <distro>
, e.g.wsl --install -d Ubuntu-24.04
- Restart Windows
- After Windows boots up:
- Set a UNIX username and password up
- Run:
sudo apt-get update
- Run:
sudo apt-get upgrade
- If necessary, carry certificates over from Windows (see Fixing WSL Certificates)
- Install
brew
:/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
- Clone the repo:
git clone https://github.com/TymekDev/dotfiles ~/personal/dotfiles git -C ~/personal/dotfiles remote set-url origin git@github.com:TymekDev/dotfiles
- Symlink config files:
make --directory ~/personal/dotfiles restow
- Install programs:
/home/linuxbrew/.linuxbrew/bin/brew bundle --file ~/personal/dotfiles/Brewfile install /home/linuxbrew/.linuxbrew/bin/bob use stable # installs Neovim
- Configure
fish
:echo "/home/linuxbrew/.linuxbrew/bin/fish" | sudo tee -a /etc/shells chsh -s /home/linuxbrew/.linuxbrew/bin/fish
- Install WezTerm terminfo:
tempfile=$(mktemp) \ && curl -o $tempfile https://raw.githubusercontent.com/wez/wezterm/master/termwiz/data/wezterm.terminfo \ && tic -x -o ~/.terminfo $tempfile \ && rm $tempfile
rsync
the WezTerm config to the Windows host:rsync --delete-after --mkpath --recursive --verbose \ config/wezterm/ \ $(wslpath $(cmd.exe /C "echo %USERPROFILE%" 2>/dev/null | tr -d "\r"))/.config/wezterm
- Open WezTerm—it should start fish inside WSL and have
$PATH
properly set up - Start Neovim and install its plugins via
:Lazy
Starting with the oldest:
- Commit deleting unused configs: (
b9d3554
) chore: remove unused configs - Commit removing home-manager: (
2d5d745
) refactor: purge home-manager and Nix - Commit adding setup automation using
make
: (7ac8ddf
) Merge branch 'make-magic' - Commit switching from packer.nvim to lazy.nvim: (
1ad9d73
) Merge pull request #8 from TymekDev/lazy.nvim - Commit replacing the
make
-based setup with aBrewfile
: (fa64d51
) refactor: use Brewfile - Commit adding the NixOS configuration: (
c844f53
) Merge branch 'nixos'
- Karabiner does not really work for porting. Another Mac's keyboard has a different identifier?
Disclaimer: I am not an author of the image at local/share/wallpaper.webp
and I do not claim any rights to it.