diff --git a/homes/aarch64-darwin/evanreichard@mac-va-mbp-work/default.nix b/homes/aarch64-darwin/evanreichard@mac-va-mbp-work/default.nix index 4cf2c6f..16e45d7 100755 --- a/homes/aarch64-darwin/evanreichard@mac-va-mbp-work/default.nix +++ b/homes/aarch64-darwin/evanreichard@mac-va-mbp-work/default.nix @@ -57,6 +57,7 @@ in # colima docker keycastr + reichard.slack-cli _1password-cli ]; } diff --git a/packages/slack-cli/default.nix b/packages/slack-cli/default.nix new file mode 100644 index 0000000..0db8015 --- /dev/null +++ b/packages/slack-cli/default.nix @@ -0,0 +1,90 @@ +{ lib +, fetchgit +, fetchurl +, python312 +, snappy +, +}: + +let + pythonPackages = python312.pkgs; + + # ── Python Dependency Overrides ────────────────────────────── + # + # dfindexeddb pins python-snappy==0.6.1 and zstd==1.5.5.1. + # nixpkgs ships newer versions, so we build the exact pins + # from PyPI source tarballs. + + python-snappy = pythonPackages.buildPythonPackage rec { + pname = "python-snappy"; + version = "0.6.1"; + format = "setuptools"; + + src = fetchurl { + url = "https://files.pythonhosted.org/packages/98/7a/44a24bad98335b2c72e4cadcdecf79f50197d1bab9f22f863a274f104b96/python-snappy-0.6.1.tar.gz"; + hash = "sha256-tqEHqwYgasxTWdTFYyvZsi1EhwKnmzFpsMYuD7gIuyo="; + }; + + buildInputs = [ snappy ]; + + doCheck = false; + }; + + zstd-python = pythonPackages.buildPythonPackage rec { + pname = "zstd"; + version = "1.5.5.1"; + format = "setuptools"; + + src = fetchurl { + url = "https://files.pythonhosted.org/packages/source/z/zstd/zstd-1.5.5.1.tar.gz"; + hash = "sha256-HvmAq/Dh4HKwKNLXbvlbR2YyZRyWIlzzC2Gcbu9iVnI="; + }; + + doCheck = false; + }; + + dfindexeddb = pythonPackages.buildPythonPackage rec { + pname = "dfindexeddb"; + version = "20260210"; + format = "setuptools"; + + src = fetchurl { + url = "https://files.pythonhosted.org/packages/source/d/dfindexeddb/dfindexeddb-20260210.tar.gz"; + hash = "sha256-4ahEe4Lpoh0oqGR6kI7J1HEGfvKVEzu3qQ+3ykgFd/Y="; + }; + + propagatedBuildInputs = [ + python-snappy + zstd-python + ]; + + doCheck = false; + }; + +in +pythonPackages.buildPythonApplication { + pname = "slack-cli"; + version = "0.1.0"; + format = "pyproject"; + + src = fetchgit { + url = "https://gitea.va.reichard.io/evan/slack-cli.git"; + rev = "f49c944efe96ee9379f519e93100b4601b6b1afa"; + hash = "sha256-XIifH3PlS9ZPlqZ+h2jGnvEOMciuPmR57CppMVSVL6M="; + }; + + build-system = [ pythonPackages.setuptools ]; + + dependencies = [ dfindexeddb ]; + + doCheck = false; + + meta = { + description = "Read Slack messages from local Chromium IndexedDB cache"; + homepage = "https://gitea.va.reichard.io/evan/slack-cli"; + license = lib.licenses.mit; + maintainers = with lib.maintainers; [ evanreichard ]; + mainProgram = "slack-cli"; + platforms = lib.platforms.darwin; + }; +}