Written by Aniket Chavan @chav.dev
Hi! Welcome to my Ubuntu system starter. This repo was created to help me set up a new system on whichever machine I may have. It focuses around the basics of shell utilities, version control and editors for which we use zsh, git/github and nvim. I do love fish and mac so I'll be creating versions of this to tailor those experiences also.
In this doc you'll find an explanation for how to get an Ubuntu system started from scratch using this repo, an explanation for what exactly it sets up and also some notes on what to do after this repo has served its purpose.
- git is pre-installed.
- run
sh ~/dotfiles/scripts/setup.sh
- create ssh key/s and configure correct keys to load in
startup.sh
- set git configs
Use the ssh-keygen
command and pass a specific name such as "personal_github", press enter without any value for the passphrase.
The startup.sh
script starts the ssh-agent and you can set it up to add your ssh keys.
Read these articles to learn more about how ssh keys are generated and how the ssh-agent works.
https://www.ssh.com/academy/ssh/keygen#what-is-ssh-keygen?
https://www.ssh.com/academy/ssh/agent
This neovim setup is following ThePrimeagen's setup video: 0 to LSP : Neovim RC From Scratch.
The setup.sh
script will copy the contents of the neovim
directory into ~/.config
.
nvim
├── after
│ └── plugin
│ ├── colours.lua
│ ├── fugitive.lua
│ ├── harpoon.lua
│ ├── lsp.lua
│ ├── lualine.lua
│ ├── telescope.lua
│ ├── treesitter.lua
│ └── undotree.lua
├── init.lua
├── lua
│ └── uss
│ ├── init.lua
│ ├── packer.lua
│ ├── remap.lua
│ └── set.lua
└── plugin
└── packer_compiled.lua
You can rename the
uss
directory to a name of your choosing.
Above is a folder structure for the neovim configuration. The after/plugin
subdirectory contains configuration files for each plugin which are loaded in after neovim has loaded up.
The outermost init.lua
is the first entrypoint for neovim configuration.
The lua/uss
subdirectory contains an init.lua
which loads in the other scripts, each abstracted to take care of plugins in packer.lua
, keybinding remaps in remap.lua
and global vim configs in set.lua
.
:lua ColourMyPencils()
: applies colour theme and transparency:PackerSync
: installs packer plugins:Mason
: opens a GUI to select and install language servers
Should be noted that the leader key is [SPACE].
<leader>+pv
: return to filetree<leader>+pf
: file fuzzy finder<leader>+ps
: text fuzzy finder<ctr>+p
: file fuzzy finder for git tracked files<leader>+q
: close current buffer<leader>+c
: select a buffer to close
Plugin | Description | Link |
---|---|---|
packer | neovim package manager | github |
telescope | fuzzy finder for files | github |
onedark | colour theme | github |
treesitter | crazy powerful AST builder enabling syntax highlighting and other stuff | github |
harpoon | quickly switch between a bunch of files | github |
undotree | builds an undotree which you can interact with at any point | github |
vim-fugitive | git commands in neovim | github |
lsp-zero | easy config for neovim LSP, enables code intellisense | github |
lualine | status bar for neovim configurable in lua | github |
modes | different line highlighting based on editor mode | github |
Tool | Description | Link |
---|---|---|
zsh | better shell alternative for bash | website |
oh-my-zsh | manager for zsh for maintaining best zsh configs and simplifying customisation in plugins and themes | website |
znap | another tool for making zsh plugin installs easier | github |
zsh-autocomplete | Gives live auto-completions for directories and files | github |
zsh-autosuggestions | Brings fish-like suggestions for previously used commands | github |
zsh-syntax-highlighting | Brings fish-like syntax highlighiting to zsh | github |
powerlevel10k | best theme for zsh | github |
gh cli | github's cli | github |
just | imagine package.json scripts but language agnostic, it allows project specific utility scripts | website |
neovim | modal terminal editor | website |
volta | node version manager | website |