nvim + home-manager
This commit is contained in:
122
home-manager/home-fish.nix
Normal file
122
home-manager/home-fish.nix
Normal 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";
|
||||
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
62
home-manager/home-neovim.nix
Normal file
62
home-manager/home-neovim.nix
Normal 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,
|
||||
}
|
||||
'';
|
||||
}
|
||||
];
|
||||
}
|
||||
20
home-manager/home-starship.nix
Normal file
20
home-manager/home-starship.nix
Normal 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;
|
||||
};
|
||||
}
|
||||
14
home-manager/home-tmux.nix
Normal file
14
home-manager/home-tmux.nix
Normal 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
70
home-manager/home.nix
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user