2016-12-11 12:49:11 +01:00
|
|
|
{ config, lib, pkgs, ... }:
|
2016-12-10 12:57:09 +01:00
|
|
|
{
|
2016-12-14 15:07:27 +01:00
|
|
|
system.defaults.NSGlobalDomain.AppleKeyboardUIMode = 3;
|
|
|
|
system.defaults.NSGlobalDomain.ApplePressAndHoldEnabled = false;
|
2016-12-14 13:10:52 +01:00
|
|
|
system.defaults.NSGlobalDomain.InitialKeyRepeat = 10;
|
|
|
|
system.defaults.NSGlobalDomain.KeyRepeat = 1;
|
2017-09-06 22:40:04 +02:00
|
|
|
system.defaults.NSGlobalDomain.NSAutomaticCapitalizationEnabled = false;
|
2016-12-14 15:07:27 +01:00
|
|
|
system.defaults.NSGlobalDomain.NSAutomaticDashSubstitutionEnabled = false;
|
2017-09-06 22:40:04 +02:00
|
|
|
system.defaults.NSGlobalDomain.NSAutomaticPeriodSubstitutionEnabled = false;
|
2016-12-14 15:07:27 +01:00
|
|
|
system.defaults.NSGlobalDomain.NSAutomaticQuoteSubstitutionEnabled = false;
|
|
|
|
system.defaults.NSGlobalDomain.NSAutomaticSpellingCorrectionEnabled = false;
|
|
|
|
system.defaults.NSGlobalDomain.NSNavPanelExpandedStateForSaveMode = true;
|
|
|
|
system.defaults.NSGlobalDomain.NSNavPanelExpandedStateForSaveMode2 = true;
|
2016-12-11 12:49:11 +01:00
|
|
|
|
2016-12-14 16:22:39 +01:00
|
|
|
system.defaults.dock.autohide = true;
|
|
|
|
system.defaults.dock.orientation = "left";
|
|
|
|
system.defaults.dock.showhidden = true;
|
|
|
|
system.defaults.dock.mru-spaces = false;
|
|
|
|
|
2016-12-14 16:30:55 +01:00
|
|
|
system.defaults.finder.AppleShowAllExtensions = true;
|
|
|
|
system.defaults.finder.QuitMenuItem = true;
|
|
|
|
system.defaults.finder.FXEnableExtensionChangeWarning = false;
|
|
|
|
|
2016-12-14 16:38:59 +01:00
|
|
|
system.defaults.trackpad.Clicking = true;
|
2017-10-20 23:04:42 +02:00
|
|
|
system.defaults.trackpad.TrackpadThreeFingerDrag = true;
|
2016-12-14 16:38:59 +01:00
|
|
|
|
2018-01-10 19:46:51 +01:00
|
|
|
system.keyboard.enableKeyMapping = true;
|
|
|
|
system.keyboard.remapCapsLockToControl = true;
|
|
|
|
|
2016-12-16 15:51:36 +01:00
|
|
|
environment.systemPackages =
|
2018-01-18 20:22:12 +01:00
|
|
|
[ pkgs.brotli
|
|
|
|
pkgs.ctags
|
2018-01-01 23:55:56 +01:00
|
|
|
pkgs.curl
|
2018-07-08 11:25:23 +02:00
|
|
|
pkgs.direnv
|
2016-12-16 15:51:36 +01:00
|
|
|
pkgs.fzf
|
|
|
|
pkgs.gettext
|
|
|
|
pkgs.git
|
2018-01-18 20:22:12 +01:00
|
|
|
pkgs.gnupg
|
2017-03-17 08:26:45 +01:00
|
|
|
pkgs.htop
|
2016-12-16 15:51:36 +01:00
|
|
|
pkgs.jq
|
2016-12-26 23:34:09 +01:00
|
|
|
pkgs.mosh
|
2018-01-18 20:22:12 +01:00
|
|
|
pkgs.ripgrep
|
2017-07-26 08:42:39 +02:00
|
|
|
pkgs.shellcheck
|
2016-12-16 15:51:36 +01:00
|
|
|
pkgs.silver-searcher
|
|
|
|
|
2018-03-04 18:34:06 +01:00
|
|
|
pkgs.qes
|
2018-07-08 11:33:48 +02:00
|
|
|
|
2018-08-01 22:29:26 +02:00
|
|
|
pkgs.kitty
|
2018-07-08 11:33:48 +02:00
|
|
|
pkgs.lnl-zsh-completions
|
2018-08-01 22:29:26 +02:00
|
|
|
pkgs.lnl-git-statusbar
|
2016-12-16 15:51:36 +01:00
|
|
|
];
|
|
|
|
|
2017-01-25 22:36:33 +01:00
|
|
|
services.khd.enable = true;
|
2017-01-29 21:01:47 +01:00
|
|
|
services.kwm.enable = true;
|
2018-07-08 11:39:03 +02:00
|
|
|
services.skhd.enable = true;
|
2016-12-16 15:51:36 +01:00
|
|
|
|
2017-01-29 20:17:53 +01:00
|
|
|
launchd.user.agents.fetch-nixpkgs = {
|
2018-08-01 22:29:26 +02:00
|
|
|
command = "${pkgs.git}/bin/git -C /src/nixpkgs fetch origin master";
|
|
|
|
environment.SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt";
|
2017-01-29 20:17:53 +01:00
|
|
|
serviceConfig.KeepAlive = false;
|
|
|
|
serviceConfig.ProcessType = "Background";
|
2017-06-22 00:09:51 +02:00
|
|
|
serviceConfig.StartInterval = 360;
|
2017-01-29 20:17:53 +01:00
|
|
|
};
|
|
|
|
|
2017-11-28 22:03:51 +01:00
|
|
|
services.nix-daemon.enable = true;
|
2018-06-21 15:23:27 +02:00
|
|
|
services.nix-daemon.enableSocketListener = true;
|
2016-12-16 15:51:36 +01:00
|
|
|
|
2017-05-15 19:21:40 +02:00
|
|
|
nix.extraOptions = ''
|
|
|
|
gc-keep-derivations = true
|
|
|
|
gc-keep-outputs = true
|
|
|
|
'';
|
2017-01-22 13:38:30 +01:00
|
|
|
|
2017-01-12 21:59:13 +01:00
|
|
|
nix.binaryCachePublicKeys = [ "cache.daiderd.com-1:R8KOWZ8lDaLojqD+v9dzXAqGn29gEzPTTbr/GIpCTrI=" ];
|
2017-03-17 23:26:12 +01:00
|
|
|
nix.trustedBinaryCaches = [ https://d3i7ezr9vxxsfy.cloudfront.net ];
|
|
|
|
nix.trustedUsers = [ "@admin" ];
|
2017-11-28 22:03:51 +01:00
|
|
|
nix.useSandbox = true;
|
|
|
|
nix.package = pkgs.nixUnstable;
|
2017-01-12 21:59:13 +01:00
|
|
|
|
2017-08-14 21:47:18 +02:00
|
|
|
programs.nix-index.enable = true;
|
2016-12-27 20:41:27 +01:00
|
|
|
|
2016-12-12 23:38:53 +01:00
|
|
|
programs.tmux.enable = true;
|
2016-12-11 12:49:11 +01:00
|
|
|
programs.tmux.enableSensible = true;
|
|
|
|
programs.tmux.enableMouse = true;
|
|
|
|
programs.tmux.enableFzf = true;
|
|
|
|
programs.tmux.enableVim = true;
|
|
|
|
|
|
|
|
programs.tmux.tmuxConfig = ''
|
|
|
|
bind 0 set status
|
2017-10-27 12:31:59 +02:00
|
|
|
bind S choose-session
|
2016-12-11 12:49:11 +01:00
|
|
|
|
2017-06-22 00:10:47 +02:00
|
|
|
bind-key -r "<" swap-window -t -1
|
|
|
|
bind-key -r ">" swap-window -t +1
|
|
|
|
|
2018-08-01 22:14:25 +02:00
|
|
|
bind-key -n M-r run "tmux send-keys -t .+ C-l Up Enter"
|
|
|
|
bind-key -n M-R run "tmux send-keys -t $(hostname -s | awk -F'-' '{print tolower($NF)}') C-l Up Enter"
|
|
|
|
|
|
|
|
set -g pane-active-border-style fg=black
|
|
|
|
set -g pane-border-style fg=black
|
2016-12-11 12:49:11 +01:00
|
|
|
set -g status-bg black
|
|
|
|
set -g status-fg white
|
2018-08-01 22:14:25 +02:00
|
|
|
set -g status-right '#[fg=white]#(id -un)@#(hostname) #(cat /run/current-system/darwin-version)'
|
2016-12-11 12:49:11 +01:00
|
|
|
'';
|
|
|
|
|
2016-12-18 14:09:31 +01:00
|
|
|
programs.vim.enable = true;
|
2018-08-01 21:32:42 +02:00
|
|
|
# programs.vim.enableSensible = true;
|
2016-12-18 14:09:31 +01:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
programs.vim.plugins = [{
|
|
|
|
names = [
|
|
|
|
"sensible" "repeat" "surround"
|
|
|
|
"ReplaceWithRegister" "vim-indent-object" "vim-sort-motion"
|
|
|
|
"fzfWrapper" "fzf-vim" "youcompleteme" "ale" "vim-dispatch" "vim-test" "vim-projectionist" "vim-gitgutter"
|
|
|
|
"vim-abolish" "commentary" "vim-eunuch" "fugitive" "rhubarb" "tabular" "vim-tbone" "editorconfig-vim"
|
|
|
|
"gist-vim" "webapi-vim"
|
2016-12-18 14:09:31 +01:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
"colors-solarized" "polyglot" "vim-nix" "bats-vim" "vim-docbk"
|
|
|
|
|
|
|
|
"vim-scriptease"
|
|
|
|
# "vim-splice"
|
|
|
|
];
|
|
|
|
}];
|
2016-12-18 14:09:31 +01:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
programs.vim.vimConfig = ''
|
|
|
|
set encoding=utf-8
|
|
|
|
set hlsearch
|
|
|
|
set list
|
|
|
|
set number
|
2018-04-22 14:35:18 +02:00
|
|
|
|
|
|
|
set lazyredraw
|
|
|
|
set regexpengine=1
|
|
|
|
set ttyfast
|
|
|
|
|
2016-12-18 14:09:31 +01:00
|
|
|
set clipboard=unnamed
|
2018-03-03 14:18:57 +01:00
|
|
|
set mouse=a
|
2016-12-18 14:09:31 +01:00
|
|
|
|
2016-12-18 14:29:47 +01:00
|
|
|
set backup
|
|
|
|
set backupdir=~/.vim/tmp/backup//
|
|
|
|
set backupskip=/tmp/*,/private/tmp/*
|
|
|
|
set directory=~/.vim/tmp/swap/
|
|
|
|
set noswapfile
|
|
|
|
set undodir=~/.vim/tmp/undo//
|
|
|
|
set undofile
|
|
|
|
|
|
|
|
if !isdirectory(expand(&undodir))
|
|
|
|
call mkdir(expand(&undodir), "p")
|
|
|
|
endif
|
|
|
|
if !isdirectory(expand(&backupdir))
|
|
|
|
call mkdir(expand(&backupdir), "p")
|
|
|
|
endif
|
|
|
|
if !isdirectory(expand(&directory))
|
|
|
|
call mkdir(expand(&directory), "p")
|
|
|
|
endif
|
2017-01-29 20:17:53 +01:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
command! -bang -nargs=* Ag call fzf#vim#ag(<q-args>,
|
|
|
|
\ <bang>0 ? fzf#vim#with_preview('up:30%')
|
|
|
|
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
|
|
|
|
\ <bang>0)
|
|
|
|
|
|
|
|
command! -bang -nargs=* Rg call fzf#vim#grep(
|
|
|
|
\ 'rg --column --line-number --no-heading --color=always '.shellescape(<q-args>), 1,
|
|
|
|
\ <bang>0 ? fzf#vim#with_preview('up:30%')
|
|
|
|
\ : fzf#vim#with_preview('right:50%:hidden', '?'),
|
|
|
|
\ <bang>0)
|
|
|
|
|
2017-01-29 20:17:53 +01:00
|
|
|
vmap s S
|
|
|
|
|
2017-04-13 07:32:07 +02:00
|
|
|
inoremap <C-g> <Esc><CR>
|
|
|
|
vnoremap <C-g> <Esc><CR>
|
|
|
|
cnoremap <C-g> <Esc><CR>
|
|
|
|
|
2017-01-29 20:17:53 +01:00
|
|
|
cnoremap %% <C-r>=expand('%:h') . '/'<CR>
|
2018-08-02 21:02:08 +02:00
|
|
|
nnoremap // :nohlsearch<CR>
|
2017-01-29 20:17:53 +01:00
|
|
|
|
|
|
|
let mapleader = ' '
|
2017-07-26 08:42:39 +02:00
|
|
|
nnoremap <Leader>( :tabprevious<CR>
|
|
|
|
nnoremap <Leader>) :tabnext<CR>
|
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
" fzf
|
2017-01-29 20:17:53 +01:00
|
|
|
nnoremap <Leader>p :FZF<CR>
|
|
|
|
nnoremap <silent> <Leader>e :exe 'FZF ' . expand('%:h')<CR>
|
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
" vim-dispatch
|
|
|
|
nnoremap <silent> <Leader><CR> :Dispatch!<CR>
|
|
|
|
nnoremap <silent> <Leader>q :cclose<CR> :lclose<CR> :pclose<CR>
|
2017-10-25 13:50:44 +02:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
" vim-test
|
|
|
|
let test#strategy = 'dispatch'
|
|
|
|
nnoremap t<CR> :TestNearest<CR>
|
2017-04-13 07:32:07 +02:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
" ale
|
2017-07-02 18:08:10 +02:00
|
|
|
let g:is_bash=1
|
2017-07-26 08:42:39 +02:00
|
|
|
let g:ale_virtualenv_dir_names = ['venv']
|
2017-03-17 08:26:45 +01:00
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
" youcompleteme
|
|
|
|
set completeopt=menuone
|
2017-01-29 20:17:53 +01:00
|
|
|
let g:ycm_seed_identifiers_with_syntax = 1
|
2017-04-13 07:32:07 +02:00
|
|
|
let g:ycm_semantic_triggers = {}
|
|
|
|
|
2018-08-01 21:32:42 +02:00
|
|
|
nmap <Leader>d :YcmCompleter GoTo<CR>
|
|
|
|
|
|
|
|
" colors-solarized
|
|
|
|
let g:solarized_termcolors = 16
|
|
|
|
let g:solarized_termtrans = 1
|
2016-12-18 14:09:31 +01:00
|
|
|
'';
|
|
|
|
|
2016-12-12 22:00:48 +01:00
|
|
|
programs.zsh.enable = true;
|
2016-12-16 15:51:36 +01:00
|
|
|
programs.zsh.enableBashCompletion = true;
|
2017-02-21 22:52:08 +01:00
|
|
|
programs.zsh.enableFzfCompletion = true;
|
|
|
|
programs.zsh.enableFzfGit = true;
|
2017-01-30 23:04:29 +01:00
|
|
|
programs.zsh.enableFzfHistory = true;
|
2016-12-16 15:51:36 +01:00
|
|
|
|
2017-11-28 22:03:51 +01:00
|
|
|
programs.zsh.variables.cfg = "$HOME/.config/nixpkgs/darwin/configuration.nix";
|
2016-12-17 23:11:35 +01:00
|
|
|
programs.zsh.variables.darwin = "$HOME/.nix-defexpr/darwin";
|
2018-03-03 14:18:57 +01:00
|
|
|
programs.zsh.variables.nixpkgs = "$HOME/.nix-defexpr/nixpkgs";
|
2016-12-17 23:11:35 +01:00
|
|
|
|
|
|
|
|
2016-12-16 15:51:36 +01:00
|
|
|
programs.zsh.promptInit = ''
|
|
|
|
autoload -U promptinit && promptinit
|
|
|
|
|
2018-07-08 11:28:08 +02:00
|
|
|
setopt PROMPTSUBST
|
|
|
|
|
|
|
|
_prompt_nix() {
|
|
|
|
[ -z "$IN_NIX_SHELL" ] || echo "%F{yellow}%B[''${name:+$name}]%b%f "
|
|
|
|
}
|
|
|
|
|
|
|
|
PS1='%F{red}%B%(?..%? )%b%f%# '
|
|
|
|
RPS1='$(_prompt_nix)%F{green}%~%f'
|
2016-12-16 15:51:36 +01:00
|
|
|
'';
|
2016-12-12 22:00:48 +01:00
|
|
|
|
2016-12-12 23:01:07 +01:00
|
|
|
programs.zsh.loginShellInit = ''
|
2018-07-08 11:25:23 +02:00
|
|
|
:l() {
|
|
|
|
if [ ! -e .envrc ]; then
|
|
|
|
echo 'use nix' > .envrc
|
2018-08-01 21:13:38 +02:00
|
|
|
direnv edit .
|
2018-07-08 11:25:23 +02:00
|
|
|
fi
|
|
|
|
eval "$(direnv hook zsh)"
|
|
|
|
}
|
|
|
|
|
|
|
|
:r() {
|
2018-08-01 21:13:38 +02:00
|
|
|
if [ -z "$IN_NIX_SHELL" ]; then
|
|
|
|
eval "$(direnv hook zsh)"
|
|
|
|
else
|
|
|
|
direnv reload
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
:a() {
|
|
|
|
nix repl ''${@:-<nixpkgs>}
|
2018-07-08 11:25:23 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
xi() {
|
|
|
|
curl -F 'f:1=<-' ix.io
|
2018-06-06 23:18:06 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
install_name_tool() {
|
|
|
|
${pkgs.darwin.cctools}/bin/install_name_tool "$@"
|
2018-06-06 23:18:06 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
otool() {
|
|
|
|
${pkgs.darwin.cctools}/bin/otool "$@"
|
2018-06-06 23:18:06 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
aarch-build() {
|
|
|
|
nix-build --option system aarch64-linux --store ssh-ng://aarch1 "$@"
|
2018-06-06 23:18:06 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
arm-build() {
|
|
|
|
nix-build --option system armv7l-linux --store ssh-ng://arm1 "$@"
|
2018-06-06 23:18:06 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
darwin-build() {
|
|
|
|
nix-build --option system x86_64-darwin --store ssh-ng://mac1 "$@"
|
2018-06-06 23:18:06 +02:00
|
|
|
}
|
|
|
|
|
2018-07-08 11:30:46 +02:00
|
|
|
linux-build() {
|
|
|
|
nix-build --option system x86_64-linux --store ssh-ng://nixos1 "$@"
|
2017-06-04 19:22:06 +02:00
|
|
|
}
|
|
|
|
|
2018-06-07 01:18:48 +02:00
|
|
|
hydra-bad-machines() {
|
2018-06-07 20:55:16 +02:00
|
|
|
local url=https://hydra.nixos.org
|
|
|
|
curl -fsSL -H 'Accept: application/json' $url/queue-runner-status | jq -r '.machines | to_entries | .[] | select(.value.consecutiveFailures>0) | .key'
|
2018-06-07 01:18:48 +02:00
|
|
|
}
|
|
|
|
|
2017-10-03 00:24:01 +02:00
|
|
|
hydra-job-revision() {
|
2018-01-18 22:07:40 +01:00
|
|
|
local jobseteval job=$1
|
|
|
|
shift 1
|
|
|
|
case "$job" in
|
|
|
|
*'/'*) ;;
|
|
|
|
*) job="nixpkgs/trunk/$job" ;;
|
|
|
|
esac
|
|
|
|
case "$job" in
|
|
|
|
'http://'*|'https://'*) ;;
|
|
|
|
*) job="https://hydra.nixos.org/job/$job" ;;
|
|
|
|
esac
|
|
|
|
jobseteval=$(curl -fsSL -H 'Content-Type: application/json' "$job/latest" | jq '.jobsetevals[0]')
|
|
|
|
curl -fsSL -H 'Accept: application/json' "''${job%/job*}/eval/$jobseteval" | jq -r '.jobsetevalinputs.nixpkgs.revision'
|
|
|
|
}
|
|
|
|
|
|
|
|
hydra-job-bisect() {
|
|
|
|
local job=$1
|
|
|
|
shift 1
|
|
|
|
nix-build ./pkgs/top-level/release.nix -A "''${job##*/}" --dry-run "$@" || return
|
|
|
|
git bisect start HEAD "$(hydra-job-revision "$job")"
|
|
|
|
git bisect run nix-build ./pkgs/top-level/release.nix -A "''${job##*/}" "$@"
|
2017-10-03 00:24:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
hydra-job-outputs() {
|
2018-01-18 22:07:40 +01:00
|
|
|
local job=$1
|
|
|
|
shift 1
|
|
|
|
curl -fsSL -H 'Accept: application/json' "$job/latest" | jq -r '.buildoutputs | to_entries | .[].value.path'
|
2017-10-03 00:24:01 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
hydra-build-log() {
|
2018-01-18 22:07:40 +01:00
|
|
|
local build=$1
|
|
|
|
shift 1
|
|
|
|
nix log "$(curl -fsSL -H 'Accept: application/json' "$build/api/get-info" | jq -r .drvPath)"
|
2017-10-03 00:24:01 +02:00
|
|
|
}
|
|
|
|
|
2018-01-15 22:36:22 +01:00
|
|
|
rev-darwin() {
|
2018-01-18 22:07:40 +01:00
|
|
|
echo "https://github.com/LnL7/nix-darwin/archive/''${@:-master}.tar.gz"
|
2018-01-15 22:36:22 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
rev-nixpkgs() {
|
2018-01-18 22:07:40 +01:00
|
|
|
echo "https://github.com/NixOS/nixpkgs/archive/''${@:-master}.tar.gz"
|
2018-01-15 22:36:22 +01:00
|
|
|
}
|
|
|
|
|
2018-01-10 19:45:40 +01:00
|
|
|
pr-darwin() {
|
2018-01-18 22:07:40 +01:00
|
|
|
local pr=$1
|
|
|
|
shift 1
|
|
|
|
rev-darwin "$(curl "https://api.github.com/repos/LnL7/nix-darwin/pulls/$pr/commits" | jq -r '.[-1].sha')"
|
2018-01-10 19:45:40 +01:00
|
|
|
}
|
|
|
|
|
2017-10-14 17:10:38 +02:00
|
|
|
pr-nixpkgs() {
|
2018-01-18 22:07:40 +01:00
|
|
|
local pr=$1
|
|
|
|
shift 1
|
|
|
|
rev-nixpkgs "$(curl "https://api.github.com/repos/NixOS/nixpkgs/pulls/$pr/commits" | jq -r '.[-1].sha')"
|
2017-10-14 17:10:38 +02:00
|
|
|
}
|
|
|
|
|
2016-12-26 23:34:09 +01:00
|
|
|
reexec() {
|
2018-01-18 22:07:40 +01:00
|
|
|
unset __ETC_ZSHRC_SOURCED
|
|
|
|
unset __ETC_ZSHENV_SOURCED
|
|
|
|
unset __ETC_ZPROFILE_SOURCED
|
|
|
|
exec $SHELL -c 'echo >&2 "reexecuting shell: $SHELL" && exec $SHELL -l'
|
2016-12-11 12:49:11 +01:00
|
|
|
}
|
2017-07-02 18:08:10 +02:00
|
|
|
|
|
|
|
reexec-tmux() {
|
2018-01-18 22:07:40 +01:00
|
|
|
local host
|
|
|
|
unset __ETC_ZSHRC_SOURCED
|
|
|
|
unset __ETC_ZSHENV_SOURCED
|
|
|
|
unset __ETC_ZPROFILE_SOURCED
|
|
|
|
host=$(hostname -s | awk -F'-' '{print tolower($NF)}')
|
|
|
|
exec tmux new-session -A -s $host
|
2017-07-02 18:08:10 +02:00
|
|
|
}
|
2016-12-11 12:49:11 +01:00
|
|
|
'';
|
|
|
|
|
2016-12-12 23:01:07 +01:00
|
|
|
programs.zsh.interactiveShellInit = ''
|
2017-01-09 01:41:37 +01:00
|
|
|
setopt AUTOCD AUTOPUSHD
|
2017-01-29 21:26:23 +01:00
|
|
|
|
|
|
|
autoload -U down-line-or-beginning-search
|
|
|
|
autoload -U up-line-or-beginning-search
|
|
|
|
bindkey '^[[A' down-line-or-beginning-search
|
|
|
|
bindkey '^[[A' up-line-or-beginning-search
|
|
|
|
zle -N down-line-or-beginning-search
|
|
|
|
zle -N up-line-or-beginning-search
|
2016-12-11 12:49:11 +01:00
|
|
|
'';
|
2016-12-11 16:24:37 +01:00
|
|
|
|
2018-08-01 21:13:38 +02:00
|
|
|
environment.variables.CLICOLOR = "1";
|
2017-07-26 08:42:39 +02:00
|
|
|
environment.variables.FZF_DEFAULT_COMMAND = "ag -l -f -g ''";
|
2017-07-02 18:08:10 +02:00
|
|
|
environment.variables.SHELLCHECK_OPTS = "-e SC1008";
|
2018-06-06 23:18:06 +02:00
|
|
|
environment.variables.LANG = "en_US.UTF-8";
|
2016-12-12 23:01:07 +01:00
|
|
|
|
2017-01-04 20:41:52 +01:00
|
|
|
environment.shellAliases.g = "git log --pretty=color -32";
|
2017-10-20 23:04:42 +02:00
|
|
|
environment.shellAliases.gb = "git branch";
|
2017-04-13 07:32:07 +02:00
|
|
|
environment.shellAliases.gc = "git checkout";
|
|
|
|
environment.shellAliases.gcb = "git checkout -B";
|
|
|
|
environment.shellAliases.gd = "git diff --minimal --patch";
|
|
|
|
environment.shellAliases.gf = "git fetch";
|
2018-08-01 21:13:38 +02:00
|
|
|
environment.shellAliases.gg = "git log --pretty=color --graph";
|
|
|
|
environment.shellAliases.gl = "git log --pretty=nocolor";
|
2017-04-13 07:32:07 +02:00
|
|
|
environment.shellAliases.grh = "git reset --hard";
|
|
|
|
environment.shellAliases.l = "ls -lh";
|
2016-12-12 23:01:07 +01:00
|
|
|
|
2016-12-15 14:37:31 +01:00
|
|
|
nix.nixPath =
|
|
|
|
[ # Use local nixpkgs checkout instead of channels.
|
2018-01-12 21:57:34 +01:00
|
|
|
"darwin-config=$HOME/.config/nixpkgs/darwin/configuration.nix"
|
2016-12-15 14:37:31 +01:00
|
|
|
"darwin=$HOME/.nix-defexpr/darwin"
|
|
|
|
"nixpkgs=$HOME/.nix-defexpr/nixpkgs"
|
2017-09-06 23:37:34 +02:00
|
|
|
"$HOME/.nix-defexpr/channels"
|
2018-07-08 11:33:48 +02:00
|
|
|
"$HOME/.nix-defexpr"
|
2016-12-15 14:37:31 +01:00
|
|
|
];
|
|
|
|
|
2016-12-11 16:24:37 +01:00
|
|
|
nixpkgs.config.allowUnfree = true;
|
2017-08-14 21:47:18 +02:00
|
|
|
|
2018-07-08 11:33:48 +02:00
|
|
|
nixpkgs.overlays = [
|
|
|
|
(self: super: {
|
2018-08-01 22:29:26 +02:00
|
|
|
lnl-git-statusbar = super.writeScriptBin "git-statusbar" ''
|
|
|
|
#!${super.stdenv.shell}
|
|
|
|
set -e
|
|
|
|
export PATH=${lib.makeBinPath [super.coreutils super.gawk super.git]}
|
|
|
|
|
|
|
|
fork=$(git "$@" log --format=format:%h origin/master...lnl/master 2> /dev/null | awk 'END {print NR}')
|
|
|
|
head=$(git "$@" log --format=format:%h origin/master...HEAD 2> /dev/null | awk 'END {print NR}')
|
|
|
|
echo "[$head/$fork] $(git "$@" log --oneline -1 origin/master | head -1)"
|
|
|
|
git "$@" rev-parse origin/master
|
|
|
|
'';
|
|
|
|
|
2018-07-08 11:33:48 +02:00
|
|
|
lnl-zsh-completions = super.runCommandNoCC "lnl-zsh-completions-0.0.0"
|
|
|
|
{ preferLocalBuild = true; }
|
|
|
|
''
|
|
|
|
mkdir -p $out/share/zsh/site-functions
|
|
|
|
|
|
|
|
cat <<-'EOF' > $out/share/zsh/site-functions/_darwin-rebuild
|
|
|
|
#compdef darwin-rebuild
|
|
|
|
#autoload
|
|
|
|
|
|
|
|
_nix-common-options
|
|
|
|
|
|
|
|
local -a _1st_arguments
|
|
|
|
_1st_arguments=(
|
|
|
|
'switch:Build, activate, and update the current generation'\
|
|
|
|
'build:Build without activating or updating the current generation'\
|
|
|
|
'check:Build and run the activation sanity checks'\
|
|
|
|
'changelog:Show most recent entries in the changelog'\
|
|
|
|
)
|
|
|
|
|
|
|
|
_arguments \
|
|
|
|
'--list-generations[Print a list of all generations in the active profile]'\
|
|
|
|
'--rollback[Roll back to the previous configuration]'\
|
|
|
|
{--switch-generation,-G}'[Activate specified generation]'\
|
|
|
|
'(--profile-name -p)'{--profile-name,-p}'[Profile to use to track current and previous system configurations]:Profile:_nix_profiles'\
|
|
|
|
'1:: :->subcmds' && return 0
|
|
|
|
|
|
|
|
case $state in
|
|
|
|
subcmds)
|
|
|
|
_describe -t commands 'darwin-rebuild subcommands' _1st_arguments
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
EOF
|
|
|
|
'';
|
2017-01-04 20:41:52 +01:00
|
|
|
|
2018-08-01 21:13:38 +02:00
|
|
|
vim_configurable = super.vim_configurable.override {
|
|
|
|
ftNixSupport = false; # enable using a custom vim-nix
|
|
|
|
};
|
|
|
|
})
|
2017-01-06 21:40:07 +01:00
|
|
|
|
2018-08-01 21:13:38 +02:00
|
|
|
(self: super: {
|
|
|
|
# TODO: fix darwin build in nixpkgs.
|
|
|
|
kitty = super.runCommandNoCC "kitty" {} ''
|
|
|
|
mkdir -p $out/bin
|
|
|
|
ln -s /Applications/Kitty.app/Contents/MacOS/kitty $out/bin
|
|
|
|
'';
|
|
|
|
|
|
|
|
vimPlugins = super.vimPlugins or {} // {
|
|
|
|
};
|
|
|
|
})
|
|
|
|
];
|
2017-01-04 20:41:52 +01:00
|
|
|
|
2017-05-20 13:15:19 +02:00
|
|
|
services.khd.khdConfig = ''
|
2017-01-04 20:41:52 +01:00
|
|
|
# modifier only mappings
|
|
|
|
khd mod_trigger_timeout 0.2
|
2018-07-08 11:39:03 +02:00
|
|
|
lctrl : qes -k "escape"
|
|
|
|
lshift : qes -t "("
|
|
|
|
rshift : qes -t ")"
|
2017-01-04 20:41:52 +01:00
|
|
|
'';
|
|
|
|
|
2017-05-20 13:15:19 +02:00
|
|
|
services.kwm.kwmConfig = ''
|
2017-01-04 20:41:52 +01:00
|
|
|
kwmc config tiling bsp
|
|
|
|
kwmc config split-ratio 0.5
|
|
|
|
kwmc config spawn left
|
|
|
|
|
2018-07-08 11:39:03 +02:00
|
|
|
kwmc config padding 40 15 15 15
|
|
|
|
kwmc config gap 15 15
|
2017-01-05 20:20:54 +01:00
|
|
|
|
2018-08-02 21:02:08 +02:00
|
|
|
kwmc config space 0 3 padding 175 175 175 175
|
2018-07-08 11:39:03 +02:00
|
|
|
kwmc config display 1 padding 75 70 70 70
|
|
|
|
kwmc config display 2 padding 75 70 70 70
|
2017-01-04 20:41:52 +01:00
|
|
|
|
|
|
|
kwmc config space 0 1 name main
|
2017-06-22 00:11:31 +02:00
|
|
|
kwmc config space 0 2 mode monocle
|
2018-07-08 11:39:03 +02:00
|
|
|
kwmc config space 0 2 name rnd
|
|
|
|
kwmc config space 0 3 name dev
|
|
|
|
kwmc config space 1 1 name web
|
2017-06-22 00:11:31 +02:00
|
|
|
kwmc config space 2 1 name var
|
2017-01-04 20:41:52 +01:00
|
|
|
|
2017-01-05 20:20:54 +01:00
|
|
|
|
2017-02-14 23:48:27 +01:00
|
|
|
kwmc config focus-follows-mouse on
|
2017-01-04 20:41:52 +01:00
|
|
|
kwmc config mouse-follows-focus on
|
2018-07-08 11:39:03 +02:00
|
|
|
kwmc config standby-on-float on
|
|
|
|
kwmc config center-on-float on
|
2017-01-04 20:41:52 +01:00
|
|
|
kwmc config float-non-resizable on
|
2018-07-08 11:39:03 +02:00
|
|
|
kwmc config lock-to-container on
|
|
|
|
kwmc config cycle-focus on
|
|
|
|
kwmc config optimal-ratio 1.605
|
2017-01-04 20:41:52 +01:00
|
|
|
|
|
|
|
|
|
|
|
kwmc rule owner="Airmail" properties={float="true"}
|
|
|
|
kwmc rule owner="Apple Store" properties={float="true"}
|
2018-07-08 11:39:03 +02:00
|
|
|
kwmc rule owner="Finder" properties={role="AXDialog"}
|
|
|
|
kwmc rule owner="Finder" role="AXDialog" properties={float="true"}
|
2017-06-22 00:11:31 +02:00
|
|
|
kwmc rule owner="Info" properties={float="true"}
|
2017-01-04 20:41:52 +01:00
|
|
|
kwmc rule owner="System Preferences" properties={float="true"}
|
2017-04-13 07:32:07 +02:00
|
|
|
kwmc rule owner="iTerm2" properties={role="AXDialog"}
|
2017-01-04 20:41:52 +01:00
|
|
|
kwmc rule owner="iTunes" properties={float="true"}
|
|
|
|
'';
|
2017-10-20 23:04:42 +02:00
|
|
|
|
2018-07-08 11:39:03 +02:00
|
|
|
services.skhd.package = pkgs.skhd;
|
|
|
|
|
|
|
|
services.skhd.skhdConfig = ''
|
|
|
|
# focus window
|
|
|
|
alt - h : kwmc window -f west
|
|
|
|
alt - j : kwmc window -f south
|
|
|
|
alt - k : kwmc window -f north
|
|
|
|
alt - l : kwmc window -f east
|
|
|
|
|
|
|
|
# swap window
|
|
|
|
shift + alt - h : kwmc window -s west
|
|
|
|
shift + alt - j : kwmc window -s south
|
|
|
|
shift + alt - k : kwmc window -s north
|
|
|
|
shift + alt - l : kwmc window -s east
|
|
|
|
|
|
|
|
# move window
|
|
|
|
ctrl + alt - h : kwmc window -m west
|
|
|
|
ctrl + alt - j : kwmc window -m south
|
|
|
|
ctrl + alt - k : kwmc window -m north
|
|
|
|
ctrl + alt - l : kwmc window -m east
|
|
|
|
|
|
|
|
# send window to desktop
|
|
|
|
ctrl + alt - 0x12 : kwmc window -m space 1
|
|
|
|
ctrl + alt - 0x13 : kwmc window -m space 2
|
|
|
|
ctrl + alt - 0x14 : kwmc window -m space 3
|
|
|
|
|
|
|
|
# focus monitor
|
|
|
|
alt - 0x12 : kwmc display -f 0
|
|
|
|
alt - 0x13 : kwmc display -f 1
|
|
|
|
alt - 0x14 : kwmc display -f 2
|
|
|
|
|
|
|
|
# send window to monitor
|
|
|
|
shift + alt - 0x12 : kwmc window -m display 0
|
|
|
|
shift + alt - 0x13 : kwmc window -m display 1
|
|
|
|
shift + alt - 0x14 : kwmc window -m display 2
|
|
|
|
|
|
|
|
# toggle window fullscreen
|
|
|
|
shift + alt - f : kwmc window -z fullscreen
|
|
|
|
|
|
|
|
# toggle window parent zoom
|
|
|
|
shift + alt - d : kwmc window -z parent
|
|
|
|
|
|
|
|
# float / unfloat window and center on screen
|
|
|
|
shift + alt - w : kwmc window -t focused
|
|
|
|
|
|
|
|
# toggle sticky, float and resize to picture-in-picture size
|
|
|
|
# shift + alt - s : chunkc tiling::window --toggle sticky;\
|
|
|
|
# chunkc tiling::window --grid-layout 5:5:4:0:1:1
|
|
|
|
|
|
|
|
# rotate tree
|
|
|
|
ctrl + alt - r : kwmc tree rotate 90
|
|
|
|
|
|
|
|
# change layout of desktop
|
|
|
|
ctrl + alt - a : kwmc space -t bsp
|
|
|
|
ctrl + alt - s : kwmc space -t monocle
|
|
|
|
ctrl + alt - d : kwmc space -t float
|
|
|
|
|
2018-08-01 21:13:38 +02:00
|
|
|
ctrl + alt - return : kitty --single-instance -d ~
|
|
|
|
|
2018-07-08 11:39:03 +02:00
|
|
|
# quit/reload daemons
|
|
|
|
ctrl + alt - q : kwmc quit;\
|
|
|
|
khd -e "reload"
|
|
|
|
'';
|
|
|
|
|
2018-08-01 21:13:38 +02:00
|
|
|
# TODO: add module for per-user config, etc, ...
|
|
|
|
system.activationScripts.extraUserActivation.text = "ln -sfn /etc/per-user/lnl/gitconfig ~/.gitconfig";
|
|
|
|
|
|
|
|
environment.etc."per-user/lnl/gitconfig".text = ''
|
|
|
|
[include]
|
|
|
|
path = .gitconfig.local
|
|
|
|
|
|
|
|
[core]
|
|
|
|
excludesfile = ~/.gitignore
|
|
|
|
autocrlf = input
|
|
|
|
|
|
|
|
[color]
|
|
|
|
ui = auto
|
|
|
|
|
|
|
|
[pretty]
|
|
|
|
color = format:%C(yellow)%h%C(red)%d%Creset %s %C(green)%an, %ar%Creset
|
|
|
|
nocolor = format:%h%d %s %an, %ar
|
|
|
|
|
|
|
|
[rerere]
|
|
|
|
enabled = true
|
|
|
|
|
|
|
|
[user]
|
|
|
|
name = Daiderd Jordan
|
|
|
|
|
|
|
|
[github]
|
|
|
|
user = LnL7
|
|
|
|
'';
|
|
|
|
|
2017-10-20 23:04:42 +02:00
|
|
|
# You should generally set this to the total number of logical cores in your system.
|
|
|
|
# $ sysctl -n hw.ncpu
|
|
|
|
nix.maxJobs = 1;
|
2016-10-18 23:14:18 +02:00
|
|
|
}
|