nvim + home-manager

This commit is contained in:
2023-06-02 17:01:19 -04:00
commit 174c45fbd1
18 changed files with 784 additions and 0 deletions

122
home-manager/home-fish.nix Normal file
View File

@@ -0,0 +1,122 @@
pkgs:
{
enable = true;
shellAliases = {
nsh = "nix-shell --command fish";
};
# interactiveShellInit = ''
# function fish_prompt
# set -l last_status $status
# if not set -q __fish_git_prompt_show_informative_status
# set -g __fish_git_prompt_show_informative_status 1
# end
# if not set -q __fish_git_prompt_hide_untrackedfiles
# set -g __fish_git_prompt_hide_untrackedfiles 1
# end
#
# if not set -q __fish_git_prompt_color_branch
# set -g __fish_git_prompt_color_branch magenta --bold
# end
# if not set -q __fish_git_prompt_showupstream
# set -g __fish_git_prompt_showupstream "informative"
# end
# if not set -q __fish_git_prompt_char_upstream_ahead
# set -g __fish_git_prompt_char_upstream_ahead "↑"
# end
# if not set -q __fish_git_prompt_char_upstream_behind
# set -g __fish_git_prompt_char_upstream_behind "↓"
# end
# if not set -q __fish_git_prompt_char_upstream_prefix
# set -g __fish_git_prompt_char_upstream_prefix ""
# end
#
# if not set -q __fish_git_prompt_char_stagedstate
# set -g __fish_git_prompt_char_stagedstate "●"
# end
# if not set -q __fish_git_prompt_char_dirtystate
# set -g __fish_git_prompt_char_dirtystate "✚"
# end
# if not set -q __fish_git_prompt_char_untrackedfiles
# set -g __fish_git_prompt_char_untrackedfiles "…"
# end
# if not set -q __fish_git_prompt_char_invalidstate
# set -g __fish_git_prompt_char_invalidstate "✖"
# end
# if not set -q __fish_git_prompt_char_cleanstate
# set -g __fish_git_prompt_char_cleanstate "✔"
# end
#
# if not set -q __fish_git_prompt_color_dirtystate
# set -g __fish_git_prompt_color_dirtystate blue
# end
# if not set -q __fish_git_prompt_color_stagedstate
# set -g __fish_git_prompt_color_stagedstate yellow
# end
# if not set -q __fish_git_prompt_color_invalidstate
# set -g __fish_git_prompt_color_invalidstate red
# end
# if not set -q __fish_git_prompt_color_untrackedfiles
# set -g __fish_git_prompt_color_untrackedfiles $fish_color_normal
# end
# if not set -q __fish_git_prompt_color_cleanstate
# set -g __fish_git_prompt_color_cleanstate green --bold
# end
#
# if not set -q __fish_prompt_normal
# set -g __fish_prompt_normal (set_color normal)
# end
#
# set -l color_cwd
# set -l prefix
# set -l suffix
# switch "$USER"
# case root toor
# if set -q fish_color_cwd_root
# set color_cwd $fish_color_cwd_root
# else
# set color_cwd $fish_color_cwd
# end
# set suffix '#'
# case '*'
# set color_cwd $fish_color_cwd
# set suffix '$'
# end
#
# # PWD
# set_color $color_cwd
# echo -n (prompt_pwd)
# set_color normal
#
# printf '%s ' (fish_git_prompt)
#
# if not test $last_status -eq 0
# set_color $fish_color_error
# echo -n "[$last_status] "
# set_color normal
# end
#
# echo -n "$suffix "
# end
# '';
plugins = [
{
name = "nix-env";
src = pkgs.fetchFromGitHub {
owner = "lilyball";
repo = "nix-env.fish";
rev = "7b65bd228429e852c8fdfa07601159130a818cfa";
sha256 = "RG/0rfhgq6aEKNZ0XwIqOaZ6K5S4+/Y5EEMnIdtfPhk=";
};
}
{
name = "fzf";
src = pkgs.fetchFromGitHub {
owner = "PatrickF1";
repo = "fzf.fish";
rev = "63c8f8e65761295da51029c5b6c9e601571837a1";
sha256 = "036n50zr9kyg6ad408zn7wq2vpfwhmnfwab465km4dk60ywmrlcb";
};
}
];
}

View File

@@ -0,0 +1,62 @@
pkgs:
{
enable = true;
viAlias = true;
extraConfig = ''
set et
set nofixeol
set number
set ts=2
set sts=-1
set sw=2
'';
plugins = with pkgs.vimPlugins; [
vim-gitgutter
{
plugin = nvim-lspconfig;
type = "lua";
config = ''
-- Mappings.
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
local opts = { noremap=true, silent=true }
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
-- Enable completion triggered by <c-x><c-o>
vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local bufopts = { noremap=true, silent=true, buffer=bufnr }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, bufopts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<space>ca', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
vim.keymap.set('n', '<space>f', vim.lsp.buf.formatting, bufopts)
end
require('lspconfig')['hls'].setup{
on_attach = on_attach,
}
require('lspconfig')['rust_analyzer'].setup{
on_attach = on_attach,
}
'';
}
];
}

View File

@@ -0,0 +1,20 @@
{
enable = true;
settings = {
add_newline = false;
git_branch.symbol = " ";
git_status.ahead = "\${count}";
git_status.behind = "\${count}";
git_status.diverged = "\${ahead_count}\${behind_count}";
git_status.format = "([\\[\$conflicted\$staged\$ahead_behind\\]](\$style) )";
java.symbol = " ";
line_break.disabled = true;
nix_shell.symbol = " ";
nodejs.symbol = " ";
package.disabled = true;
python.symbol = " ";
package.symbol = " ";
rust.symbol = " ";
shell.disabled = false;
};
}

View File

@@ -0,0 +1,14 @@
{
baseIndex = 1;
clock24 = true;
enable = true;
escapeTime = 0;
keyMode = "vi";
mouse = true;
shortcut = "Space";
extraConfig = ''
bind-key -T copy-mode-vi 'v' send -X begin-selection
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
set -g status off
'';
}

70
home-manager/home.nix Normal file
View File

@@ -0,0 +1,70 @@
{ config, pkgs, ... }:
{
# Home Manager needs a bit of information about you and the
# paths it should manage.
home.username = "jfrikker";
home.homeDirectory = "/Users/jfrikker";
home.packages = [
# pkgs.apacheKafka
pkgs.aws-iam-authenticator
pkgs.awscli
pkgs.bat
pkgs.emacs
pkgs.fd
# pkgs.ghc
# pkgs.go
# pkgs.haskellPackages.cabal-install
# pkgs.haskellPackages.haskell-language-server
# pkgs.inconsolata-nerdfont
pkgs.jdt-language-server
pkgs.jsonnet
pkgs.kubectl
pkgs.maven
pkgs.mysql-client
pkgs.neovide
pkgs.neovim
pkgs.nodejs-16_x
pkgs.nodePackages.typescript-language-server
pkgs.postgresql
pkgs.ripgrep
# pkgs.rlwrap
pkgs.rust-analyzer
pkgs.rustup
# pkgs.sbcl
pkgs.source-code-pro
pkgs.xonsh
pkgs.yarn
# pkgs.zellij
];
# This value determines the Home Manager release that your
# configuration is compatible with. This helps avoid breakage
# when a new Home Manager release introduces backwards
# incompatible changes.
#
# You can update Home Manager without changing this value. See
# the Home Manager release notes for a list of state version
# changes in each release.
home.stateVersion = "22.05";
# Let Home Manager install and manage itself.
programs.home-manager.enable = true;
programs.bash.enable = true;
programs.bottom.enable = true;
programs.fish = import ./home-fish.nix pkgs;
programs.fzf.enable = true;
programs.git.enable = true;
programs.java.enable = true;
programs.java.package = pkgs.jdk17;
programs.jq.enable = true;
programs.k9s.enable = true;
programs.lazygit.enable = true;
programs.starship = import ./home-starship.nix;
programs.tmux = import ./home-tmux.nix;
# programs.neovim = import ./home-neovim.nix pkgs;
}