1{
2 lib,
3 buildPythonPackage,
4 fetchFromGitHub,
5 apispec,
6 boto3,
7 build,
8 cachetools,
9 click,
10 cryptography,
11 localstack-client,
12 localstack-ext,
13 plux,
14 psutil,
15 python-dotenv,
16 pyyaml,
17 packaging,
18 requests,
19 rich,
20 semver,
21 setuptools,
22 setuptools-scm,
23 tailer,
24}:
25
26buildPythonPackage rec {
27 pname = "localstack";
28 version = "3.7.2";
29 pyproject = true;
30
31 src = fetchFromGitHub {
32 owner = "localstack";
33 repo = "localstack";
34 rev = "refs/tags/v${version}";
35 hash = "sha256-8xdP/qpmfqmXDt1gNhzkAGlBR6dJYznKr9+/Un6N7mA=";
36 };
37
38 build-system = [
39 setuptools
40 setuptools-scm
41 ];
42
43 dependencies = [
44 apispec
45 boto3
46 build
47 cachetools
48 click
49 cryptography
50 localstack-client
51 localstack-ext
52 plux
53 psutil
54 python-dotenv
55 pyyaml
56 packaging
57 requests
58 rich
59 semver
60 tailer
61 ];
62
63 pythonRelaxDeps = [ "dill" ];
64
65 pythonImportsCheck = [ "localstack" ];
66
67 # Test suite requires boto, which has been removed from nixpkgs
68 # Just do minimal test, buildPythonPackage maps checkPhase
69 # to installCheckPhase, so we can test that entrypoint point works.
70 checkPhase = ''
71 runHook preCheck
72
73 export HOME=$(mktemp -d)
74 $out/bin/localstack --version
75
76 runHook postCheck
77 '';
78
79 meta = with lib; {
80 description = "Fully functional local Cloud stack";
81 homepage = "https://github.com/localstack/localstack";
82 license = licenses.asl20;
83 maintainers = [ ];
84 mainProgram = "localstack";
85 };
86}