Compare commits
48 Commits
ff321c0b72
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 1214c4f3c8 | |||
| cbbf1ca0f9 | |||
| d6925ab9cc | |||
| 3f1a1c1375 | |||
| 7140f9cf70 | |||
| 80ba7347e1 | |||
| 622f5f3338 | |||
| 02f3624b6f | |||
| 566ccc8489 | |||
| 6ffe89a826 | |||
| 06d71e8b38 | |||
| 2557e11e17 | |||
| cefef8a655 | |||
| a9ec41dfa9 | |||
| dda9ace55c | |||
| f4fb8fe907 | |||
| df2a4bebf3 | |||
| fbc69aed2c | |||
| 4c76f37d45 | |||
| 72fef12c29 | |||
| d5d5c11767 | |||
| 29d3909d0a | |||
| 836bec9976 | |||
| dbcd1bc391 | |||
| 4d1b97b83c | |||
| 956ea586d7 | |||
| af6f0cbaeb | |||
| 33c11fde16 | |||
| 1ab2de3a7e | |||
| f4295a7ac1 | |||
| d187efb257 | |||
| 7e9828e121 | |||
| d009c75fb0 | |||
| dfd53bbe67 | |||
| a44cc3b664 | |||
| bdaf9a05e0 | |||
| b7e91b632e | |||
| fa99c79c80 | |||
| 236b0a9d28 | |||
| 8c0b9931bc | |||
| f6239d9d58 | |||
| cad7eb1b77 | |||
| fa757d71ba | |||
| 3e111aa011 | |||
| 064d3d67ea | |||
| 1b1a846e7d | |||
| 0b61a4c8b8 | |||
| 4b673bcd9b |
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
nvim/dot-config/nvim/lazy-lock.json
|
||||
nvim/dot-config/nvim/.luarc.json
|
||||
tmux/dot-config/tmux/plugins/
|
||||
61
README.md
61
README.md
@@ -0,0 +1,61 @@
|
||||
# Dotfiles
|
||||
|
||||
Dotfiles is a repository to hold my collection of dotfiles. Each directory is it's own module if you will for enabling certain subsets of the dotfiles.
|
||||
|
||||
## Installation
|
||||
|
||||
To install dotfiles first you need to clone the repository. I highly recommend that you clone into your home directory so that you don't need to pass a `--target` every time we invoke stow.
|
||||
|
||||
We can clone the repository with the following command:
|
||||
|
||||
`git clone https://git.wesirvin.com/wesley/dotfiles.git ~/dotfiles`
|
||||
|
||||
After cloning that is it. Just change into the directory and you can deploy or un-deploy following the below instructions.
|
||||
|
||||
## Deploying
|
||||
|
||||
From inside of our dotfiles directory we can deploy very easily with the following command:
|
||||
|
||||
`stow --dotfiles --verbose zsh`
|
||||
|
||||
If this command succeeds that is it. Stow creates symlinks to the files in this directory for where they need to go. If you already have configuration files in place then the command may fail. If that happens we have a couple of choices. First things first we need to adopt in the already existing file like so:
|
||||
|
||||
`stow --dotfiles --adopt --verbose zsh`
|
||||
|
||||
What adopt will do is it will pull your already existing files in and put it's contents in in place of our contents. You have 2 options from this point.
|
||||
|
||||
### Keeping Your Changes
|
||||
|
||||
If you want to keep your configuration instead of using the one provided in the repository you can just do a git commit. Highly recommend changing branches first. This can be done like so:
|
||||
|
||||
```bash
|
||||
git checkout -b my-custom-config
|
||||
git add --all
|
||||
git commit -m "My custom configuration"
|
||||
```
|
||||
|
||||
### Using the repository version
|
||||
|
||||
If you instead want to use the version of the configuration provided from this repository that is easy as well. That can be accomplished with the following:
|
||||
|
||||
`git restore zsh`
|
||||
|
||||
In this instance that will revert all the changes to the zsh module (effectively erasing your changes and putting back the repository configuration) but the symlinks are still in place. Just replace `zsh` with the module that you want to restore back to the repository version.
|
||||
|
||||
## Undeploying
|
||||
|
||||
If you want to undeploy the stowed files that can be done with the following:
|
||||
|
||||
`stow --delete --verbose zsh`
|
||||
|
||||
This command will unstow the zsh changes. The symlinks are removed and now you manually have to take care of the changes. If instead you want to redeploy you can run the following:
|
||||
|
||||
`stow --restow --verbose zsh`
|
||||
|
||||
This will unstow and then stow the files again. This is great to run if you for instance have moved files and you need to update the symlinks.
|
||||
|
||||
## Useful Hints
|
||||
|
||||
### Simulating Changes
|
||||
|
||||
If you are ever unsure of what is going to happen with a command you can always pass the `--simulate` flag. This combined with `--verbose` will show you exactly what would have changed without making any changes to any files on your system.
|
||||
|
||||
50
kitty/dot-config/kitty/current-theme.conf
Normal file
50
kitty/dot-config/kitty/current-theme.conf
Normal file
@@ -0,0 +1,50 @@
|
||||
# vim:ft=kitty
|
||||
|
||||
## name: Tokyo Night Storm
|
||||
## license: MIT
|
||||
## author: Folke Lemaitre
|
||||
## upstream: https://github.com/folke/tokyonight.nvim/raw/main/extras/kitty/tokyonight_storm.conf
|
||||
|
||||
|
||||
background #24283b
|
||||
foreground #c0caf5
|
||||
selection_background #2e3c64
|
||||
selection_foreground #c0caf5
|
||||
url_color #73daca
|
||||
cursor #c0caf5
|
||||
cursor_text_color #24283b
|
||||
|
||||
# Tabs
|
||||
active_tab_background #7aa2f7
|
||||
active_tab_foreground #1f2335
|
||||
inactive_tab_background #292e42
|
||||
inactive_tab_foreground #545c7e
|
||||
#tab_bar_background #1d202f
|
||||
|
||||
# Windows
|
||||
active_border_color #7aa2f7
|
||||
inactive_border_color #292e42
|
||||
|
||||
# normal
|
||||
color0 #1d202f
|
||||
color1 #f7768e
|
||||
color2 #9ece6a
|
||||
color3 #e0af68
|
||||
color4 #7aa2f7
|
||||
color5 #bb9af7
|
||||
color6 #7dcfff
|
||||
color7 #a9b1d6
|
||||
|
||||
# bright
|
||||
color8 #414868
|
||||
color9 #f7768e
|
||||
color10 #9ece6a
|
||||
color11 #e0af68
|
||||
color12 #7aa2f7
|
||||
color13 #bb9af7
|
||||
color14 #7dcfff
|
||||
color15 #c0caf5
|
||||
|
||||
# extended colors
|
||||
color16 #ff9e64
|
||||
color17 #db4b4b
|
||||
BIN
kitty/dot-config/kitty/images/terminal-bg.png
Normal file
BIN
kitty/dot-config/kitty/images/terminal-bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.3 MiB |
26
kitty/dot-config/kitty/kitty.conf
Normal file
26
kitty/dot-config/kitty/kitty.conf
Normal file
@@ -0,0 +1,26 @@
|
||||
# BEGIN_KITTY_THEME
|
||||
# Tokyo Night Storm
|
||||
include current-theme.conf
|
||||
# END_KITTY_THEME
|
||||
|
||||
cursor_shape block
|
||||
shell_integration no-cursor
|
||||
|
||||
#background_opacity 0.85
|
||||
#background_blur 1
|
||||
|
||||
background_image images/terminal-bg.png
|
||||
background_image_layout cscaled
|
||||
background_tint 0.95
|
||||
background_tint_gaps 0.10
|
||||
|
||||
window_margin_width 3
|
||||
single_window_margin_width 0
|
||||
|
||||
enabled_layouts fat:bias=70;full_size=1
|
||||
|
||||
map ctrl+shift+enter new_window_with_cwd
|
||||
|
||||
remember_window_size no
|
||||
initial_window_width 205c
|
||||
initial_window_height 45c
|
||||
19
nvim/dot-config/nvim/init.lua
Normal file
19
nvim/dot-config/nvim/init.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
-- Bootstrap lazy.nvim
|
||||
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
|
||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
|
||||
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
|
||||
if vim.v.shell_error ~= 0 then
|
||||
vim.api.nvim_echo({
|
||||
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },
|
||||
{ out, "WarningMsg" },
|
||||
{ "\nPress any key to exit..." },
|
||||
}, true, {})
|
||||
vim.fn.getchar()
|
||||
os.exit(1)
|
||||
end
|
||||
end
|
||||
vim.opt.rtp:prepend(lazypath)
|
||||
|
||||
require("vim-options")
|
||||
require("lazy").setup("plugins")
|
||||
19
nvim/dot-config/nvim/lua/plugins/barbar.lua
Normal file
19
nvim/dot-config/nvim/lua/plugins/barbar.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
return {
|
||||
"romgrk/barbar.nvim",
|
||||
config = function()
|
||||
require("barbar").setup({
|
||||
init = function() vim.g.barbar_auto_setup = false end,
|
||||
dependencies = {
|
||||
'lewis6991/gitsigns.nvim', -- Optional, for git status signs
|
||||
'nvim-tree/nvim-web-devicons', -- Optional, for file icons
|
||||
},
|
||||
opts = {
|
||||
|
||||
},
|
||||
vim.keymap.set('n', '<C-j>', ':BufferPrevious<CR>', {}),
|
||||
vim.keymap.set('n', '<C-k>', ':BufferNext<CR>', {}),
|
||||
vim.keymap.set('n', '<C-h>', ':BufferMovePrevious<CR>', {}),
|
||||
vim.keymap.set('n', '<C-l>', ':BufferMoveNext<CR>', {}),
|
||||
})
|
||||
end
|
||||
}
|
||||
52
nvim/dot-config/nvim/lua/plugins/completions.lua
Normal file
52
nvim/dot-config/nvim/lua/plugins/completions.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
return {
|
||||
{
|
||||
"hrsh7th/cmp-nvim-lsp",
|
||||
},
|
||||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
dependencies = {
|
||||
"saadparwaiz1/cmp_luasnip",
|
||||
"rafamadriz/friendly-snippets",
|
||||
},
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
config = function()
|
||||
local cmp = require("cmp")
|
||||
require("luasnip.loaders.from_vscode").lazy_load()
|
||||
|
||||
cmp.setup({
|
||||
snippet = {
|
||||
-- REQUIRED - you must specify a snippet engine
|
||||
expand = function(args)
|
||||
-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
|
||||
require("luasnip").lsp_expand(args.body) -- For `luasnip` users.
|
||||
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
|
||||
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
|
||||
-- vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+)
|
||||
end,
|
||||
},
|
||||
window = {
|
||||
completion = cmp.config.window.bordered(),
|
||||
documentation = cmp.config.window.bordered(),
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert({
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.abort(),
|
||||
["<CR>"] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
}),
|
||||
sources = cmp.config.sources({
|
||||
{ name = 'nvim_lsp' },
|
||||
-- { name = 'vsnip' }, -- For vsnip users.
|
||||
{ name = "luasnip" }, -- For luasnip users.
|
||||
-- { name = 'ultisnips' }, -- For ultisnips users.
|
||||
-- { name = 'snippy' }, -- For snippy users.
|
||||
}, {
|
||||
{ name = "buffer" },
|
||||
}),
|
||||
})
|
||||
end,
|
||||
},
|
||||
}
|
||||
48
nvim/dot-config/nvim/lua/plugins/lsp-config.lua
Normal file
48
nvim/dot-config/nvim/lua/plugins/lsp-config.lua
Normal file
@@ -0,0 +1,48 @@
|
||||
return {
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
config = function()
|
||||
require("mason").setup()
|
||||
end,
|
||||
},
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
config = function()
|
||||
require("mason-lspconfig").setup({
|
||||
ensure_installed = {
|
||||
"clangd",
|
||||
"lua_ls",
|
||||
"pyright",
|
||||
"rust_analyzer",
|
||||
"taplo",
|
||||
},
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
config = function()
|
||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
local lspconfig = require("lspconfig")
|
||||
lspconfig.clangd.setup({
|
||||
capabilities = capabilities
|
||||
})
|
||||
lspconfig.lua_ls.setup({
|
||||
capabilities = capabilities
|
||||
})
|
||||
lspconfig.pyright.setup({
|
||||
capabilities = capabilities
|
||||
})
|
||||
lspconfig.rust_analyzer.setup({
|
||||
capabilities = capabilities
|
||||
})
|
||||
lspconfig.taplo.setup({
|
||||
capabilities = capabilities
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "K", vim.lsp.buf.hover, {})
|
||||
vim.keymap.set("n", "gd", vim.lsp.buf.definition, {})
|
||||
vim.keymap.set("n", "<leader>ca", vim.lsp.buf.code_action, {})
|
||||
end,
|
||||
},
|
||||
}
|
||||
10
nvim/dot-config/nvim/lua/plugins/lualine.lua
Normal file
10
nvim/dot-config/nvim/lua/plugins/lualine.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
"nvim-lualine/lualine.nvim",
|
||||
config = function()
|
||||
require('lualine').setup({
|
||||
options = {
|
||||
theme = 'palenight'
|
||||
}
|
||||
})
|
||||
end
|
||||
}
|
||||
11
nvim/dot-config/nvim/lua/plugins/markdown.lua
Normal file
11
nvim/dot-config/nvim/lua/plugins/markdown.lua
Normal file
@@ -0,0 +1,11 @@
|
||||
return {
|
||||
"MeanderingProgrammer/render-markdown.nvim",
|
||||
config = function ()
|
||||
require("render-markdown").setup({
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
})
|
||||
end
|
||||
}
|
||||
13
nvim/dot-config/nvim/lua/plugins/neotree.lua
Normal file
13
nvim/dot-config/nvim/lua/plugins/neotree.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
return {
|
||||
"nvim-neo-tree/neo-tree.nvim",
|
||||
branch = "v3.x",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
|
||||
"MunifTanjim/nui.nvim",
|
||||
-- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
|
||||
},
|
||||
config = function()
|
||||
vim.keymap.set('n', '<leader>fe', ':Neotree filesystem reveal toggle left<CR>', {})
|
||||
end
|
||||
}
|
||||
19
nvim/dot-config/nvim/lua/plugins/none-ls.lua
Normal file
19
nvim/dot-config/nvim/lua/plugins/none-ls.lua
Normal file
@@ -0,0 +1,19 @@
|
||||
return {
|
||||
"nvimtools/none-ls.nvim",
|
||||
config = function()
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
null_ls.setup({
|
||||
sources = {
|
||||
null_ls.builtins.formatting.black,
|
||||
null_ls.builtins.formatting.clang_format,
|
||||
null_ls.builtins.formatting.gersemi,
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.diagnostics.cpplint,
|
||||
null_ls.builtins.diagnostics.pylint,
|
||||
},
|
||||
})
|
||||
|
||||
vim.keymap.set("n", "<leader>gf", vim.lsp.buf.format, {})
|
||||
end,
|
||||
}
|
||||
43
nvim/dot-config/nvim/lua/plugins/telescope.lua
Normal file
43
nvim/dot-config/nvim/lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,43 @@
|
||||
return {
|
||||
{
|
||||
'nvim-telescope/telescope.nvim',
|
||||
branch = '0.1.x',
|
||||
dependencies = { 'nvim-lua/plenary.nvim' },
|
||||
config = function()
|
||||
local builtin = require('telescope.builtin')
|
||||
vim.keymap.set('n', '<C-p>', builtin.find_files, {})
|
||||
vim.keymap.set('n', '<leader>fg', builtin.live_grep, {})
|
||||
end
|
||||
},
|
||||
{
|
||||
'nvim-telescope/telescope-ui-select.nvim',
|
||||
config = function ()
|
||||
-- This is your opts table
|
||||
require("telescope").setup {
|
||||
extensions = {
|
||||
["ui-select"] = {
|
||||
require("telescope.themes").get_dropdown {
|
||||
-- even more opts
|
||||
}
|
||||
-- pseudo code / specification for writing custom displays, like the one
|
||||
-- for "codeactions"
|
||||
-- specific_opts = {
|
||||
-- [kind] = {
|
||||
-- make_indexed = function(items) -> indexed_items, width,
|
||||
-- make_displayer = function(widths) -> displayer
|
||||
-- make_display = function(displayer) -> function(e)
|
||||
-- make_ordinal = function(e) -> string
|
||||
-- },
|
||||
-- -- for example to disable the custom builtin "codeactions" display
|
||||
-- do the following
|
||||
-- codeactions = false,
|
||||
-- }
|
||||
}
|
||||
}
|
||||
}
|
||||
-- To get ui-select loaded and working with telescope, you need to call
|
||||
-- load_extension, somewhere after setup function:
|
||||
require("telescope").load_extension("ui-select")
|
||||
end
|
||||
}
|
||||
}
|
||||
10
nvim/dot-config/nvim/lua/plugins/tokyonight.lua
Normal file
10
nvim/dot-config/nvim/lua/plugins/tokyonight.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
return {
|
||||
"folke/tokyonight.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
opts = {},
|
||||
config = function()
|
||||
vim.cmd.colorscheme "tokyonight-storm"
|
||||
end
|
||||
}
|
||||
|
||||
13
nvim/dot-config/nvim/lua/plugins/treesitter.lua
Normal file
13
nvim/dot-config/nvim/lua/plugins/treesitter.lua
Normal file
@@ -0,0 +1,13 @@
|
||||
return{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
local configs = require("nvim-treesitter.configs")
|
||||
configs.setup({
|
||||
ensure_installed = { "c", "cmake", "cpp", "lua", "markdown", "markdown_inline", "python", "rust", "toml" },
|
||||
auto_install = true,
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
})
|
||||
end
|
||||
}
|
||||
10
nvim/dot-config/nvim/lua/vim-options.lua
Normal file
10
nvim/dot-config/nvim/lua/vim-options.lua
Normal file
@@ -0,0 +1,10 @@
|
||||
vim.cmd("set shiftwidth=2")
|
||||
vim.cmd("set tabstop=2")
|
||||
vim.g.mapleader = " "
|
||||
vim.wo.relativenumber = true
|
||||
vim.wo.number = true
|
||||
vim.cmd("set list")
|
||||
vim.keymap.set('n', '<C-A-h>', '<C-w>h', {})
|
||||
vim.keymap.set('n', '<C-A-j>', '<C-w>j', {})
|
||||
vim.keymap.set('n', '<C-A-k>', '<C-w>k', {})
|
||||
vim.keymap.set('n', '<C-A-l>', '<C-w>l', {})
|
||||
@@ -13,13 +13,17 @@ $python\
|
||||
[](fg:#3d59a1 bg:#414868)\
|
||||
$cmd_duration\
|
||||
[ ](fg:#414868)\
|
||||
\n$character"""
|
||||
\n$sudo\
|
||||
$character"""
|
||||
|
||||
right_format = """
|
||||
$status \
|
||||
$sudo\
|
||||
$status
|
||||
"""
|
||||
|
||||
[character]
|
||||
success_symbol = '[❯](fg:bold #c3e88d)'
|
||||
error_symbol = '[❯](fg:bold #ff007c)'
|
||||
|
||||
[cmd_duration]
|
||||
style = "fg:#7aa2f7 bg:#414868"
|
||||
format = '[ took ]($style)[ $duration](fg:bold #ff007c bg:#414868)'
|
||||
11
tmux/dot-config/tmux/tmux.conf
Normal file
11
tmux/dot-config/tmux/tmux.conf
Normal file
@@ -0,0 +1,11 @@
|
||||
set -g prefix ^A
|
||||
|
||||
set -g @plugin 'fabioluciano/tmux-tokyo-night'
|
||||
set -g @plugin 'tmux-plugins/tpm'
|
||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
||||
|
||||
set -g @theme_variation 'storm'
|
||||
set -g @theme_disable_plugins 1
|
||||
#set -g @theme_plugin_datetime_format '%a %d %b %Y'
|
||||
|
||||
run '~/.tmux/plugins/tpm/tpm'
|
||||
14
wezterm/dot-wezterm.lua
Normal file
14
wezterm/dot-wezterm.lua
Normal file
@@ -0,0 +1,14 @@
|
||||
-- Pull in the wezterm API
|
||||
local wezterm = require("wezterm")
|
||||
|
||||
-- This will hold the configuration
|
||||
local config = wezterm.config_builder()
|
||||
|
||||
config.color_scheme = 'tokyonight_storm'
|
||||
config.window_background_opacity = 0.95
|
||||
config.enable_tab_bar = false
|
||||
config.initial_cols = 205
|
||||
config.initial_rows = 45
|
||||
config.font_size = 10
|
||||
|
||||
return config
|
||||
@@ -3,16 +3,23 @@
|
||||
############### ALIASES ####################
|
||||
|
||||
# Load bottom with the proper color scheme
|
||||
alias btm="btm --color=gruvbox"
|
||||
alias btm="btm --theme=gruvbox"
|
||||
|
||||
# Remap ls to use lsd
|
||||
alias ls="lsd"
|
||||
|
||||
# Add alias for la to call lsd -lah
|
||||
alias la="lsd -lah"
|
||||
|
||||
# Replace cat with bat
|
||||
alias cat="bat"
|
||||
|
||||
############### END ALIASES ###############
|
||||
|
||||
# Add in our fzf integrations for zsh
|
||||
# Comment if you don't want the fzf integration
|
||||
source <(fzf --zsh)
|
||||
|
||||
# Finally we want to use starship for our prompt
|
||||
# (because rust that's why)
|
||||
eval "$(starship init zsh)"
|
||||
Reference in New Issue
Block a user