My dotfiles! Use at your own risk. Some pre-requisites (see readme)

Readme

.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:

FileDescriptionRelated plugins
autoformat.luaCode auto formattingneovim/nvim-lspconfig
barbar.luaTabsromgrk/barbar.nvim
ccc.luaColor picker and highlighteruga-rosa/ccc.nvim
cmp.luaAutocompletion with LSP, snippets, and LLM integrationhrsh7th/nvim-cmp, L3MON4D3/LuaSnip
colorscheme.luaColor scheme switcher
debug.luaDebugger-related code, most of these are not maintained/testedmfussenegger/nvim-dap
doc_search.luaSearch documentation for different languages (MDN, React, NPM, Dart, etc.)
floating-input.luaFloating inputliangxianzhe/floating-input.nvim
format.luaCode formatting with PrettierMunifTanjim/prettier.nvim
fugitive.luaGit manager - I use LazyGit now, but this remain mostly for git blame functionalitytpope/vim-fugitive
git_open.luaOpen git repositories, branches, commits, and files in browser
go.luaGo language support and toolingray-x/go.nvim
lazygit.luaLazyGit inside nvimkdheepak/lazygit.nvim
license.luaSPDX license header snippets
llm.luaLLM - Copilot, ChatGPT (requires OPENAI_API_KEY env), Codeiumzbirenbaum/copilot.lua, Exafunction/codeium.nvim, jackMort/ChatGPT.nvim
lsp.luaLSP related configswilliamboman/mason-lspconfig.nvim, akinsho/flutter-tools.nvim
matchup.luaEnables moving between function start/end as you would between brackets using %andymass/vim-matchup
noice.luaNotifications & UI improvementsfolke/noice.nvim
notes.luaNotes management with Telescope integration
nvim-test.luaRun tests for any project type inside nvimklen/nvim-test
oil.luaBetter than netrw. Fight me. (Lets you move between and edit directories as you would a normal file)stevearc/oil.nvim
popup-menu.luaCustom right-click popup menu with LSP actions
project_runner.luaRun prepared terminal commands per filetype - e.g. package.json scripts from ts/js files (Not a plugin)
quicklist.luaDelete/add to vim quicklist
quotes.luaAllows you to toggle between \``, and’` quotes around the cursor
remap.luaGeneral vim remaps not related to specific plugins
schemastore.luaAuto-loads JSON $schema depending on filetype and nameb0o/schemastore.nvim
separators.luaInsert comment separator lines
session.luaSession management with auto save/restore
statusline.luaStatus line UI updatesnvim-lualine/lualine.nvim
surround.luaSurround any text with anything like brackets, quotes, HTML tags or custom stringskylechui/nvim-surround
telescope.luaFuzzy finder, preview and picker for files/commands/customnvim-telescope/telescope.nvim
text-transform.luaTransform between PascalCase, snake_case, camelCase, CONST_CASE and morechenasraf/text-transform.nvim
theme.luaTheme configuration (OneDark)navarasu/onedark.nvim
todo_comments.luaHighlight & find TODO/HACK/FIXME/etc in comments across the projectfolke/todo-comments.nvim
treesitter.luaSyntax highlighting on steroidsnvim-treesitter/nvim-treesitter
trouble.luaView list of diagnostics, quick fixes, TODOs, etcfolke/trouble.nvim
undotree.luaUndo each file as you would a git branch!mbbill/undotree
uuid_gen.luaUUID generation snippetL3MON4D3/LuaSnip
visual-multi.luaMultiple cursor support for nvimmg979/vim-visual-multi

How to install

  1. Install zsh

  2. Clone this repository into ~/.dotfiles:

    git clone git@github.com:chenasraf/dotfiles.git --depth 1 ~/.dotfiles
  3. Replace entire contents of ~/.zshrc to the new version using (ln -s does not work):

    echo 'source "$HOME/.dotfiles/.zshrc"' > ~/.zshrc
  4. Run install scripts:

    source ~/.dotfiles/install.zsh

    And 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)