diff --git a/Makefile b/Makefile index 2476a24..b92ffe1 100644 --- a/Makefile +++ b/Makefile @@ -6,22 +6,16 @@ LAST:=$(shell cat .last || echo 0) NEXT:=$(shell l=$(LAST); ((l=l+1)); echo $$l) NEXTGEN:=$(PWD)/generation/$(NEXT) LASTGEN:=$(PWD)/generation/$(LAST) -TANGLERS:=readme.org emacs.org +CUSTOM:= +TANGLERS:=$(CUSTOM) readme.org emacs.org tmux.org git.org x.org nix.org GEN:=$(LAST) OPTIONS:= -all: clean tangle-next - -tmp: - install -dm755 $@ +INSTALLDIRS=tmp $(NEXTGEN) $(LASTGEN) generation/$(GEN) -$(NEXTGEN): - install -dm755 $@ - -$(LASTGEN): - install -dm755 $@ +all: clean tangle-next -generation/$(GEN): +$(INSTALLDIRS): install -dm755 $@ generation: $(NEXTGEN) $(LASTGEN) tmp diff --git a/ddiff b/ddiff index a449952..4db2ad8 100755 --- a/ddiff +++ b/ddiff @@ -22,4 +22,7 @@ for file in $(find . -type f -print); do fi done +if [ $rc != 0 ]; then + echo differences between ${src} and ${dest} +fi exit $rc diff --git a/options.el b/defaults.el similarity index 100% rename from options.el rename to defaults.el diff --git a/emacs.org b/emacs.org index ca27fe5..f2cb116 100644 --- a/emacs.org +++ b/emacs.org @@ -9,6 +9,18 @@ Startup related tasks/setup that might be used later on. +*** tangle functions + +Duplicated from tangle.el just to make using org easier. + +TODO: make this stuff work sanely in emacs org mode and +via external tangling. Not tangled for now. + +#+BEGIN_SRC emacs-lisp :tangle no + (defun tangle/yn (p) (if (bound-and-true-p p) "yes" "no")) + (defun tangle/file (p file) (if (bound-and-true-p p) (concat "tmp/" file) "no")) +#+END_SRC + *** emacs package setup Setup the builtin emacs package manager. @@ -596,6 +608,9 @@ Highlight matching ()'s []'s etc... *** org-mode +- foo +- bar + Org-mode keybindings and settings, pretty sparse really. #+BEGIN_SRC emacs-lisp @@ -606,13 +621,38 @@ Org-mode keybindings and settings, pretty sparse really. ("C-c c" . org-capture) ("C-c l" . org-store-link) ("C-c p" . org-latex-export-to-pdf)) - :init (use-package org-bullets) + :init (use-package org-bullets + :config + (progn + (add-hook 'org-mode-hook (lambda () (org-bullets-mode 1))))) :config (progn (custom-set-variables '(org-log-done t) '(org-hide-leading-stars t) + '(org-hide-emphasis-markers t) ) + (font-lock-add-keywords 'org-mode + '(("^ +\\([-*]\\) " + (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•")))))) + (let* ((variable-tuple (cond ((x-list-fonts "Source Sans Pro") '(:font "Source Sans Pro")) + ((x-list-fonts "Lucida Grande") '(:font "Lucida Grande")) + ((x-list-fonts "Verdana") '(:font "Verdana")) + ((x-family-fonts "Sans Serif") '(:family "Sans Serif")) + (nil (warn "Cannot find a Sans Serif Font. Install Source Sans Pro.")))) + (base-font-color (face-foreground 'default nil 'default)) + (headline `(:inherit default :weight bold :foreground ,base-font-color))) + + (custom-theme-set-faces 'user + `(org-level-8 ((t (,@headline ,@variable-tuple)))) + `(org-level-7 ((t (,@headline ,@variable-tuple)))) + `(org-level-6 ((t (,@headline ,@variable-tuple)))) + `(org-level-5 ((t (,@headline ,@variable-tuple)))) + `(org-level-4 ((t (,@headline ,@variable-tuple :height 1.1)))) + `(org-level-3 ((t (,@headline ,@variable-tuple :height 1.25)))) + `(org-level-2 ((t (,@headline ,@variable-tuple :height 1.5)))) + `(org-level-1 ((t (,@headline ,@variable-tuple :height 1.75)))) + `(org-document-title ((t (,@headline ,@variable-tuple :height 1.5 :underline nil)))))) (org-reload) ) ) diff --git a/etangle b/etangle index 4e61976..2b9bbbb 100755 --- a/etangle +++ b/etangle @@ -1,13 +1,13 @@ ;;-*-mode: emacs-lisp; coding: utf-8;-*- ;; Copyright: 2016 Mitchell Tishmack ;; Tangle an org mode file with babel using emacs. -(load-file (if (getenv "OPTIONS") - (concat (concat "./" (getenv "OPTIONS")) ".el") - "./options.el")) - (require 'org-install) (require 'org) +(load-file "./tangle.el") + +(load-defaults-or-options) + ;; Iterate through all the files given and tangle them (dolist (file command-line-args-left) diff --git a/git.org b/git.org new file mode 100644 index 0000000..a859ef0 --- /dev/null +++ b/git.org @@ -0,0 +1,140 @@ +#+TITLE: Git Configuration +#+AUTHOR: Mitch Tishmack +#+STARTUP: hidestars +#+STARTUP: odd +#+BABEL: :cache yes +#+PROPERTY: header-args :cache yes :padline no :comments no + +General git configuration split out into sections mostly. + +* ~/.gitconfig +:PROPERTIES: +:header-args: :tangle tmp/.gitconfig :comments no :padline no :cache yes :mkdirp yes +:END: +** pager +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[pager] + color = true +#+END_SRC +** color +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[color] + status = auto + diff = auto + branch = auto +[color "status"] + added = green + changed = blue + untracked = red +[color "branch"] + current = green + local = blue + remote = red +[color "diff"] + meta = blue bold + frag = black reverse + old = red reverse + new = green reverse +#+END_SRC +** alias +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") + [alias] + begin = !git init && git commit --allow-empty -m 'Initial empty commit' + up = !git pull --rebase && git push + wsdiff = diff --color-words --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-all-space + wdiff = diff --color-words + ci = commit + ciu = commit --all + co = checkout + ds = diff --stat + ba = branch --all + st = status --short --branch + s = status --short --branch --untracked-files=no + unstage = reset HEAD + tlog = log --graph --color=always --abbrev-commit --date=relative --pretty=oneline + hist = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative + slog = log --oneline --decorate + fixup = commit --fixup + squash = commit --squash + ri = rebase --interactive --autosquash + ra = rebase --abort + effit = reset --hard + # What commits differ between branches, note, equivalent commits are omitted. + # Use this with three dot operator aka master...origin/master + cpdiff = log --no-merges --left-right --graph --cherry-pick --oneline + # Same as ^ only equivalent commits are listed with a = sign. + cmdiff = log --no-merges --left-right --graph --cherry-mark --oneline + # git update with submodule update + sup = git pull && git submodule update --init --recursive + # git clone with submodules + sc = !git clone --recursive $1 + # what files are getting updated a lot + churn = !git log --all -M -C --name-only --format='format:' "$@" | sort | grep -v '^$' | uniq -c | sort | awk 'BEGIN {print "count,file"} {print $1 "," $2}' + # help the gc a bit and get a bit more space back for a local clone + trim = !git reflog expire --expire=now --all && git gc --prune=now +#+END_SRC +** github +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[github] + user = mitchty +#+END_SRC +** credential +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[credential] + helper = netrc -v -f ~/.netrc.gpg -f ~/.netrc +#+END_SRC +** advice +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[advice] + statushints = false +#+END_SRC +** gui +#+BEGIN_SRC conf :tangle (tangle/file 'git-p ".gitconfig") +[gui] + fontui = -family Monaco -size 8 -weight normal -slant roman -underline 0 -overstrike 0 + fontdiff = -family Monaco -size 8 -weight normal -slant roman -underline 0 -overstrike 0 +#+END_SRC +** http +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[http] + postBuffer = 209715200 +#+END_SRC +** push +#+BEGIN_SRC conf :tangle (when (eq git-p t) "tmp/.gitconfig") +[push] + default = simple +#+END_SRC +** url rewrites +#+BEGIN_SRC conf :tangle (tangle/file 'git-p ".gitconfig") +[url "https://github.com/"] + insteadOf = git://github.com/ +#+END_SRC +** username/email +#+BEGIN_SRC conf :tangle (tangle/file 'git-p ".gitconfig") +[user] + name = Mitch Tishmack + email = mitch.tishmack@gmail.com +#+END_SRC + +* ~/.gitignore +:PROPERTIES: +:header-args: :tangle tmp/.gitignore :comments no :padline no :cache yes :mkdirp yes +:END: + +Common crap/build artifacts that git should always ignore. + +#+BEGIN_SRC conf :tangle no +.*~ +*~ +.\#* +\#* +\#*\# +.\#*\# +.DS_Store +*.pyc +*.rbc +*.elc +*.swp +*.[oa] +*.hi +#+END_SRC diff --git a/nix.org b/nix.org new file mode 100644 index 0000000..9d06bd7 --- /dev/null +++ b/nix.org @@ -0,0 +1,171 @@ +#+TITLE: Nix Configuration +#+AUTHOR: Mitch Tishmack +#+STARTUP: hidestars +#+STARTUP: odd +#+BABEL: :cache yes +#+PROPERTY: header-args :tangle tmp/.nixpkgs/config.nix :cache yes :padline no :mkdirp yes :comments no + +Nix user config.nix setup. + +#+BEGIN_SRC conf :tangle (when (eq nix-p t) "tmp/.nixpkgs/config.nix") +{ + allowUnfree = true; + allowBroken = true; + + packageOverrides = pkgs: rec { + pinentry = pkgs.pinentry.override { gtk2 = null; qt4 = null; ncurses = null; }; + gnupg = pkgs.gnupg.override { x11Support = false; pinentry = false; }; + youtube-dl = pkgs.youtube-dl.override { pandoc = null; }; + + # This didn't work + # haskell = pkgs.haskell // { + # packages = pkgs.haskell.packages // { + # ghc = pkgs.haskell.packages.ghc.override { + # overrides = self: pkgs: { + # idris = self.callPackage ./idris-0.10.nix {}; + # }; + # }; + # }; + # }; + + # Nor this + # idris = pkgs.haskell.lib.overrideCabal pkgs.idris (oldAttrs: { + # version = "0.10"; + # sha256 = "043adsnadjxfyk8lqkv6dgq3l6qijsj5s4rpky0zy06x5k5gx4sm"; + # }); + + + default = with pkgs; buildEnv { + name = "default"; + paths = [ + ansible + ack + aria + iperf + cacert + curl + clang + clang-analyzer + diffutils + patchutils + gitAndTools.gitFull + gitAndTools.git-extras + bazaarTools + mercurial + subversionClient + gist + mercurial + docbook5 + entr + emacs + gnupg1compat + gnutar + gnumake + sloccount + cloc + less + multitail + rlwrap + gdbm + mosh + htop +# imagemagick also busted on osx now + keychain + silver-searcher + aspell + aspellDicts.en + openssl + pinentry + pbzip2 + pigz + pv + postgresql + readline + rsync + sqlite +# texLiveFull and now this things broken on osx nix, sigh + tmux + tree + wget + wakelan + unzip + upx + xz + multimarkdown + jq +# rtags broken again on osx, fix it +# p7zip broken again on osx, god nix is terribad at keeping things working + unrar + watch + nox + mutt + duply + zsh + pylint + python27Packages.howdoi + python27Packages.youtube-dl + python27Packages.pyflakes + python27Packages.flake8 + python27Packages.virtualenv + python27Packages.pip +# xhyve compiles normally, figure out hypervisor framework issue + lastpass-cli + haskellPackages.alex + haskellPackages.happy + haskellPackages.bake + haskellPackages.cabal-dependency-licenses + haskellPackages.cabal-install + haskellPackages.cabal-meta + haskellPackages.ghc-core + haskellPackages.ghc-mod + haskellPackages.hasktags + haskellPackages.hindent + haskellPackages.hoogle + haskellPackages.hspec + haskellPackages.pandoc + haskellPackages.shake + haskellPackages.ShellCheck + haskellPackages.stack + haskellPackages.nats + haskellPackages.transformers-compat + ]; + }; + }; +} +#+END_SRC + +Because idris 0.11 fails its testsuite, got no time to figure it out right now. + +#+END_SRC conf :tangle (when (eq nix-p t) ".nixpkgs/idris-0.10.nix") +{ mkDerivation, annotated-wl-pprint, ansi-terminal, ansi-wl-pprint +, async, base, base64-bytestring, binary, blaze-html, blaze-markup +, bytestring, cheapskate, containers, deepseq, directory, filepath +, fingertree, fsnotify, haskeline, mtl, network +, optparse-applicative, parsers, pretty, process, safe, split +, stdenv, text, time, transformers, transformers-compat, trifecta +, uniplate, unix, unordered-containers, utf8-string, vector +, vector-binary-instances, zip-archive, zlib +}: +mkDerivation { + pname = "idris"; + version = "0.10"; + sha256 = "043adsnadjxfyk8lqkv6dgq3l6qijsj5s4rpky0zy06x5k5gx4sm"; + isLibrary = true; + isExecutable = true; + libraryHaskellDepends = [ + annotated-wl-pprint ansi-terminal ansi-wl-pprint async base + base64-bytestring binary blaze-html blaze-markup bytestring + cheapskate containers deepseq directory filepath fingertree + fsnotify haskeline mtl network optparse-applicative parsers pretty + process safe split text time transformers transformers-compat + trifecta uniplate unix unordered-containers utf8-string vector + vector-binary-instances zip-archive zlib + ]; + executableHaskellDepends = [ + base directory filepath haskeline transformers + ]; + homepage = "http://www.idris-lang.org/"; + description = "Functional Programming Language with Dependent Types"; + license = stdenv.lib.licenses.bsd3; +} +#+END_SRC diff --git a/osx-nonix.el b/osx-nonix.el new file mode 100644 index 0000000..6d1b0d8 --- /dev/null +++ b/osx-nonix.el @@ -0,0 +1,23 @@ +;;-*-mode: emacs-lisp; coding: utf-8;-*- +;; All these variables control what/how readme.org gets tangled +;; into dotfiles. Off by default set to t to turn them on as +;; needed. + +;; OS types +(setq bsd-p nil) +(setq linux-p nil) +(setq osx-p t) + +;; Optional things +(setq nix-p nil) +(setq tmux-p t) +(setq git-p t) +(setq emacs-p t) +(setq vim-p nil) +(setq zsh-p t) +(setq mosh-p t) +(setq x-p t) + +;; Language specific +(setq haskell-p t) +(setq perl-p t) diff --git a/readme.org b/readme.org index dcc05de..c42925e 100644 --- a/readme.org +++ b/readme.org @@ -133,6 +133,19 @@ N and don't increment. - [ ] Maybe checksum file contents somehow and use that? - [ ] More? For now its functional. +* External Tanglers + +Putting everything in readme.org was getting annoying. + + +| name | file | +|-------+-----------| +| emacs | [[file:emacs.org][emacs.org]] | +| tmux | [[file:tmux.org][tmux.org]] | +| git | [[file:git.org][git.org]] | +| x | [[file:x.org][x.org]] | +| nix | [[file:nix.org][nix.org]] | + * ~/.profile :PROPERTIES: :header-args: :tangle tmp/.profile :comments no :padline no :cache yes :mkdirp yes @@ -1535,226 +1548,6 @@ cal.each do |line| end end #+END_SRC - -* git -** ~/.gitconfig -:PROPERTIES: -:header-args: :tangle tmp/.gitconfig :comments no :padline no :cache yes :mkdirp yes -:END: - -General git configuration. - -*** pager -#+BEGIN_SRC conf -[pager] - color = true -#+END_SRC -*** color -#+BEGIN_SRC conf -[color] - status = auto - diff = auto - branch = auto -[color "status"] - added = green - changed = blue - untracked = red -[color "branch"] - current = green - local = blue - remote = red -[color "diff"] - meta = blue bold - frag = black reverse - old = red reverse - new = green reverse -#+END_SRC -*** alias -#+BEGIN_SRC conf - [alias] - begin = !git init && git commit --allow-empty -m 'Initial empty commit' - up = !git pull --rebase && git push - wsdiff = diff --color-words --ignore-space-at-eol --ignore-space-change --ignore-all-space --ignore-all-space - wdiff = diff --color-words - ci = commit - ciu = commit --all - co = checkout - ds = diff --stat - ba = branch --all - st = status --short --branch - s = status --short --branch --untracked-files=no - unstage = reset HEAD - tlog = log --graph --color=always --abbrev-commit --date=relative --pretty=oneline - hist = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative - slog = log --oneline --decorate - fixup = commit --fixup - squash = commit --squash - ri = rebase --interactive --autosquash - ra = rebase --abort - effit = reset --hard - # What commits differ between branches, note, equivalent commits are omitted. - # Use this with three dot operator aka master...origin/master - cpdiff = log --no-merges --left-right --graph --cherry-pick --oneline - # Same as ^ only equivalent commits are listed with a = sign. - cmdiff = log --no-merges --left-right --graph --cherry-mark --oneline - # git update with submodule update - sup = !git checkout master && git pull && git submodule update --init --recursive - # git clone with submodules - sc = !git clone --recursive $1 - # what files are getting updated a lot - churn = !git log --all -M -C --name-only --format='format:' "$@" | sort | grep -v '^$' | uniq -c | sort | awk 'BEGIN {print "count,file"} {print $1 "," $2}' - # help the gc a bit and get a bit more space back for a local clone - trim = !git reflog expire --expire=now --all && git gc --prune=now -#+END_SRC -*** github -#+BEGIN_SRC conf -[github] - user = mitchty -#+END_SRC -*** credential -#+BEGIN_SRC conf -[credential] - helper = netrc -v -f ~/.netrc.gpg -f ~/.netrc -#+END_SRC -*** advice -#+BEGIN_SRC conf -[advice] - statushints = false -#+END_SRC -*** gui -#+BEGIN_SRC -[gui] - fontui = -family Monaco -size 8 -weight normal -slant roman -underline 0 -overstrike 0 - fontdiff = -family Monaco -size 8 -weight normal -slant roman -underline 0 -overstrike 0 -#+END_SRC -*** http -#+BEGIN_SRC -[http] - postBuffer = 209715200 -#+END_SRC -*** push -#+BEGIN_SRC conf -[push] - default = simple -#+END_SRC -*** url rewrites -#+BEGIN_SRC conf -[url "https://github.com/"] - insteadOf = git://github.com/ -#+END_SRC -*** username/email -#+BEGIN_SRC conf -[user] - name = Mitch Tishmack - email = mitch.tishmack@gmail.com -#+END_SRC - -** ~/.gitignore - -Common crap/build artifacts that git should always ignore. - -#+BEGIN_SRC conf :tangle tmp/.gitignore :results replace -.*~ -*~ -.\#* -\#* -\#*\# -.\#*\# -.DS_Store -*.pyc -*.rbc -*.elc -*.swp -*.[oa] -*.hi -#+END_SRC - -* x -** ~/.Xdefaults - -X defaults, just urxvt for the moment. Slightly linux/bsd only but not really. - -#+BEGIN_SRC conf :tangle (when (eq x-p t) "tmp/.Xdefaults") :results replace -! urxvt generalish stuff -! -urxvt*termName: rxvt-256color -urxvt*font: xft:menlo:size=12:antialias=true -urxvt*perl-ext-common: default,matcher -urxvt*jumpScroll: true -urxvt*cursorColor: pink -urxvt*loginShell: true -urxvt*scrollBar: true -urxvt*scrollstyle: next -urxvt*scrollBar_right: true -urxvt*scrollTtyOutput: false -urxvt*cursorBlink: true -urxvt*saveLines: 10000 -urxvt*urlLauncher: /usr/bin/google-chrome -urxvt*matcher.button: 1 -urxvt*allowWindowOps: true -#+END_SRC - -** ~/.Xmodmap - -Swap around left/right clicks basically. - -#+BEGIN_SRC conf :tangle (when (and (eq x-p t) (not (eq osx-p t))) "tmp/.Xmodmap") -pointer = 3 2 1 4 5 -#+END_SRC - -OSX is odd. - -#+BEGIN_SRC conf :tangle (when (and (eq x-p t) (eq osx-p t)) "tmp/.Xmodmap") -pointer = 1 2 3 4 5 -#+END_SRC - -** ~/.Xresources - -I can't remember why I did all this effort. But I'll remove it some year I bet. - -#+BEGIN_SRC conf :tangle (when (eq x-p t) "tmp/.Xresources") :results replace -#define brightblack #ffffff -#define normblack #f9f9f9 -#define normgreen #00cc33 -#define brightgreen #00cc99 -#define normblue #f00033 -#define brightblue #0099ff -#define normcyan #66ccff -#define brightcyan #66ccff -#define normwhite #060606 -#define brightwhite #000000 -#define normyellow #ffcc33 -#define brightyellow #ffcc33 -#define normred #ff3300 -#define brightred #ff3300 -#define normmagenta #ff66ff -#define brightmagenta #ff66ff - -*background: normblack -*foreground: normwhite -*fading: 40 -*fadeColor: brightblack -*cursorColor: brightcyan -*pointerColorBackground: #3f3f3f -*pointerColorForeground: #f3f3f3 - -*color0: #090909 -*color1: #f00000 -*color2: normgreen -*color3: normyellow -*color4: #0066ff -*color5: normmagenta -*color6: normcyan -*color7: #c8c8c8 -*color8: #888888 -*color9: #f00033 -*color10: brightgreen -*color11: brightyellow -*color12: #0099ff -*color13: brightmagenta -*color14: brightcyan -*color15: #f9f9f9 -#+END_SRC * zsh ** ~/.zprofile @@ -1945,153 +1738,6 @@ PROMPT="%(!.#.$) " # $ as a user # as root RPROMPT='${vcs_info_msg_0_} ${PWD/#$HOME/~}' #+END_SRC -* tmux -** ~/.tmux.conf - -Tmux configuration. Pretty boring in most ways. - -#+BEGIN_SRC conf :tangle tmp/.tmux.conf -# Setup utf8 by default and vi mode -set-window-option -g utf8 on -set-window-option -g mode-keys vi -set-window-option -g aggressive-resize on - -# Force zsh to be a login shell -set-option -g default-command 'zsh -l' -set-option -g default-terminal 'xterm-256color' - -# Status line options, mainly coloring -set-window-option -g window-status-bg colour6 -set-window-option -g window-status-fg black -set-window-option -g window-status-current-bg white - -# Status line options -set-option -g status-bg black -set-option -g status-fg colour7 -set-option -g status-left-length 24 -set-option -g status-left '' -set-option -g status-right-length 13 -set-option -g status-right "%a %H:%M:%S" -set-option -g status-interval 7 -set-option -g status-utf8 on - -# Pane border options, mimics the status line coloring -set-option -g pane-border-bg colour15 -set-option -g pane-border-fg colour82 -set-option -g pane-active-border-bg colour15 -set-option -g pane-active-border-fg colour2 - -# Alert related things -set-option -g visual-activity on -set-option -g visual-bell on -set-option -g message-bg colour7 -set-option -g message-fg black - -# Pass through the window title and display it automatically on changes. -set-option -g set-titles on -set-option -g set-titles-string '#T' -set-window-option -g automatic-rename on - -# Key rebinding to make things more au naturalle -bind-key R \ - source-file ~/.tmux.conf \;\ - display 'reloaded tmux config' - -# Log pane output to a file, save with an iso8601 datestamp -bind-key o \ - pipe-pane -o "cat >> $HOME/tmux-`iso8601`.log" \;\ - set-window-option window-status-current-fg green \; - -bind-key O \ - pipe-pane \;\ - set-window-option window-status-current-fg default \; - -bind-key N new-session -t default - -# Using s for synchronizing panes, means that s for choosing sessions -# is now e -unbind-key s # interactive select sessions -bind-key e choose-tree - -# (un)synchronize panes with prefix-s -bind-key s \ - if-shell \ - "tmux show-window-options | grep 'synchronize-panes on'" \ - "set-window-option window-status-current-bg colour7; \ - set-window-option pane-active-border-fg colour2; \ - set-window-option pane-active-border-bg colour15; \ - set-window-option synchronize-panes off; \ - display 'synchronization off'" \ - "set-window-option window-status-current-bg red; \ - set-window-option pane-active-border-fg red; \ - set-window-option pane-active-border-bg colour15; \ - set-window-option synchronize-panes on; \ - display 'synchronizing'" - -# same thing as ^ so it sets up things if we were started with -# something else that set synchronization. -if-shell \ - "tmux show-window-options | grep 'synchronize-panes on' || /bin/true" \ - "set-window-option window-status-current-bg red; \ - set-window-option pane-active-border-fg yellow; \ - set-window-option pane-active-border-bg red" - -# Setup splits to be less annoying -bind-key \ split-window -h -bind-key - split-window -v - -# vi keybindings for pane navigation -bind-key k select-pane -U -bind-key j select-pane -D -bind-key h select-pane -L -bind-key l select-pane -R - -# Make it so that I can detach/etc while holding control down, -# PURE LAZY -bind-key C-d detach -bind-key C-n next-window -bind-key C-p previous-window - -bind-key C-k select-pane -U -bind-key C-j select-pane -D -bind-key C-h select-pane -L -bind-key C-l select-pane -R - -# Non confirming kill pane plskthxbai -bind-key x kill-pane - -# In case something I run exits straight away, i'd like to know about it. -set-option -g set-remain-on-exit on - -# Lets change the prefix key so we don't clobber emacs back one char key -unbind-key C-b - -# hacky, but C-\ isn't used by anything overly important in emacs -set-option -g prefix 'C-\' - -# two C-\'s == C-\, if i need it, likely not -bind 'C-\' send-prefix - -# Delay in sending things is dumb -set-option -s escape-time 1 - -# so we can scroll the mouse, select panes, etc... -set -g mouse on -bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'" -bind-key m \ - if-shell \ - "tmux show-options -g | grep 'mouse on'" \ - "set -g mouse off; \ - display 'Mouse modes off'" \ - "set -g mouse on; \ - display 'Mouse modes on'" -#+END_SRC - -#+BEGIN_SRC conf :tangle (when (not (eq osx-p t)) "tmp/.tmux.conf") -# Assume linux for things, load osx stuff only on osx -bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer" -bind C-y run "tmux save-buffer - | xclip -i" -#+END_SRC * vim ** ~/.vimrc @@ -2125,139 +1771,6 @@ else endif " has("autocmd") #+END_SRC -* nix -#+BEGIN_SRC conf :mkdirp yes :tangle (when (eq nix-p t) "tmp/.nixpkgs/config.nix") -{pkgs}: { - allowUnfree = true; - allowBroken = true; - - packageOverrides = pkgs: with pkgs; { - pinentry = pkgs.pinentry.override { - gtk2 = null; - qt4 = null; - ncurses = null; - }; - gnupg = pkgs.gnupg.override { - x11Support = false; - pinentry = true; - }; - youtube-dl = pkgs.youtube-dl.override { - pandoc = null; - }; - - # haskellPackages = haskellPackages.override { - # extension = self : super : { - # cabal = pkgs.haskellPackages.cabalNoTest; - # }; - # }; - - default = with pkgs; buildEnv { - - name = "default"; - - paths = [ - ansible - ack - aria - iperf - cacert - curl - clang - clang-analyzer - diffutils - patchutils - gitAndTools.gitFull - gitAndTools.git-extras - bazaarTools - mercurial - subversionClient - gist - mercurial - docbook5 - entr - emacs - gnupg1compat - gnutar - gnumake - sloccount - cloc - less - multitail - rlwrap - gdbm - mosh - htop - imagemagick - keychain - silver-searcher - aspell - aspellDicts.en - openssl - pinentry - pbzip2 - pigz - pv - postgresql - readline - rsync - sqlite - texLiveFull - tmux - tree - wget - wakelan - unzip - upx - xz - multimarkdown - jq -# rtags broken again on osx, fix it - p7zip - unrar - watch - nox - mutt - duply - zsh - pylint - python27Packages.howdoi - python27Packages.youtube-dl - python27Packages.pyflakes - python27Packages.flake8 - python27Packages.virtualenv - python27Packages.pip -# xhyve compiles normally, figure out hypervisor framework issue -# lastpass-cli no worky on osx TODO fix this it works on homebrew - ]; - }; - env_hs = - pkgs.haskell.packages.ghc7103.ghcWithPackages - (haskellPackages: with haskellPackages; [ - alex - happy - bake - cabal-dependency-licenses - cabal-install - cabal-meta - ghc-core - ghc-mod - hasktags - hindent - hoogle - hspec -# idris # zlib is complaining for some reason, hmmm - pandoc - shake - ShellCheck - stack - stylish-haskell - nats - transformers-compat - ] - ); - }; -} -#+END_SRC * Language related ** Haskell *** ~/.ghci @@ -2489,7 +2002,6 @@ Because who gives a rats when and where I last logged on from? #+BEGIN_SRC conf :tangle tmp/.hushlogin :results replace #+END_SRC - * Reference for babel stuff Found this STUPID useful for constructing the tangle stuff. diff --git a/tangle.el b/tangle.el new file mode 100644 index 0000000..de7e9b3 --- /dev/null +++ b/tangle.el @@ -0,0 +1,22 @@ +;;-*-mode: emacs-lisp; coding: utf-8;-*- +;; File: tangle.el + +;; Load the default options used or what was passed in as OPTIONS +(defun load-defaults-or-options () + (load-file (if (getenv "OPTIONS") + (concat (concat "./" (getenv "OPTIONS")) ".el") + "./defaults.el"))) + +;; Define functions we use in :tangle blocks + +;; tangle/yn +;; tangle to "yes" or "no" if the predicate given exists and defined as t. +;; +;; Iff predicate is bound, and t, "yes" +;; rest is "no" +(defun tangle/yn (p) (load-defaults-or-options) (if (bound-and-true-p p) "yes" "no")) + +;; tangle/file +;; tangle to filename if predicate is bound and t +;; Note, prepends tmp/ to the filename to conform to match expected layout +(defun tangle/file (p file) (load-defaults-or-options) (if (bound-and-true-p p) (concat "tmp/" file) "no")) diff --git a/tmux.org b/tmux.org new file mode 100644 index 0000000..43edb19 --- /dev/null +++ b/tmux.org @@ -0,0 +1,152 @@ +#+TITLE: Tmux Configuration +#+AUTHOR: Mitch Tishmack +#+STARTUP: hidestars +#+STARTUP: odd +#+BABEL: :cache yes +#+PROPERTY: header-args :cache yes :padline no :mkdirp yes :comments no + +Tmux configuration. Pretty boring in most ways. + +#+BEGIN_SRC conf :tangle (tangle/file tmux-p ".tmux.conf") + # Setup utf8 by default and vi mode + set-window-option -g utf8 on + set-window-option -g mode-keys vi + set-window-option -g aggressive-resize on + + # Force zsh to be a login shell + set-option -g default-command 'zsh -l' + set-option -g default-terminal 'xterm-256color' + + # Status line options, mainly coloring + set-window-option -g window-status-bg colour6 + set-window-option -g window-status-fg black + set-window-option -g window-status-current-bg white + + # Status line options + set-option -g status-bg black + set-option -g status-fg colour7 + set-option -g status-left-length 24 + set-option -g status-left '' + set-option -g status-right-length 13 + set-option -g status-right "%a %H:%M:%S" + set-option -g status-interval 7 + set-option -g status-utf8 on + + # Pane border options, mimics the status line coloring + set-option -g pane-border-bg colour15 + set-option -g pane-border-fg colour82 + set-option -g pane-active-border-bg colour15 + set-option -g pane-active-border-fg colour2 + + # Alert related things + set-option -g visual-activity on + set-option -g visual-bell on + set-option -g message-bg colour7 + set-option -g message-fg black + + # Pass through the window title and display it automatically on changes. + set-option -g set-titles on + set-option -g set-titles-string '#T' + set-window-option -g automatic-rename on + + # Key rebinding to make things more au naturalle + bind-key R \ + source-file ~/.tmux.conf \;\ + display 'reloaded tmux config' + + # Log pane output to a file, save with an iso8601 datestamp + bind-key o \ + pipe-pane -o "cat >> $HOME/tmux-`iso8601`.log" \;\ + set-window-option window-status-current-fg green \; + + bind-key O \ + pipe-pane \;\ + set-window-option window-status-current-fg default \; + + bind-key N new-session -t default + + # Using s for synchronizing panes, means that s for choosing sessions + # is now e + unbind-key s # interactive select sessions + bind-key e choose-tree + + # (un)synchronize panes with prefix-s + bind-key s \ + if-shell \ + "tmux show-window-options | grep 'synchronize-panes on'" \ + "set-window-option window-status-current-bg colour7; \ + set-window-option pane-active-border-fg colour2; \ + set-window-option pane-active-border-bg colour15; \ + set-window-option synchronize-panes off; \ + display 'synchronization off'" \ + "set-window-option window-status-current-bg red; \ + set-window-option pane-active-border-fg red; \ + set-window-option pane-active-border-bg colour15; \ + set-window-option synchronize-panes on; \ + display 'synchronizing'" + + # same thing as ^ so it sets up things if we were started with + # something else that set synchronization. + if-shell \ + "tmux show-window-options | grep 'synchronize-panes on' || /bin/true" \ + "set-window-option window-status-current-bg red; \ + set-window-option pane-active-border-fg yellow; \ + set-window-option pane-active-border-bg red" + + # Setup splits to be less annoying + bind-key \ split-window -h + bind-key - split-window -v + + # vi keybindings for pane navigation + bind-key k select-pane -U + bind-key j select-pane -D + bind-key h select-pane -L + bind-key l select-pane -R + + # Make it so that I can detach/etc while holding control down, + # PURE LAZY + bind-key C-d detach + bind-key C-n next-window + bind-key C-p previous-window + + bind-key C-k select-pane -U + bind-key C-j select-pane -D + bind-key C-h select-pane -L + bind-key C-l select-pane -R + + # Non confirming kill pane plskthxbai + bind-key x kill-pane + + # In case something I run exits straight away, i'd like to know about it. + set-option -g set-remain-on-exit on + + # Lets change the prefix key so we don't clobber emacs back one char key + unbind-key C-b + + # hacky, but C-\ isn't used by anything overly important in emacs + set-option -g prefix 'C-\' + + # two C-\'s == C-\, if i need it, likely not + bind 'C-\' send-prefix + + # Delay in sending things is dumb + set-option -s escape-time 1 + + # so we can scroll the mouse, select panes, etc... + set -g mouse on + bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e'" + bind-key m \ + if-shell \ + "tmux show-options -g | grep 'mouse on'" \ + "set -g mouse off; \ + display 'Mouse modes off'" \ + "set -g mouse on; \ + display 'Mouse modes on'" +#+END_SRC + +Only set xclip for x setup. + +#+BEGIN_SRC conf :tangle (eq (tangle/file tmux-p ".tmux.conf") (tangle/file x-p ".tmux.conf")) + bind C-p run "tmux set-buffer \"$(xclip -o)\"; tmux paste-buffer" + bind C-y run "tmux save-buffer - | xclip -i" +#+END_SRC diff --git a/x.org b/x.org new file mode 100644 index 0000000..f1d89d0 --- /dev/null +++ b/x.org @@ -0,0 +1,103 @@ +#+TITLE: X Configuration +#+AUTHOR: Mitch Tishmack +#+STARTUP: hidestars +#+STARTUP: odd +#+BABEL: :cache yes +#+PROPERTY: header-args :cache yes :padline no :mkdirp yes :comments no + +X related configuration, nothing overly huge to be honest just stupid configuration. + +* ~/.Xdefaults +:PROPERTIES: +:header-args: :tangle (when (eq x-p t) "tmp/.Xdefaults") :comments no :padline no :cache yes :mkdirp yes +:END: + +X defaults, just urxvt for the moment. Slightly linux/bsd only but not really. + +#+BEGIN_SRC conf +! urxvt generalish stuff +! +urxvt*termName: rxvt-256color +urxvt*font: xft:menlo:size=12:antialias=true +urxvt*perl-ext-common: default,matcher +urxvt*jumpScroll: true +urxvt*cursorColor: pink +urxvt*loginShell: true +urxvt*scrollBar: true +urxvt*scrollstyle: next +urxvt*scrollBar_right: true +urxvt*scrollTtyOutput: false +urxvt*cursorBlink: true +urxvt*saveLines: 10000 +urxvt*urlLauncher: /usr/bin/google-chrome +urxvt*matcher.button: 1 +urxvt*allowWindowOps: true +#+END_SRC + +* ~/.Xmodmap +:PROPERTIES: +:header-args: :tangle (when (eq x-p t) "tmp/.Xmodmap") :comments no :padline no :cache yes :mkdirp yes +:END: + +Swap around left/right clicks basically. + +#+BEGIN_SRC conf :tangle (when (not (and (eq x-p t) (eq osx-p t))) "tmp/.Xmodmap") +pointer = 3 2 1 4 5 +#+END_SRC + +OSX is odd/inverted cause reasons (who cares why). + +#+BEGIN_SRC conf :tangle (when (and (eq x-p t) (eq osx-p t)) "tmp/.Xmodmap") +pointer = 1 2 3 4 5 +#+END_SRC + +* ~/.Xresources +:PROPERTIES: +:header-args: :tangle (when (eq x-p t) "tmp/.Xresources") :comments no :padline no :cache yes :mkdirp yes +:END: + +I can't remember why I did all this effort. But I'll remove it some year I bet. + +#+BEGIN_SRC conf +#define brightblack #ffffff +#define normblack #f9f9f9 +#define normgreen #00cc33 +#define brightgreen #00cc99 +#define normblue #f00033 +#define brightblue #0099ff +#define normcyan #66ccff +#define brightcyan #66ccff +#define normwhite #060606 +#define brightwhite #000000 +#define normyellow #ffcc33 +#define brightyellow #ffcc33 +#define normred #ff3300 +#define brightred #ff3300 +#define normmagenta #ff66ff +#define brightmagenta #ff66ff + +*background: normblack +*foreground: normwhite +*fading: 40 +*fadeColor: brightblack +*cursorColor: brightcyan +*pointerColorBackground: #3f3f3f +*pointerColorForeground: #f3f3f3 + +*color0: #090909 +*color1: #f00000 +*color2: normgreen +*color3: normyellow +*color4: #0066ff +*color5: normmagenta +*color6: normcyan +*color7: #c8c8c8 +*color8: #888888 +*color9: #f00033 +*color10: brightgreen +*color11: brightyellow +*color12: #0099ff +*color13: brightmagenta +*color14: brightcyan +*color15: #f9f9f9 +#+END_SRC