diff --git a/pkgs/development/python-modules/pyobjc-core/default.nix b/pkgs/development/python-modules/pyobjc-core/default.nix new file mode 100644 index 000000000000..5dd7959940ca --- /dev/null +++ b/pkgs/development/python-modules/pyobjc-core/default.nix @@ -0,0 +1,61 @@ +{ + buildPythonPackage, + darwin, + fetchFromGitHub, + lib, + setuptools, +}: + +buildPythonPackage rec { + pname = "pyobjc-core"; + version = "11.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ronaldoussoren"; + repo = "pyobjc"; + tag = "v${version}"; + hash = "sha256-RhB0Ht6vyDxYwDGS+A9HZL9ySIjWlhdB4S+gHxvQQBg="; + }; + + sourceRoot = "source/pyobjc-core"; + + build-system = [ setuptools ]; + + buildInputs = [ + darwin.DarwinTools + darwin.libffi + ]; + + nativeBuildInputs = [ + darwin.DarwinTools # sw_vers + ]; + + # See https://github.com/ronaldoussoren/pyobjc/pull/641. Unfortunately, we + # cannot just pull that diff with fetchpatch due to https://discourse.nixos.org/t/how-to-apply-patches-with-sourceroot/59727. + postPatch = '' + for file in Modules/objc/test/*.m; do + substituteInPlace "$file" --replace "[[clang::suppress]]" "" + done + + substituteInPlace setup.py \ + --replace-fail "-buildversion" "-buildVersion" \ + --replace-fail "-productversion" "-productVersion" + ''; + + env.NIX_CFLAGS_COMPILE = toString [ + "-I${darwin.libffi.dev}/include" + "-Wno-error=cast-function-type-mismatch" + "-Wno-error=unused-command-line-argument" + ]; + + pythonImportsCheck = [ "objc" ]; + + meta = with lib; { + description = "Python <-> Objective-C bridge"; + homepage = "https://github.com/ronaldoussoren/pyobjc"; + license = licenses.mit; + platforms = platforms.darwin; + maintainers = with maintainers; [ samuela ]; + }; +} diff --git a/pkgs/development/python-modules/pyobjc-framework-Cocoa/default.nix b/pkgs/development/python-modules/pyobjc-framework-Cocoa/default.nix new file mode 100644 index 000000000000..004757337266 --- /dev/null +++ b/pkgs/development/python-modules/pyobjc-framework-Cocoa/default.nix @@ -0,0 +1,59 @@ +{ + buildPythonPackage, + darwin, + fetchFromGitHub, + lib, + pyobjc-core, + setuptools, +}: + +buildPythonPackage rec { + pname = "pyobjc-framework-Cocoa"; + version = "11.0"; + pyproject = true; + + src = fetchFromGitHub { + owner = "ronaldoussoren"; + repo = "pyobjc"; + tag = "v${version}"; + hash = "sha256-RhB0Ht6vyDxYwDGS+A9HZL9ySIjWlhdB4S+gHxvQQBg="; + }; + + sourceRoot = "source/pyobjc-framework-Cocoa"; + + build-system = [ setuptools ]; + + buildInputs = [ + darwin.libffi + darwin.DarwinTools + ]; + + nativeBuildInputs = [ + darwin.DarwinTools # sw_vers + ]; + + # See https://github.com/ronaldoussoren/pyobjc/pull/641. Unfortunately, we + # cannot just pull that diff with fetchpatch due to https://discourse.nixos.org/t/how-to-apply-patches-with-sourceroot/59727. + postPatch = '' + substituteInPlace pyobjc_setup.py \ + --replace-fail "-buildversion" "-buildVersion" \ + --replace-fail "-productversion" "-productVersion" + ''; + + dependencies = [ pyobjc-core ]; + + env.NIX_CFLAGS_COMPILE = toString [ + "-I${darwin.libffi.dev}/include" + "-Wno-error=unused-command-line-argument" + ]; + + pythonImportsCheck = [ "Cocoa" ]; + + meta = with lib; { + description = "PyObjC wrappers for the Cocoa frameworks on macOS"; + homepage = "https://github.com/ronaldoussoren/pyobjc"; + license = licenses.mit; + platforms = platforms.darwin; + maintainers = with maintainers; [ samuela ]; + }; +} diff --git a/pkgs/development/python-modules/rumps/default.nix b/pkgs/development/python-modules/rumps/default.nix new file mode 100644 index 000000000000..1fb1729de358 --- /dev/null +++ b/pkgs/development/python-modules/rumps/default.nix @@ -0,0 +1,33 @@ +{ + buildPythonPackage, + fetchFromGitHub, + lib, + pyobjc-framework-Cocoa, + setuptools, +}: + +buildPythonPackage rec { + pname = "rumps"; + version = "unstable-2025-02-02"; + pyproject = true; + + src = fetchFromGitHub { + owner = "jaredks"; + repo = "rumps"; + rev = "8730e7cff5768dfabecff478c0d5e3688862c1c6"; + hash = "sha256-oNJBpRaCGyOKCgBueRx4YhpNW1OnbIEWEEvlGfyoxUA="; + }; + + build-system = [ setuptools ]; + dependencies = [ pyobjc-framework-Cocoa ]; + + pythonImportsCheck = [ "rumps" ]; + + meta = with lib; { + description = "Ridiculously Uncomplicated macOS Python Statusbar apps"; + homepage = "https://github.com/jaredks/rumps"; + license = licenses.bsd2; + platforms = platforms.darwin; + maintainers = with maintainers; [ samuela ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index aa133fa125bc..09b9da61a804 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -12383,6 +12383,10 @@ self: super: with self; { pyobihai = callPackage ../development/python-modules/pyobihai { }; + pyobjc-core = callPackage ../development/python-modules/pyobjc-core { }; + + pyobjc-framework-Cocoa = callPackage ../development/python-modules/pyobjc-framework-Cocoa { }; + pyocd = callPackage ../development/python-modules/pyocd { }; pyocd-pemicro = callPackage ../development/python-modules/pyocd-pemicro { }; @@ -14507,6 +14511,8 @@ self: super: with self; { rules = callPackage ../development/python-modules/rules { }; + rumps = callPackage ../development/python-modules/rumps { }; + runs = callPackage ../development/python-modules/runs { }; runstats = callPackage ../development/python-modules/runstats { };