jellfin and blutooth added

This commit is contained in:
2024-12-30 13:48:38 -08:00
parent 3c2f85ccb0
commit fedd346d54
5 changed files with 517 additions and 1 deletions

View File

@@ -138,9 +138,11 @@
vesktop
kdePackages.kdeconnect-kde
kdePackages.partitionmanager
kdePackages.bluedevil
fprintd
unzip
oh-my-zsh
jellyfin-media-player
];
fonts.packages = with pkgs; [

View File

@@ -13,7 +13,6 @@
programs = {
fastfetch.enable = true;
neovim.enable = true;
fzf.enable = true;
bat.enable = true;
btop.enable = true;

View File

@@ -5,6 +5,7 @@
./cli-tools.nix
./fastfetch.nix
./direnv.nix
./neovim-nvim
];
# Home Manager needs a bit of information about you and the paths it should

View File

@@ -0,0 +1,73 @@
{ config, pkgs, ...}:
let
link = config.lib.file.mkOutOfStoreSymlink;
ccryptor-nvim = pkgs.vimUtils.buildVimPlugin {
name = "ccryptor.nvim";
src = pkgs.fetchFromGitHub {
owner = "kurotych";
repo = "ccryptor.nvim";
rev = "4b2cd7fbf54eb8385d023b7411be4a46ab0eded8";
hash = "sha256-CUjM8cr+SbgSd+NFbHysxogbq0QPJ/pXdSGo4p5AuHo=";
};
};
telescope-ag = pkgs.vimUtils.buildVimPlugin {
name = "telescope-ag";
src = pkgs.fetchFromGitHub {
owner = "kelly-lin";
repo = "telescope-ag";
rev = "7d25064da3c7689461bcfa89ad1f08548415193d";
hash = "sha256-xOgiiTElHLgx7Gwp6aR0Ipfanq6ZTTgiQv9Zs3LTb1g=";
};
};
in
{
programs.ripgrep.enable = true;
programs.fd.enable = true; # find replacement; depends on ripgrep and for telescope
programs.fzf.enable = true;
programs.neovim = {
enable = true;
viAlias = true;
vimAlias = true;
vimdiffAlias = true;
plugins = with pkgs.vimPlugins; [
#gruvbox # theme
tokyonight-nvim
vim-nix # nix language
vim-lsp # lsp
telescope-nvim # fuzzy finder
telescope-fzf-native-nvim
# copilot-vim # copilot, no more copilot, bad ai go google 240809
oil-nvim # OIL file manager, view link for help https://github.com/stevearc/oil.nvim?tab=readme-ov-file
lazygit-nvim # git support
markdown-preview-nvim # markdown preview ... seems to be ok but can't use unless running X11 server
# tmux navigator, depends on tmux plugin in config
vim-tmux-navigator
vim-commentary # comment out lines
vim-windowswap ## <leader>ww to swap windows
git-blame-nvim # git blame
limelight-vim # used for highlighting the current line
leap-nvim # fast, two char nav
# adding a gitlinker that lets me grab URLS
gitlinker-nvim
fzf-lua
# DIY Plugins
# telescope-ag
ccryptor-nvim
# conflict marker vim
conflict-marker-vim
toggleterm-nvim
];
};
home.file.".config/nvim/init.lua" = {
enable = true;
source = link ./nvim.lua;
};
}

View File

@@ -0,0 +1,441 @@
local function get_current_user()
local user = os.getenv("USER") or os.getenv("USERNAME")
return user or "Unknown"
end
local current_user = get_current_user()
require("ccryptor").setup({
dir_path = '/home/' .. current_user .. '/gitprojects/personal/personal_notes/journal/',
})
--------------------------------------------------------------------------------
-- oil setup
require("oil").setup({
cleanup_delay_ms = 1000,
view_options = {
show_hidden = true
}
})
vim.keymap.set("n", "-", "<CMD>Oil --float<CR>", { desc = "Open parent directory" })
--------------------------------------------------------------------------------
-- glow setup: https://github.com/ellisonleao/glow.nvim?tab=readme-ov-file#setup
--require('glow').setup({
-- width = 80,
-- height = 100,
-- width_ratio = 1, -- maximum width of the Glow window compared to the nvim window size (overrides `width`)
-- height_ratio = 1,
--})
--------------------------------------------------------------------------------
-- TELESCOPE FUNCTIONS
-- part of the config
-- Set your fixed file path here
local actions = require('telescope.actions')
local action_state = require('telescope.actions.state')
-- Set your fixed file path here
local fixed_path = "~/gitprojects/personal/"
function recent_files()
require('telescope.builtin').find_files({
prompt_title = "Recent Files",
cwd = fixed_path,
find_command = { "sh", "-c", "find " .. fixed_path .. " -type f -not -path '*/\\.git/*' -printf '%T@ %p\n' | sort -n -r | cut -d' ' -f2-" },
})
end
local custom_actions = {}
custom_actions.insert_path = function(prompt_bufnr)
local entry = action_state.get_selected_entry()
actions.close(prompt_bufnr)
vim.api.nvim_put({ entry.value }, '', false, true)
end
-- telescope config
require('telescope').setup({
defaults = {
scroll_strategy = 'limit',
layout_strategy = 'vertical',
layout_config = {
mirror = true,
prompt_position = 'bottom',
preview_height = 0.65,
width = 0.75,
height = 0.95,
},
mappings = {
i = {
-- Map Ctrl-i to insert_path in insert mode
["<M-i>"] = custom_actions.insert_path
},
n = {
-- Map i to insert_path in normal mode
["<M-i>"] = custom_actions.insert_path
},
},
}
})
require('telescope').load_extension('fzf')
------------------------------------------------------------------------------
-- fzf-vim config
local actions = require "fzf-lua.actions"
require'fzf-lua'.setup {
winopts = {
height = 0.95,
preview = {
layout = 'vertical',
},
},
}
------------------------------------------------------------------------------
-- leap
require('leap').create_default_mappings()
------------------------------------------------------------------------------
-- vim keybindings below
vim.cmd [[
set splitbelow
set splitright
let mapleader = "\<Space>"
colorscheme gruvbox
set noswapfile
" turning mouse off so that I can click in and it won't move my cursor
set mouse=
" set clipboard=unnamedplus
set number relativenumber
set scrolloff=5
set nowrap
nnoremap <Leader>z :set wrap!<CR>
" toggle side numbers
nnoremap <Leader>n :call ToggleSidenums()<CR>
function! ToggleSidenums()
if &relativenumber
set norelativenumber
else
set relativenumber " number " used to use number when I was hiding these
endif
endfunction
" toggle listchars
nnoremap <Leader>N :call ToggleListchars()<CR>
function! ToggleListchars()
if &list
set listchars= nolist
else
set list listchars=tab:>␣,trail:~,extends:>,precedes:<,space:·
endif
endfunction
" rebind J and K to be { and } for jumping whitespace
vnoremap J }
vnoremap K {
nnoremap J }
nnoremap K {
" copy , pasting is handling by going to insert and hitting "ctrl + shift + v"
vnoremap c "*y
vnoremap <Leader>c "*y
nnoremap <Leader>c "*y
vnoremap y "*y
" pasting just in case
vnoremap <Leader>v "*p
nnoremap <Leader>v "*p
" cutting
vnoremap <Leader>x "*d
nnoremap <Leader>x "*d
" saving file
nnoremap <Leader>w :wa<CR>
nnoremap <Leader>s :wa<CR>
" closing
nnoremap <Leader>C :close<CR>
nnoremap <Leader>q :wq<CR>
nnoremap <Leader>Q :q!<CR>
" copilot
let g:copilot_filetypes = {
\ '*': v:true,
\ }
" tabs and buffers
" tab switching using ctrl + tab
nnoremap <Leader>k :tabprevious<CR>
nnoremap <Leader>j :tabnext<CR>
" tab with just hold
nnoremap <M-<> :tabprevious<CR>
nnoremap <>->> :tabnext<CR>
" vim-windowswap
let g:windowswap_map_keys = 0
nnoremap <silent> <leader>WW :call WindowSwap#EasyWindowSwap()<CR>
" vim markdown renderer
" let g:vim_markdown_folding_disabled = 1
" let g:vim_markdown_toc_autofit = 1
" let g:vim_markdown_follow_anchor = 1
" let g:vim_markdown_no_extensions_in_markdown = 1
" let g:vim_markdown_strikethrough = 1
" let g:vim_markdown_autowrite = 1
" markdown-renderer
" use a custom port to start server or empty for random
let g:mkdp_open_to_the_world = 1
let g:mkdp_port = '3010'
let g:mkdp_open_ip = $MARKDOWN_IP
let g:mkdp_echo_preview_url = 1
let g:mkdp_browser = 'none'
nnoremap <Leader>m :MarkdownPreviewToggle<CR>
nnoremap <Leader>, :tabprevious<CR>
nnoremap <Leader>. :tabnext<CR>
" rebind :bprev and :bnext
nnoremap <Leader>J :bprev<CR>
nnoremap <Leader>K :bnext<CR>
" copilot remap autocomplete to ctrl + l when in insert mode
imap <silent><script><expr> <C-l> copilot#Accept("\<CR>")
let g:copilot_no_tab_map = v:true
" Telescope searching
" clear the highlighting from search
nnoremap <Leader><Enter> :nohlsearch<CR> " telescope
" map <Leader>F to search for the current word under the cursor
nnoremap <Leader>W viw"0y<space>:Telescope grep_string<CR><Esc>
"nnoremap <Leader>F :Telescope grep_string<CR><Esc>
nnoremap <Leader>F :FzfLua grep_visual<CR>
nnoremap <Leader>f :Telescope live_grep<CR>
nnoremap <Leader>p :Telescope find_files<CR>
inoremap <M-i> <Esc>:Telescope find_files hidden=true<CR>
noremap <M-i> <Esc>:Telescope find_files hidden=true<CR>
nnoremap <Leader>o :Telescope oldfiles<CR><Esc>
nnoremap <Leader>C :Telescope current_buffer_fuzzy_find<CR>
" reload configuration
nnoremap <Leader>R :source ~/.config/nvim/init.lua<CR>
" Function to scroll approximately 1/3 of the page down
function! ScrollThirdDown()
let l:height = winheight(0)
let l:scroll_amount = l:height / 3
execute "normal! " . l:scroll_amount . "\<C-E>"
endfunction
" Function to scroll approximately 1/3 of the page up
function! ScrollThirdUp()
let l:height = winheight(0)
let l:scroll_amount = l:height / 3
execute "normal! " . l:scroll_amount . "\<C-Y>"
endfunction
" Map <C-D> to scroll down 1/3 of the page
nnoremap <C-D> :call ScrollThirdDown()<CR>
" Map <C-U> to scroll up 1/3 of the page
nnoremap <C-U> :call ScrollThirdUp()<CR>
" lazygit
map <leader>G :LazyGit<CR>
" buffer switching like Vimium
nnoremap <Leader>b :Telescope buffers<CR><Esc>
"nnoremap T :Telescope buffers<CR>
nnoremap <Leader>T :Telescope buffers<CR>
nnoremap <Leader>t :Telescope buffers<CR>
" toggle term key bind | toggleterm
"nnoremap <Leader>t :ToggleTerm<CR>i
" binding to open terminal in current dir
" Set a mapping for Normal, Insert, and Terminal mode
nnoremap <C-\> :ToggleTerm dir=%:p:h<CR>i
inoremap <C-\> <Esc>:ToggleTerm dir=%:p:h<CR>i
tnoremap <C-\> <C-\><C-n>:ToggleTerm dir=%:p:h<CR>i
" set a keybind to insert todo list items
inoremap <C-t> - [ ]<Space>
" Insert the text in normal mode when pressing Ctrl + t
nnoremap <C-t> i- [ ] <Esc>a
set ignorecase
set smartcase
" set incsearch, this should remain off
set noincsearch
tnoremap <Esc> <C-\><C-n>
" On pressing tab, insert 2 spaces
set expandtab
" show existing tab with 2 spaces width
set tabstop=2
set softtabstop=2
"when indenting with '>', use 2 spaces width
set shiftwidth=2
" expirimental tmux navigator
let g:tmux_navigator_no_mappings = 1
" let g:tmux_navigator_no_wrap = 1
nnoremap <C-h> <C-w>h
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-l> <C-w>l
noremap <silent> <C-h> :<C-U>TmuxNavigateLeft<cr>
noremap <silent> <C-j> :<C-U>TmuxNavigateDown<cr>
noremap <silent> <C-k> :<C-U>TmuxNavigateUp<cr>
noremap <silent> <C-l> :<C-U>TmuxNavigateRight<cr>
noremap <silent> <C-/> :<C-U>TmuxNavigatePrevious<cr>
" mapping with meta
nnoremap <M-Left> <C-w>h
nnoremap <M-Down> <C-w>j
nnoremap <M-Up> <C-w>k
nnoremap <M-Right> <C-w>l
noremap <silent> <M-Left> :<C-U>TmuxNavigateLeft<cr>
noremap <silent> <M-Down> :<C-U>TmuxNavigateDown<cr>
noremap <silent> <M-Up> :<C-U>TmuxNavigateUp<cr>
noremap <silent> <M-Right> :<C-U>TmuxNavigateRight<cr>
" limelight colorscheme help https://github.com/junegunn/limelight.vim?tab=readme-ov-file#options
" Color name (:help cterm-colors) or ANSI code
let g:limelight_conceal_ctermfg = 'gray'
let g:limelight_conceal_ctermfg = 240
" Function to toggle Limelight
function! ToggleLimelight()
if exists("g:limelight_active") && g:limelight_active
Limelight!
let g:limelight_active = 0
else
Limelight
let g:limelight_active = 1
endif
endfunction
" Map <Leader>L to toggle Limelight
nnoremap <Leader>L :call ToggleLimelight()<CR>
" also for goyo
" let g:goyo_height='80%'
" let g:goyo_width='80%'
" bind ctrl + shift + d to insert (date +'%y%m%d - %H:%M %p')
" nnoremap <C-D> i<C-R>=strftime("%y%m%d")<CR>
" do the same but from insert mode
inoremap <C-D> <C-R>=strftime("%y%m%d")<CR>
nnoremap <Leader>U :lcd %:p:h<CR>
]]
--------------------------------------------------------------------------------
-- these keybinds need to come after the vim bindinds otherwise they don't load until reloading the configuration
vim.api.nvim_set_keymap('n', '<leader>h', ':lua recent_files()<CR>', { noremap = true, silent = true })
require"gitlinker".setup({
opts ={
add_current_line_on_normal_mode = false,
action_callback = require"gitlinker.actions".copy_to_clipboard,
print_url = true,
},
callbacks = {
["github.com"] = require"gitlinker.hosts".get_github_type_url,
["gitlab.com"] = require"gitlinker.hosts".get_gitlab_type_url,
["gitlab.pololu.work"] = require"gitlinker.hosts".get_gitlab_type_url,
[".pololu.work"] = require"gitlinker.hosts".get_gitlab_type_url,
},
mappings = "<leader>gy"
})
--------------------------------------------------------------------------------
local Terminal = require('toggleterm.terminal').Terminal
-- Define the on_close function
local function on_terminal_close(term)
-- Send the 'exit' command to the terminal
term:send("exit\n")
end
require("toggleterm").setup({
-- open_mapping = [[<c-\>]],
direction = 'float',
autochdir = false,
--on_close = on_terminal_close, -- run the on_close function when the terminal closes
start_in_insert = false,
})
--------------------------------------------------------------------------------
-- TODO FOR NEOVIM | NVIM TODO
-- todo for neovim | neovim todo
--
--
--
-- vim-markdown
-- table of contents on demmand for a markdown file
-- add something to fold lines
-- make vim highlight the links like https:// etc in markdown docs
--
-- make a way to get my home-manager/vim config onto servers easily without cloning the whole repo
--
-- look for a vim extension for doing media wiki text and see if I can get better closing tags?
-- also make something to hold and then go to the next tab, like ctrl + ta make something to quickly open the new tab
-- mayeb like alt + > or < ?
--
-- find something to insert the name of a file in the current buffer: (oh for linking files to each other)
-- but I want to search for something in telescope or smething like that
-- or maybe just a way to copy the file name to the clipboard:
-- SOLUTION-: Almost what you're asking for, and it might do: in INSERT mode, Ctrl+R % pulls the current filename into where you are (command prompt, edit buffer, ...). See this Vim Tip for more.
--
--
--
-- VIM centered focus mode?
-- also make a keybinding or keymap for my dz60 that's going to allow me to use jk or kj to chord escape
--
-- show the most recently edited files in a dir
--
-- find another markdown renderer or something for easy viewing, maybe something in the broswer would be best?
-- make something for turning on copilot (leave it off by default) i'm thinking <leader>A
--
--
-- add a keybinding for git for vim that copies the git url to the system clipboard?
-- make a plugin that lets me first highlight some text block and then fuzzy search for things inside of just that highligted block
--
-- redo the keybind for ctrld to just be the date and then ctrlD to be the date + day like "240719 Friday"