diff --git a/.drone.yml b/.drone.yml
index b59e87f..ee73e00 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -3,15 +3,20 @@ type: docker
 name: default
 
 steps:
-  - name: Build polycat
+  - name: Build polycat fedora package
     image: fedora
     commands:
-      - '/drone/src/compilation.sh'
+      - '/drone/src/run.sh'
     volumes:
       - name: program-archives
         path: /compiled
+      - name: fedora-repo
+        path: /repo
 
 volumes:
   - name: program-archives
     host:
-      path: /mnt/user/files/repos/archives
+      path: /mnt/user/files/repos/archives/
+  - name: fedora-repo
+    host:
+      path: /mnt/user/files/repos/fedora/x86_64/
diff --git a/README.md b/README.md
index fdc92b1..54cf303 100644
--- a/README.md
+++ b/README.md
@@ -1,24 +1 @@
-# Polycat build
-
-- Builds polycat and places it in `$COMPILED_DIR/polycat/polycat.tar.zst`
-- Version file at `$COMPILED_DIR/polycat/version`
-
-## Archive details
-
-```
-.
-├── polycat
-└── polycat.ttf
-```
-
-Recommended:
-
-| File               | Location                                  | Permissions |
-| ------------------ | ----------------------------------------- | ----------- |
-| `./polycat`        | `/usr/bin/polycat`                        | 755         |
-| `./polycat.ttf`    | `/usr/share/fonts/polycat/polycat.ttf`    | 644         |
-| `./polycat-config` | `/usr/local/share/polycat/polycat-config` | 644         |
-
----
-
-Note: Builds with Fedora because Debian's gcc is out of date.
+# Polycat (fedora)
diff --git a/compilation.sh b/compilation.sh
deleted file mode 100755
index 4461913..0000000
--- a/compilation.sh
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-# prep
-dnf install jq -y
-workdir=$(mktemp -d)
-built_dir=${COMPILED_DIR:-/compiled}/polycat
-mkdir -p $built_dir
-version_file=$built_dir/version
-touch $version_file
-
-# check whether it's up-to-date
-# check version
-version=$(curl 'https://api.github.com/repos/2IMT/polycat/releases/latest' | jq '.tag_name' -r | tr -d 'v')
-if grep -q $version $version_file; then
-    echo "already up to date, exiting"
-    exit
-fi
-
-# get build deps
-dnf install make g++ -y
-# get source
-cd $workdir
-curl -LO $(curl 'https://api.github.com/repos/2IMT/polycat/releases/latest' | jq '.assets' | jq '.[0].browser_download_url' -r)
-tar -xzf polycat-$version.tar.gz
-mv ./polycat-$version ./polycat
-
-# compilation
-cd $workdir/polycat
-make
-
-# build .tar.zst archive
-cd $workdir
-mkdir ./polycat-built
-mv ./polycat/build/polycat ./polycat-built/
-mv ./polycat/res/polycat.ttf ./polycat-built/
-mv ./polycat/res/polycat-config ./polycat-built/
-mkdir -p ${COMPILED_DIR:-/compiled}/polycat/
-cd $workdir/polycat-built/
-tar --zstd -cf $built_dir/polycat.tar.zst .
-echo $version >$version_file
-
-echo "polycat updated to $version"
diff --git a/polycat.spec b/polycat.spec
new file mode 100644
index 0000000..75a7d0c
--- /dev/null
+++ b/polycat.spec
@@ -0,0 +1,42 @@
+Name:           polycat
+Version:        r93.0c836d5
+Release:        %autorelease
+Summary:        runcat module for polybar (or waybar)
+
+License:        MIT
+URL:            https://github.com/2IMT/polycat
+
+BuildRequires:  tar zstd
+Requires:       glibc
+
+%description
+A runcat module for polybar (or waybar) written in C++ 
+
+%prep
+mkdir ./polycat/
+cd ./polycat/
+tar --zstd -xf ${COMPILED_DIR:-/compiled}/polycat/polycat.tar.zst
+
+%install
+cd ./polycat/
+mkdir -p %{buildroot}%{_bindir}
+install -Dm755 ./polycat %{buildroot}%{_bindir}/polycat
+mkdir -p %{buildroot}%{datadir}/fonts/polycat/
+install -Dm644 ./polycat.ttf %{buildroot}%{_datadir}/fonts/polycat/polycat.ttf
+mkdir -p %{buildroot}/usr/local/share/polycat/
+install -Dm644 ./polycat-config %{buildroot}/usr/local/share/polycat/polycat-config
+
+%files
+%{_bindir}/polycat
+%{_datadir}/fonts/polycat/polycat.ttf
+/usr/local/share/polycat/polycat-config
+
+%changelog
+* Mon May 26 2025 askiiart <dev@askiiart.net>
+- fix copy-paste error for polycat-config
+
+* Mon May 26 2025 askiiart <dev@askiiart.net>
+- Update to 2.0
+
+* Thu Mar 6 2025 askiiart <dev@askiiart.net>
+- Add zstd (previous changes were not listed here)
diff --git a/run.sh b/run.sh
new file mode 100755
index 0000000..a87a9bc
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,41 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+built_dir=${COMPILED_DIR:-/compiled}/polycat
+version=$(cat $built_dir/version)
+repo_dir=${REPO_DIR:-/repo}
+
+# skip if already up-to-date
+# TODO: use the repo instead and check the version with dnf
+# yeah this is bad; see also the polycat-aaaaaa thing below
+touch $repo_dir/polycat-tmp
+if $(ls $repo_dir/polycat-* | grep -q "$version"); then
+    rm $repo_dir/polycat-tmp
+    echo "package is already up to date, exiting"
+    exit
+fi
+rm $repo_dir/polycat-tmp
+
+# prep
+dnf install fedora-packager rpmdevtools createrepo_c -y
+rpmdev-setuptree
+
+# update spec file
+sed -i "s/Version:.*/Version:        $version/g" polycat.spec
+
+# build package and move to the repo
+rpmbuild -bb polycat.spec
+mv ~/rpmbuild/RPMS/x86_64/polycat-$version-* $repo_dir/
+
+# remove old versions
+cd $repo_dir
+# this is the easiest way to make sure it doesn't just fail because no polycat-* exists
+# (which only happens on first run)
+touch polycat-0.rpm
+rm $(ls polycat-*.rpm | sort --version-sort | sed '$d')
+rm polycat-0.rpm || true
+
+# update repo
+createrepo_c .
+
+echo "package is at $(ls $repo_dir/polycat-*.rpm)"