Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 18 additions & 21 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,40 +1,40 @@
# can be either macos or ubuntu
OS = macos

.PHONY: default bootstrap-stow dotfiles test setup-macos setup-ubuntu

default:
echo "hello ^^"
@echo "hello ^^"

.PHONY: setup-macos setup-ubuntu boostrap-stow
.PHONY: setup-macos setup-ubuntu setup-wsl setup-common setup-stow

setup-macos: brew-pkgs nix-pkgs dotfiles
setup-common:
bash ./tmux/setup.sh
bash ./scripts/setup-zpretzo.sh
bash ./zsh/setup.sh
bash ./fzf/setup.sh

setup-macos: export OS=macos
setup-macos: brew-pkgs nix-pkgs dotfiles setup-common
bash ./macos/setup.sh

setup-ubuntu: dotfiles nix-pkgs dotfiles
bash ./tmux/setup.sh
bash ./scripts/setup-zpretzo.sh
bash ./fzf/setup.sh
setup-ubuntu: export OS=ubuntu
setup-ubuntu: dotfiles nix-pkgs dotfiles setup-common
bash ./ubuntu/setup.sh

bootstrap-stow:
bash ./scripts/bootstrap-stow.sh
setup-wsl: export OS=wsl
setup-wsl: dotfiles nix-pkgs dotfiles setup-common

setup-stow:
bash ./stow/setup.sh

.PHONY: dotfiles test

STOW_ARGS=-vv
dotfiles: bootstrap-stow
dotfiles: setup-stow
stow $(STOW_ARGS) -d dotfiles -t $(HOME) $(OS)
stow $(STOW_ARGS) dotfiles
stow $(STOW_ARGS) yabai
ln -sf ~/dotfiles/fish ~/.config/fish\

test: setup-nix
bash ./nix/load-$(OS).sh && bash ./tests/*.sh

.PHONY: setup-pyenv python js
.PHONY: setup-uv python js

setup-uv:
bash ./python/setup-uv.sh
Expand All @@ -44,10 +44,7 @@ python: setup-uv
~/.local/bin/uv pip install -r ./python/pyproject.toml

js:
npm install -g @tailwindcss/language-server markserv
npm install -g remark-cli remark-lint remark-preset-lint-consistent remark-preset-lint-markdown-style-guide remark-preset-lint-recommended remark-stringify
npm install -g jsonlint jshint
npm install -g sql-language-server
npm install -g remark-cli remark-lint remark-preset-lint-consistent remark-preset-lint-markdown-style-guide remark-preset-lint-recommended remark-stringify jsonlint jshint sql-language-server @tailwindcss/language-server markserv

.PHONY: clean-nvim setup-vim

Expand Down
29 changes: 19 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,11 @@

Setup and configuration for my terminal based developer workflow:

- Zsh for a shell,
- Nix for package management of shell programs,
- uv for Python,
- Neovim for text editing.
- Zsh for a shell
- Nix for package management of shell programs
- uv for Python
- Neovim for text editing
- Stow for dotfiles management

This repo should be cloned into `$HOME` and set as `$XDG_CONFIG_HOME`.

Expand All @@ -16,7 +17,7 @@ This repo should be cloned into `$HOME` and set as `$XDG_CONFIG_HOME`.
Setup an Ubuntu machine:

```shell-session
$ make setup-ubuntu OS=ubuntu
$ make setup-ubuntu
```

This will also setup dependencies with Nix.
Expand All @@ -26,14 +27,14 @@ This will also setup dependencies with Nix.
Setup an macOS machine:

```shell-session
$ make setup-macos OS=macos
$ make setup-macos
```

This will also setup dependencies with Nix.

### Python

Ian stall `uv` and setup a global Python installation in a virtual environment:
Install `uv` and setup a global Python installation in a virtual environment:

```bash
$ make python
Expand All @@ -44,17 +45,23 @@ $ make python
Use GNU Stow to symlink dotfiles for Bash, Zsh, Tmux and Git:

```shell-session
$ make dotfiles OS=macos
$ make dotfiles
```

Note: The `OS` variable is automatically set by the `setup-macos` and `setup-ubuntu` targets. For manual dotfiles setup, you can export the OS variable first:

```shell-session
$ export OS=macos && make dotfiles
```

Valid values for `OS` are `macos`, `wsl` or `windows`.

A script `./scripts/bootstrap-stow.sh` will attempt to bootstrap Stow if it's not already available. Stow bootstrapping is not setup for Windows because Windows is awful.
A script `./stow/setup.sh` will attempt to bootstrap Stow if it's not already available. Stow bootstrapping is not setup for Windows because Windows is awful.

You can run the setup without bootstrapping Stow with:

```shell-session
$ make dotfiles OS=macos -o bootstrap-stow
$ make dotfiles OS=macos -o setup-stow
```

### Nix
Expand Down Expand Up @@ -105,3 +112,5 @@ Had weird issue with the first execution of Kitty not loading the `kitty.conf` c

$ launchctl load ~/Library/LaunchAgents/setenv.XDG_CONFIG_HOME.plist
```


5 changes: 1 addition & 4 deletions dotfiles/.envrc
Original file line number Diff line number Diff line change
@@ -1,5 +1,2 @@
source_env_if_exists ~/.envrc.secret
source_env_if_exists ~/.env.secret
export TRACE=0
export VIRTUAL_ENV="~/.venv/bin/activate"
source ~/.venv/bin/activate
layout python
3 changes: 2 additions & 1 deletion dotfiles/.gitconfig
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
diffs = diff --staged
logg = log --pretty=fuller --abbrev-commit --stat -n 5
loggg = log --pretty=fuller --abbrev-commit --stat --patch -n 5
logggg = log --oneline --decorate
rmf = rm -f

[column]
Expand Down Expand Up @@ -39,7 +40,7 @@
tool = nvimdiff

[mergetool "nvimdiff"]
cmd = nvim -d $LOCAL $REMOTE
cmd = nvim -d $LOCAL $REMOTE $MERGED

[pull]
rebase = false
Expand Down
1 change: 1 addition & 0 deletions dotfiles/.tmux.conf
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ set -g base-index 1
set -g default-shell $SHELL
set -g default-terminal screen-256color
set -g status-keys vi
set -g mode-keys vi
set -g history-limit 100000

# KEYS
Expand Down
6 changes: 1 addition & 5 deletions dotfiles/common/.zshenv
Original file line number Diff line number Diff line change
@@ -1,15 +1,11 @@
bash $HOME/dotfiles/scripts/trace.sh "$0"

export XDG_CONFIG_HOME=~/dotfiles

if [ -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh' ]; then
. '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh'
fi
export EDITOR=$(which nvim)

export XDG_CONFIG_HOME=$HOME/dotfiles
if command -v launchctl >/dev/null 2>&1; then
launchctl setenv XDG_CONFIG_HOME $XDG_CONFIG_HOME
fi

source $HOME/dotfiles/scripts/funcs.sh
source $HOME/dotfiles/scripts/aliases.sh
5 changes: 3 additions & 2 deletions dotfiles/common/env.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
#!/usr/bin/env bash

export XDG_CONFIG_HOME=~/dotfiles
export PERSONAL_PATH="$HOME/personal"
export TODO="$PERSONAL_PATH/todo.md"
export DIRENV_LOG_FORMAT=""
# export TODO="$PERSONAL_PATH/todo.md"
27 changes: 27 additions & 0 deletions fish/config.fish
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Enable Nix daemon
if test -e '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.fish'
source '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.fish'
end

# Source common environment variables
set -gx XDG_CONFIG_HOME ~/dotfiles
set -gx PERSONAL_PATH "$HOME/personal"
set -gx TODO "$PERSONAL_PATH/todo.md"
set -gx EDITOR nvim

bass source ~/dotfiles/scripts/aliases.sh
alias 'claude'='npx claude'
alias 't'='tmux new'
alias 's'='search'

# Add homebrew to PATH
set -gx PATH /opt/homebrew/bin $PATH

# Disable fish greeting message
set -g fish_greeting

if status is-interactive
bass source ~/dotfiles/scripts/aliases.sh
starship init fish | source
set -gx PATH ~/.fzf/bin $PATH
end
3 changes: 3 additions & 0 deletions fish/setup.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
curl -sL https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
fisher install edc/bass
fisher install jethrokuan/z
6 changes: 3 additions & 3 deletions nix/flake.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions nix/flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,11 @@
cmakeMinimal
codespell
direnv
dpkg
# dpkg
efm-langserver
entr
findutils
fish
# fish
flyctl
gh
git
Expand Down
78 changes: 33 additions & 45 deletions nvim/lazy-lock.json
Original file line number Diff line number Diff line change
@@ -1,70 +1,58 @@
{
"CopilotChat.nvim": { "branch": "main", "commit": "a89f5f1162b04a0962e5f4c3cdf248a81e7e53cb" },
"LuaSnip": { "branch": "master", "commit": "c9b9a22904c97d0eb69ccb9bab76037838326817" },
"CopilotChat.nvim": { "branch": "main", "commit": "1d8aa27e2317950b0b7ddc023487c6f2b7b074ca" },
"LuaSnip": { "branch": "master", "commit": "de10d8414235b0a8cabfeba60d07c24304e71f5c" },
"Vim-Jinja2-Syntax": { "branch": "master", "commit": "2c17843b074b06a835f88587e1023ceff7e2c7d1" },
"barbar.nvim": { "branch": "master", "commit": "807bede7ef1d8e2ac5f108e9ac8123b1e2d321e3" },
"barbar.nvim": { "branch": "master", "commit": "549ee11d97057eae207bafa2c23c315942cca097" },
"blink-cmp-copilot": { "branch": "main", "commit": "439cff78780c033aa23cf061d7315314b347e3c1" },
"blink-cmp-dictionary": { "branch": "master", "commit": "5f1a703416e5090b9633c43873dba8ba03b0fb23" },
"blink-emoji.nvim": { "branch": "master", "commit": "a77aebc092ebece1eed108f301452ae774d6b67a" },
"blink-ripgrep.nvim": { "branch": "main", "commit": "56084d1f45c8621d23d4bac724c2dc50b1eb75db" },
"blink.cmp": { "branch": "main", "commit": "9bcb14b43852a6f2bfd5ac9ef29cb5cf09b1b39b" },
"blink-cmp-dictionary": { "branch": "master", "commit": "43b701fe9728a704bc63e4667c5d8b398bf129b2" },
"blink-emoji.nvim": { "branch": "master", "commit": "f22ce8cac02a6ece05368220f1e38bd34fe376f9" },
"blink-ripgrep.nvim": { "branch": "main", "commit": "b71592e916d748492c54b8bc9bc17dc2a0dcdfb5" },
"blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" },
"blink.compat": { "branch": "main", "commit": "2ed6d9a28b07fa6f3bface818470605f8896408c" },
"bullets.vim": { "branch": "master", "commit": "8f3259e807c40b91d247f612823295ab99777a65" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"conform.nvim": { "branch": "master", "commit": "eebc724d12c5579d733d1f801386e0ceb909d001" },
"bullets.vim": { "branch": "master", "commit": "1c13e510e11d08b0259e8e627f128359c5521962" },
"conform.nvim": { "branch": "master", "commit": "b4aab989db276993ea5dcb78872be494ce546521" },
"copilot-cmp": { "branch": "master", "commit": "15fc12af3d0109fa76b60b5cffa1373697e261d1" },
"copilot.lua": { "branch": "master", "commit": "0a7502946845fb14b860a6384c709a791bbab96a" },
"dbtpal": { "branch": "main", "commit": "706134b879eb2f48b2abf56f29e95a30a52cf398" },
"copilot.lua": { "branch": "master", "commit": "407fbd5cd3397e1e46b7dedbd928eefcaf621e76" },
"dbtpal": { "branch": "main", "commit": "981eab51609362712c64e3cf3fb773fe11f859b9" },
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
"emmet-vim": { "branch": "master", "commit": "6c511a8d7d2863066f32e25543e2bb99d505172c" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" },
"gitsigns.nvim": { "branch": "main", "commit": "17ab794b6fce6fce768430ebc925347e349e1d60" },
"emmet-vim": { "branch": "master", "commit": "e98397144982d1e75b20d94d55a82de3ec8f648d" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" },
"gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" },
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lualine.nvim": { "branch": "master", "commit": "0ea56f91b7f51a37b749c050a5e5dfdd56b302b3" },
"mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
"mini.indentscope": { "branch": "main", "commit": "8af2569a7d7fd37300dfa760e44e71efbbf322fd" },
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
"nui.nvim": { "branch": "main", "commit": "8d3bce9764e627b62b07424e0df77f680d47ffdb" },
"nvim-autopairs": { "branch": "master", "commit": "2a406cdd8c373ae7fe378a9e062a5424472bd8d8" },
"nvim-bqf": { "branch": "main", "commit": "e20417d5e589e03eaaaadc4687904528500608be" },
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
"mini.icons": { "branch": "main", "commit": "f9a177c11daa7829389b7b6eaaec8b8a5c47052d" },
"mini.nvim": { "branch": "main", "commit": "e7538b549361c9ac8416a07b0223ce03c508bfe7" },
"nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" },
"nvim-bqf": { "branch": "main", "commit": "17680cda3538913e88dd4c6456c837db9ace40ae" },
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
"nvim-lint": { "branch": "master", "commit": "5b1bdf306bd3e565908145279e8bbfc594dac3b3" },
"nvim-lspconfig": { "branch": "master", "commit": "4ea9083b6d3dff4ddc6da17c51334c3255b7eba5" },
"nvim-notify": { "branch": "master", "commit": "22f29093eae7785773ee9d543f8750348b1a195c" },
"nvim-treesitter": { "branch": "master", "commit": "0e21ee8df6235511c02bab4a5b391d18e165a58d" },
"nvim-treesitter-context": { "branch": "master", "commit": "439789a9a8df9639ecd749bb3286b77117024a6f" },
"nvim-lint": { "branch": "master", "commit": "f126af5345c7472e9a0cdbe1d1a29209be72c4c4" },
"nvim-lspconfig": { "branch": "master", "commit": "c8b90ae5cbe21d547b342b05c9266dcb8ca0de8f" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-treesitter-context": { "branch": "master", "commit": "dca8726fea2c14e1ce6adbaa76a04816fbfaff61" },
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
"nvim-web-devicons": { "branch": "master", "commit": "c90dee4e930ab9f49fa6d77f289bff335b49e972" },
"obsidian.nvim": { "branch": "main", "commit": "e0eb92c5afcacf5bf11e4735079a538fd1486ea9" },
"oil.nvim": { "branch": "master", "commit": "302bbaceeafc690e6419e0c8296e804d60cb9446" },
"nvim-web-devicons": { "branch": "master", "commit": "f66cdfef5e84112045b9ebc3119fee9bddb3c687" },
"obsidian.nvim": { "branch": "main", "commit": "705cc9b4f66eca1e54040ac819102e80a32896d3" },
"oil.nvim": { "branch": "master", "commit": "07f80ad645895af849a597d1cac897059d89b686" },
"peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
"telescope-git-file-history.nvim": { "branch": "master", "commit": "c27d99ba88ec5f0b6d2b9f9bc67dd3d14c610b25" },
"telescope-git-file-history.nvim": { "branch": "master", "commit": "e7d495319f2a04df96402057a6992ea970f8914d" },
"telescope-makefile": { "branch": "master", "commit": "6e5b5767751dbf73ad4f126840dcf1abfc38e891" },
"telescope.nvim": { "branch": "master", "commit": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
"trouble.nvim": { "branch": "main", "commit": "85bedb7eb7fa331a2ccbecb9202d8abba64d37b3" },
"undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
"undotree": { "branch": "master", "commit": "fe9a9d0645f0f5532360b5e5f5c550d7bb4f1869" },
"vim": { "branch": "master", "commit": "d4b0823100c702af127cba8dd5595a8f599041ec" },
"vim-argwrap": { "branch": "master", "commit": "f3e26a5ad249d09467804b92e760d08b1cc457a1" },
"vim-bufkill": { "branch": "master", "commit": "3113181d0c1bfb8719f3ddcd2e2f35a8d763d1e5" },
"vim-closetag": { "branch": "master", "commit": "d0a562f8bdb107a50595aefe53b1a690460c3822" },
"vim-commentary": { "branch": "master", "commit": "64a654ef4a20db1727938338310209b6a63f60c9" },
"vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" },
"vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" },
"vim-grepper": { "branch": "master", "commit": "acaaf32edaa11d82fb972d2af36b949ec3042928" },
"vim-lastplace": { "branch": "master", "commit": "e58cb0df716d3c88605ae49db5c4741db8b48aa9" },
"vim-markdown-toc": { "branch": "master", "commit": "aa9cc3b07791db5cbe5f29d661763bc0eb4fb7c1" },
"vim-one": { "branch": "master", "commit": "187f5c85b682c1933f8780d4d419c55d26a82e24" },
"vim-python-pep8-indent": { "branch": "master", "commit": "60ba5e11a61618c0344e2db190210145083c91f8" },
"vim-repeat": { "branch": "master", "commit": "65846025c15494983dafe5e3b46c8f88ab2e9635" },
"vim-strip-trailing-whitespace": { "branch": "master", "commit": "59385775cbe416b2797ec5e2c7eb445a3398dd46" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vim-table-mode": { "branch": "master", "commit": "e4365bde024f73e205eefa2fb78e3029ddb92ea9" },
"vim-textobj-markdown": { "branch": "master", "commit": "9cba182b2c30afc982ace0deb1200cc394799799" },
"vim-textobj-python": { "branch": "master", "commit": "06de233e805b6bcfd0fde7591c64cf927637feb7" },
"vim-textobj-user": { "branch": "master", "commit": "41a675ddbeefd6a93664a4dc52f302fe3086a933" },
"vim-table-mode": { "branch": "master", "commit": "e156dbbedce0bbf61c0919db7678fa246fabd616" },
"winresizer": { "branch": "master", "commit": "9bd559a03ccec98a458e60c705547119eb5350f3" },
"zen-mode.nvim": { "branch": "main", "commit": "863f150ca321b3dd8aa1a2b69b5f411a220e144f" }
}
Loading