{ config, lib, pkgs, ... }: { environment.systemPackages = [ pkgs.lnl.tmux pkgs.lnl.vim pkgs.curl pkgs.fzf pkgs.gettext pkgs.git pkgs.jq pkgs.silver-searcher pkgs.nix-repl pkgs.nox ]; services.nix-daemon.enable = true; services.nix-daemon.tempDir = "/nix/tmp"; services.activate-system.enable = true; system.defaults.global.InitialKeyRepeat = 10; system.defaults.global.KeyRepeat = 1; programs.tmux.enable = true; programs.tmux.loginShell = "${config.programs.zsh.shell} -l"; programs.tmux.enableSensible = true; programs.tmux.enableMouse = true; programs.tmux.enableFzf = true; programs.tmux.enableVim = true; programs.tmux.tmuxConfig = '' bind 0 set status set -g status-bg black set -g status-fg white ''; programs.zsh.enable = true; programs.zsh.shellInit = '' export NIX_PATH=nixpkgs=$HOME/.nix-defexpr/nixpkgs:darwin=$HOME/.nix-defexpr/darwin:darwin-config=$HOME/.nixpkgs/darwin-config.nix:$HOME/.nix-defexpr/channels_root # Set up secure multi-user builds: non-root users build through the # Nix daemon. if [ "$USER" != root -a ! -w /nix/var/nix/db ]; then export NIX_REMOTE=daemon fi ''; programs.zsh.loginShellInit = '' autoload -U promptinit && promptinit PROMPT='%B%(?..%? )%b⇒ ' RPROMPT='%F{green}%~%f' bindkey -e setopt autocd autoload -U compinit && compinit nix () { cmd=$1 shift case $cmd in 'b'|'build') nix-build --no-out-link -E "with import {}; $@" ;; 'e'|'eval') nix-instantiate --eval -E "with import {}; $@" ;; 'i'|'instantiate') nix-instantiate -E "with import {}; $@" ;; 'r'|'repl') nix-repl '' ;; 's'|'shell') nix-shell -E "with import {}; $@" ;; 'p'|'package') nix-shell '' -p "with import {}; $@" --run $SHELL ;; 'z'|'zsh') nix-shell '' -E "with import {}; $@" --run $SHELL ;; 'exec') echo "reexecuting shell: $SHELL" >&2 __ETC_ZSHRC_SOURCED= \ __ETC_ZSHENV_SOURCED= \ __ETC_ZPROFILE_SOURCED= \ exec $SHELL -l ;; esac } conf=$HOME/.nixpkgs/darwin-config.nix pkgs=$HOME/.nix-defexpr/nixpkgs ''; programs.zsh.interactiveShellInit = '' # history defaults SAVEHIST=2000 HISTSIZE=2000 HISTFILE=$HOME/.zsh_history setopt HIST_IGNORE_DUPS SHARE_HISTORY HIST_FCNTL_LOCK ''; environment.variables.EDITOR = "vim"; environment.variables.HOMEBREW_CASK_OPTS = "--appdir=/Applications/cask"; environment.variables.GIT_SSL_CAINFO = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; environment.variables.SSL_CERT_FILE = "${pkgs.cacert}/etc/ssl/certs/ca-bundle.crt"; environment.shellAliases.l = "ls -lh"; environment.shellAliases.ls = "ls -G"; environment.shellAliases.g = "git log --oneline --max-count 42"; environment.shellAliases.gl = "git log --graph --oneline"; environment.shellAliases.gd = "git diff --minimal --patch"; nixpkgs.config.allowUnfree = true; nixpkgs.config.packageOverrides = self: { lnl.tmux = pkgs.runCommand pkgs.tmux.name { buildInputs = [ pkgs.makeWrapper ]; } '' source $stdenv/setup mkdir -p $out/bin makeWrapper ${pkgs.tmux}/bin/tmux $out/bin/tmux \ --set __ETC_ZPROFILE_SOURCED "" \ --set __ETC_ZSHENV_SOURCED "" \ --set __ETC_ZSHRC_SOURCED "" \ --add-flags -f --add-flags /run/current-system/etc/tmux.conf ''; lnl.vim = pkgs.vim_configurable.customize { name = "vim"; vimrcConfig.customRC = '' set nocompatible filetype plugin indent on syntax on colorscheme solarized set bg=dark set et sw=2 ts=2 set bs=indent,start set nowrap set list set listchars=tab:»·,trail:·,extends:⟩,precedes:⟨ set fillchars+=vert:\ ,stl:\ ,stlnc:\ set lazyredraw set clipboard=unnamed vmap s S cnoremap %% =expand('%:h') . '/' set hlsearch nnoremap // :nohlsearch let mapleader = ' ' nnoremap p :FZF nnoremap e :exe 'FZF ' . expand('%:h') source $HOME/.vimrc.local ''; # vimrcConfig.vam.knownPlugins = with pkgs.vimUtils; (pkgs.vimPlugins // { # vim-nix = buildVimPluginFrom2Nix { # name = "vim-nix-unstable"; # src = ../../../vim-nix; # }; # }); vimrcConfig.vam.pluginDictionaries = [ { names = [ "fzfWrapper" "youcompleteme" "fugitive" "surround" "vim-nix" "colors-solarized" ]; } ]; }; }; }