Created
April 29, 2019 07:50
-
-
Save jonringer/1bda79a4da94c5749400a7e93f751555 to your computer and use it in GitHub Desktop.
Home.nix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ config, pkgs, ... }: | |
{ | |
# Let Home Manager install and manage itself. | |
programs.home-manager.enable = true; | |
home.packages = with pkgs; [ | |
exa | |
fd | |
cabal-install | |
jetbrains.pycharm-community | |
jetbrains.rider | |
ghc | |
openal | |
python37 | |
spotify | |
stack | |
vlc | |
# vim plugin dependencies | |
fzf | |
ripgrep | |
#haskell dependencies | |
hie-nix.hie86 # may want to disable, takes very long to compile | |
haskellPackages.hlint | |
]; | |
programs.direnv.enable = true; | |
programs.htop.enable = true; | |
programs.jq.enable = true; | |
programs.ssh.enable = true; | |
programs.fzf.enable = true; | |
programs.vscode = { | |
enable = true; | |
haskell.enable = true; | |
haskell.hie.enable = true; | |
extensions = with pkgs.vscode-extensions; [ | |
vscodevim.vim | |
]; | |
}; | |
programs.git = { | |
enable = true; | |
userName = "Jonathan Ringer"; | |
userEmail = "[email protected]"; | |
}; | |
programs.bash = { | |
enable = true; | |
shellAliases = { | |
sudo="sudo "; # will now check for alias expansion after sudo | |
ls="exa "; | |
ll="exa -l --color=always"; | |
la="exa -a --color=always"; | |
lla="exa -al --color=always"; | |
".."="cd .."; | |
"..."="cd ../.."; | |
"...."="cd ../../.."; | |
".2"="cd ../.."; | |
".3"="cd ../../.."; | |
".4"="cd ../../../.."; | |
".5"="cd ../../../../.."; | |
# git | |
g="git"; | |
gco="git checkout"; | |
gst="git status"; | |
# misc | |
suspend="systemctl suspend"; | |
}; | |
initExtra = '' | |
RED="\033[0;31m" | |
GREEN="\033[0;32m" | |
NO_COLOR="\033[m" | |
BLUE="\033[0;34m" | |
export PS1="$RED[\t] $GREEN\u@\h $NO_COLOR\w$BLUE`__git_ps1`$NO_COLOR\n$ " | |
editline() { vim ''${1%%:*} +''${1##*:}; } | |
cd() { builtin cd "$@" && ls . ; } | |
# Change dir with Fuzzy finding | |
cf() { | |
dir=$(fd . ''${1:-/home/jon/} --type d 2>/dev/null | fzf) | |
cd "$dir" | |
} | |
# Change dir in Nix store | |
cn() { | |
dir=$(fd . '/nix/store/' --maxdepth 1 --type d 2>/dev/null | fzf) | |
cd "$dir" | |
} | |
# search Files and Edit | |
fe() { | |
rg --files ''${1:-.} | fzf --preview 'cat {}' | xargs vim | |
} | |
# Search content and Edit | |
se() { | |
fileline=$(rg -n ''${1:-.} | fzf | awk '{print $1}' | sed 's/.$//') | |
vim ''${fileline%%:*} +''${fileline##*:} | |
} | |
''; | |
}; | |
programs.neovim = { | |
enable = true; | |
viAlias = true; | |
vimAlias = true; | |
configure = { | |
packages.myVimPackage = with pkgs.vimPlugins; { | |
start = [ | |
fzf-vim | |
fzfWrapper | |
gitgutter | |
LanguageClient-neovim | |
lightline-vim | |
nerdtree | |
supertab | |
syntastic | |
tabular | |
vim-better-whitespace | |
vim-multiple-cursors | |
vimproc | |
vimproc-vim | |
# themes | |
wombat256 | |
# language packages | |
# Haskell | |
vim-hoogle | |
neco-ghc | |
haskell-vim | |
hlint-refactor-vim | |
ghc-mod-vim | |
# Nix | |
vim-nix | |
]; | |
}; | |
customRC = '' | |
colorscheme wombat256mod | |
set number | |
set expandtab | |
set foldmethod=indent | |
set foldnestmax=5 | |
set foldlevelstart=99 | |
set foldcolumn=0 | |
set list | |
set listchars=tab:>- | |
let g:better_whitespace_enabled=1 | |
let g:strip_whitespace_on_save=1 | |
let mapleader=' ' | |
let g:SuperTabDefaultCompletionType = '<c-x><c-o>' | |
if has("gui_running") | |
imap <c-space> <c-r>=SuperTabAlternateCompletion("\<lt>c-x>\<lt>c-o>")<cr> | |
else " no gui | |
if has("unix") | |
inoremap <Nul> <c-r>=SuperTabAlternateCompletion("\<lt>c-x>\<lt>c-o>")<cr> | |
endif | |
endif | |
let g:haskellmode_completion_ghc = 0 | |
autocmd FileType haskell setlocal omnifunc=necoghc#omnifunc | |
" Tabular bindings | |
let g:haskell_tabular = 1 | |
vmap <leader>a= :Tabularize /=<CR> | |
vmap <leader>a; :Tabularize /::<CR> | |
vmap <leader>a- :Tabularize /-><CR> | |
" fzf bindings | |
nnoremap <leader>r :Rg<CR> | |
nnoremap <leader>b :Buffers<CR> | |
nnoremap <leader>e :Files<CR> | |
nnoremap <leader>l :Lines<CR> | |
nnoremap <leader>L :BLines<CR> | |
nnoremap <leader>c :Commits<CR> | |
nnoremap <leader>C :BCommits<CR> | |
''; | |
}; | |
}; | |
xdg.enable = true; | |
xsession = { | |
enable = true; | |
windowManager.i3 = rec { | |
enable = true; | |
config = { | |
modifier = "Mod4"; | |
bars = [ | |
{ statusCommand = "${pkgs.i3status}/bin/i3status"; } | |
]; | |
keybindings = let mod = config.modifier; in { | |
"${mod}+w" = "exec firefox"; | |
"${mod}+s" = "exec steam"; | |
"${mod}+Return" = "exec terminology"; | |
"${mod}+c" = "kill"; | |
"${mod}+Shift+h" = "exec dm-tool switch-to-greeter"; | |
"${mod}+Shift+grave" = "move scratchpad"; | |
"${mod}+grave" = "scratchpad show"; | |
"${mod}+j" = "focus left"; | |
"${mod}+k" = "focus down"; | |
"${mod}+l" = "focus up"; | |
"${mod}+semicolon" = "focus right"; | |
"${mod}+Left" = "focus left"; | |
"${mod}+Down" = "focus down"; | |
"${mod}+Up" = "focus up"; | |
"${mod}+Right" = "focus right"; | |
"${mod}+Shift+j" = "move left"; | |
"${mod}+Shift+k" = "move down"; | |
"${mod}+Shift+l" = "move up"; | |
"${mod}+Shift+semicolon" = "move right"; | |
"${mod}+Shift+Left" = "move left"; | |
"${mod}+Shift+Down" = "move down"; | |
"${mod}+Shift+Up" = "move up"; | |
"${mod}+Shift+Right" = "move right"; | |
"${mod}+h" = "split h"; | |
"${mod}+v" = "split v"; | |
"${mod}+f" = "fullscreen"; | |
"${mod}+Shift+s" = "layout stacking"; | |
"${mod}+Shift+t" = "layout tabbed"; | |
"${mod}+Shift+f" = "floating toggle"; | |
"${mod}+space" = "focus mode_toggle"; | |
"${mod}+1" = "workspace 1"; | |
"${mod}+2" = "workspace 2"; | |
"${mod}+3" = "workspace 3"; | |
"${mod}+4" = "workspace 4"; | |
"${mod}+5" = "workspace 5"; | |
"${mod}+6" = "workspace 6"; | |
"${mod}+7" = "workspace 7"; | |
"${mod}+8" = "workspace 8"; | |
"${mod}+9" = "workspace 9"; | |
"${mod}+0" = "workspace 10"; | |
"${mod}+Shift+1" = "move container to workspace 1"; | |
"${mod}+Shift+2" = "move container to workspace 2"; | |
"${mod}+Shift+3" = "move container to workspace 3"; | |
"${mod}+Shift+4" = "move container to workspace 4"; | |
"${mod}+Shift+5" = "move container to workspace 5"; | |
"${mod}+Shift+6" = "move container to workspace 6"; | |
"${mod}+Shift+7" = "move container to workspace 7"; | |
"${mod}+Shift+8" = "move container to workspace 8"; | |
"${mod}+Shift+9" = "move container to workspace 9"; | |
"${mod}+Shift+0" = "move container to workspace 10"; | |
"${mod}+Shift+r" = "restart"; | |
"${mod}+Shift+e" = "exec \"i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'\""; | |
}; | |
}; | |
extraConfig = '' | |
for_window [class="^.*"] border none | |
''; | |
}; | |
}; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment