2026-03-30 14:49:30 +03:00
2024-02-04 00:27:09 +02:00
2025-12-01 21:12:17 +02:00
2026-04-03 09:56:49 +03:00
2026-03-30 14:32:02 +03:00
2022-09-01 23:52:07 +03:00
2026-03-31 15:48:18 +03:00
2024-07-21 22:44:10 +03:00
2023-06-20 10:26:24 +03:00
2026-03-31 14:21:04 +03:00
2024-03-28 15:18:01 +02:00
2024-07-21 22:44:10 +03:00

.dotfiles

These are my personal dotfiles.

image
Screenshots image image image

Some notable tools I use are:

  • Nvim (.config/nvim)
  • Tmux (.config/tmux, utils/tx)
  • WezTerm (.config/wezterm/wezterm.lua)

Requirements

  1. Node.js (PNPM will be installed)
  2. jq

Nvim Plugins

I have many many plugins and configurations going on.

Started from kickstart.nvim and heavily modified.

Plugins are installed and configured in .config/nvim/lua/casraf/plugins.

Some (but not all) of the plugins/modifications are listed here:

File Description Related plugins
autoformat.lua Code auto formatting neovim/nvim-lspconfig
barbar.lua Tabs romgrk/barbar.nvim
ccc.lua Color picker and highlighter uga-rosa/ccc.nvim
cmp.lua Autocompletion with LSP, snippets, and LLM integration hrsh7th/nvim-cmp, L3MON4D3/LuaSnip
colorscheme.lua Color scheme switcher
debug.lua Debugger-related code, most of these are not maintained/tested mfussenegger/nvim-dap
doc_search.lua Search documentation for different languages (MDN, React, NPM, Dart, etc.)
floating-input.lua Floating input liangxianzhe/floating-input.nvim
format.lua Code formatting with Prettier MunifTanjim/prettier.nvim
fugitive.lua Git manager - I use LazyGit now, but this remain mostly for git blame functionality tpope/vim-fugitive
git_open.lua Open git repositories, branches, commits, and files in browser
go.lua Go language support and tooling ray-x/go.nvim
lazygit.lua LazyGit inside nvim kdheepak/lazygit.nvim
license.lua SPDX license header snippets
llm.lua LLM - Copilot, ChatGPT (requires OPENAI_API_KEY env), Codeium zbirenbaum/copilot.lua, Exafunction/codeium.nvim, jackMort/ChatGPT.nvim
lsp.lua LSP related configs williamboman/mason-lspconfig.nvim, akinsho/flutter-tools.nvim
matchup.lua Enables moving between function start/end as you would between brackets using % andymass/vim-matchup
noice.lua Notifications & UI improvements folke/noice.nvim
notes.lua Notes management with Telescope integration
nvim-test.lua Run tests for any project type inside nvim klen/nvim-test
oil.lua Better than netrw. Fight me. (Lets you move between and edit directories as you would a normal file) stevearc/oil.nvim
popup-menu.lua Custom right-click popup menu with LSP actions
project_runner.lua Run prepared terminal commands per filetype - e.g. package.json scripts from ts/js files (Not a plugin)
quicklist.lua Delete/add to vim quicklist
quotes.lua Allows you to toggle between \``, "and'` quotes around the cursor
remap.lua General vim remaps not related to specific plugins
schemastore.lua Auto-loads JSON $schema depending on filetype and name b0o/schemastore.nvim
separators.lua Insert comment separator lines
session.lua Session management with auto save/restore
statusline.lua Status line UI updates nvim-lualine/lualine.nvim
surround.lua Surround any text with anything like brackets, quotes, HTML tags or custom strings kylechui/nvim-surround
telescope.lua Fuzzy finder, preview and picker for files/commands/custom nvim-telescope/telescope.nvim
text-transform.lua Transform between PascalCase, snake_case, camelCase, CONST_CASE and more chenasraf/text-transform.nvim
theme.lua Theme configuration (OneDark) navarasu/onedark.nvim
todo_comments.lua Highlight & find TODO/HACK/FIXME/etc in comments across the project folke/todo-comments.nvim
treesitter.lua Syntax highlighting on steroids nvim-treesitter/nvim-treesitter
trouble.lua View list of diagnostics, quick fixes, TODOs, etc folke/trouble.nvim
undotree.lua Undo each file as you would a git branch! mbbill/undotree
uuid_gen.lua UUID generation snippet L3MON4D3/LuaSnip
visual-multi.lua Multiple cursor support for nvim mg979/vim-visual-multi

How to install

git clone git@github.com:chenasraf/dotfiles.git --depth 1 ~/.dotfiles
~/.dotfiles/install.sh

The script handles everything: installs Homebrew, zsh, stow, and sofmani; symlinks configs; and runs sofmani to set up all tools. It works on macOS, Linux, and WSL, and is safe to run multiple times.

Manual install

  1. Install zsh and GNU Stow

    brew install stow
    
  2. Clone this repository into ~/.dotfiles:

    git clone git@github.com:chenasraf/dotfiles.git --depth 1 ~/.dotfiles
    
  3. Symlink configs into your home directory using stow:

    cd ~/.dotfiles
    stow -t ~ .
    

    This creates symlinks for .zshrc, .editorconfig, .config/*, .local/share/zsh/plugins/local/*, etc. Files listed in .stow-local-ignore (scripts, utilities, repo metadata) are excluded.

    To restow after pulling changes:

    cd ~/.dotfiles
    stow -R -t ~ .
    
  4. Install tools via sofmani:

    sofmani
    

    This handles brew packages, git plugins, language runtimes, and other dependencies.

Structure

~/.dotfiles/
├── .config/          # App configs (aerospace, alacritty, ghostty, lazygit, nvim, tmux, wezterm, ...)
├── .local/           # Zsh plugins (stowed to ~/.local/share/zsh/plugins/local/)
├── .editorconfig     # Global editorconfig (stowed to ~/.editorconfig)
├── .zshrc            # Shell config (stowed to ~/.zshrc)
├── exports.zsh       # Environment variables (sourced by .zshrc)
├── aliases.zsh       # Shell aliases (sourced by .zshrc)
├── completions/      # Zsh completions (added to fpath by .zshrc)
├── _plugins/         # Plugin loader and MOTD scripts (sourced from $DOTFILES)
├── utils/            # Build utilities
└── .stow-local-ignore

Stow symlinks everything in the repo root into ~, except items in .stow-local-ignore (scripts, utilities, and repo metadata that are sourced directly from $DOTFILES).

My Other Stuff

See some of my other projects at my website.

Or some of my packages:

NPM

  • Simple Scaffold - Generate any file structure - from single components to entire app boilerplates, with a single command.
  • Massarg - Flexible, powerful, and simple command/argument parser for CLI applications

Dart/Flutter

Apps

  • Dungeon Paper - A Dungeon World character sheet app written with Flutter
  • Mudblock - An MUD client for mobile & desktop

Packages

  • Script Runner - Run all your project-related scripts in a portable, simple config.
  • Unaconfig - Load your user's config files for your package easily, from multiple sources & formats. Like cosmiconfig, but for Dart!
  • CTelnet - A simple Telnet client for Dart/Flutter, parse incoming and outgoing data easily and quickly.
  • btool - Generic build helper tools for Flutter/Dart such as manipulating version, package name or application ID
  • Wheel Spinner - A simple Flutter widget for updating a number using a pitch bender-like spinner

Neovim

  • text-transform.nvim - Common text transformers for nvim - switch between camelCase, PascalCase, snake_case, and more!

Rust

  • tblf - Turns any CLI output lines into tables.

Go

  • GI Gen - Gitignore generator for any type of projectackages/unaconfig)
Description
My dotfiles! Use at your own risk. Some pre-requisites (see readme)
Readme 209 MiB
Languages
Lua 48.7%
Shell 47.8%
Ruby 2.3%
Vim Script 0.5%
HTML 0.4%
Other 0.3%