From 2b567fae93cc6f3e35f7ecd93e8f0b9105413398 Mon Sep 17 00:00:00 2001 From: lulusillyyy Date: Sun, 2 Aug 2026 01:06:08 -0400 Subject: [PATCH 1/2] idk if this'll even work --- dotfiles/nvim/init.lua | 139 +++++++++++++++++++++++++++++++++++++++++ flake.nix | 6 +- 2 files changed, 143 insertions(+), 2 deletions(-) create mode 100644 dotfiles/nvim/init.lua diff --git a/dotfiles/nvim/init.lua b/dotfiles/nvim/init.lua new file mode 100644 index 0000000..7dcd428 --- /dev/null +++ b/dotfiles/nvim/init.lua @@ -0,0 +1,139 @@ +-- =================================== +-- | General Neovim Configuration | +-- =================================== +-- I won't lie to you, I vibecoded the boilerplate for this stuff. +-- Aside from Emacs, I don't really like having to configure my editors +-- very much. Basic understanding of the config is all I really prioritize. +vim.opt.number = true -- Show line numbers +vim.opt.relativenumber = true -- Show relative line numbers +vim.opt.tabstop = 2 -- A tab is 2 spaces +vim.opt.shiftwidth = 2 -- Indent is 2 spaces +vim.opt.expandtab = true -- Use spaces instead of tabs +vim.opt.termguicolors = true -- Enable terminal colors +vim.opt.scrolloff = 8 -- Lines above/below cursor +vim.opt.signcolumn = "yes" -- Always show the sign column +-- Set the leader key to space. This is a crucial step for custom mappings. +vim.g.mapleader = " " +-- ==================================== +-- | Plugin Management with lazy.nvim | +-- ==================================== +-- The configuration below bootstraps lazy.nvim if it's not already installed. +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", "clone", "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", lazypath + }) +end +vim.opt.rtp:prepend(lazypath) +-- Setup the plugins you need. +require("lazy").setup({ + { 'sphamba/smear-cursor.nvim' }, + -- For background transparency + { 'xiyaowong/transparent.nvim' }, + -- === The colorscheme plugin is specified here. === + -- Gruvbox theme plugin. It will be automatically installed by lazy.nvim. + { 'ellisonleao/gruvbox.nvim', config = function() + -- Ensure the background is set to 'dark' for the gruvbox colorscheme. + vim.o.background = 'dark' + -- Load the colorscheme. + vim.cmd.colorscheme("gruvbox") + end }, + -- Treesitter plugin for syntax highlighting. + { "nvim-treesitter/nvim-treesitter", build = ":TSUpdate" }, + -- Autocomplete plugins + { "hrsh7th/nvim-cmp" }, + { "hrsh7th/cmp-nvim-lsp" }, + { "L3MON4D3/LuaSnip" }, + { "neovim/nvim-lspconfig" }, + -- Plugin to automatically close paired characters like (), {}, [], and "" + { 'echasnovski/mini.pairs' }, + -- File tree and icon plugins + { + 'nvim-tree/nvim-tree.lua', + version = '*', + lazy = false, + dependencies = { + 'nvim-tree/nvim-web-devicons', + }, + config = function() + -- The setup call for the nvim-tree plugin. + require('nvim-tree').setup {} + end + }, +}) +-- Transparent configuration +require('transparent').setup({ + enable = true, -- boolean: enable transparent + extra_groups = { -- table: additional groups to clear + 'Normal', 'NormalNC', 'Comment', 'Constant', 'Identifier', + 'Statement', 'PreProc', 'Type', 'Special', 'Underlined', + 'Todo', 'String', 'Function', 'Conditional', 'Repeat', + 'Operator', 'Structure', 'LineNr', 'SignColumn', 'EndOfBuffer' + }, +}) +-- Treesitter configuration. +require("nvim-treesitter.configs").setup({ + highlight = { enable = true }, + -- You can specify languages to install with `ensure_installed`. + -- e.g., ensure_installed = { "lua", "python", "javascript" }, +}) +-- Autocomplete (cmp) configuration. +local cmp = require("cmp") +cmp.setup({ + snippet = { + expand = function(args) require("luasnip").lsp_expand(args.body) end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_next_item(), + [""] = cmp.mapping.select_prev_item(), + [""] = cmp.mapping.confirm({ select = true }), + }), + sources = { + { name = "nvim_lsp" }, + }, +}) +-- Mini.pairs configuration. +-- This simple setup is all that's needed for the basic functionality. +require('mini.pairs').setup({}) +-- =================================== +-- | Custom Keymaps | +-- =================================== +-- Keymaps are custom commands mapped to a specific key combination. +-- The "" prefix will be replaced with your leader key, which is "space". +-- Split creation keymaps +vim.keymap.set('n', 'sv', ':vsplit', { desc = 'Create a vertical split' }) +vim.keymap.set('n', 'ss', ':split', { desc = 'Create a horizontal split' }) +-- Buffer navigation +-- bh/j/k/l to navigate between buffers +vim.keymap.set('n', 'bh', ':bprev', { desc = 'Go to previous buffer' }) +vim.keymap.set('n', 'bl', ':bnext', { desc = 'Go to next buffer' }) +-- The following mappings are less common, but fulfill your request. +vim.keymap.set('n', 'bj', ':bnext', { desc = 'Go to next buffer' }) +vim.keymap.set('n', 'bk', ':bprev', { desc = 'Go to previous buffer' }) +-- Split navigation +-- sh/j/k/l to move between splits +vim.keymap.set('n', 'sh', 'h', { desc = 'Move to left split' }) +vim.keymap.set('n', 'sj', 'j', { desc = 'Move to split below' }) +vim.keymap.set('n', 'sk', 'k', { desc = 'Move to split above' }) +vim.keymap.set('n', 'sl', 'l', { desc = 'Move to right split' }) +-- Normal mode keymaps +-- Save the current file. +vim.keymap.set('n', 'w', ':w', { desc = 'Save file' }) +-- Force quit the current window without saving. +vim.keymap.set('n', 'q', ':q!', { desc = 'Force quit window' }) +-- Save and quit. +vim.keymap.set('n', 'x', ':wq', { desc = 'Save and quit' }) +-- Save all open buffers. +vim.keymap.set('n', 'wa', ':wa', { desc = 'Save all buffers' }) +-- Close all windows except the current one. +vim.keymap.set('n', 'o', ':only', { desc = 'Close all other windows' }) +-- Toggle the file tree. +vim.keymap.set('n', 'e', ':NvimTreeToggle', { desc = 'Toggle file tree' }) +-- Select the entire file content. +vim.keymap.set('n', 'a', 'ggVG', { desc = 'Select entire file' }) +-- Various commands to compile different file types. +-- Typst => PDF +vim.keymap.set('n', 'ct', ':!typst compile %:t', { desc = 'Compile Typst file to PDF'} ) +-- Keybinding to toggle transparency +vim.api.nvim_set_keymap('n', 'tt', ':TransparentToggle', { noremap = true, silent = true }) diff --git a/flake.nix b/flake.nix index 29d96e4..8870e3d 100644 --- a/flake.nix +++ b/flake.nix @@ -31,8 +31,6 @@ neovim # Text editor of choice htop # Resource manager iina # Media player - # raycast # AI chat/Application launcher/Automation tool - # kanata # Keyboard remapping tool ]; homebrew = { @@ -53,6 +51,7 @@ "font-monocraft-nerd-font" "obsidian" "raycast" + "leader-key" "foobar2000" "android-platform-tools" "zen" @@ -67,6 +66,9 @@ system.defaults = { dock.autohide = true; finder.AppleShowAllExtensions = true; + NSGlobalDomain.AppleShowAllFiles = true; + # finder.AppleShowAllFiles + NSGlobalDomain.AppleShowScrollBars = "WhenScrolling" }; nix.enable =false; From a2f127639e5fbc5b574ff2e7f3ad0981bb599436 Mon Sep 17 00:00:00 2001 From: lulusillyyy Date: Sun, 2 Aug 2026 09:54:04 -0400 Subject: [PATCH 2/2] OBS cask causing issues on MacOS 26 so I'm just uninstalling it since (1) I don't even use it, and (2) I need my stuff to be functional for now. --- flake.nix | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/flake.nix b/flake.nix index 8870e3d..9d66a83 100644 --- a/flake.nix +++ b/flake.nix @@ -31,6 +31,8 @@ neovim # Text editor of choice htop # Resource manager iina # Media player + # raycast # AI chat/Application launcher/Automation tool + # kanata # Keyboard remapping tool ]; homebrew = { @@ -51,14 +53,13 @@ "font-monocraft-nerd-font" "obsidian" "raycast" - "leader-key" "foobar2000" "android-platform-tools" "zen" - "obs" "krita" "sioyek" "shortcat" + "leader-key" ]; }; @@ -68,7 +69,7 @@ finder.AppleShowAllExtensions = true; NSGlobalDomain.AppleShowAllFiles = true; # finder.AppleShowAllFiles - NSGlobalDomain.AppleShowScrollBars = "WhenScrolling" + NSGlobalDomain.AppleShowScrollBars = "WhenScrolling"; }; nix.enable =false;