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 [email protected], 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 [email protected]:TymekDev/dotfiles
- Symlink config files:
make --directory ~/personal/dotfiles setup-os-macos⚠️ Make sure that~/.config/karabineris a symlink (details)
- 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.nixto partition the disk:- Make sure that the
devicevalue innix/disko/sffpc.nixis 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 /mntshows new entries for/mntand/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.nixto this repository - Update
flake.nixto 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 --onlinefor 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 [email protected]: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
rsyncthe 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
$PATHproperly set up - Start Neovim and install its plugins via
:Lazy
- Make sure the devcontainer has SSH enabled and homebrew installed. For example:
{ "image": "mcr.microsoft.com/devcontainers/base:ubuntu", "features": { "ghcr.io/devcontainers/features/sshd:1": {}, "ghcr.io/meaningful-ooo/devcontainer-features/homebrew:2": {} } } - Create the codespace:
gh codespace create --location 'WestEurope' --repo '...'
- SSH into the codespace:
gh codespace ssh -- -o IdentitiesOnly=yes
- Clone the repo:
git clone https://github.com/TymekDev/dotfiles ~/personal/dotfiles - Run:
make --directory ~/personal/dotfiles setup-os-codespace - 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.