diff --git a/.gitignore b/.gitignore index 8e9a3f5..ffe6e0d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ config/fish/conf.d config/fish/functions config/fish/fish_variables +config/fish/generated_completions/ config/vim/autoload/ config/vim/pack/ config/vim/.netrwhist diff --git a/bootstrap.sh b/bootstrap.sh deleted file mode 100755 index 7b09a3a..0000000 --- a/bootstrap.sh +++ /dev/null @@ -1,120 +0,0 @@ -#!/usr/bin/env bash - -set -e - -if [ "$EUID" -eq 0 ]; then - echo "Please run this script as your normal user, not with sudo." - exit 1 -fi - -echo "==> Updating system..." -sudo xbps-install -Syu - -echo "==> Installing KDE and desktop essentials..." - -sudo xbps-install -y \ - kde-plasma \ - kde-baseapps \ - NetworkManager \ - sddm \ - xorg-minimal \ - xorg-server-xwayland \ - mesa-dri \ - qt6-wayland \ - kwayland \ - elogind \ - pipewire \ - alsa-pipewire \ - libspa-bluetooth \ - bluez \ - xdg-desktop-portal \ - xdg-desktop-portal-kde \ - git \ - curl \ - neovim - -echo "==> Disabling conflicting DHCP service..." - -if [ -e /var/service/dhcpcd ]; then - sudo sv down dhcpcd || true - sudo rm -f /var/service/dhcpcd -fi - -echo "==> Enabling system services..." - -enable_service() { - service="$1" - - if [ ! -e "/var/service/$service" ]; then - sudo ln -s "/etc/sv/$service" "/var/service/$service" - fi -} - -enable_service dbus -enable_service NetworkManager -enable_service sddm -enable_service bluetoothd - -echo "==> Adding user to required groups..." - -sudo usermod -aG network,audio,video,bluetooth "$USER" - -echo "==> Configuring ALSA for PipeWire..." - -sudo mkdir -p /etc/alsa/conf.d - -sudo ln -sf \ - /usr/share/alsa/alsa.conf.d/50-pipewire.conf \ - /etc/alsa/conf.d/50-pipewire.conf - -sudo ln -sf \ - /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf \ - /etc/alsa/conf.d/99-pipewire-default.conf - -echo "==> Configuring PipeWire PulseAudio compatibility..." - -sudo mkdir -p /etc/pipewire/pipewire.conf.d - -sudo ln -sf \ - /usr/share/examples/pipewire/20-pipewire-pulse.conf \ - /etc/pipewire/pipewire.conf.d/20-pipewire-pulse.conf - -echo "==> Enabling PipeWire desktop autostart..." - -mkdir -p "$HOME/.config/autostart" - -ln -sf \ - /usr/share/applications/pipewire.desktop \ - "$HOME/.config/autostart/pipewire.desktop" - -echo "==> Reconfiguring packages..." - -sudo xbps-reconfigure -fa - -echo -echo "========================================" -echo " Void KDE bootstrap complete" -echo "========================================" -echo -echo "Installed:" -echo " KDE Plasma" -echo " SDDM" -echo " Plasma Wayland" -echo " NetworkManager" -echo " PipeWire + WirePlumber" -echo " Bluetooth" -echo " XWayland" -echo " Neovim" -echo -echo "Enabled services:" -sudo sv status dbus NetworkManager bluetoothd sddm -echo -echo "NOTE: elogind is installed but intentionally" -echo "not enabled as a runit service." -echo -echo "Reboot, then select 'Plasma (Wayland)' in SDDM." -echo -echo " sudo reboot" -echo - - diff --git a/config/bash/bashrc b/config/bash/bashrc deleted file mode 100644 index 209398a..0000000 --- a/config/bash/bashrc +++ /dev/null @@ -1,184 +0,0 @@ -# ============================================================================== -# ENVIRONMENT VARIABLES -# ============================================================================== - -export XDG_CONFIG_HOME="$HOME/.config" -export XDG_DATA_HOME="$HOME/.local/share" -export XDG_CACHE_HOME="$HOME/.cache" -export XDG_STATE_HOME="$HOME/.local/state" -export GOOGLE_API_KEY="no" -export GOOGLE_DEFAULT_CLIENT_ID="no" -export GOOGLE_DEFAULT_CLIENT_SECRET="no" - -# Core settings -export EDITOR="vim" -export VISUAL="vim" -export MANPAGER="vim +Man!" -export BROWSER="firefox" -export COLORTERM="truecolor" - -# Development -export DEBUG=1 -export GOPATH="$HOME/.go" -export GOCACHE="$HOME/.go/cache" -export GOROOT=/usr/local/go -export PATH="/usr/local/go/bin:$GOPATH/bin:$PATH" - -# Direnv -eval "$(direnv hook bash)" - -# ============================================================================== -# FZF configuration -# ============================================================================== -export FZF_DEFAULT_OPTS=" - --height 40% - --layout=reverse - --border - --ansi - --preview-window=down:30% - --bind 'ctrl-d:preview-page-down,ctrl-u:preview-page-up' - --color=fg:#ffffff,header:#f38ba8,info:#cba6ac,pointer:#f5e0dc - --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6ac,hl+:#f38ba8" - -export FZF_DEFAULT_COMMAND='fdfind --exclude={.git,.cache,.xmake,.zig-cache,build,tmp,node_modules,elpa} --type f -H' - -# ============================================================================== -# PATH CONFIGURATION -# ============================================================================== -# bash has no fish_add_path (which dedupes + checks existence), so roll a -# small helper that does the same thing. -add_to_path() { - if [ -d "$1" ] && [[ ":$PATH:" != *":$1:"* ]]; then - PATH="$1:$PATH" - fi -} - -add_to_path /var/lib/flatpak/exports/bin -add_to_path /usr/local/bin -add_to_path /usr/local/go/bin -add_to_path "$GOPATH/bin" -add_to_path "$HOME/bin" -add_to_path "$HOME/.local/bin" -add_to_path "$HOME/.local/share/flatpak/exports/bin" -add_to_path "$HOME/.npm-global/bin" -add_to_path "$HOME/.odin/" - -export PATH - -# ============================================================================== -# AUTO COMPLETE -# ============================================================================== -if [ -f /usr/share/bash-completion/bash_completion ]; then - . /usr/share/bash-completion/bash_completion -fi - -# ============================================================================== -# ALIASES -# ============================================================================== -# Void linux helpers -# System update (sync + update all packages) -alias void-update='sudo xbps-install -Su' -# Remove orphaned dependencies + clean cache -alias void-clean='sudo xbps-remove -Oo' -# List explicitly installed (manual) packages -alias void-installed='xbps-query -m' -# List all installed packages -alias void-installedall='xbps-query -l' -# Show which package owns a file -alias void-owns='xbps-query -o' -# Remove a package and its unused deps in one go (usage: purge ) -alias void-purge='sudo xbps-remove -R' -# Install a package (usage: install ) -alias void-install='sudo xbps-install' -# Remove a package (usage: remove ) -alias void-remove='sudo xbps-remove' -# Search for a package -alias void-search='xbps-query -Rs' -# Show info about a package -alias void-query='xbps-query -R' - -# List commands -alias ls='ls -lh --color=auto --group-directories-first' -alias ll='ls -lAh --color=auto --group-directories-first' -alias la='ls -la --color=auto --group-directories-first' -alias l='ls -CF --color=auto' -alias tree='tree --dirsfirst -C' - -# Safety aliases -alias rm='rm -I --preserve-root' -alias mv='mv -i' -alias cp='cp -i' -alias ln='ln -i' - -# System information -alias df='df -h' -alias du='du -h' -alias free='free -h' -alias bat='bat --theme="ansi" --paging=never' - -# Application shortcuts -alias :q='exit' -alias files='thunar .' -alias fetch='pfetch' - -# Custom shortcuts -alias v='vim' -alias vi='vim' -alias reload='source ~/.bashrc' -alias dots='cd ~/.dotfiles && vim' -alias doti='bash ~/.dotfiles/install.sh -i' -alias dotl='bash ~/.dotfiles/install.sh -l' -alias myip='curl ipinfo.io/ip; echo ""' -alias query='xbps-query -Rs' -alias commits='git log origin/main..HEAD --oneline' - -## Basic project picker using fzf -pp() { - local project - project=$( - find ~/Projects -mindepth 1 -maxdepth 1 -type d | - awk -F/ '{print $NF "\t" $0}' | - fzf --with-nth=1 - ) - - [ -z "$project" ] && return - - project=$(echo "$project" | cut -f2) - cd "$project" && clear -} - -# ============================================================================== -# PROMPT -# ============================================================================== -# bash has no built-in __fish_git_prompt_* equivalent, so we write a small -# git-branch function and build PS1 by hand. - -parse_git_branch() { - git branch 2>/dev/null | sed -n '/\* /s///p' -} - -git_prompt_info() { - local branch - branch=$(parse_git_branch) - [ -z "$branch" ] && return - - local esc=$'\033' - local status marker - status=$(git status --porcelain 2>/dev/null) - - if [ -n "$status" ]; then - if echo "$status" | grep -q '^[MADRC]'; then - marker=" ${esc}[33m●${esc}[0m " # staged - yellow ● - elif echo "$status" | grep -q '^??'; then - marker="" # untracked - no char - else - marker=" ${esc}[31m+${esc}[0m " # dirty - red + - fi - else - marker=" ${esc}[1;32m${esc}[0m " # clean - green - fi - - echo " ${esc}[1;35m(${branch})${esc}[0m${marker}" -} - -PS1='\[\033[32m\]\u\[\033[0m\]@\[\033[34m\]\h\[\033[0m\]:\[\033[36m\]\w\[\033[0m\]$(git_prompt_info)\$ ' diff --git a/config/fish/config.fish b/config/fish/config.fish new file mode 100644 index 0000000..2a0934f --- /dev/null +++ b/config/fish/config.fish @@ -0,0 +1,134 @@ +# ============================================================================== +# ENVIRONMENT VARIABLES +# ============================================================================== +set -gx XDG_CONFIG_HOME "$HOME/.config" +set -gx XDG_DATA_HOME "$HOME/.local/share" +set -gx XDG_CACHE_HOME "$HOME/.cache" +set -gx XDG_STATE_HOME "$HOME/.local/state" +set -gx GOOGLE_API_KEY "no" +set -gx GOOGLE_DEFAULT_CLIENT_ID "no" +set -gx GOOGLE_DEFAULT_CLIENT_SECRET "no" + +# Core settings +set -gx EDITOR "vim" +set -gx VISUAL "vim" +set -gx MANPAGER "vim +Man!" +set -gx BROWSER "firefox" +set -gx COLORTERM "truecolor" + +# Development +set -gx DEBUG 1 +set -gx GOPATH "$HOME/.go" +set -gx GOCACHE "$HOME/.go/cache" +set -gx GOROOT /usr/local/go + +# Direnv +direnv hook fish | source + +# ============================================================================== +# FZF configuration +# ============================================================================== +set -gx FZF_DEFAULT_OPTS " + --height 40% + --layout=reverse + --border + --ansi + --preview-window=down:30% + --bind 'ctrl-d:preview-page-down,ctrl-u:preview-page-up' + --color=fg:#ffffff,header:#f38ba8,info:#cba6ac,pointer:#f5e0dc + --color=marker:#f5e0dc,fg+:#cdd6f4,prompt:#cba6ac,hl+:#f38ba8" + +set -gx FZF_DEFAULT_COMMAND "fdfind --exclude={.git,.cache,.xmake,.zig-cache,build,tmp,node_modules,elpa} --type f -H" + +# ============================================================================== +# PATH CONFIGURATION +# ============================================================================== +# fish_add_path dedupes + checks existence natively, no helper needed +fish_add_path /var/lib/flatpak/exports/bin +fish_add_path /usr/local/bin +fish_add_path /usr/local/go/bin +fish_add_path $GOPATH/bin +fish_add_path $HOME/bin +fish_add_path $HOME/.local/bin +fish_add_path $HOME/.local/share/flatpak/exports/bin +fish_add_path $HOME/.npm-global/bin +fish_add_path $HOME/.odin/ + +# ============================================================================== +# ALIASES +# ============================================================================== +# List commands +alias ls 'ls -lh --color=auto --group-directories-first' +alias ll 'ls -lAh --color=auto --group-directories-first' +alias la 'ls -la --color=auto --group-directories-first' +alias l 'ls -CF --color=auto' +alias tree 'tree --dirsfirst -C' + +# Safety aliases +alias rm 'rm -I --preserve-root' +alias mv 'mv -i' +alias cp 'cp -i' +alias ln 'ln -i' + +# System information +alias df 'df -h' +alias du 'du -h' +alias free 'free -h' +alias bat 'bat --theme="ansi" --paging=never' + +# Application shortcuts +alias :q 'exit' +alias files 'thunar .' +alias fetch 'pfetch' + +# Custom shortcuts +alias reload 'source ~/.config/fish/config.fish' +alias dots 'cd ~/.dotfiles && vi' +alias doti 'bash ~/.dotfiles/install.sh -i' +alias dotl 'bash ~/.dotfiles/install.sh -l' +alias myip 'curl ipinfo.io/ip; echo ""' +alias query 'xbps-query -Rs' +alias commits 'git log origin/main..HEAD --oneline' + +## Basic project picker using fzf +function pp + set -l project (find ~/Projects -mindepth 1 -maxdepth 1 -type d | awk -F/ '{print $NF "\t" $0}' | fzf --with-nth=1) + + test -z "$project"; and return + + set project (echo $project | cut -f2) + cd $project; and clear +end + +# ============================================================================== +# GIT PROMPT CONFIG +# (used by fish_git_prompt, called from fish_prompt.fish below) +# ============================================================================== +set -g __fish_git_prompt_show_informative_status +set -g __fish_git_prompt_char_stagedstate '●' +set -g __fish_git_prompt_char_dirtystate '+' +set -g __fish_git_prompt_char_untrackedstate '' +set -g __fish_git_prompt_color_branch magenta +set -g __fish_git_prompt_color_stagedstate yellow +set -g __fish_git_prompt_color_dirtystate red + +# ============================================================================== +# PROMPT +# ============================================================================== +function fish_prompt + set_color green + echo -n (whoami) + set_color normal + echo -n '@' + set_color blue + echo -n (prompt_hostname) + set_color normal + echo -n ':' + set_color cyan + echo -n (prompt_pwd) + set_color normal + + fish_git_prompt + + echo -n '$ ' +end diff --git a/config/kanata/kanata.kbd b/config/kanata/config.kbd similarity index 96% rename from config/kanata/kanata.kbd rename to config/kanata/config.kbd index fca2847..f6ae68f 100644 --- a/config/kanata/kanata.kbd +++ b/config/kanata/config.kbd @@ -3,12 +3,8 @@ ) ;; HHKB Professional Classic (Linux) -;; ;; Small key left of Space = Muhenkan ;; Large key left of Space = Left Alt -;; -;; AwesomeWM: -;; modkey = "Mod4" (defsrc esc 1 2 3 4 5 6 7 8 9 0 - = \ grv diff --git a/config/kitty/kitty.conf b/config/kitty/kitty.conf deleted file mode 100644 index 4aea15c..0000000 --- a/config/kitty/kitty.conf +++ /dev/null @@ -1,56 +0,0 @@ -# ============================================================================ -# Kitty Configuration -# ============================================================================ -enable_audio_bell no -term xterm-256color - -# ---------------------------------------------------------------------------- -# Font -# ---------------------------------------------------------------------------- -font_family JetBrainsMono Nerd Font -font_size 12.0 - -# ---------------------------------------------------------------------------- -# Window -# ---------------------------------------------------------------------------- -window_padding_width 10 -window_padding_height 10 - -# ---------------------------------------------------------------------------- -# Cursor -# ---------------------------------------------------------------------------- -cursor_shape beam -cursor_blink_interval 0.5 - -# ---------------------------------------------------------------------------- -# Layout -# ---------------------------------------------------------------------------- -enabled_layouts splits - -# ---------------------------------------------------------------------------- -# Splits -# ---------------------------------------------------------------------------- - -# Vertical split -map ctrl+v launch --location=vsplit --cwd=current - -# Close current kitty split -map ctrl+q close_window - - -# ---------------------------------------------------------------------------- -# Colors -# ---------------------------------------------------------------------------- -foreground #e8e8e8 -background #121212 -cursor #D4D4D4 -cursor_text_color #1F1F1F -color0 #1F1F1F -color1 #F44747 -color2 #6A9955 -color3 #DCDCAA -color4 #569CD6 -color5 #C586C0 -color6 #56B6C2 -color7 #D4D4D4 -color8 #808080 diff --git a/config/vim/vimrc b/config/vim/vimrc index 481bf26..ef51ccf 100644 --- a/config/vim/vimrc +++ b/config/vim/vimrc @@ -18,7 +18,6 @@ set number set relativenumber set wildmenu set showcmd -colorscheme jellybeans " ---------------------------------------------------------------------------- " Transparent UI @@ -59,19 +58,6 @@ set completeopt=menu,menuone,noselect syntax on filetype plugin indent on -" ---------------------------------------------------------------------------- -" fzf -" ---------------------------------------------------------------------------- -if executable('rg') - let $FZF_DEFAULT_COMMAND = - \ 'rg --files --hidden --follow --glob "!.git/*"' -endif - -nnoremap :Files -nnoremap :Buffers -nnoremap :Rg -nnoremap :Build - " ---------------------------------------------------------------------------- " Search " ---------------------------------------------------------------------------- @@ -88,72 +74,6 @@ nnoremap k nnoremap l nnoremap q -" ---------------------------------------------------------------------------- -" LSP - OLS -" ---------------------------------------------------------------------------- -packadd lsp -call LspOptionsSet(#{ - \ autoComplete: v:false, - \ autoHighlight: v:false, - \ autoHighlightDiags: v:true, - \ autoPopulateDiags: v:true, - \ semanticHighlight: v:false, - \ showSignature: v:false, - \ completionInPreview: v:false, - \ condensedCompletionMenu: v:true, - \ }) - -if executable('ols') - call LspAddServer([#{ - \ name: 'ols', - \ filetype: ['odin'], - \ path: 'ols', - \ args: ['--stdio'], - \ features: #{ - \ diagnostic: v:false, - \ completion: v:true, - \ hover: v:true, - \ signatureHelp: v:false, - \ documentHighlight: v:true, - \ semanticHighlight: v:true, - \ }, - \ }]) -endif - -command! Action LspCodeAction -command! Rename LspRename - -autocmd FileType odin setlocal omnifunc=LspOmniFunc -inoremap -nnoremap K :LspHover - -" ---------------------------------------------------------------------------- -" Go to Definition -" ---------------------------------------------------------------------------- -function! GotoDefinitionSplit() abort - vsplit - LspGotoDefinition -endfunction - -nnoremap gd :call GotoDefinitionSplit() - -" ---------------------------------------------------------------------------- -" Diagnostics -" ---------------------------------------------------------------------------- -function! ToggleDiagnostics() abort - for l:win in getwininfo() - if get(l:win, 'quickfix', 0) - execute l:win.winnr .. 'close' - return - endif - endfor - - LspDiag show -endfunction - -command! Diagnostics call ToggleDiagnostics() -nnoremap :Diagnostics - " ---------------------------------------------------------------------------- " Netrw / File Tree " ---------------------------------------------------------------------------- @@ -164,39 +84,3 @@ let g:netrw_altv = 1 let g:netrw_winsize = 33 let g:netrw_keepdir = 0 nnoremap :Lexplore - -" ---------------------------------------------------------------------------- -" Build System -" ---------------------------------------------------------------------------- -function! Build(...) abort - " Already in the build terminal → close it. - if get(b:, 'build_terminal', 0) && &buftype ==# 'terminal' - close - echo '' - return - endif - - if !filereadable('build.sh') - echohl WarningMsg - echo 'No build.sh found in current directory.' - echohl None - return - endif - - wall - - let l:command = './build.sh' - - if a:0 > 0 - let l:command .= ' ' .. join(a:000, ' ') - endif - - botright vsplit - execute 'vertical resize ' .. float2nr(&columns * 0.37) - execute 'terminal ++curwin ' .. l:command - - let b:build_terminal = 1 - tnoremap -endfunction - -command! -nargs=* Build call Build() diff --git a/dotfiles.sublime-project b/dotfiles.sublime-project new file mode 100644 index 0000000..24db303 --- /dev/null +++ b/dotfiles.sublime-project @@ -0,0 +1,8 @@ +{ + "folders": + [ + { + "path": "." + } + ] +} diff --git a/dotfiles.sublime-workspace b/dotfiles.sublime-workspace new file mode 100644 index 0000000..20c5a8c --- /dev/null +++ b/dotfiles.sublime-workspace @@ -0,0 +1,345 @@ +{ + "auto_complete": + { + "selected_items": + [ + ] + }, + "buffers": + [ + { + "file": "config/kitty/kitty.conf", + "file_size": 1776, + "file_write_time": 134326208246694386, + "settings": + { + "buffer_size": 1776, + "line_ending": "Unix" + } + }, + { + "file": "install.sh", + "file_size": 4218, + "file_write_time": 134327099681520306, + "settings": + { + "buffer_size": 4172, + "encoding": "UTF-8", + "line_ending": "Unix" + } + } + ], + "build_system": "", + "build_system_choices": + [ + ], + "build_varint": "", + "command_palette": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "ter", + "Open Terminal Here…" + ], + [ + "termi", + "Open Terminal Here…" + ], + [ + "ins", + "Package Control: Install Package" + ], + [ + "theme", + "UI: Customize Theme" + ], + [ + "inst", + "Package Control: Install Package" + ], + [ + "install ", + "Package Control: Install Package" + ], + [ + "settings", + "Preferences: Settings" + ], + [ + "list p", + "Package Control: List Packages" + ], + [ + "insta", + "Package Control: Install Package" + ], + [ + "install pa", + "Package Control: Install Package" + ], + [ + "install", + "Package Control: Install Package" + ], + [ + "package", + "Enable Package Control" + ] + ], + "width": 0.0 + }, + "console": + { + "height": 124.0, + "history": + [ + ] + }, + "distraction_free": + { + "menu_visible": true, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": false, + "status_bar_visible": false + }, + "expanded_folders": + [ + "/home/jason/Projects/dotfiles" + ], + "file_history": + [ + "/home/jason/Projects/dotfiles/config/bash/bashrc", + "/home/jason/Projects/dotfiles/install.sh", + "/home/jason/Projects/dotfiles/README.md", + "/home/jason/Projects/dotfiles/scripts/installs/install_odin", + "/home/jason/Projects/dotfiles/scripts/installs/install_raylib_deps", + "/home/jason/Projects/dotfiles/scripts/installs/install_php", + "/home/jason/Projects/Godot/test-struct/src/entities/player/player.gd", + "/home/jason/Projects/raylib_reference/src/map.odin" + ], + "find": + { + "height": 41.0 + }, + "find_in_files": + { + "height": 143.0, + "where_history": + [ + ] + }, + "find_state": + { + "case_sensitive": false, + "find_history": + [ + ], + "highlight": true, + "in_selection": false, + "preserve_case": false, + "regex": false, + "replace_history": + [ + ], + "reverse": false, + "scrollbar_highlights": true, + "show_context": true, + "use_buffer2": true, + "use_gitignore": true, + "whole_word": false, + "wrap": true + }, + "groups": + [ + { + "sheets": + [ + { + "buffer": 0, + "file": "config/kitty/kitty.conf", + "semi_transient": false, + "settings": + { + "buffer_size": 1776, + "regions": + { + }, + "selection": + [ + [ + 101, + 101 + ] + ], + "settings": + { + "lsp_uri": "file:///home/jason/Projects/dotfiles/config/kitty/kitty.conf", + "syntax": "Packages/Text/Plain text.tmLanguage" + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 1, + "stack_multiselect": false, + "type": "text" + }, + { + "buffer": 1, + "file": "install.sh", + "selected": true, + "semi_transient": false, + "settings": + { + "buffer_size": 4172, + "regions": + { + }, + "selection": + [ + [ + 12, + 12 + ] + ], + "settings": + { + "lsp_uri": "file:///home/jason/Projects/dotfiles/install.sh", + "syntax": "Packages/ShellScript/Bash.sublime-syntax", + "tab_size": 4, + "translate_tabs_to_spaces": false + }, + "translation.x": 0.0, + "translation.y": 0.0, + "zoom_level": 1.0 + }, + "stack_index": 0, + "stack_multiselect": false, + "type": "text" + } + ] + } + ], + "incremental_find": + { + "height": 41.0 + }, + "input": + { + "height": 54.0 + }, + "layout": + { + "cells": + [ + [ + 0, + 0, + 1, + 1 + ] + ], + "cols": + [ + 0.0, + 1.0 + ], + "rows": + [ + 0.0, + 1.0 + ] + }, + "menu_visible": false, + "output.LSP Log Panel": + { + "height": 0.0, + "history": + [ + ] + }, + "output.diagnostics": + { + "height": 0.0, + "history": + [ + ] + }, + "output.find_results": + { + "height": 0.0, + "history": + [ + ] + }, + "pinned_build_system": "", + "project": "dotfiles.sublime-project", + "replace": + { + "height": 78.0 + }, + "save_all_on_build": true, + "select_file": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + [ + "ins", + "install.sh" + ], + [ + "odin", + "scripts/installs/install_odin" + ], + [ + "rayl", + "scripts/installs/install_raylib_deps" + ], + [ + "install_odi", + "scripts/installs/install_odin" + ] + ], + "width": 0.0 + }, + "select_project": + { + "height": 500.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 380.0 + }, + "select_symbol": + { + "height": 0.0, + "last_filter": "", + "selected_items": + [ + ], + "width": 0.0 + }, + "selected_group": 0, + "settings": + { + "_vintageous_reset_during_init": true, + "lsp_show_inlay_hints": false + }, + "show_minimap": false, + "show_open_files": false, + "show_tabs": false, + "side_bar_visible": true, + "side_bar_width": 271.0, + "status_bar_visible": true, + "template_settings": + { + } +} diff --git a/install.sh b/install.sh index 4b26469..0299e8f 100755 --- a/install.sh +++ b/install.sh @@ -83,10 +83,9 @@ if [ "$DO_LINKS" = true ]; then CREATED=0 SKIPPED=0 - link_file "$DOTFILES_DIR/config/bash/bashrc" "$HOME/.bashrc" + link_file "$DOTFILES_DIR/config/fish/config.fish" "$HOME/.config/fish/config.fish" + link_file "$DOTFILES_DIR/config/vim" "$HOME/.vim" link_file "$DOTFILES_DIR/config/kanata" "$HOME/.config/kanata" - link_file "$DOTFILES_DIR/config/alacritty" "$HOME/.config/alacritty" - link_file "$DOTFILES_DIR/config/nvim" "$HOME/.config/nvim" link_file "$DOTFILES_DIR/scripts/bin" "$HOME/.local/bin" echo "" @@ -111,53 +110,20 @@ if [ "$DO_INSTALL" = true ]; then fi if [ "$DO_INSTALL" = true ]; then - - # ----------------------------------------------------------------------------- - ## ADD NONFREE REPOS - # ----------------------------------------------------------------------------- - echo "📦 Checking nonfree repositories..." - - REPO_PACKAGES=(void-repo-nonfree) - - # Only add multilib-nonfree on x86_64 - if [ "$(uname -m)" = "x86_64" ]; then - REPO_PACKAGES+=(void-repo-multilib-nonfree) - fi - - MISSING_REPOS=() - for repo in "${REPO_PACKAGES[@]}"; do - if ! xbps-query -p pkgver "$repo" >/dev/null 2>&1; then - MISSING_REPOS+=("$repo") - fi - done - - if [ ${#MISSING_REPOS[@]} -eq 0 ]; then - echo "✅ Nonfree repositories already enabled." - else - echo "📦 Enabling repositories: ${MISSING_REPOS[*]}" - sudo xbps-install -Sy "${MISSING_REPOS[@]}" - fi - - echo "" - - # ----------------------------------------------------------------------------- - ## INSTALL REQUIRED PACKAGES - # ----------------------------------------------------------------------------- REQUIRED_PACKAGES=( # system - pfetch fuse + fuse3 # network & download wget curl ca-certificates gnupg rsync # core utilities - git fd jq fzf ripgrep tree direnv make bat - ark unzip p7zip tar gzip bzip2 xz kanata - gitu + fish git vim fd-find jq fzf ripgrep tree direnv make bat + ark unzip p7zip-full tar gzip bzip2 xz-utils # build & dev tools - alacritty base-devel valgrind tree-sitter-cli go nodejs + build-essential valgrind nodejs # fonts - noto-fonts-ttf noto-fonts-emoji - # kde - xdg-desktop-portal xdg-desktop-portal-kde + fonts-noto-core fonts-noto-color-emoji + # desktop portal + xdg-desktop-portal xdg-desktop-portal-gtk ) MISSING_PACKAGES=() @@ -165,9 +131,9 @@ if [ "$DO_INSTALL" = true ]; then echo "🔍 Checking for missing packages..." echo "" - # Check which packages are missing using xbps-query + # Check which packages are missing using dpkg for pkg in "${REQUIRED_PACKAGES[@]}"; do - if ! xbps-query -p pkgver "$pkg" >/dev/null 2>&1; then + if ! dpkg -s "$pkg" >/dev/null 2>&1; then MISSING_PACKAGES+=("$pkg") fi done @@ -175,11 +141,11 @@ if [ "$DO_INSTALL" = true ]; then if [ ${#MISSING_PACKAGES[@]} -eq 0 ]; then echo "✅ All required packages are already installed." else - echo "📦 Syncing repository indexes..." - sudo xbps-install -S + echo "📦 Syncing package index..." + sudo apt update echo "📦 Installing missing packages: ${MISSING_PACKAGES[*]}" - sudo xbps-install "${MISSING_PACKAGES[@]}" + sudo apt install -y "${MISSING_PACKAGES[@]}" fi echo "" diff --git a/scripts/bin/lazygit b/scripts/bin/lazygit new file mode 100755 index 0000000..595f614 Binary files /dev/null and b/scripts/bin/lazygit differ diff --git a/scripts/installs/install_odin b/scripts/installs/install_odin index ea03c94..4ead2d2 100755 --- a/scripts/installs/install_odin +++ b/scripts/installs/install_odin @@ -1,23 +1,30 @@ #!/bin/bash # --------------------------------------------------------------------------------- # Odin compiler install recipe -# Target: Void Linux +# Target: Pop!_OS / Ubuntu / Debian # Builds from source - recommended method on Linux # --------------------------------------------------------------------------------- set -e ODIN_DIR="$HOME/.odin" echo "Installing Odin build dependencies..." -sudo xbps-install -Sy llvm18 llvm18-devel clang18 libstdc++-devel git-lfs -git lfs install +sudo apt update +sudo apt install -y llvm-18-dev clang-18 git-lfs build-essential +git lfs install --force echo "Cloning Odin repository..." -git clone https://github.com/odin-lang/Odin "$ODIN_DIR" -cd "$ODIN_DIR" +if [ -d "$ODIN_DIR" ]; then + echo "Directory $ODIN_DIR already exists. Pulling latest..." + cd "$ODIN_DIR" && git pull +else + git clone https://github.com/odin-lang/Odin "$ODIN_DIR" + cd "$ODIN_DIR" +fi echo "Building Odin compiler..." -LLVM_CONFIG=$(command -v llvm-config) make release-native +LLVM_CONFIG=llvm-config-18 make release-native echo "" echo "✓ Odin install complete." -echo " Then verify with: odin version" +echo " Add to your path if needed: export PATH=\"\$HOME/.odin:\$PATH\"" +echo " Then verify with: odin version" \ No newline at end of file diff --git a/scripts/installs/install_php b/scripts/installs/install_php deleted file mode 100755 index 8745fc8..0000000 --- a/scripts/installs/install_php +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -# --------------------------------------------------------------------------------- -# PHP install recipe -# Fetches the void php version and composer package -# --------------------------------------------------------------------------------- -set -e - -# install the Void linux php version -sudo xbps-install php php-mysql php-sqlite php-ffi php-fpm php-intl php-xsl php-imagick php-gd - -# install/download composer -sudo xbps-install composer - -echo "" -echo "✅ PHP + Composer setup complete." diff --git a/scripts/installs/install_raylib_deps b/scripts/installs/install_raylib_deps index a78854a..09a09e9 100755 --- a/scripts/installs/install_raylib_deps +++ b/scripts/installs/install_raylib_deps @@ -1,14 +1,15 @@ #!/bin/bash # --------------------------------------------------------------------------------- # Raylib-go dependency install recipe -# Target: Void Linux +# Target: Pop!_OS / Ubuntu / Debian # Installs system libs needed for raylib to run # --------------------------------------------------------------------------------- set -e echo "Installing raylib-go system dependencies..." -sudo xbps-install make alsa-lib-devel libglvnd-devel libX11-devel libXrandr-devel libXi-devel libXcursor-devel libXinerama-devel mesa MesaLib-devel +sudo apt update +sudo apt install -y build-essential libasound2-dev libgl1-mesa-dev libx11-dev libxrandr-dev libxi-dev libxcursor-dev libxinerama-dev libxinerama-dev libxcursor-dev libxinerama-dev echo "" echo "✓ Raylib-go dependencies installed." -echo "" +echo "" \ No newline at end of file diff --git a/scripts/installs/install_theme b/scripts/installs/install_theme deleted file mode 100755 index b9eaca0..0000000 --- a/scripts/installs/install_theme +++ /dev/null @@ -1,35 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -echo "==> Installing dependencies..." -sudo xbps-install -S sassc gtk-engine-murrine gtk+3-devel - -WORKDIR="$(mktemp -d)" -cd "$WORKDIR" - -echo "==> Cloning Qogir theme..." -git clone --depth=1 https://github.com/vinceliuice/Qogir-theme.git - -echo "==> Installing Qogir theme (dark, void icon, default square corners)..." -cd "$WORKDIR/Qogir-theme" -sudo ./install.sh -d /usr/share/themes -c dark -t default -i void - -echo "==> Installing libadwaita (GTK4) link..." -sudo ./install.sh -d /usr/share/themes -c dark -t default -i void -l - -cd "../" -echo "==> Cloning Qogir Icon theme..." -git clone --depth=1 git@github.com:vinceliuice/Qogir-icon-theme.git - -cd "$WORKDIR/Qogir-icon-theme" -echo "==> Installing Qogir icons..." -sudo ./install.sh -d /home/jason/.icons - -echo "==> Cleaning up..." -cd "$HOME" -sudo rm -rf "$WORKDIR" - -echo "" -echo "Done. Now set in XFCE Settings:" -echo " Appearance -> Style: Qogir-Dark" -echo " Window Manager -> Theme: Qogir-Dark"