diff --git a/pkgs/applications/radio/rscw/default.nix b/pkgs/applications/radio/rscw/default.nix
new file mode 100644
index 000000000000..3c42b3b81330
--- /dev/null
+++ b/pkgs/applications/radio/rscw/default.nix
@@ -0,0 +1,37 @@
+{ lib
+, stdenv
+, fetchurl
+, fftw
+, gtk2
+, pkg-config
+}:
+
+stdenv.mkDerivation rec {
+  pname = "rscw";
+  version = "0.1e";
+
+  src = fetchurl {
+    url = "https://www.pa3fwm.nl/software/${pname}/${pname}-${version}.tgz";
+    sha256 = "1hxwxmqc5jinr14ya1idigqigc8qhy1vimzcwy2vmwdjay2sqik2";
+  };
+
+  setSourceRoot = "sourceRoot=`pwd`";
+
+  nativeBuildInputs = [ pkg-config ];
+  buildInputs = [ gtk2 fftw ];
+
+  installPhase = ''
+    install -D -m 0755 noisycw $out/bin/noisycw
+    install -D -m 0755 rs12tlmdec $out/bin/rs12tlmdec
+    install -D -m 0755 rscw $out/bin/rscw
+    install -D -m 0755 rscwx $out/bin/rscwx
+  '';
+
+  meta = with lib; {
+    description = "Receive CW through the soundcard";
+    homepage = "https://www.pa3fwm.nl/software/rscw/";
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ earldouglas ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index b5ca05a27c33..05dd172c550f 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -10544,6 +10544,8 @@ with pkgs;
 
   rrdtool = callPackage ../tools/misc/rrdtool { };
 
+  rscw = callPackage ../applications/radio/rscw { };
+
   rset = callPackage ../tools/admin/rset { };
 
   rshijack = callPackage ../tools/networking/rshijack { };