Files
nix-config/.config/nixpkgs/home.nix
2020-06-28 23:57:41 -04:00

285 lines
6.8 KiB
Nix

{ config, pkgs, ... }:
{
programs.home-manager.enable = true;
home = {
username = "dgallant";
homeDirectory = "/home/dgallant";
stateVersion = "20.09";
sessionVariables = {
EDITOR = "vim";
LOCALE = "en_US.UTF8";
LOCALES_ARCHIVE = [ "${pkgs.glibcLocales}/lib/locale/locale-archive" ];
};
packages = with pkgs; [
awscli2
bandwhich
bat
chromium
direnv
exa
fd
firefox-devedition-bin
fzf
gimp
glibcLocales
golint
google-cloud-sdk
gradle
groovy
hadolint
htop
jdk
jetbrains.idea-community
jq
maven
nixpkgs-fmt
nmap
openvpn
pavucontrol
postman
python38
pinentry-curses
ripgrep
rustup
shellcheck
shfmt
signal-desktop
slack
spotify
ssm-session-manager-plugin
stalonetray
terraform
tflint
tmux
tree
unzip
vlc
youtube-dl
zathura
zip
zsh-fast-syntax-highlighting
# python packages
python38Packages.ipython
rfd
rtv
# python dev
black
# fonts
dejavu_fonts
fira
fira-code-symbols
fira-mono
font-awesome
helvetica-neue-lt-std
];
};
services = {
gpg-agent = {
enable = true;
defaultCacheTtl = 3600;
defaultCacheTtlSsh = 3600;
enableSshSupport = true;
extraConfig = ''
pinentry-program ${pkgs.pinentry-curses}/bin/pinentry
'';
};
};
fonts.fontconfig.enable = true;
programs = {
zsh = {
enable = true;
enableAutosuggestions = true;
history.size = 1000000;
localVariables = {
ZSH_AUTOSUGGEST_HIGHLIGHT_STYLE = "fg=#838383,underline";
};
initExtra = ''
export GOPATH=$HOME/go
export GPG_TTY=$(tty)
export PATH=$PATH:~/.local/bin
export PATH=$PATH:~/go/bin
export PATH=$PATH:~/.cargo/bin
eval "$(direnv hook zsh)"
eval "$(_RFD_COMPLETE=source_zsh rfd)"
eval "$(starship init zsh)"
'';
shellAliases = {
ls = "exa -la --git";
".." = "cd ..";
config = "/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME";
grep = "grep --color=auto --line-buffered";
};
"oh-my-zsh" = {
enable = true;
plugins = [
"fzf"
"git"
"last-working-dir"
];
};
plugins = [
{
name = "fast-syntax-highlighting";
src = "${pkgs.zsh-fast-syntax-highlighting}/share/zsh/site-functions";
}
];
};
neovim = {
enable = true;
viAlias = true;
vimAlias = true;
extraConfig = ''
call plug#begin('~/.vim/plugged')
Plug 'LnL7/vim-nix'
Plug 'ap/vim-css-color'
Plug 'fatih/vim-go'
Plug 'hashivim/vim-terraform'
Plug 'itchyny/lightline.vim'
Plug 'junegunn/fzf'
Plug 'junegunn/fzf.vim'
Plug 'neoclide/coc.nvim', {'branch': 'release'}
Plug 'rust-lang/rust.vim'
Plug 'scrooloose/nerdtree'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-surround'
Plug 'vifm/vifm.vim'
Plug 'vim-syntastic/syntastic'
Plug 'yuki-ycino/fzf-preview.vim'
call plug#end()
set autoread
set cursorline
set encoding=utf-8
set expandtab
set foldlevel=99
set foldmethod=indent
set hlsearch
set ignorecase
set incsearch
set laststatus=2
set modelines=0
set mouse=a
set nocompatible
set noswapfile
set number
set pastetoggle=<F3>
set ruler
set shiftwidth=2
set showcmd
set showmode
set smartcase
set t_Co=256
set tabstop=2
set wildmenu
" Search down into subfolders
" Provides tab-completion for all file-related tasks
set path+=**
filetype plugin indent on
" Enable folding with the spacebar
nnoremap <space> za
" replace visually selected
vnoremap <C-r> "hy:%s/<C-r>h//g<left><left>
" Custom Commands
command JsonFormat execute "::%!jq '.'"
" Shortcuts
map <Leader>r :Rg<CR>
map <Leader>g :Rg<CR>
map <Leader>f :FzfPreviewDirectoryFiles<CR>
map <Leader>n :NERDTree<CR>
noremap <Leader>y "*y
noremap <Leader>p "*p
noremap <Leader>Y "+y
noremap <Leader>P "+p
" Python indentation
au BufNewFile,BufRead *.py set tabstop=4 softtabstop=4 shiftwidth=4 textwidth=79 expandtab autoindent fileformat=unix
let python_highlight_all=1
syntax on
colorscheme xoria256
" Transparency
hi Normal guibg=NONE ctermbg=NONE
" highlight red lines
highlight ExtraWhitespace ctermbg=red guibg=red
match ExtraWhitespace /\s\+$/
" groovy syntax
au BufNewFile,BufRead *.groovy set tabstop=2 shiftwidth=2 expandtab
au BufNewFile,BufRead Jenkinsfile setf groovy
au BufNewFile,BufRead Jenkinsfile set tabstop=2 shiftwidth=2 expandtab
" vim-go
let g:go_auto_sameids = 0
let g:go_fmt_command = "goimports"
let g:go_fmt_experimental = 1
let g:go_highlight_array_whitespace_error = 1
let g:go_highlight_build_constraints = 1
let g:go_highlight_chan_whitespace_error = 1
let g:go_highlight_extra_types = 1
let g:go_highlight_fields = 1
let g:go_highlight_format_strings = 1
let g:go_highlight_function_calls = 1
let g:go_highlight_function_parameters = 1
let g:go_highlight_functions = 1
let g:go_highlight_generate_tags = 1
let g:go_highlight_operators = 1
let g:go_highlight_space_tab_error = 1
let g:go_highlight_string_spellcheck = 1
let g:go_highlight_trailing_whitespace_error = 0
let g:go_highlight_types = 1
let g:go_highlight_variable_assignments = 1
let g:go_highlight_variable_declarations = 1
let g:go_metalinter_autosave=1
let g:go_metalinter_autosave_enabled=['golint', 'govet']
let g:go_rename_command = 'gopls'
" vim-terraform
let g:terraform_align=1
let g:terraform_fmt_on_save=1
let g:terraform_fold_sections=1
" rust.vim
let g:rustfmt_autosave = 1
" syntastic
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
'';
};
};
}