From e1489edcf0e2e385695807f2d878ae1f102e8475 Mon Sep 17 00:00:00 2001 From: Oscar Molnar Date: Mon, 6 Apr 2026 10:44:53 +0100 Subject: [PATCH] daktari: init at 0.0.319 --- pkgs/by-name/da/daktari/optional-pyclip.patch | 33 +++++++++ pkgs/by-name/da/daktari/package.nix | 72 +++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 pkgs/by-name/da/daktari/optional-pyclip.patch create mode 100644 pkgs/by-name/da/daktari/package.nix diff --git a/pkgs/by-name/da/daktari/optional-pyclip.patch b/pkgs/by-name/da/daktari/optional-pyclip.patch new file mode 100644 index 000000000000..47bbb33d56c4 --- /dev/null +++ b/pkgs/by-name/da/daktari/optional-pyclip.patch @@ -0,0 +1,33 @@ +diff --git a/daktari/result_printer.py b/daktari/result_printer.py +--- a/daktari/result_printer.py ++++ b/daktari/result_printer.py +@@ -1,7 +1,11 @@ + import re + import textwrap +-import pyclip + from typing import Callable, Dict, Optional + ++try: ++ import pyclip ++except ImportError: ++ pyclip = None ++ + from colors import green, red, underline, yellow + + from daktari.check import CheckResult, CheckStatus +@@ -58,10 +62,13 @@ def copy_to_clipboard(suggestion: Optional[str]): + command_regex = re.compile(r"\(.*?)\<\/cmd\>") + results = command_regex.findall(suggestion) + if len(results) > 0: +- try: +- pyclip.copy("\n".join(results)) ++ if pyclip is not None: ++ try: ++ pyclip.copy("\n".join(results)) ++ print("ⓘ Command copied to clipboard") ++ except pyclip.base.ClipboardSetupException: + print("ⓘ Clipboard not available") ++ else: ++ print("ⓘ Clipboard not available") + return + print("ⓘ No command available to copy to clipboard") diff --git a/pkgs/by-name/da/daktari/package.nix b/pkgs/by-name/da/daktari/package.nix new file mode 100644 index 000000000000..0079222b76d2 --- /dev/null +++ b/pkgs/by-name/da/daktari/package.nix @@ -0,0 +1,72 @@ +{ + lib, + stdenv, + python3Packages, + fetchFromGitHub, +}: + +python3Packages.buildPythonApplication (finalAttrs: { + pname = "daktari"; + version = "0.0.319"; + pyproject = true; + __structuredAttrs = true; + + src = fetchFromGitHub { + owner = "genio-learn"; + repo = "daktari"; + tag = "v${finalAttrs.version}"; + hash = "sha256-NxTDyul1BESr/fBow9hwmTLr6jcl4p5RlIKNzFbaJvc="; + }; + + patches = [ ./optional-pyclip.patch ]; + + pythonRelaxDeps = true; + + postPatch = lib.optionalString stdenv.hostPlatform.isDarwin '' + # pyclip is broken on macOS in nixpkgs + substituteInPlace requirements.txt --replace-fail "pyclip==0.7.0" "" + ''; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = + with python3Packages; + [ + ansicolors + distro + pyfiglet + importlib-resources + packaging + requests + responses + semver + python-hosts + pyyaml + types-pyyaml + requests-unixsocket + dpath + pyopenssl + types-pyopenssl + urllib3 + ] + ++ lib.optionals stdenv.hostPlatform.isLinux [ + pyclip + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + pyobjc-core + pyobjc-framework-Cocoa + ]; + + pythonImportsCheck = [ "daktari" ]; + + meta = { + description = "Tool to assist in setting up and maintaining developer environments"; + homepage = "https://github.com/genio-learn/daktari"; + changelog = "https://github.com/genio-learn/daktari/releases/tag/v${finalAttrs.version}"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ tymscar ]; + mainProgram = "daktari"; + }; +})