add zig stuff
This commit is contained in:
8
init.sh
8
init.sh
@@ -39,6 +39,7 @@ ln -s $HOME/.dotfiles/nvim/ $HOME/.config/nvim
|
|||||||
ln -s $HOME/.dotfiles/tmux/ $HOME/.config/tmux
|
ln -s $HOME/.dotfiles/tmux/ $HOME/.config/tmux
|
||||||
ln -s $HOME/.dotfiles/zellij/ $HOME/.config/zellij
|
ln -s $HOME/.dotfiles/zellij/ $HOME/.config/zellij
|
||||||
ln -s $HOME/.dotfiles/mygvm/ $HOME/.config/mygvm
|
ln -s $HOME/.dotfiles/mygvm/ $HOME/.config/mygvm
|
||||||
|
ln -s $HOME/.dotfiles/myzvm/ $HOME/.config/myzvm
|
||||||
ln -s $HOME/.config/nvim/init.vim $HOME/.vimrc
|
ln -s $HOME/.config/nvim/init.vim $HOME/.vimrc
|
||||||
mv $HOME/.zshrc $HOME/.zshrc.bak && ln -s $HOME/.config/zsh/.zshrc $HOME/.zshrc
|
mv $HOME/.zshrc $HOME/.zshrc.bak && ln -s $HOME/.config/zsh/.zshrc $HOME/.zshrc
|
||||||
|
|
||||||
@@ -56,6 +57,13 @@ sudo ln -s $HOME/.dotfiles/mygvm/mygvm /usr/local/bin/mygvm
|
|||||||
# Install Go
|
# Install Go
|
||||||
mygvm install go1.22.0
|
mygvm install go1.22.0
|
||||||
|
|
||||||
|
# Install myzvm
|
||||||
|
mkdir -p $HOME/.zig/downloads
|
||||||
|
sudo ln -s $HOME/.dotfiles/myzvm/myzvm /usr/local/bin/myzvm
|
||||||
|
|
||||||
|
# Install Zig
|
||||||
|
myzvm install nightly
|
||||||
|
|
||||||
# Install merge-main.sh
|
# Install merge-main.sh
|
||||||
mkdir -p $HOME/.local/bin
|
mkdir -p $HOME/.local/bin
|
||||||
sudo ln -s $HOME/.dotfiles/zsh/merge-main.sh $HOME/.local/bin/merge-main.sh
|
sudo ln -s $HOME/.dotfiles/zsh/merge-main.sh $HOME/.local/bin/merge-main.sh
|
||||||
|
|||||||
20
mygvm/mygvm
20
mygvm/mygvm
@@ -148,11 +148,23 @@ elif [[ $1 == 'uninstall' ]]; then
|
|||||||
elif [[ $1 == 'install' ]]; then
|
elif [[ $1 == 'install' ]]; then
|
||||||
install_version $2
|
install_version $2
|
||||||
elif [[ $1 == 'use' ]]; then
|
elif [[ $1 == 'use' ]]; then
|
||||||
check_exists $2
|
if [[ $2 == 'local' ]]; then
|
||||||
if [[ $exists == true ]]; then
|
go_mod_json=$(go mod edit -json)
|
||||||
link_version $2
|
if [[ $? == 1 ]]; then
|
||||||
|
echo "unable to find go.mod"
|
||||||
|
echo "using $(go version)"
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
version_to_use=go$(jq -r .Go <<< $go_mod_json)
|
||||||
|
fi
|
||||||
else
|
else
|
||||||
prompt_install $2
|
version_to_use=$2
|
||||||
|
fi
|
||||||
|
check_exists $version_to_use
|
||||||
|
if [[ $exists == true ]]; then
|
||||||
|
link_version $version_to_use
|
||||||
|
else
|
||||||
|
prompt_install $version_to_use
|
||||||
fi
|
fi
|
||||||
install_modules
|
install_modules
|
||||||
elif [[ $1 == 'modules' ]]; then
|
elif [[ $1 == 'modules' ]]; then
|
||||||
|
|||||||
194
myzvm/myzvm
Executable file
194
myzvm/myzvm
Executable file
@@ -0,0 +1,194 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
list_versions() {
|
||||||
|
echo "installed versions:"
|
||||||
|
for i in "$HOME"/.zig/zig0*; do basename "$i"; done
|
||||||
|
echo ""
|
||||||
|
}
|
||||||
|
|
||||||
|
install_version() {
|
||||||
|
check_valid_patch $1
|
||||||
|
if [[ $valid != 'true' ]]; then
|
||||||
|
echo "invalid version $1"
|
||||||
|
echo "using $(zig version)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
fname="$HOME/.zig/downloads/zig-$zigos-$zigarch-$1"
|
||||||
|
tarball_name="$fname.tar.xz"
|
||||||
|
|
||||||
|
url_subdir="download/$1"
|
||||||
|
if [[ $1 =~ .*dev.* ]]; then
|
||||||
|
url_subdir="builds"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f $fname ]]; then
|
||||||
|
curl -Lo $tarball_name https://ziglang.org/$url_subdir/zig-$zigos-$zigarch-$1.tar.xz
|
||||||
|
fi
|
||||||
|
cd $download_dir
|
||||||
|
tar -xJf $tarball_name
|
||||||
|
mv $fname/ ../$1
|
||||||
|
check_exists $1
|
||||||
|
link_version $1
|
||||||
|
|
||||||
|
install_modules
|
||||||
|
}
|
||||||
|
|
||||||
|
link_version() {
|
||||||
|
if [[ $exists == 'true' ]]; then
|
||||||
|
ln -sfn $zig_dir/$1 $zig_dir/zig
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_valid_minor() {
|
||||||
|
if [[ $1 =~ 0\.[0-9]{1,2} ]]; then
|
||||||
|
valid='true'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_valid_patch() {
|
||||||
|
if [[ $1 =~ 0\.[0-9]{1,2}\.[0-9]{1,2}.* ]]; then
|
||||||
|
valid='true'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_exists() {
|
||||||
|
if [[ -d $zig_dir/$1 ]]; then
|
||||||
|
exists='true'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
remove_version() {
|
||||||
|
check_exists $1
|
||||||
|
if [[ $exists == 'true' ]]; then
|
||||||
|
if [[ $current_link == $1 ]]; then
|
||||||
|
echo "cannot remove version $1 because it is currently in use"
|
||||||
|
else
|
||||||
|
rm -rf $zig_dir/$1
|
||||||
|
echo "removed version $1"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "version $1 not installed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_latest_patch_for_minor() {
|
||||||
|
version=$(curl -s "https://ziglang.org/download/index.json" | grep -o "zig-linux-x86_64-$1.*.tar.xz" | head -n 1 | tr -d '\r\n' | sed 's/zig-linux-x86_64-\(.*\).tar.xz/\1/g')
|
||||||
|
if [[ $version == '' ]]; then
|
||||||
|
echo "could not determine latest version for $1."
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
echo "latest $1 patch: $version"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
get_latest_patch_for_nightly() {
|
||||||
|
get_latest_patch_for_minor
|
||||||
|
}
|
||||||
|
|
||||||
|
prompt_install() {
|
||||||
|
if [[ "$1" == "" ]]; then
|
||||||
|
echo "installing nightly build"
|
||||||
|
valid=true
|
||||||
|
get_latest_patch_for_nightly
|
||||||
|
else
|
||||||
|
echo "$1 not found in $zig_dir"
|
||||||
|
list_versions
|
||||||
|
check_valid_patch $1
|
||||||
|
version=$1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $valid == 'true' ]]; then
|
||||||
|
echo "attempt to download and install? [y/n]"
|
||||||
|
read input
|
||||||
|
if [[ $input == 'y' ]]; then
|
||||||
|
install_version $version
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
check_valid_minor $version
|
||||||
|
if [[ $valid == 'true' ]]; then
|
||||||
|
get_latest_patch_for_minor $version
|
||||||
|
check_exists $version
|
||||||
|
if [[ $exists == 'true' ]]; then
|
||||||
|
link_version $version
|
||||||
|
else
|
||||||
|
prompt_install $version
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "invalid version $version"
|
||||||
|
echo "using $(zig version)"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
install_modules() {
|
||||||
|
echo "no modules to install for zig"
|
||||||
|
}
|
||||||
|
# fname="$HOME/.config/mygvm/modules_to_install"
|
||||||
|
# echo "attempting to install nvim required binaries and modules at $fname"
|
||||||
|
# [[ ! -f $fname ]] && echo "no modules file at $fname" && return
|
||||||
|
|
||||||
|
# while IFS= read -r line; do
|
||||||
|
# if [[ "$line" != "" ]]; then
|
||||||
|
# echo "running go install $line"
|
||||||
|
# go install $line
|
||||||
|
# fi
|
||||||
|
# done < "$HOME/.config/mygvm/modules_to_install"
|
||||||
|
|
||||||
|
# [[ $(which nvim) ]] && nvim --headless +GoInstallBinaries +q
|
||||||
|
# echo ""
|
||||||
|
# }
|
||||||
|
|
||||||
|
zig_dir="$HOME/.zig"
|
||||||
|
download_dir="$zig_dir/downloads"
|
||||||
|
mkdir -p "$download_dir"
|
||||||
|
current_link=$(basename $(readlink $HOME/.zig/zig))
|
||||||
|
uname_m=$(uname -m)
|
||||||
|
zigarch='x86_64'
|
||||||
|
if [[ $uname_m == 'arm64' || $uname_m == 'aarch64' ]]; then
|
||||||
|
zigarch='aarch64'
|
||||||
|
fi
|
||||||
|
zigos='linux'
|
||||||
|
if [[ $(uname) == 'Darwin' ]]; then
|
||||||
|
zigos='darwin'
|
||||||
|
fi
|
||||||
|
valid='false'
|
||||||
|
exists='false'
|
||||||
|
|
||||||
|
version=''
|
||||||
|
|
||||||
|
check_exists $1
|
||||||
|
if [[ $1 == '' ]]; then
|
||||||
|
list_versions
|
||||||
|
elif [[ $1 == 'list' ]]; then
|
||||||
|
list_versions
|
||||||
|
elif [[ $1 == 'remove' ]]; then
|
||||||
|
remove_version $2
|
||||||
|
elif [[ $1 == 'uninstall' ]]; then
|
||||||
|
remove_version $2
|
||||||
|
elif [[ $1 == 'install' ]]; then
|
||||||
|
install_version $2
|
||||||
|
elif [[ $1 == 'use' ]]; then
|
||||||
|
if [[ $2 == 'nightly' ]]; then
|
||||||
|
version_to_use=
|
||||||
|
exists=false
|
||||||
|
else
|
||||||
|
version_to_use=$2
|
||||||
|
check_exists $version_to_use
|
||||||
|
fi
|
||||||
|
if [[ $exists == true ]]; then
|
||||||
|
link_version $version_to_use
|
||||||
|
else
|
||||||
|
prompt_install $version_to_use
|
||||||
|
fi
|
||||||
|
install_modules
|
||||||
|
elif [[ $1 == 'modules' ]]; then
|
||||||
|
install_modules
|
||||||
|
elif [[ $exists == 'true' ]]; then
|
||||||
|
link_version $1
|
||||||
|
else
|
||||||
|
prompt_install $1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "using $(zig version)"
|
||||||
|
|
||||||
@@ -99,3 +99,13 @@ require('lspconfig')['lua_ls'].setup {
|
|||||||
Lua = {}
|
Lua = {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
require('lspconfig')['zls'].setup {
|
||||||
|
on_attach = on_attach,
|
||||||
|
capabilities = capabilities,
|
||||||
|
cmd = { '/home/jacob/src/github.com/zigtools/zls/zig-out/bin/zls' },
|
||||||
|
settings = {
|
||||||
|
zls = {
|
||||||
|
zig_exe_path = '/home/jacob/.zig/zig/zig',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,6 +25,8 @@ Plug 'nvim-treesitter/nvim-treesitter'
|
|||||||
|
|
||||||
Plug('nvim-telescope/telescope-fzf-native.nvim', { ['do'] = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' })
|
Plug('nvim-telescope/telescope-fzf-native.nvim', { ['do'] = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' })
|
||||||
|
|
||||||
|
Plug('nvim-telescope/telescope-live-grep-args.nvim')
|
||||||
|
|
||||||
Plug 'nvim-telescope/telescope.nvim'
|
Plug 'nvim-telescope/telescope.nvim'
|
||||||
|
|
||||||
Plug 'airblade/vim-gitgutter'
|
Plug 'airblade/vim-gitgutter'
|
||||||
@@ -60,6 +62,8 @@ Plug 'jamestthompson3/nvim-remote-containers'
|
|||||||
|
|
||||||
Plug 'epwalsh/obsidian.nvim'
|
Plug 'epwalsh/obsidian.nvim'
|
||||||
|
|
||||||
|
Plug 'ziglang/zig.vim'
|
||||||
|
|
||||||
vim.call('plug#end')
|
vim.call('plug#end')
|
||||||
|
|
||||||
require("plugins/airline")
|
require("plugins/airline")
|
||||||
|
|||||||
@@ -1,6 +1,9 @@
|
|||||||
local map = vim.api.nvim_set_keymap
|
local map = vim.api.nvim_set_keymap
|
||||||
|
|
||||||
|
require("telescope").load_extension("live_grep_args")
|
||||||
|
|
||||||
local tele = require('telescope.builtin')
|
local tele = require('telescope.builtin')
|
||||||
|
local tele_ext = require('telescope').extensions
|
||||||
|
|
||||||
local telemap = function(cmd, cb)
|
local telemap = function(cmd, cb)
|
||||||
map('n', cmd, '', {
|
map('n', cmd, '', {
|
||||||
@@ -12,7 +15,7 @@ end
|
|||||||
|
|
||||||
telemap('<Leader>ff', function() tele.find_files({ hidden = true, file_ignore_patterns = {'^.git'} }) end)
|
telemap('<Leader>ff', function() tele.find_files({ hidden = true, file_ignore_patterns = {'^.git'} }) end)
|
||||||
|
|
||||||
telemap('<Leader>fg', tele.live_grep)
|
telemap('<Leader>fg', tele_ext.live_grep_args.live_grep_args)
|
||||||
|
|
||||||
telemap('<Leader>fb', tele.buffers)
|
telemap('<Leader>fb', tele.buffers)
|
||||||
|
|
||||||
|
|||||||
@@ -7,6 +7,9 @@ eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
|
|||||||
# If you come from bash you might have to change your $PATH.
|
# If you come from bash you might have to change your $PATH.
|
||||||
export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:/opt/local/bin:$PATH
|
export PATH=$HOME/bin:$HOME/.local/bin:/usr/local/bin:/opt/local/bin:$PATH
|
||||||
|
|
||||||
|
# Add the zig path used by myzvm
|
||||||
|
export PATH=$HOME/.zig/zig:$PATH
|
||||||
|
|
||||||
ulimit -n 65536 200000
|
ulimit -n 65536 200000
|
||||||
ulimit -f unlimited
|
ulimit -f unlimited
|
||||||
|
|
||||||
@@ -39,6 +42,7 @@ alias kci='git commit --allow-empty --message "kick CI" && git push'
|
|||||||
alias cddf='cd $HOME/.dotfiles'
|
alias cddf='cd $HOME/.dotfiles'
|
||||||
alias nvdf='cddf && nvim $HOME/.dotfiles/README.md'
|
alias nvdf='cddf && nvim $HOME/.dotfiles/README.md'
|
||||||
alias cdjb='cd $HOME/src/github.com/jbohanon'
|
alias cdjb='cd $HOME/src/github.com/jbohanon'
|
||||||
|
alias cdgh='cd $HOME/src/github.com'
|
||||||
alias cdo='cd $HOME/Documents/obsidian/work'
|
alias cdo='cd $HOME/Documents/obsidian/work'
|
||||||
alias nvo='cdo && nvim .'
|
alias nvo='cdo && nvim .'
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user