pull out configuration into separate files

This commit is contained in:
Haak Saxberg 2021-08-20 21:15:34 -07:00
parent 926e39a5fc
commit 1141392278
6 changed files with 240 additions and 241 deletions

View file

@ -13,6 +13,7 @@
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.systemd-boot.configurationLimit = 42;
boot.loader.efi.canTouchEfiVariables = true;
hardware.bluetooth.enable = true;
@ -51,17 +52,21 @@
# $ nix search wget
environment.systemPackages = with pkgs; [
cachix
calibre
firefox
inkscape
p7zip
plasma-browser-integration
slack
vim
vlc
wget
xclip
zathura
zsh
];
nixpkgs.config.allowUnfree = true;
nixpkgs.config.firefox.enablePlasmaBrowserIntegration = true;
fonts.fonts = with pkgs; [ fira-code ];
@ -71,10 +76,12 @@
allowedTCPPorts = [
631 # CUPs port for printing
6881 # port for torrenting
8010 # port for VLC to chromecast
];
allowedUDPPorts = [
631
6881
8010
];
};
# Or disable the firewall altogether.

View file

@ -6,6 +6,7 @@
environment.systemPackages =
[
pkgs.firefox
skhd
];
# Use a custom configuration.nix location.

40
nix/direnv/direnvrc Normal file
View file

@ -0,0 +1,40 @@
layout_postgres() {
export PGDATA="$(direnv_layout_dir)/tmp/pgdata"
export PGHOST="$PGDATA"
if [[ ! -d "$PGDATA" ]]; then
initdb --locale=$LANG
cat <<EOF >>"$PGDATA/postgresql.conf"
listen_addresses = 'localhost'
unix_socket_directories = '$PGHOST'
EOF
echo "CREATE DATABASE $USER;" | postgres --single -E postgres
fi
}
layout_go() {
export GOPATH="$(direnv_layout_dir)/tmp/golibs"
if [[ ! -d "$GOPATH" ]]; then
mkdir -p $GOPATH
fi
export PATH="$GOPATH/bin:$PATH"
}
layout_mysql() {
export MYSQL_HOME="$(direnv_layout_dir)/mysql"
export MYSQLDATA="$MYSQL_HOME/data"
if [[ ! -d "$MYSQLDATA" ]]; then
mkdir -p $MYSQL_HOME
cat <<EOF >>"$MYSQL_HOME/my.cnf"
[mysqld]
table_open_cache=400
socket=/tmp/mysql.sock
max_allowed_packet=256M
datadir=$MYSQLDATA
[client]
socket=/tmp/mysql.sock
EOF
mysqld --initialize-insecure
fi
}

View file

@ -13,7 +13,7 @@ let
sha256 = "06gh3v35bdr0qsp459183br4hpmwm36d2r9fjyx9j5jfpzggqg51";
};
cargoSha256 = "17lr4pc2fjcgvx0p4vpkwx3mg9jadb4lygbwri0blmnkqql8xlh3";
cargoSha256 = "0f0a88pv4myavdrznz68f5jfc82y8whrdwcyp1q8i6nrn606csi7";
nativeBuildInputs = [ pkgs.pkgconfig ];
buildInputs = [ pkgs.openssl ] ++ (if pkgs.stdenv.isDarwin then [ pkgs.libiconv pkgs.darwin.apple_sdk.frameworks.Security ] else []);
};
@ -62,58 +62,11 @@ in {
zsh-autosuggestions
zsh-history-substring-search
zsh-syntax-highlighting
] ++ (if pkgs.stdenv.isDarwin then [
skhd # keyboard shortcut daemon for macOS
] else [
calibre
slack
vlc
]);
];
programs.direnv = {
enable = true;
stdlib = ''
layout_postgres() {
export PGDATA="$(direnv_layout_dir)/tmp/pgdata"
export PGHOST="$PGDATA"
if [[ ! -d "$PGDATA" ]]; then
initdb --locale=$LANG
cat <<EOF >>"$PGDATA/postgresql.conf"
listen_addresses = 'localhost'
unix_socket_directories = '$PGHOST'
EOF
echo "CREATE DATABASE $USER;" | postgres --single -E postgres
fi
}
layout_go() {
export GOPATH="$(direnv_layout_dir)/tmp/golibs"
if [[ ! -d "$GOPATH" ]]; then
mkdir -p $GOPATH
fi
export PATH="$GOPATH/bin:$PATH"
}
layout_mysql() {
export MYSQL_HOME="$(direnv_layout_dir)/mysql"
export MYSQLDATA="$MYSQL_HOME/data"
if [[ ! -d "$MYSQLDATA" ]]; then
mkdir -p $MYSQL_HOME
cat <<EOF >>"$MYSQL_HOME/my.cnf"
[mysqld]
table_open_cache=400
socket=/tmp/mysql.sock
max_allowed_packet=256M
datadir=$MYSQLDATA
[client]
socket=/tmp/mysql.sock
EOF
mysqld --initialize-insecure
fi
}
'';
stdlib = readFile ./direnv/direnvrc;
};
programs.git = {
@ -138,40 +91,7 @@ in {
enableCompletion = true;
defaultKeymap = "viins";
initExtra = mkForce (''
export LOCALE_ARCHIVE="/usr/lib/locale/locale-archive"
export NIX_PATH=darwin-config=$HOME/.nixpkgs/darwin-configuration.nix:$HOME/.nix-defexpr/channels:$NIX_PATH
export EDITOR=vim
source $HOME/.nix-profile/etc/profile.d/nix.sh
source $HOME/.nix-profile/share/fzf/key-bindings.zsh
source $HOME/.nix-profile/share/fzf/completion.zsh
source $HOME/.nix-profile/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $HOME/.nix-profile/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source $HOME/.config/zsh/local.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
bindkey -M viins 'jj' vi-cmd-mode
# utility for storing functions under a new name
save_function() {
local ORIG_FUNC=$(declare -f $1)
local NEWNAME_FUNC="$2''${ORIG_FUNC#$1}"
eval "$NEWNAME_FUNC"
}
# Override an oh-my-zsh/lib/git.sh function so that old repositories
# don't slow the shell down
save_function git_prompt_status old_git_prompt_status
function git_prompt_status() {
if [[ "$(command git config --get oh-my-zsh.hide-prompt-status 2>/dev/null)" != "1" ]]; then
old_git_prompt_status
fi
}
eval "$(direnv hook zsh)"
'');
initExtra = readFile ./zsh/zshrc;
oh-my-zsh = {
enable = true;
@ -245,163 +165,7 @@ in {
vim-goyo
];
extraConfig = ''
filetype plugin indent on
" vimtex
let g:tex_flavor = 'latex'
" ALE
let g:ale_fix_on_save = 1
let g:ale_elixir_credo_strict = 1
let g:ale_fixers = {
\ 'elm': ['elm-format', 'format'],
\ 'javascript': ['prettier'],
\ 'javascript.jsx': ['prettier'],
\ 'javascriptreact': ['prettier'],
\ 'typescriptreact': ['prettier'],
\ 'typescript': ['prettier'],
\ 'ruby': ['sorbet'],
\ 'rust': ['rustfmt'],
\ 'elixir': ['mix_format']
\}
let g:ale_linters_ignore = {
\ 'javascript': ['tsserver'],
\ 'javascriptreact': ['tsserver'],
\}
" Easymotion
map / <Plug>(easymotion-sn)
omap / <Plug>(easymotion-tn)
map n <Plug>(easymotion-next)
map N <Plug>(easymotion-prev)
let g:EasyMotion_landing_highlight = 0
" Rainbow parentheses
let g:rainbow_conf = {
\ 'guifgs': ['RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3'],
\ 'ctermfgs': ['red', 'brown', 'blue', 'gray', 'green', 'magenta', 'cyan', 'darkred', 'brown', 'darkblue', 'gray', 'darkgreen', 'darkmagenta', 'darkcyan', 'red'],
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold']
\}
let g:rainbow_active = 1
" Vim-Test
nmap <silent> <leader>t :TestNearest<CR>
nmap <silent> <leader>T :TestFile<CR>
nmap <silent> <leader>a :TestSuite<CR>
nmap <silent> <leader>l :TestLast<CR>
nmap <silent> <leader>g :TestVisit<CR>
let test#strategy = "neovim"
" Deoplete
let g:deoplete#enable_at_startup = 1
" LanguageClient-neovim
let g:LanguageClient_serverCommands = {
\ 'elm': ['elm-language-server'],
\ 'rust': ['rustup', 'run', 'stable', 'rls'],
\ 'ruby': ['bundle', 'exec', 'srb', 'tc', '--lsp', '.'],
\ }
let g:LanguageClient_rootMarkers = {
\ 'elm': ['elm.json'],
\ 'typescriptreact': ['tsconfig.json'],
\ 'ruby': ['Gemfile'],
\ }
let g:LanguageClient_loggingFile = expand('~/.local/share/nvim/LanguageClient.log')
nnoremap <leader>t :call LanguageClient_textDocument_hover()<CR>
nnoremap <leader>y :call LanguageClient_textDocument_definition()<CR>
" Indent guides
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_start_level = 2
" let netrw look like NERDTree
let g:netrw_liststyle = 3
let mapleader=","
set nobackup
set noswapfile
set pastetoggle=<F2>
set nowrap
set background=dark
colorscheme PaperColor
set nocompatible
set number relativenumber
set numberwidth=1
set cursorline
set cursorcolumn
set ruler
set list
set listchars=tab:>-,trail:-,extends:>,precedes:<,nbsp:+,eol:$
set matchpairs+=<:>
set ts=2
set shiftwidth=2
set expandtab
" Open new split panes to right and bottom, which feels more natural
set splitbelow
set splitright
""" Searching and Patterns
set ignorecase
set smartcase
set smarttab
set hlsearch
" Add the g flag to search/replace by default
set gdefault
"recalculate the trailing whitespace warning when idle, and after saving
autocmd cursorhold,bufwritepost * unlet! b:statusline_trailing_space_warning
" strip trailing whitespace
autocmd BufWritePre * :%s/\s\+$//e
""" Handy remaps
noremap ; :
inoremap jj <Esc>
map <silent> <leader>V :source ~/.config/nvim/init.vim<CR>:filetype detect<CR>:exe ":echo 'vimrc reloaded'"<CR>
map \q :q<CR>
map \w :w<CR>
noremap Q <nop>
""" Esperanto digraphs (for use with ctrl-k)
:digraph Cx 264
:digraph cx 265
:digraph Gx 284
:digraph gx 285
:digraph Hx 292
:digraph hx 293
:digraph Jx 308
:digraph jx 309
:digraph Sx 348
:digraph sx 349
:digraph Ux 364
:digraph ux 365
""" Terminal mode remaps
tnoremap <Esc> <C-\><C-n>
nnoremap <leader>o :below 10sp term://$SHELL<cr>i
" Quicker window movement
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l
" Dont reset cursor to start of line when moving around.
set nostartofline
" minimal number of lines to keep above/below cursorline
set scrolloff=10
" Local overrides?
if filereadable($HOME . "/.vimrc.local")
source ~/.vimrc.local
endif
'';
extraConfig = readFile ./vim/init.vim;
};
programs.tmux = {

155
nix/vim/init.vim Normal file
View file

@ -0,0 +1,155 @@
filetype plugin indent on
let g:tex_flavor = 'latex'
" Deoplete
let g:deoplete#enable_at_startup = 1
" LanguageClient-neovim
let g:LanguageClient_serverCommands = {
\ 'elm': ['elm-language-server'],
\ 'rust': ['rustup', 'run', 'stable', 'rls'],
\ 'ruby': ['bundle', 'exec', 'srb', 'tc', '--lsp', '.'],
\ }
let g:LanguageClient_rootMarkers = {
\ 'elm': ['elm.json'],
\ 'typescriptreact': ['tsconfig.json'],
\ 'ruby': ['Gemfile'],
\ }
let g:LanguageClient_loggingFile = expand('~/.local/share/nvim/LanguageClient.log')
" ALE
let g:ale_fix_on_save = 1
let g:ale_elixir_credo_strict = 1
let g:ale_fixers = {
\ 'elm': ['elm-format', 'format'],
\ 'javascript': ['prettier'],
\ 'javascript.jsx': ['prettier'],
\ 'javascriptreact': ['prettier'],
\ 'typescriptreact': ['prettier'],
\ 'typescript': ['prettier'],
\ 'ruby': ['sorbet'],
\ 'rust': ['rustfmt'],
\ 'elixir': ['mix_format']
\}
let g:ale_linters_ignore = {
\ 'javascript': ['tsserver'],
\ 'javascriptreact': ['tsserver'],
\}
" Rainbow parentheses
let g:rainbow_conf = {
\ 'guifgs': ['RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'DarkOrchid3', 'firebrick3', 'RoyalBlue3', 'SeaGreen3', 'DarkOrchid3', 'firebrick3'],
\ 'ctermfgs': ['red', 'brown', 'blue', 'gray', 'green', 'magenta', 'cyan', 'darkred', 'brown', 'darkblue', 'gray', 'darkgreen', 'darkmagenta', 'darkcyan', 'red'],
\ 'parentheses': ['start=/(/ end=/)/ fold', 'start=/\[/ end=/\]/ fold', 'start=/{/ end=/}/ fold']
\}
let g:rainbow_active = 1
" Easymotion
map / <Plug>(easymotion-sn)
omap / <Plug>(easymotion-tn)
map n <Plug>(easymotion-next)
map N <Plug>(easymotion-prev)
let g:EasyMotion_landing_highlight = 0
" Vim-Test
nmap <silent> <leader>t :TestNearest<CR>
nmap <silent> <leader>T :TestFile<CR>
nmap <silent> <leader>a :TestSuite<CR>
nmap <silent> <leader>l :TestLast<CR>
nmap <silent> <leader>g :TestVisit<CR>
let test#strategy = "neovim"
nnoremap <leader>t :call LanguageClient_textDocument_hover()<CR>
nnoremap <leader>y :call LanguageClient_textDocument_definition()<CR>
" Indent guides
let g:indent_guides_enable_on_vim_startup = 1
let g:indent_guides_start_level = 2
" let netrw look like NERDTree
let g:netrw_liststyle = 3
let mapleader=","
set nobackup
set noswapfile
set pastetoggle=<F2>
set nowrap
set background=dark
colorscheme PaperColor
set nocompatible
set number relativenumber
set numberwidth=1
set cursorline
set cursorcolumn
set ruler
set list
set listchars=tab:>-,trail:-,extends:>,precedes:<,nbsp:+,eol:$
set matchpairs+=<:>
set ts=2
set shiftwidth=2
set expandtab
" Open new split panes to right and bottom, which feels more natural
set splitbelow
set splitright
""" Searching and Patterns
set ignorecase
set smartcase
set smarttab
set hlsearch
" Add the g flag to search/replace by default
set gdefault
"recalculate the trailing whitespace warning when idle, and after saving
autocmd cursorhold,bufwritepost * unlet! b:statusline_trailing_space_warning
" strip trailing whitespace
autocmd BufWritePre * :%s/\s\+$//e
""" Handy remaps
noremap ; :
inoremap jj <Esc>
map <silent> <leader>V :source ~/.config/nvim/init.vim<CR>:filetype detect<CR>:exe ":echo 'vimrc reloaded'"<CR>
map \q :q<CR>
map \w :w<CR>
noremap Q <nop>
""" Esperanto digraphs (for use with ctrl-k)
:digraph Cx 264
:digraph cx 265
:digraph Gx 284
:digraph gx 285
:digraph Hx 292
:digraph hx 293
:digraph Jx 308
:digraph jx 309
:digraph Sx 348
:digraph sx 349
:digraph Ux 364
:digraph ux 365
""" Terminal mode remaps
tnoremap <Esc> <C-\><C-n>
nnoremap <leader>o :below 10sp term://$SHELL<cr>i
" Quicker window movement
nnoremap <C-j> <C-w>j
nnoremap <C-k> <C-w>k
nnoremap <C-h> <C-w>h
nnoremap <C-l> <C-w>l
" Dont reset cursor to start of line when moving around.
set nostartofline
" minimal number of lines to keep above/below cursorline
set scrolloff=10
" Local overrides?
if filereadable($HOME . "/.vimrc.local")
source ~/.vimrc.local
endif

32
nix/zsh/zshrc Normal file
View file

@ -0,0 +1,32 @@
export LOCALE_ARCHIVE="/usr/lib/locale/locale-archive"
export NIX_PATH=darwin-config=$HOME/.nixpkgs/darwin-configuration.nix:$HOME/.nix-defexpr/channels:$NIX_PATH
export EDITOR=vim
source $HOME/.nix-profile/etc/profile.d/nix.sh
source $HOME/.nix-profile/share/fzf/key-bindings.zsh
source $HOME/.nix-profile/share/fzf/completion.zsh
source $HOME/.nix-profile/share/zsh-autosuggestions/zsh-autosuggestions.zsh
source $HOME/.nix-profile/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
source $HOME/.config/zsh/local.zsh
bindkey '^[[A' history-substring-search-up
bindkey '^[[B' history-substring-search-down
bindkey -M viins 'jj' vi-cmd-mode
# utility for storing functions under a new name
save_function() {
local ORIG_FUNC=$(declare -f $1)
local NEWNAME_FUNC="$2''${ORIG_FUNC#$1}"
eval "$NEWNAME_FUNC"
}
# Override an oh-my-zsh/lib/git.sh function so that old repositories
# don't slow the shell down
save_function git_prompt_status old_git_prompt_status
function git_prompt_status() {
if [[ "$(command git config --get oh-my-zsh.hide-prompt-status 2>/dev/null)" != "1" ]]; then
old_git_prompt_status
fi
}
eval "$(direnv hook zsh)"