diff --git a/var/spack/repos/builtin/packages/fzf/github_mirrors.patch b/var/spack/repos/builtin/packages/fzf/github_mirrors.patch
new file mode 100644
index 0000000000000000000000000000000000000000..d17663286a23fe9f5ebf7140ccc381600b061553
--- /dev/null
+++ b/var/spack/repos/builtin/packages/fzf/github_mirrors.patch
@@ -0,0 +1,16 @@
+--- a/Makefile 	2019-03-29 08:58:38.934257084 -0600
++++ b/Makefile	2019-03-29 08:58:38.934257084 -0600
+@@ -99,7 +99,12 @@
+ 	ln -sf $(ROOT_DIR)/vendor $(VENDOR_LINK)
+ 
+ vendor: $(GLIDE_YAML)
+-	go get -u github.com/Masterminds/glide && $(GOPATH)/bin/glide install && touch $@
++	go get -u github.com/Masterminds/glide
++	$(GOPATH)/bin/glide $(if ${GLIDE_HOME}, --home ${GLIDE_HOME},) mirror set https://golang.org/x/crypto https://github.com/golang/crypto --vcs git
++	$(GOPATH)/bin/glide $(if ${GLIDE_HOME}, --home ${GLIDE_HOME},) mirror set https://golang.org/x/text https://github.com/golang/text --vcs git
++	$(GOPATH)/bin/glide $(if ${GLIDE_HOME}, --home ${GLIDE_HOME},) mirror set https://golang.org/x/sys https://github.com/golang/sys --vcs git
++	$(GOPATH)/bin/glide $(if ${GLIDE_HOME}, --home ${GLIDE_HOME},) mirror set https://gopkg.in/yaml.v2 https://github.com/go-yaml/yaml.git --vcs git
++	$(GOPATH)/bin/glide $(if ${GLIDE_HOME}, --home ${GLIDE_HOME},) install && touch $@
+ 
+ test: $(SOURCES) vendor
+ 	SHELL=/bin/sh GOOS= go test -v -tags "$(TAGS)" \
diff --git a/var/spack/repos/builtin/packages/fzf/package.py b/var/spack/repos/builtin/packages/fzf/package.py
index f9d3a9278157fcd50236c6d58bd0d793763f6ea4..708b856cb01a2f84d8124b9c6fceb4ea22284f90 100644
--- a/var/spack/repos/builtin/packages/fzf/package.py
+++ b/var/spack/repos/builtin/packages/fzf/package.py
@@ -3,6 +3,10 @@
 #
 # SPDX-License-Identifier: (Apache-2.0 OR MIT)
 
+import os
+import shutil
+import inspect
+
 from spack import *
 
 
@@ -25,8 +29,24 @@ class Fzf(MakefilePackage):
 
     depends_on('go@1.11:')
 
-    def edit(self, spec, prefix):
+    variant('vim', default=False, description='Install vim plugins for fzf')
+
+    patch("github_mirrors.patch")
+
+    def build(self, spec, prefix):
+        glide_home = os.path.join(self.build_directory, 'glide_home')
+        os.environ['GLIDE_HOME'] = glide_home
+        shutil.rmtree(glide_home, ignore_errors=True)
+        os.mkdir(glide_home)
+        super(Fzf, self).build(spec, prefix)
+
+    def install(self, spec, prefix):
+        with working_dir(self.build_directory):
+            inspect.getmodule(self).make(*self.install_targets)
+
         mkdir(prefix.bin)
+        install('bin/fzf', prefix.bin)
 
-        makefile = FileFilter('Makefile')
-        makefile.filter('bin/fzf', prefix.bin + "/fzf")
+        if '+vim' in spec:
+            mkdir(prefix.plugin)
+            install('plugin/fzf.vim', prefix.plugin)