about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--.config/ghostty/config25
-rw-r--r--.config/mc/ini5
-rw-r--r--.config/nvim/.gitignore1
-rw-r--r--.config/nvim/.luarc.json12
-rw-r--r--.config/nvim/init.lua7
-rw-r--r--.config/nvim/lua/config/colemak.lua29
-rw-r--r--.config/nvim/lua/config/keymaps.lua42
-rw-r--r--.config/nvim/lua/config/options.lua59
-rw-r--r--.config/nvim/lua/config/vim.lua0
-rw-r--r--.config/nvim/lua/manager.lua26
-rw-r--r--.config/nvim/lua/plugins/autopairs.lua8
-rw-r--r--.config/nvim/lua/plugins/cmp.lua51
-rw-r--r--.config/nvim/lua/plugins/init.lua14
-rw-r--r--.config/nvim/lua/plugins/lastplace.lua6
-rw-r--r--.config/nvim/lua/plugins/love.lua10
-rw-r--r--.config/nvim/lua/plugins/lualine.lua26
-rw-r--r--.config/nvim/lua/plugins/oil.lua28
-rw-r--r--.config/nvim/lua/plugins/orgmode.lua19
-rw-r--r--.config/nvim/lua/plugins/rainbow-delimiters.lua6
-rw-r--r--.config/nvim/lua/plugins/rose-pine.lua9
-rw-r--r--.config/nvim/lua/plugins/statuscol.lua6
-rw-r--r--.config/nvim/lua/plugins/telescope.lua26
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua11
-rw-r--r--.config/shell/alias5
-rw-r--r--.emacs.d/config.org373
-rw-r--r--.emacs.d/early-init.el10
-rw-r--r--.xsessionrc2
-rw-r--r--.zshrc47
28 files changed, 726 insertions, 137 deletions
diff --git a/.config/ghostty/config b/.config/ghostty/config
new file mode 100644
index 0000000..6701b96
--- /dev/null
+++ b/.config/ghostty/config
@@ -0,0 +1,25 @@
+font-family = "Aporetic Sans Mono"
+font-style-bold = "Bold"
+font-style-italic = "Italic"
+font-style-bold-italic = "Bold Italic"
+
+font-size = 15
+
+theme = "rose-pine"
+
+cursor-style = bar
+cursor-style-blink = true
+
+command = "zsh"
+
+window-padding-x = 4
+window-padding-y = 4
+window-padding-balance = true
+window-padding-color = extend
+
+title-report = true
+
+quit-after-last-window-closed = true
+macos-titlebar-style = transparent
+macos-titlebar-proxy-icon = hidden
+macos-option-as-alt = true
diff --git a/.config/mc/ini b/.config/mc/ini
index 115ff36..b3a7bb1 100644
--- a/.config/mc/ini
+++ b/.config/mc/ini
@@ -90,7 +90,7 @@ fish_directory_timeout=900
 
 [Layout]
 output_lines=0
-left_panel_size=40
+left_panel_size=160
 top_panel_size=0
 message_visible=true
 keybar_visible=false
@@ -121,6 +121,7 @@ xterm-kitty=
 color_terminals=
 
 xterm-256color=
+linux=
 
 [Panels]
 simple_swap=false
@@ -161,6 +162,6 @@ ignore_dirs=
 
 [Panelize]
 Find *.orig after patching=find . -name \\*.orig -print
-Find SUID and SGID programs=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print
 Find rejects after patching=find . -name \\*.rej -print
 Modified git files=git ls-files --modified
+Find SUID and SGID programs=find . \\( \\( -perm -04000 -a -perm /011 \\) -o \\( -perm -02000 -a -perm /01 \\) \\) -print
diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore
new file mode 100644
index 0000000..e033bc6
--- /dev/null
+++ b/.config/nvim/.gitignore
@@ -0,0 +1 @@
+lazy-lock.json
diff --git a/.config/nvim/.luarc.json b/.config/nvim/.luarc.json
new file mode 100644
index 0000000..ceb1818
--- /dev/null
+++ b/.config/nvim/.luarc.json
@@ -0,0 +1,12 @@
+{
+  "runtime.version": "LuaJIT",
+  "runtime.path": [
+    "lua/?.lua",
+    "lua/?/init.lua"
+  ],
+  "diagnostics.globals": ["vim"],
+  "workspace.checkThirdParty": false,
+  "workspace.library": [
+    "$VIMRUNTIME"
+  ]
+}
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..6eda1ce
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,7 @@
+-- Setup Config
+require("config.colemak")
+require("config.options")
+require("config.keymaps")
+
+-- Setup Lazy Plugin Manager
+require("manager")
diff --git a/.config/nvim/lua/config/colemak.lua b/.config/nvim/lua/config/colemak.lua
new file mode 100644
index 0000000..36b1e67
--- /dev/null
+++ b/.config/nvim/lua/config/colemak.lua
@@ -0,0 +1,29 @@
+local function map(mode, lhs, rhs, opts)
+  local options = { noremap = true, silent = true }
+  if opts then
+    options = vim.tbl_extend("force", options, opts)
+  end
+  vim.keymap.set(mode, lhs, rhs, options)
+end
+
+map("", "n", "j")
+map("", "e", "k")
+map("", "i", "l")
+map("", "j", "n")
+map("", "k", "e")
+map("", "l", "i")
+map("", "K", "E")
+map("", "N", "J")
+map("", "E", "K") -- As in 'Explore' documentation
+map("", "L", "I")
+map("", "I", "L")
+map("", "J", "N")
+
+map("n", "<c-w>h", "<c-w>h")
+map("n", "<c-w>n", "<c-w>j")
+map("n", "<c-w>e", "<c-w>k")
+map("n", "<C-w>i", "<c-w>l")
+
+-- Kakoune Holdover
+map ("", "gh", "0")
+map ("", "gi", "$")
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..80cd704
--- /dev/null
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,42 @@
+vim.g.mapleader = " "
+vim.keymap.set("n", "<leader>bk", vim.cmd.bdelete,
+  { desc = "Kill Buffer" })
+vim.keymap.set("n", "<leader>bn", vim.cmd.bnext,
+  { desc = "Next Buffer" })
+vim.keymap.set("n", "<leader>bp", vim.cmd.bprev,
+  { desc = "Previous Buffer" })
+
+vim.keymap.set("n", "E", vim.lsp.buf.hover)
+vim.keymap.set("n", "<C-e>", vim.diagnostic.open_float)
+vim.keymap.set("n", "<leader>ld", vim.lsp.buf.definition)
+vim.keymap.set("n", "<leader>lt", vim.lsp.buf.type_definition)
+vim.keymap.set("n", "<leader>li", vim.lsp.buf.implementation)
+vim.keymap.set("n", "<leader>la", vim.lsp.buf.code_action)
+vim.keymap.set("n", "<leader>lf", vim.lsp.buf.format)
+vim.keymap.set("n", "<leader>lr", vim.lsp.buf.rename)
+vim.keymap.set("n", "<leader>le", function()
+  vim.diagnostic.jump({ count = 1, float = true })
+end)
+
+vim.keymap.set("n", "<leader>wh", vim.cmd.split,
+  { desc = "Split Window Horizontally" })
+vim.keymap.set("n", "<leader>wv", vim.cmd.vsplit,
+  { desc = "Split Window Vertically" })
+vim.keymap.set("n", "<leader>wc", "<C-w>q",
+  { desc = "Close Window" })
+vim.keymap.set("n", "<leader>ww", "<C-w>w",
+  { desc = "Next Window" })
+
+vim.keymap.set("n", "<leader>fc", function()
+  vim.cmd('edit ~/.config/nvim/init.lua')
+end)
+vim.keymap.set("n", "<leader>ft", function()
+  vim.cmd('edit ~/Documents/TODO.org')
+end)
+vim.keymap.set("n", "<leader>fn", function()
+  vim.cmd('edit ~/Documents/Notes.org')
+end)
+
+vim.keymap.set('n', '<Tab>', '==', { noremap = true, silent = true })
+
+vim.keymap.set('n', 'q:', ':q<CR>', { noremap = true })
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
new file mode 100644
index 0000000..c1621fa
--- /dev/null
+++ b/.config/nvim/lua/config/options.lua
@@ -0,0 +1,59 @@
+vim.opt.nu = true
+vim.opt.rnu = true
+
+vim.opt.tabstop = 2
+vim.opt.softtabstop = 2
+vim.opt.shiftwidth = 2
+vim.opt.expandtab = true
+vim.opt.autoindent = true
+
+vim.opt.smartindent = true
+
+vim.opt.wrap = false
+
+vim.opt.swapfile = false
+vim.opt.backup = false
+vim.opt.undodir = os.getenv("HOME") .. "/.nvim/undodir"
+vim.opt.undofile = true
+
+vim.opt.hlsearch = false
+vim.opt.incsearch = true
+
+vim.opt.termguicolors = true
+
+vim.opt.scrolloff = 12
+
+vim.opt.updatetime = 50
+
+vim.opt.splitbelow = true
+vim.opt.splitright = true
+
+vim.opt.encoding = "utf-8"
+
+vim.opt.shell = "zsh"
+
+vim.opt.mouse = ""
+
+vim.opt.ignorecase = true
+vim.opt.smartcase = true
+vim.opt.incsearch = true
+
+vim.opt.cursorline = true
+
+vim.opt.title = true
+
+vim.opt.clipboard = "unnamedplus"
+
+vim.opt.colorcolumn = "80"
+
+vim.opt.signcolumn = 'no'
+
+vim.cmd "set showtabline=0 | set laststatus=0"
+
+vim.wo.fillchars='eob: '
+
+-- Remove Whitespaces on File Save
+vim.api.nvim_create_autocmd({ "BufWritePre" }, {
+  pattern = { "*" },
+  command = [[%s/\s\+$//e]],
+})
diff --git a/.config/nvim/lua/config/vim.lua b/.config/nvim/lua/config/vim.lua
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/.config/nvim/lua/config/vim.lua
diff --git a/.config/nvim/lua/manager.lua b/.config/nvim/lua/manager.lua
new file mode 100644
index 0000000..f533341
--- /dev/null
+++ b/.config/nvim/lua/manager.lua
@@ -0,0 +1,26 @@
+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)
+
+vim.g.mapleader = " "
+vim.g.maplocalleader = "\\"
+
+require("lazy").setup({
+  spec = {
+    { import = "plugins" },
+  },
+  install = { colorscheme = { "habamax" } },
+  checker = { enabled = true },
+})
diff --git a/.config/nvim/lua/plugins/autopairs.lua b/.config/nvim/lua/plugins/autopairs.lua
new file mode 100644
index 0000000..c37e301
--- /dev/null
+++ b/.config/nvim/lua/plugins/autopairs.lua
@@ -0,0 +1,8 @@
+return {
+  "windwp/nvim-autopairs",
+  config = function()
+    require("nvim-autopairs").setup({
+      disable_filetype = { "TelescopePrompt" , "vim" }
+    })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/cmp.lua b/.config/nvim/lua/plugins/cmp.lua
new file mode 100644
index 0000000..e61b901
--- /dev/null
+++ b/.config/nvim/lua/plugins/cmp.lua
@@ -0,0 +1,51 @@
+return {
+  'hrsh7th/nvim-cmp',
+  dependencies = {
+    'neovim/nvim-lspconfig',
+    'hrsh7th/cmp-nvim-lsp',
+    'hrsh7th/cmp-buffer',
+    'hrsh7th/cmp-path',
+    'lukas-reineke/cmp-rg',
+    'onsails/lspkind.nvim'
+  },
+  config = function()
+    local cmp = require('cmp')
+    local lspkind = require('lspkind')
+    cmp.setup({
+      snippet = {
+        expand = function(arg)
+          vim.snippet.expand(arg.body)
+        end
+      },
+      mapping = cmp.mapping.preset.insert({
+        -- ['<CR>'] = cmp.mapping.confirm({ select = true }),
+        ['<CR>'] = cmp.mapping.confirm(),
+        ['<Tab>'] = cmp.mapping.select_next_item(),
+        ['<S-Tab>'] = cmp.mapping.select_prev_item(),
+      }),
+      sources = cmp.config.sources(
+        {
+          { name = 'nvim_lsp' },
+        },
+        {
+          { name = 'path' },
+        },
+        {
+          { name = 'buffer' },
+          { name = 'rg', keyword_length = 3 }
+        }
+      ),
+      formatting = {
+        format = lspkind.cmp_format({
+          mode = 'symbol'
+        })
+      },
+      view = {
+        entries = 'native'
+      }
+    })
+
+    local capabilities = require('cmp_nvim_lsp').default_capabilities()
+    require("lspconfig").lua_ls.setup({capabilities = capabilities})
+  end
+}
diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua
new file mode 100644
index 0000000..d18e65c
--- /dev/null
+++ b/.config/nvim/lua/plugins/init.lua
@@ -0,0 +1,14 @@
+return {
+  require('plugins.rose-pine'),
+  require('plugins.autopairs'),
+  require('plugins.treesitter'),
+  require('plugins.rainbow-delimiters'),
+  require('plugins.telescope'),
+  require('plugins.lualine'),
+  require('plugins.statuscol'),
+  require('plugins.oil'),
+  require('plugins.cmp'),
+  require('plugins.lastplace'),
+  require('plugins.orgmode'),
+  require('plugins.love')
+}
diff --git a/.config/nvim/lua/plugins/lastplace.lua b/.config/nvim/lua/plugins/lastplace.lua
new file mode 100644
index 0000000..6c9f074
--- /dev/null
+++ b/.config/nvim/lua/plugins/lastplace.lua
@@ -0,0 +1,6 @@
+return {
+  'ethanholz/nvim-lastplace',
+  config = function()
+    require'nvim-lastplace'.setup({})
+  end
+}
diff --git a/.config/nvim/lua/plugins/love.lua b/.config/nvim/lua/plugins/love.lua
new file mode 100644
index 0000000..2e0ac4f
--- /dev/null
+++ b/.config/nvim/lua/plugins/love.lua
@@ -0,0 +1,10 @@
+return {
+  "S1M0N38/love2d.nvim",
+  event = "VeryLazy",
+  opts = { },
+  keys = {
+    { "<leader>v", ft = "lua", desc = "LÖVE" },
+    { "<leader>vv", "<cmd>LoveRun<cr>", ft = "lua", desc = "Run LÖVE" },
+    { "<leader>vs", "<cmd>LoveStop<cr>", ft = "lua", desc = "Stop LÖVE" },
+  },
+}
diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua
new file mode 100644
index 0000000..cd3d6f1
--- /dev/null
+++ b/.config/nvim/lua/plugins/lualine.lua
@@ -0,0 +1,26 @@
+return {
+  "nvim-lualine/lualine.nvim",
+  dependencies = { 'nvim-tree/nvim-web-devicons' },
+  config = function()
+    require("lualine").setup({
+      options = {
+        icons_enabled = true,
+        component_separators = { left = '|', right = '|'},
+        section_separators = { left = '', right = ''},
+      },
+      sections = {
+        lualine_a = {"mode", {
+          "filetype",
+          icon_only = true,
+          separator = "",
+          padding = { right = 0, left = 1 },
+        }, "filename" },
+        lualine_b = {},
+        lualine_c = {},
+        lualine_x = {"diagnostics"},
+        lualine_y = {},
+        lualine_z = {}
+      }
+    })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/oil.lua b/.config/nvim/lua/plugins/oil.lua
new file mode 100644
index 0000000..3eb396d
--- /dev/null
+++ b/.config/nvim/lua/plugins/oil.lua
@@ -0,0 +1,28 @@
+return {
+  'stevearc/oil.nvim',
+  dependencies = { "nvim-tree/nvim-web-devicons" },
+  config = function()
+
+    function _G.get_oil_winbar()
+      local bufnr = vim.api.nvim_win_get_buf(vim.g.statusline_winid)
+      local dir = require("oil").get_current_dir(bufnr)
+      if dir then
+        return vim.fn.fnamemodify(dir, ":~")
+      else
+        -- If there is no current directory (e.g. over ssh), just show the buffer name
+        return vim.api.nvim_buf_get_name(0)
+      end
+    end
+
+    require('oil').setup({
+      win_options = {
+        winbar = "%!v:lua.get_oil_winbar()",
+      },
+      view_options = {
+        show_hidden = true
+      }
+    })
+    vim.keymap.set('n', '-', '<CMD>Oil<CR>', {desc = "Open Dir in Oil"})
+  end,
+  lazy = false,
+}
diff --git a/.config/nvim/lua/plugins/orgmode.lua b/.config/nvim/lua/plugins/orgmode.lua
new file mode 100644
index 0000000..ff383ff
--- /dev/null
+++ b/.config/nvim/lua/plugins/orgmode.lua
@@ -0,0 +1,19 @@
+return {
+  'nvim-orgmode/orgmode',
+  event = 'VeryLazy',
+  ft = { 'org' },
+  config = function()
+    -- Setup orgmode
+    require('orgmode').setup({
+      org_agenda_files = '~/orgfiles/**/*',
+      org_default_notes_file = '~/orgfiles/refile.org',
+    })
+
+    -- NOTE: If you are using nvim-treesitter with ~ensure_installed = "all"~ option
+    -- add ~org~ to ignore_install
+    -- require('nvim-treesitter.configs').setup({
+    --   ensure_installed = 'all',
+    --   ignore_install = { 'org' },
+    -- })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/rainbow-delimiters.lua b/.config/nvim/lua/plugins/rainbow-delimiters.lua
new file mode 100644
index 0000000..9fe4a06
--- /dev/null
+++ b/.config/nvim/lua/plugins/rainbow-delimiters.lua
@@ -0,0 +1,6 @@
+return {
+  "hiphish/rainbow-delimiters.nvim",
+  config =  function()
+    require('rainbow-delimiters.setup').setup({})
+  end,
+}
diff --git a/.config/nvim/lua/plugins/rose-pine.lua b/.config/nvim/lua/plugins/rose-pine.lua
new file mode 100644
index 0000000..be59e5e
--- /dev/null
+++ b/.config/nvim/lua/plugins/rose-pine.lua
@@ -0,0 +1,9 @@
+return {
+  "rose-pine/neovim",
+  as = "rose-pine",
+  config = function()
+    vim.opt.termguicolors = true
+    -- vim.cmd.colorscheme("rose-pine")
+    vim.cmd.colorscheme("rose-pine")
+  end,
+}
diff --git a/.config/nvim/lua/plugins/statuscol.lua b/.config/nvim/lua/plugins/statuscol.lua
new file mode 100644
index 0000000..15ccef9
--- /dev/null
+++ b/.config/nvim/lua/plugins/statuscol.lua
@@ -0,0 +1,6 @@
+return {
+  "luukvbaal/statuscol.nvim",
+  config = function()
+    require("statuscol").setup({relculright = true})
+  end,
+}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..0e0d3f4
--- /dev/null
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,26 @@
+return {
+  "nvim-telescope/telescope.nvim",
+  dependencies = {"nvim-lua/plenary.nvim"},
+  config = function()
+    require("telescope").setup({})
+
+    local tscope = require('telescope.builtin')
+    vim.keymap.set('n', '<leader>ff', tscope.find_files,
+      { desc = "Find File" })
+    vim.keymap.set('n', '<leader>bb', tscope.buffers,
+      { desc = "Find Buffer" })
+    vim.keymap.set('n', '<leader>fh', tscope.help_tags,
+      { desc = "Find Help" })
+    -- vim.keymap.set('n', '<leader>fg', function()
+    --   tscope.grep_string(
+    --     { search = vim.fn.input("Grep > "),
+    --     desc = "Find by Grep" });
+    -- end)
+    vim.keymap.set('n', '<leader>fg', tscope.live_grep,
+      { desc = "Find by Grep" })
+    vim.keymap.set('n', '<leader>fr', tscope.oldfiles,
+      { desc = "Find Recent Files" })
+    vim.keymap.set('n', '<leader>lw', tscope.diagnostics,
+      { desc = "Search Diagnostics" })
+  end,
+}
diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua
new file mode 100644
index 0000000..626c329
--- /dev/null
+++ b/.config/nvim/lua/plugins/treesitter.lua
@@ -0,0 +1,11 @@
+return {
+  "nvim-treesitter/nvim-treesitter",
+  config = function()
+    require("nvim-treesitter.configs").setup({
+      ensure_installed = {"c", "vimdoc", "markdown", "jsonc", "lua"},
+      sync_install = false,
+      highlight = { enable = true },
+      indent = { enable = true },
+    })
+  end,
+}
diff --git a/.config/shell/alias b/.config/shell/alias
index c060c0e..aea0c70 100644
--- a/.config/shell/alias
+++ b/.config/shell/alias
@@ -1,3 +1,6 @@
 alias gvc="ssh git@git.venomade.com"
 alias rgf='rg --files | rg'
-alias ls='ls --color=auto'
\ No newline at end of file
+alias ls='ls --color=auto'
+alias md='mkdir'
+alias ec='emacsclient -nw'
+alias cat='bat'
diff --git a/.emacs.d/config.org b/.emacs.d/config.org
index 5b7f51e..36876fa 100644
--- a/.emacs.d/config.org
+++ b/.emacs.d/config.org
@@ -29,40 +29,43 @@
 - [[#programming][Programming]]
   - [[#projects][Projects]]
   - [[#lsp][LSP]]
+  - [[#sidebar][Sidebar]]
   - [[#treesitter][TreeSitter]]
   - [[#languages][Languages]]
   - [[#company][Company]]
   - [[#cape][Cape]]
+  - [[#codeium][Codeium]]
   - [[#utilities][Utilities]]
 - [[#user-interface][User Interface]]
   - [[#add-nerd-icons][Add Nerd Icons]]
   - [[#fonts][Fonts]]
   - [[#theme][Theme]]
   - [[#niceties][Niceties]]
-  - [[#modern-looking-emacs][Modern Looking Emacs]]
+  - [[#zen-mode][Zen Mode]]
 
 * Straight Package Manager
 I'm using the Straight package manager instead of use-package because it is only available in Emacs 29 and above.
 #+begin_src emacs-lisp
   (defvar bootstrap-version)
   (let ((bootstrap-file
-	 (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
-	(bootstrap-version 6))
+         (expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
+        (bootstrap-version 6))
     (unless (file-exists-p bootstrap-file)
       (with-current-buffer
-	  (url-retrieve-synchronously
-	   "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
-	   'silent 'inhibit-cookies)
-	(goto-char (point-max))
-	(eval-print-last-sexp)))
+          (url-retrieve-synchronously
+           "https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
+           'silent 'inhibit-cookies)
+        (goto-char (point-max))
+        (eval-print-last-sexp)))
     (load bootstrap-file nil 'nomessage))
 
   (setq straight-use-package-by-default t)
+  (setq package-native-compile t)
 #+end_src
 
 * Configs
 ** Custom Functions
-*** Cursor follow on split 
+*** Cursor follow on split
 This is so that action can be taken as soon as a split takes place, to either close/move the window or perform an action inside of it.
 #+begin_src emacs-lisp
   (defun split-and-follow-horizontally()
@@ -159,6 +162,11 @@ Quickly grep both my current project and the system include directory.
 #+end_src
 
 ** Fix Annoyances
+*** Add Scroll Marginn
+This adds a scroll margin at the top and bottom of 10 lines to make it easier to scroll through the buffer.
+#+begin_src emacs-lisp
+  (setq scroll-margin 10)
+#+end_src
 *** Disable Backups
 Living on the edge.
 #+begin_src emacs-lisp
@@ -179,16 +187,40 @@ Fixing warnings is for nerds. This is basically necessary after more than 5 pack
 #+begin_src emacs-lisp
   (setq warning-minimum-level :emergency)
 #+end_src
-*** Add Scroll Marginn
-This adds a scroll margin at the top and bottom of 10 lines to make it easier to scroll through the buffer.
+*** Local Bin
+Add the local bin directory to PATH.
 #+begin_src emacs-lisp
-  (setq scroll-margin 10)
+  (setenv "PATH" (concat (concat
+                            (concat (expand-file-name "~/.local/bin") ":")
+                              (getenv "PATH"))))
+
+    (setq exec-path (append exec-path (list (expand-file-name "~/.local/bin"))))
 #+end_src
 *** Save Place
 Go back to old position on file open.
 #+begin_src emacs-lisp
   (save-place-mode 1)
 #+end_src
+*** COMMENT System Clipboard
+Use system clipboard in terminal-mode. (Currently commented out due to using graphical-mode)
+#+begin_src emacs-lisp
+  ;; credit: yorickvP on Github
+  (setq wl-copy-process nil)
+  (defun wl-copy (text)
+    (setq wl-copy-process (make-process :name "wl-copy"
+                                        :buffer nil
+                                        :command '("wl-copy" "-f" "-n")
+                                        :connection-type 'pipe
+                                        :noquery t))
+    (process-send-string wl-copy-process text)
+    (process-send-eof wl-copy-process))
+  (defun wl-paste ()
+    (if (and wl-copy-process (process-live-p wl-copy-process))
+        nil ; should return nil if we're the current paste owner
+        (shell-command-to-string "wl-paste -n | tr -d \r")))
+  (setq interprogram-cut-function 'wl-copy)
+  (setq interprogram-paste-function 'wl-paste)
+#+end_src
 
 ** Keybindings
 *** Reload Emacs
@@ -226,7 +258,7 @@ Add shortcuts to various Emacs functions.
   (keymap-global-set "C-c e b" 'eval-buffer)
   (keymap-global-set "C-c e r" 'eval-region)
   (keymap-global-set "C-c e s" 'eshell)
-  (keymap-global-set "C-c e t" 'ef-themes-load-random)
+  (keymap-global-set "C-c e t" 'theme-toggle)
 #+end_src
 *** Regex and Copy from Above
 Add shortcuts to entering a regex replace and copying a line from above.
@@ -234,6 +266,11 @@ Add shortcuts to entering a regex replace and copying a line from above.
   (keymap-global-set "C-c r" 'replace-regexp)
   (keymap-global-set "C-c y a" 'copy-from-above-command)
 #+end_src
+*** Reverse C-x o
+Add a reversed C-x o to go to previous window.
+#+begin_src emacs-lisp
+  (keymap-global-set "C-x O" 'previous-multiframe-window)
+#+end_src
 *** Window Management
 Add shortcuts to scrolling and moving between windows.
 #+begin_src emacs-lisp
@@ -245,6 +282,10 @@ Add shortcuts to scrolling and moving between windows.
   (keymap-global-set "C-c w p" (lambda () (interactive) (other-window -1)))
   (keymap-global-set "C-c w b" (lambda () (interactive) (other-window -1)))
 #+end_src
+*** MacOS Bindings
+#+begin_src emacs-lisp
+  (setq mac-option-key-is-meta t)
+#+end_src
 
 ** Setup Line Numbers
 *** Always show line numbers
@@ -408,7 +449,10 @@ Tools for the primary version control system.
 *** Magit
 A very extensive Git GUI for Emacs.
 #+begin_src emacs-lisp
-  (use-package magit)
+  (use-package magit
+    :after nerd-icons
+    :custom
+    (magit-format-file-function #'magit-format-file-nerd-icons))
 #+end_src
 *** Magit Todos
 Show Todo list in Magit.
@@ -459,11 +503,6 @@ Adds fuzzy completion to basic Emacs commands.
     (setq enable-recursive-minibuffers t)
     :config
     (ivy-mode 1))
-
-  ;; (use-package ivy-prescient
-  ;;   :after counsel
-  ;;   :config
-  ;;   (ivy-prescient-mode 1))
 #+end_src
 *** Ivy Rich
 Adds Icons to all the new fuzzy completed Emacs commands.
@@ -518,17 +557,17 @@ Automatically generate a table of contents for an Org file.
   (add-hook 'org-mode-hook 'org-indent-mode)
 #+end_src
 
-** Bullet Headers 
+** Bullet Headers
 Stylize Org Mode headers with Nerd Icons.
 #+begin_src emacs-lisp
   (use-package org-bullets
     :config
     (setq org-bullets-bullet-list '(
-                                    ""
-                                    ""
-                                    ""
-                                    ""
-                                    "")))
+                                    "•"
+                                    "•"
+                                    "◦"
+                                    "◦"
+                                    "◦")))
   (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
 #+end_src
 
@@ -673,21 +712,42 @@ Use language servers to provide info and completion.
     :init
     (setq lsp-completion-provider :none
           lsp-keymap-prefix "C-c l"
-          lsp-headerline-breadcrumb-enable nil)
+          lsp-headerline-breadcrumb-enable nil
+          lsp-modeline-code-actions-enable nil)
     :commands lsp lsp-deferred
     :config
     (lsp-enable-snippet t))
-    ;; (lsp-enable-which-key-integration t))
-
-  ;; (use-package lsp-ui
-  ;;   :commands lsp-ui-mode
-  ;;   :hook (prog-mode . lsp-ui-mode)
-  ;;   :config
-  ;;   (keymap-global-set "C-c l d" 'lsp-ui-doc-show))
 
-  ;; Instead:
   (keymap-global-set "C-c l d" 'lsp-describe-thing-at-point)
 #+end_src
+
+*** LSP Mode - Undo Tree compatibility
+#+begin_src emacs-lisp
+  (with-eval-after-load 'lsp-mode
+    (defun my/lsp--should-ignore-file (filename)
+      (or (string-match-p "\\.emacs[-_.]backups?/" filename)
+          (string-match-p "\\.emacs[-_.]undo/" filename)
+          (string-match-p "/\\.emacs\\.d/undo/" filename)
+          (string-match-p "/\\.emacs\\.d/backups/" filename)
+          (string-match-p "/#.*#$" filename)
+          (string-match-p "/.*~$" filename)
+          (string-match-p "/.*\\.~undo-tree~$" filename)))
+
+    (advice-add 'lsp--on-did-open :before
+                (lambda (&rest args)
+                  (let ((file (lsp--uri-to-path (gethash "uri" (cl-first args)))))
+                    (when (my/lsp--should-ignore-file file)
+                      (cl-return-from lsp--on-did-open))))
+                '((name . ignore-emacs-backup-open)))
+
+    (advice-add 'lsp--on-did-save :before
+                (lambda (&rest args)
+                  (let ((file (lsp--uri-to-path (gethash "uri" (cl-first args)))))
+                    (when (my/lsp--should-ignore-file file)
+                      (cl-return-from lsp--on-did-save))))
+                '((name . ignore-emacs-backup-save))))
+#+end_src
+
 *** YASnippet
 Autocomplete Snippets to write common code patterns faster.
 #+begin_src emacs-lisp
@@ -718,6 +778,50 @@ Search documentation from within Emacs.
     (keymap-global-set "C-c d" 'devdocs-lookup))
 #+end_src
 
+** Sidebar
+Project file sidebar for project wide visual grepping.
+#+begin_src emacs-lisp
+  (use-package dired-sidebar
+    :init
+    (setq dired-sidebar-theme 'icons
+          dired-sidebar-use-term-integration t
+          dired-sidebar-width 30
+          dired-sidebar-no-delete-other-windows t
+          dired-sidebar-should-follow-file t))
+
+  (defun open-project-sidebar ()
+    "Toggle `dired-sidebar' at the project root."
+    (interactive)
+    (let ((default-directory (project-root (project-current t))))
+      (dired-sidebar-toggle-sidebar)))
+
+  (keymap-global-set "C-c p s" 'open-project-sidebar)
+
+  (defun dired-sidebar-header-line ()
+    "Set a minimal header line for dired-sidebar buffers."
+      (setq header-line-format
+            (propertize
+             (concat " " (file-name-nondirectory
+                            (directory-file-name default-directory)))
+             'face 'bold)))
+
+  (add-hook 'dired-sidebar-mode-hook #'dired-sidebar-header-line)
+
+  (defun dired-sidebar-clean-top-line ()
+    "Hide the top directory line in `dired-sidebar` buffers."
+      (save-excursion
+        (goto-char (point-min))
+        (when (looking-at "^  \\(/.*\\):.*$")
+          (let ((inhibit-read-only t))
+            (delete-region (point) (progn (forward-line 1) (point)))))))
+
+  (add-hook 'dired-sidebar-mode-hook #'dired-sidebar-clean-top-line)
+
+  (add-hook 'dired-sidebar-mode-hook
+            (lambda ()
+              (setq mode-line-format nil))) ;; disable modeline in sidebar
+#+end_src
+
 ** TreeSitter
 Use advanced highlighting by default.
 #+begin_src emacs-lisp
@@ -754,13 +858,7 @@ The Classic.
 
   (add-hook 'find-file-hook 'insert-header-guards)
 #+end_src
-*** COMMENT D
-C Interop with a GC.
-#+begin_src emacs-lisp
-    (use-package d-mode
-      :hook (d-mode . lsp))
-#+end_src
-*** COMMENT Go
+*** Go
 A simple C-like language with a GC.
 #+begin_src emacs-lisp
   (use-package go-mode
@@ -795,16 +893,21 @@ Functionally Scottish.
     :hook
     (haskell-mode . lsp))
 #+end_src
-*** COMMENT LISP
-Programming for Programmers.
+*** Kotlin
+Jetbrains had enough of Java.
 #+begin_src emacs-lisp
-  ;; (use-package slime
-  ;;   :init
-  ;;   (slime-setup '(slime-fancy slime-quicklisp slime-asdf slime-mrepl))
-  ;;   :config
-  ;;   (setq inferior-lisp-program "/usr/bin/sbcl")
-  ;;   (add-hook 'slime-repl-mode-hook 'smartparens-mode))
+  (use-package kotlin-ts-mode
+    :config
+    (add-hook 'kotlin-ts-mode-hook 'lsp)
+
+    (add-to-list 'auto-mode-alist '("\\.kt\\'" . kotlin-ts-mode)))
 
+  ;; Java Support
+  (use-package lsp-java)
+#+end_src
+*** LISP
+Programming for Programmers.
+#+begin_src emacs-lisp
   (use-package sly
     :config
     (setq inferior-lisp-program "ros -Q run"
@@ -814,11 +917,8 @@ Programming for Programmers.
     (add-hook 'lisp-mode-hook
               (lambda ()
                 (define-key lisp-mode-map (kbd "C-c d") 'sly-documentation))))
-
-  ;; (with-eval-after-load 'sly
-  ;;  (load (expand-file-name "~/.roswell/helper.el")))
 #+end_src
-*** COMMENT Lua
+*** Lua
 A simple Python-like language with many implementations.
 #+begin_src emacs-lisp
   (straight-use-package
@@ -841,7 +941,12 @@ A simple Python-like language with many implementations.
   (add-hook 'lua-mode-hook 'lua-abbrev-mode-off)
   (setq save-abbrevs nil)   ;; is this still needed?
 #+end_src
-*** OCaml
+*** Nix
+The deterministic package manager.
+#+begin_src emacs-lisp
+  (use-package nix-mode)
+#+end_src
+*** COMMENT OCaml
 Installed with OPAM
 #+begin_src emacs-lisp
   (setenv "PATH" (concat (concat
@@ -859,10 +964,42 @@ Installed with OPAM
   (require 'dune)
   (require 'utop)
 #+end_src
-*** COMMENT Vala
-An OOP Language for C & GLib interop.
+*** Typescript
+Embrace, Extend, Exstinguish, Eich.
+#+begin_src emacs-lisp
+  (setenv "PATH" (concat (concat
+                          (concat (expand-file-name "~/.bun/bin") ":")
+                            (getenv "PATH"))))
+
+  (setq exec-path (append exec-path (list (expand-file-name "~/.bun/bin"))))
+
+  (add-hook 'typescript-ts-mode-hook 'lsp)
+  (add-hook 'tsx-ts-mode-hook 'lsp)
+
+  (add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-ts-mode))
+  (add-to-list 'auto-mode-alist '("\\.tsx\\'" . tsx-ts-mode))
+  (add-to-list 'auto-mode-alist '("\\.json\\'" . json-ts-mode))
+
+  ;; Tailwind
+  (use-package lsp-tailwindcss
+    :straight '(lsp-tailwindcss :type git :host github :repo "merrickluo/lsp-tailwindcss")
+    :init (setq lsp-tailwindcss-add-on-mode t)
+    :config
+    (dolist (tw-major-mode
+             '(css-mode
+               css-ts-mode
+               typescript-mode
+               typescript-ts-mode
+               tsx-ts-mode
+               js2-mode
+               js-ts-mode))
+      (add-to-list 'lsp-tailwindcss-major-modes tw-major-mode)))
+#+end_src
+*** Zig
+A systems language with emphasis on metaprogramming.
 #+begin_src emacs-lisp
-  (use-package vala-mode)
+  (use-package zig-mode
+    :hook (zig-mode . lsp))
 #+end_src
 
 ** Company
@@ -894,7 +1031,7 @@ A powerful auto-completion utility.
 
     ;; Bind M-/ to company-complete
     (define-key global-map (kbd "M-/") 'company-complete)
-    (define-key global-map (kbd "M-?") 'dabbrev-expand)  
+    (define-key global-map (kbd "M-?") 'dabbrev-expand)
     :hook
     (prog-mode . company-mode))
 
@@ -923,6 +1060,31 @@ Add non-lsp completions to the capf.
     (add-hook 'completion-at-point-functions #'yasnippet-capf))
 #+end_src
 
+** Codeium
+#+begin_src emacs-lisp
+  (straight-use-package
+   '(codeium :type git :host github :repo "Exafunction/codeium.el"))
+
+  (setq codeium-api-enabled
+        (lambda (api)
+          (memq api '(GetCompletions Heartbeat CancelRequest GetAuthToken RegisterUser auth-redirect AcceptCompletion))))
+
+  (defun my-codeium/document/text ()
+    (buffer-substring-no-properties (max (- (point) 3000) (point-min)) (min (+ (point) 1000) (point-max))))
+  (defun my-codeium/document/cursor_offset ()
+    (codeium-utf8-byte-length
+     (buffer-substring-no-properties (max (- (point) 3000) (point-min)) (point))))
+  (setq codeium/document/text 'my-codeium/document/text)
+  (setq codeium/document/cursor_offset 'my-codeium/document/cursor_offset)
+
+  (defun my/codeium/completion ()
+    "Decouple codeium from other completions"
+    (interactive)
+    (cape-interactive #'codeium-completion-at-point))
+
+  (keymap-global-set "C-c a" 'my/codeium/completion)
+#+end_src
+
 ** Utilities
 *** Flycheck
 Syntax checking for Emacs.
@@ -936,10 +1098,17 @@ Syntax checking for Emacs.
     (flycheck-add-next-checker 'c/c++-gcc 'c/c++-cppcheck 'append)
     (setq flycheck-indication-mode nil)
     (set-face-attribute 'flycheck-warning nil :underline nil)) ;; Disable Warning Underline (NOT WORKING)
+
+  (add-to-list 'display-buffer-alist
+               '("\\*Flycheck errors\\*"
+                 (display-buffer-reuse-window
+                  display-buffer-in-side-window)
+                 (side . bottom)
+                 (window-height . 0.2))) ;; Set flycheck error list to only take up the bottom 20% of the window
 #+end_src
 
 * User Interface
-** Add Nerd Icons 
+** Add Nerd Icons
 Use Icons from Nerd Font to add a little modern spice to Emacs.
 #+begin_src emacs-lisp
   (use-package nerd-icons
@@ -961,7 +1130,7 @@ Set font for both Monospace and Proportional text.
 #+begin_src emacs-lisp
   (defvar fontconf
       '((font . "Aporetic Sans Mono")
-        (size . 13)))
+        (size . 15)))
 
     (set-face-attribute 'variable-pitch nil
             :font (cdr (assoc 'font fontconf))
@@ -1040,20 +1209,35 @@ Bind both scroling and +/- to zooming.
 ** Theme
 Set the theme to a nice dark one.
 #+begin_src emacs-lisp
-  (use-package ef-themes
+  (use-package kaolin-themes
     :config
     (set-window-margins nil 0))
 
   (add-hook 'emacs-startup-hook
             (lambda ()
-              (load-theme 'ef-bio t)))
+              (load-theme 'kaolin-dark t)))
+
+  (defun theme-toggle ()
+    "Toggle between two Emacs themes: doom-one and doom-dracula."
+    (interactive)
+    (let ((theme-a 'kaolin-dark)
+          (theme-b 'kaolin-light))
+      (cond
+       ((member theme-a custom-enabled-themes)
+        (disable-theme theme-a)
+        (load-theme theme-b t))
+       ((member theme-b custom-enabled-themes)
+        (disable-theme theme-b)
+        (load-theme theme-a t))
+       (t
+        (load-theme theme-a t)))))
 #+end_src
 
 ** Niceties
 *** Disable Extra GUI Features
 Disable GUI features to simplify frames.
 #+begin_src emacs-lisp
-  (menu-bar-mode -1)
+  ;;(menu-bar-mode -1)
   (tool-bar-mode -1)
   (scroll-bar-mode -1)
   (setq inhibit-startup-screen t)
@@ -1069,67 +1253,14 @@ Reduce fringe size to 1px.
 #+begin_src emacs-lisp
   (set-fringe-mode 1)
 #+end_src
-*** Disable Background
-In no-window mode, disable the background to fit in with terminal theme.
-#+begin_src emacs-lisp
-  (defun on-after-init ()
-    (unless (display-graphic-p (selected-frame))
-      (set-face-background 'default "unspecified-bg" (selected-frame))))
-
-  (add-hook 'window-setup-hook 'on-after-init)
-#+end_src
-
-** Modern Looking Emacs
-*** Org Modern
-Modern iconography and styling for Org-Mode.
+*** MacOS Style
 #+begin_src emacs-lisp
-  (use-package org-modern)
-
-  (modify-all-frames-parameters
-   '((right-divider-width . 40)
-     (internal-border-width . 40)))
-  (dolist (face '(window-divider
-                  window-divider-first-pixel
-                  window-divider-last-pixel))
-    (face-spec-reset-face face)
-    (set-face-foreground face (face-attribute 'default :background)))
-  (set-face-background 'fringe (face-attribute 'default :background))
-
-
-  (setq org-pretty-entities t
-        org-auto-align-tags nil
-        org-tags-column 0
-        org-catch-invisible-edits 'show-and-error
-        org-special-ctrl-a/e t
-        org-insert-heading-respect-content t)
-
-  (add-hook 'org-mode-hook #'org-modern-mode)
-  (add-hook 'org-agenda-finalize-hook #'org-modern-agenda)
+  (use-package ns-auto-titlebar
+    :config
+    (when (eq system-type 'darwin) (ns-auto-titlebar-mode)))
 #+end_src
-*** Spacious Padding
-Adds padding around various elements.
-#+begin_src emacs-lisp
-  (use-package spacious-padding)
-
-  ;; These are the default values, but I keep them here for visibility.
-  (setq spacious-padding-widths
-        '( :internal-border-width 15
-           :header-line-width 4
-           :mode-line-width 6
-           :tab-width 4
-           :right-divider-width 30
-           :scroll-bar-width 8
-           :fringe-width 8))
 
-  ;; Read the doc string of `spacious-padding-subtle-mode-line' as it
-  ;; is very flexible and provides several examples.
-  (setq spacious-padding-subtle-mode-line
-        `( :mode-line-active 'default
-           :mode-line-inactive vertical-border))
-
-  (spacious-padding-mode 1)
-#+end_src
-*** Zen Mode
+** Zen Mode
 Center the edtior with Olivetti for distraction-free editing.
 #+begin_src emacs-lisp
   (use-package olivetti
diff --git a/.emacs.d/early-init.el b/.emacs.d/early-init.el
new file mode 100644
index 0000000..40200af
--- /dev/null
+++ b/.emacs.d/early-init.el
@@ -0,0 +1,10 @@
+(setenv "LIBRARY_PATH"
+	(string-join
+	 '("/opt/homebrew/opt/gcc/lib/gcc/13"
+	   "/opt/homebrew/opt/libgccjit/lib/gcc/13"
+	   "/opt/homebrew/opt/gcc/lib/gcc/13/gcc/aarch64-apple-darwin22/13")
+	 ":"))
+(setq gc-cons-threshold 100000000)
+(setq read-process-output-max (* 1024 1024))
+(setenv "LSP_USE_PLISTS" "true")
+(setq-default lsp-use-plists t)
diff --git a/.xsessionrc b/.xsessionrc
deleted file mode 100644
index c923b63..0000000
--- a/.xsessionrc
+++ /dev/null
@@ -1,2 +0,0 @@
-export QT_QPA_PLATFORMTHEME=gtk2
-export QT_STYLE_OVERRIDE=gtk2
diff --git a/.zshrc b/.zshrc
index 6af87b4..97ce5f5 100644
--- a/.zshrc
+++ b/.zshrc
@@ -57,30 +57,55 @@ git_dirty() {
 }
 
 set_prompt() {
-  local user="${USER_COLOR}%n${RESET_COLOR}"
-  local venv=""
-  [[ -n "$VIRTUAL_ENV" ]] && venv="${VENV_COLOR}($(basename $VIRTUAL_ENV))${RESET_COLOR} "
+  if [ "$DEVBOX_SHELL_ENABLED" -ne 1 ]; then
+      local user="${USER_COLOR}%n${RESET_COLOR}"
+      local venv=""
+      [[ -n "$VIRTUAL_ENV" ]] && venv="${VENV_COLOR}($(basename $VIRTUAL_ENV))${RESET_COLOR} "
 
-  local path="${DIR_COLOR}$(shorten_path)${RESET_COLOR}"
-  local git_info=""
-  local branch="$(git_branch)"
+      local path="${DIR_COLOR}$(shorten_path)${RESET_COLOR}"
+      local git_info=""
+      local branch="$(git_branch)"
 
-  if [[ -n "$branch" ]]; then
-    git_info=" %F{white}on%f ${GIT_COLOR}${branch}${RESET_COLOR}${GIT_DIRTY_COLOR}$(git_dirty)${RESET_COLOR}"
-  fi
+      if [[ -n "$branch" ]]; then
+          git_info=" %F{white}on%f ${GIT_COLOR}${branch}${RESET_COLOR}${GIT_DIRTY_COLOR}$(git_dirty)${RESET_COLOR}"
+      fi
 
-  PROMPT="${user} %F{white}in%f ${venv}${path}${git_info}
+      PROMPT="${user} %F{white}in%f ${venv}${path}${git_info}
 ${PROMPT_SYMBOL_COLOR}λ${RESET_COLOR} "
+  fi
 }
 
 autoload -Uz add-zsh-hook
 add-zsh-hook precmd set_prompt
 
 # plugins
-source /usr/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
+source /Users/venomade/.local/share/zsh-plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
 
 # GHCUP for Haskell
 [ -f "/home/venomade/.ghcup/env" ] && . "/home/venomade/.ghcup/env" # ghcup-env
 
 # OPAM for OCaml
 [[ ! -r '/home/venomade/.opam/opam-init/init.zsh' ]] || source '/home/venomade/.opam/opam-init/init.zsh' > /dev/null 2> /dev/null
+# bun completions
+[ -s "/home/venomade/.bun/_bun" ] && source "/home/venomade/.bun/_bun"
+
+# bun
+# export BUN_INSTALL="$HOME/.bun"
+# export PATH="$BUN_INSTALL/bin:$PATH"
+
+# Devbox
+eval "$(devbox global shellenv)"
+
+# Function to run emacs based on the presence of devbox.json
+run_emacs() {
+    if [[ $# -eq 0 ]]; then
+        if [[ -f "devbox.json" ]]; then
+            devbox run emacs .  &>/dev/null &
+        else
+            emacs
+        fi
+    else
+        command emacs "$@"
+    fi
+}
+alias emacs='run_emacs'