diff --git a/.drone.yml b/.drone.yml
index 8ce6da2..70e6deb 100644
--- a/.drone.yml
+++ b/.drone.yml
@@ -3,15 +3,20 @@ type: docker
 name: default
 
 steps:
-  - name: Build <PLACEHOLDER>
-    image: debian
+  - name: Build wluma 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 7640f54..9103803 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1 @@
-# [Placeholder](https://github.com/PLACEHOLDER_AUTHOR/PLACEHOLDER_REPO) (build)
-
-```
-.
-├── 99-filename (/etc/udev/rules.d/)
-└── filename.service (/usr/lib/systemd/user/)
-```
-
----
-
-Install deps:
-
-- libc
-
-Build deps:
-
-- gcc
+# [wluma](https://github.com/maximbaz/wluma) (fedora)
diff --git a/compilation.sh b/compilation.sh
deleted file mode 100755
index 0aa6463..0000000
--- a/compilation.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-program_name="<PLACEHOLDER>"
-SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
-
-### prep
-workdir=$(mktemp -d)
-built_dir=${COMPILED_DIR:-/compiled}/$program_name
-mkdir -p $built_dir
-apt update && apt install curl jq -y
-
-### check whether it's up-to-date
-version_file=$built_dir/version
-touch $version_file
-version=$(curl 'https://api.github.com/repos/<PLACEHOLDER_AUTHOR>/<PLACEHOLDER_REPO>/releases/latest' | jq '.tag_name' -r)
-if grep -q $version $version_file; then
-    echo "already up to date, exiting"
-    exit
-fi
-
-### get source and build
-# get build deps
-apt install <PLACEHOLDER >-y # zstd is for archive creation
-
-cd $workdir
-curl -L $(curl 'https://api.github.com/repos/<PLACEHOLDER_AUTHOR>/<PLACEHOLDER_REPO>/releases/latest' | jq '.tarball_url' -r) -o $program_name-$version.tar.gz
-tar -xzf $program_name-$version.tar.gz
-src_dir=$(find $(pwd) -name "maximbaz-wluma*")
-cd $src_dir
-cargo install --path .
-
-### create .tar.zst archive
-# prep
-cd $src_dir
-$archive_dir=$(mktemp -d)
-cp $(which wluma) $archive_dir
-cp <PLACEHOLDER >$archive_dir
-
-# actually create it and finish up
-cd $archive_dir
-tar --zstd -cf $built_dir/$program_name.tar.zst .
-echo $version >$version_file
-
-echo "$program_name updated to $version"
diff --git a/run.sh b/run.sh
new file mode 100755
index 0000000..b4d6659
--- /dev/null
+++ b/run.sh
@@ -0,0 +1,43 @@
+#!/usr/bin/env bash
+set -euo pipefail
+
+program_name="wluma"
+
+built_dir=${COMPILED_DIR:-/compiled}/$program_name
+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 wluma-aaaaaa thing below
+touch $repo_dir/$program_name-tmp
+if $(ls $repo_dir/$program_name-* | grep -q "$version"); then
+    rm $repo_dir/$program_name-tmp
+    echo "package is already up to date, exiting"
+    exit
+fi
+rm $repo_dir/$program_name-tmp
+
+# prep
+dnf install fedora-packager rpmdevtools createrepo_c -y
+rpmdev-setuptree
+
+sed -i "s/Version:.*/Version:        $version/g" $program_name.spec
+
+# build package and move to the repo
+rpmbuild -bb $program_name.spec
+mv ~/rpmbuild/RPMS/x86_64/$program_name-$version-* $repo_dir/
+
+# remove old versions
+cd $repo_dir
+# this is the easiest way to make sure it doesn't just fail because no wluma-* exists
+# (which only happens on first run)
+touch $program_name-0.rpm
+rm $(ls $program_name-*.rpm | sort --version-sort | sed '$d')
+rm $program_name-0.rpm || true
+
+# update repo
+createrepo_c .
+
+cd $repo_dir
+echo "package is at $repo_dir/$(ls $program_name-*.rpm)"
diff --git a/wluma.spec b/wluma.spec
new file mode 100644
index 0000000..13f11c5
--- /dev/null
+++ b/wluma.spec
@@ -0,0 +1,46 @@
+Name:           wluma
+Version:        __PLACEHOLDER__
+Release:        %autorelease
+Summary:        runcat module for polybar (or waybar)
+
+License:        ISC
+URL:            https://github.com/maximbaz/wluma
+
+BuildRequires:  tar zstd
+Requires:       glibc v4l-utils systemd-libs vulkan-loader
+Recommends:     dbus
+
+%description
+Automatic brightness adjustment based on screen contents and ALS 
+
+%prep
+mkdir ./wluma
+cd ./wluma/
+tar --zstd -xf ${COMPILED_DIR:-/compiled}/wluma/wluma.tar.zst
+
+%install
+cd ./wluma/
+mkdir -p %{buildroot}%{_bindir}
+cp ./wluma %{buildroot}%{_bindir}/
+mkdir -p %{buildroot}/usr/lib/systemd/user/
+cp ./wluma.service %{buildroot}/usr/lib/systemd/user/
+mkdir -p %{buildroot}/usr/lib/udev/rules.d/
+cp ./90-wluma-backlight.rules %{buildroot}/usr/lib/udev/rules.d/
+mkdir -p %{buildroot}%{_datadir}/wluma/examples/
+cp ./config.toml %{buildroot}%{_datadir}/wluma/examples/
+mkdir -p %{buildroot}%{_docdir}/wluma
+cp ./README.md %{buildroot}%{_docdir}/wluma/
+mkdir -p %{buildroot}%{_mandir}/man7
+cp ./wluma.7.gz %{buildroot}%{_mandir}/man7/
+
+%files
+%{_bindir}/wluma
+/usr/lib/systemd/user/wluma.service
+/usr/lib/udev/rules.d/90-wluma-backlight.rules
+%{_datadir}/wluma/examples/config.toml
+%{_docdir}/wluma/README.md
+%{_mandir}/man7/wluma.7.gz
+
+%changelog
+* Tue Mar 25 2025 askiiart <rpm@askiiart.net>
+- Initial version
\ No newline at end of file