diff --git a/.gitignore b/.gitignore
index e69de29..909a6b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/HAPcryst0_1_11.tar.bz2
diff --git a/gap-pkg-hapcryst.spec b/gap-pkg-hapcryst.spec
new file mode 100644
index 0000000..f42401d
--- /dev/null
+++ b/gap-pkg-hapcryst.spec
@@ -0,0 +1,104 @@
+%global pkgname HAPcryst
+
+Name: gap-pkg-hapcryst
+Version: 0.1.11
+Release: 1%{?dist}
+Summary: Integral cohomology computations of Bieberbach groups
+
+%global upver %(tr . _ <<< %{version})
+
+License: GPLv2+
+URL: http://csserver.evansville.edu/~mroeder/HAPcryst.html
+Source0: http://csserver.evansville.edu/~mroeder/HAPcryst/%{pkgname}%{upver}.tar.bz2
+BuildArch: noarch
+
+BuildRequires: gap-devel
+BuildRequires: GAPDoc-latex
+BuildRequires: gap-pkg-aclib
+BuildRequires: gap-pkg-carat
+BuildRequires: gap-pkg-cryst
+BuildRequires: gap-pkg-crystcat
+BuildRequires: gap-pkg-hap
+BuildRequires: gap-pkg-polycyclic
+BuildRequires: gap-pkg-polymaking
+
+Requires: gap-core
+Requires: gap-pkg-aclib
+Requires: gap-pkg-cryst
+Requires: gap-pkg-crystcat
+Requires: gap-pkg-hap
+Requires: gap-pkg-polycyclic
+Requires: gap-pkg-polymaking
+
+Recommends: gap-pkg-carat
+Recommends: gap-pkg-crystcat
+
+%description
+This package is an add-on for Graham Ellis' HAP package. HAPcryst
+implements some functions for crystallographic groups (namely
+OrbitStabilizer-type methods). It is also capable of calculating free
+resolutions for Bieberbach groups.
+
+%prep
+%setup -q -n %{pkgname}
+
+%build
+export LC_ALL=C.UTF-8
+
+# Link to main GAP documentation
+ln -s %{_gap_dir}/doc ../../doc
+mkdir ../pkg
+ln -s ../%{pkgname} ../pkg/
+gap -l "$PWD/..;%{_gap_dir}" << EOF
+WriteBibXMLextFile("doc/HAPcryst_bib.xml", ParseBibFiles("doc/HAPcryst.bib") );
+Exec("sed -i 's|\\\\url{http:\\([a-zA-Z0-9/\\.~]*\\)}|http:\\1|g' doc/HAPcryst_bib.xml");
+LoadPackage("HAPcryst");;
+MakeGAPDocDoc( "doc", "HAPcryst.xml", [], "HAPcryst", "../../..", "MathJax" );
+CopyHTMLStyleFiles( "doc" );
+GAPDocManualLab( "HAPcryst" );
+EOF
+pushd lib/datatypes
+gap -l "$PWD/..;%{_gap_dir}" << EOF
+LoadPackage("HAPcryst");;
+MakeGAPDocDoc( "doc", "resolutionAccess.xml", [], "resolutionAccess", "../../../../..", "MathJax" );
+CopyHTMLStyleFiles( "doc" );
+GAPDocManualLab( "resolutionAccess" );
+EOF
+popd
+rm -fr ../../doc ../pkg
+
+%install
+mkdir -p %{buildroot}%{_gap_dir}/pkg
+cp -a ../%{pkgname} %{buildroot}%{_gap_dir}/pkg
+find -O3 %{buildroot}%{_gap_dir}/pkg/%{pkgname} -name \*~ -exec rm {} +
+rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}/{.DS_Store,CHANGES.HAPcryst,LICENSE.txt,README.HAPcryst}
+rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}/doc/*.{aux,bbl,blg,brf,idx,ilg,ind,log,out,pnr,tex,toc}
+rm -f %{buildroot}%{_gap_dir}/pkg/%{pkgname}/lib/datatypes/doc/*.{aux,bbl,blg,brf,idx,ilg,ind,log,out,pnr,tex,toc}
+
+%check
+export LC_ALL=C.UTF-8
+cd tst
+
+# Produce less chatter while running the test
+polymake --reconfigure - <<< exit;
+
+# Run the actual test; "noassert" prevents an infinite loop
+gap -l "%{buildroot}%{_gap_dir};%{_gap_dir}" << EOF 2>&1 | tee log
+LoadPackage( "HAPcryst" );
+Test( "HAPcryst.tst", rec( compareFunction := "uptowhitespace" ) : noassert );
+EOF
+grep -Fvq fail log
+rm -f log
+
+%files
+%doc CHANGES.HAPcryst README.HAPcryst
+%license LICENSE.txt
+%docdir %{_gap_dir}/pkg/%{pkgname}/doc
+%docdir %{_gap_dir}/pkg/%{pkgname}/examples
+%docdir %{_gap_dir}/pkg/%{pkgname}/htm
+%docdir %{_gap_dir}/pkg/%{pkgname}/lib/datatypes/doc
+%{_gap_dir}/pkg/%{pkgname}/
+
+%changelog
+* Fri Sep 16 2016 Jerry James - 0.1.11-1
+- Initial RPM
diff --git a/sources b/sources
index e69de29..5a8f1a9 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+dbca567919ac40224bdbddfd6560b66f HAPcryst0_1_11.tar.bz2