diff --git a/packages/kapowarr/main/default.nix b/packages/kapowarr/main/default.nix
index 44a6de05..b30a02af 100644
--- a/packages/kapowarr/main/default.nix
+++ b/packages/kapowarr/main/default.nix
@@ -5,6 +5,8 @@
   fetchFromGitHub,
   python,
   # deps
+  rar,
+  # python deps
   aiohttp,
   beautifulsoup4,
   bencoding, # from overrides
@@ -19,11 +21,14 @@
   waitress,
   ...
 }: let
+  inherit (lib) getExe;
+
   pname = "kapowarr";
   version = "1.1.1";
 in
   buildPythonApplication {
     inherit pname version;
+    format = "pyproject";
 
     src = fetchFromGitHub {
       owner = "Casvt";
@@ -35,6 +40,12 @@ in
     patches = [./raise-errors.patch];
 
     postPatch = ''
+      # FIXME: THIS DOESN'T WORK
+      substituteInPlace ./backend/implementations/converters.py \
+          --replace-fail \
+              "exe = folder_path('backend', 'lib', Constants.RAR_EXECUTABLES[platform])" \
+              "exe = '${getExe rar}'"
+
       # Insert import for following substituteInPlace
       sed -i '/# -\*- coding: utf-8 -\*-/a from os import environ' ./backend/base/logging.py
 
@@ -80,30 +91,38 @@ in
     ];
 
     preBuild = ''
-      cat > setup.py << EOF
-      from setuptools import setup, find_packages, find_namespace_packages
+      sed -i "s/bs4.*/beautifulsoup4 ~= 4.12.3/" requirements.txt
 
-      with open('requirements.txt') as f:
-           install_requires = f.read().splitlines()
+      cat >> pyproject.toml << EOF
 
-      setup(
-        name='${pname}',
-        version = '${version}',
-        install_requires=install_requires,
-        packages=[
-          'frontend',
-          'backend',
-          'backend.base',
-          'backend.features',
-          'backend.implementations',
-          'backend.implementations.torrent_clients',
-          'backend.internals',
-          'backend.lib',
-        ],
-        scripts=[
-          'Kapowarr.py'
-        ],
-      )
+      [build-system]
+      build-backend = "setuptools.build_meta"
+      requires = ["setuptools"]
+
+      [project]
+      name = "${pname}"
+      version = "${version}"
+      dynamic = ["dependencies"]
+
+      [tool.setuptools]
+      script-files = ["Kapowarr.py"]
+      py-modules = [
+          "Kapowarr",
+      ]
+      packages = [
+          "frontend",
+          "frontend.static",
+          "backend",
+          "backend.base",
+          "backend.features",
+          "backend.implementations",
+          "backend.implementations.torrent_clients",
+          "backend.internals",
+          "backend.lib",
+      ]
+      package-data."frontend" = [ "templates/*" ]
+      package-data."frontend.static" = [ "css/*", "img/*", "js/*", "json/*" ]
+      dynamic."dependencies".file = [ "requirements.txt" ]
       EOF
     '';
 
@@ -134,9 +153,6 @@ in
     postFixup = ''
       # I prefer a clean name for the executable
       mv $out/bin/Kapowarr.py $out/bin/${pname}
-
-      # Add missing resources that Kapowarr uses at runtime in sitePackages
-      cp -r ./frontend/{static,templates} "$out/${python.sitePackages}/frontend"
     '';
 
     meta = {