My dotfiles! Use at your own risk. Some pre-requisites (see readme)
.dotfiles
These are my personal dotfiles.
Screenshots
Some notable tools I use are:
- Nvim (
.config/nvim) - Tmux (
.config/tmux,utils/tx) - WezTerm (
.config/wezterm/wezterm.lua)
Requirements
- Node.js (PNPM will be installed)
- 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
-
Install zsh
-
Clone this repository into
~/.dotfiles:git clone git@github.com:chenasraf/dotfiles.git --depth 1 ~/.dotfiles -
Replace entire contents of
~/.zshrcto the new version using (ln -sdoes not work):echo 'source "$HOME/.dotfiles/.zshrc"' > ~/.zshrc -
Run install scripts:
source ~/.dotfiles/install.zshAnd reload the terminal
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)