# This script was inspired by the ArchLinux User Repository package:
#
#   https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=oh-my-zsh-git
with import <nixpkgs> {};

stdenv.mkDerivation rec {
  name = "oh-my-zsh-git";
  version = "2016-04-20";

  src = fetchgit {
    url = "https://github.com/robbyrussell/oh-my-zsh";
    rev = "1b1315a777328095cd8b5f364fd4345eeae7c4bf";
    sha256 = "1bdh6k46kwggihw6iblm1q60x4hjxpbkhaqap0nfpapqvlba4nv6";
  };

  phases = "installPhase";

  installPhase = ''
  outdir=$out/share/oh-my-zsh
  template=templates/zshrc.zsh-template
  mkdir -p $outdir
  cp -r $src/* $outdir
  cd $outdir
  rm MIT-LICENSE.txt
  rm -rf .git*
  chmod -R +w templates
  # Change the path to oh-my-zsh dir and disable auto-updating.
  sed -i -e "2c\\ZSH=$outdir/" \
         -e 's/\# \(DISABLE_AUTO_UPDATE="true"\)/\1/' \
   $template
  # Look for .zsh_variables, .zsh_aliases, and .zsh_funcs, and source
  # them, if found.
  cat >> $template <<- EOF
  # Load the variables.
  if [ -f ~/.zsh_variables ]; then
      . ~/.zsh_variables
  fi
  # Load the functions.
  if [ -f ~/.zsh_funcs ]; then
    . ~/.zsh_funcs
  fi
  # Load the aliases.
  if [ -f ~/.zsh_aliases ]; then
      . ~/.zsh_aliases
  fi
  EOF
  '';

  meta = with stdenv.lib; {
  description     = "A framework for managing your zsh configuration";
  longDescription = ''
    Oh My Zsh is a framework for managing your zsh configuration.
    To copy the Oh My Zsh configuration file to your home directory, run
    the following command:
      $ cp -v $(nix-env -q --out-path oh-my-zsh-git | cut -d' ' -f3)/share/oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
  '';
  homepage = "http://ohmyz.sh/";
  license = "GPLv2+"
  };
}
