diff --git a/tv/5pkgs/override/default.nix b/tv/5pkgs/override/default.nix
index cd7c5645b..99c1b3ec9 100644
--- a/tv/5pkgs/override/default.nix
+++ b/tv/5pkgs/override/default.nix
@@ -1,6 +1,6 @@
 with import <stockholm/lib>;
 self: super: {
-  rxvt_unicode = self.callPackage ./rxvt_unicode {
+  rxvt_unicode = self.callPackage ./rxvt_unicode.nix {
     rxvt_unicode = super.rxvt_unicode;
   };
 }
diff --git a/tv/5pkgs/override/rxvt_unicode.nix b/tv/5pkgs/override/rxvt_unicode.nix
new file mode 100644
index 000000000..da657fb20
--- /dev/null
+++ b/tv/5pkgs/override/rxvt_unicode.nix
@@ -0,0 +1,9 @@
+{ fetchurl, rxvt_unicode }:
+rxvt_unicode.overrideAttrs (old: {
+  patches = old.patches ++ [
+    (fetchurl {
+      url = https://cgit.krebsco.de/rxvt-unicode/patch/?id=15f3f94;
+      sha256 = "12vldwsds27c9l15ffc6svk9mj17jhypcz736pvpmpqbsymlkz2p";
+    })
+  ];
+})
diff --git a/tv/5pkgs/override/rxvt_unicode/default.nix b/tv/5pkgs/override/rxvt_unicode/default.nix
deleted file mode 100644
index 858a46be6..000000000
--- a/tv/5pkgs/override/rxvt_unicode/default.nix
+++ /dev/null
@@ -1,6 +0,0 @@
-{ rxvt_unicode }:
-rxvt_unicode.overrideAttrs (old: {
-  patches = old.patches ++ [
-    ./finish-running-selection.patch
-  ];
-})
diff --git a/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch b/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch
deleted file mode 100644
index a342ccf5c..000000000
--- a/tv/5pkgs/override/rxvt_unicode/finish-running-selection.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-diff --git a/src/rxvttoolkit.h b/src/rxvttoolkit.h
-index 56c9a3f..429055d 100644
---- a/src/rxvttoolkit.h
-+++ b/src/rxvttoolkit.h
-@@ -384,6 +384,7 @@ struct rxvt_selection
- {
-   rxvt_selection (rxvt_display *disp, int selnum, Time tm, Window win, Atom prop, rxvt_term *term);
-   void run ();
-+  void finish (char *data = 0, unsigned int len = 0);
-   ~rxvt_selection ();
- 
-   rxvt_term *term; // terminal to paste to, may be 0
-@@ -404,7 +405,6 @@ private:
-   void timer_cb (ev::timer &w, int revents); ev::timer timer_ev;
-   void x_cb (XEvent &xev); xevent_watcher x_ev;
- 
--  void finish (char *data = 0, unsigned int len = 0);
-   void stop ();
-   bool request (Atom target, int selnum);
-   void handle_selection (Window win, Atom prop, bool delete_prop);
-diff --git a/src/screen.C b/src/screen.C
-index 9eb375a..77e7109 100644
---- a/src/screen.C
-+++ b/src/screen.C
-@@ -2736,11 +2736,11 @@ rxvt_term::paste (char *data, unsigned int len) NOTHROW
- void
- rxvt_term::selection_request (Time tm, int selnum) NOTHROW
- {
--  if (!selection_req)
--    {
--      selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this);
--      selection_req->run ();
--    }
-+  if (selection_req)
-+    selection_req->finish ();
-+
-+  selection_req = new rxvt_selection (display, selnum, tm, vt, xa[XA_VT_SELECTION], this);
-+  selection_req->run ();
- }
- 
- /* ------------------------------------------------------------------------- */