diff --git a/pkgs/by-name/ch/chirp/package.nix b/pkgs/by-name/ch/chirp/package.nix
index 8766c92cb536..09e051757c51 100644
--- a/pkgs/by-name/ch/chirp/package.nix
+++ b/pkgs/by-name/ch/chirp/package.nix
@@ -1,41 +1,68 @@
-{ lib
-, fetchFromGitHub
-, writeShellScript
-, glib
-, gsettings-desktop-schemas
-, python3
-, unstableGitUpdater
-, wrapGAppsHook3
+{
+  lib,
+  fetchFromGitHub,
+  writeShellScript,
+  glib,
+  gsettings-desktop-schemas,
+  python3Packages,
+  unstableGitUpdater,
+  wrapGAppsHook3,
 }:
 
-python3.pkgs.buildPythonApplication rec {
+python3Packages.buildPythonApplication {
   pname = "chirp";
-  version = "0.4.0-unstable-2024-10-03";
+  version = "0.4.0-unstable-2024-11-11";
+  pyproject = true;
 
   src = fetchFromGitHub {
     owner = "kk7ds";
     repo = "chirp";
-    rev = "387d8f63535140779864e8973fbde0bad17f8512";
-    hash = "sha256-kJ2Cr2ks901GUVFscyCInsTSTM7g42NRYYxjTZsh1Lw=";
+    rev = "71812ad1214fcd1555375aeddfc5ddaf2079918b";
+    hash = "sha256-cDDv3GECxoJu0LT8mYeStFL4DeQKS638ZoweI8HbvaI=";
   };
+
+  nativeBuildInputs = [
+    wrapGAppsHook3
+  ];
+
   buildInputs = [
     glib
     gsettings-desktop-schemas
   ];
-  nativeBuildInputs = [
-    wrapGAppsHook3
-  ];
-  propagatedBuildInputs = with python3.pkgs; [
-    future
-    pyserial
-    requests
-    six
-    suds
-    wxpython
-    yattag
+
+  build-system = with python3Packages; [
+    setuptools
   ];
 
-  # "running build_ext" fails with no output
+  dependencies = with python3Packages; [
+    pyserial
+    requests
+    yattag
+    suds
+    wxpython
+  ];
+
+  nativeCheckInputs = with python3Packages; [
+    pytestCheckHook
+    pytest-xdist
+    ddt
+    pyyaml
+  ];
+
+  postPatch = ''
+    substituteInPlace chirp/locale/Makefile \
+      --replace-fail /usr/bin/find find
+  '';
+
+  preBuild = ''
+    make -C chirp/locale
+  '';
+
+  preCheck = ''
+    export HOME="$TMPDIR"
+  '';
+
+  # many upstream test failures
   doCheck = false;
 
   passthru.updateScript = unstableGitUpdater {
@@ -44,11 +71,15 @@ python3.pkgs.buildPythonApplication rec {
     '';
   };
 
-  meta = with lib; {
+  meta = {
     description = "Free, open-source tool for programming your amateur radio";
     homepage = "https://chirp.danplanet.com/";
-    license = licenses.gpl3Plus;
-    maintainers = with maintainers; [ emantor wrmilling ];
-    platforms = platforms.linux;
+    license = lib.licenses.gpl3Plus;
+    maintainers = with lib.maintainers; [
+      emantor
+      wrmilling
+      nickcao
+    ];
+    platforms = lib.platforms.linux;
   };
 }