nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at devShellTools-shell 110 lines 2.5 kB view raw
1{ 2 lib, 3 python3, 4 fetchFromGitHub, 5 fetchPypi, 6 oncall, 7 nixosTests, 8 fetchpatch, 9}: 10python3.pkgs.buildPythonApplication rec { 11 pname = "oncall"; 12 # Using newer revision for Falcon 4 patch to work 13 version = "0-unstable-2025-04-15"; 14 format = "setuptools"; 15 16 src = fetchFromGitHub { 17 owner = "linkedin"; 18 repo = "oncall"; 19 #tag = "v${version}"; 20 rev = "030f5d0286b253e4300d36de1954c7b2a7490a76"; 21 hash = "sha256-Lox9aqYKsl/vg6mNwr0MoLmJQkC+kEf7AqvCCKhgo94="; 22 }; 23 24 patches = [ 25 # Add support for loading extra settings file 26 ./support_extra_config.patch 27 28 # Support storing assets in custom state dir 29 ./support_custom_state_dir.patch 30 31 # Log Python errors to uwsgi 32 ./verbose_logging.patch 33 34 # Add support for Falcon 4 35 # https://github.com/linkedin/oncall/pull/433 36 (fetchpatch { 37 url = "https://github.com/linkedin/oncall/commit/4ccf2239fb8c8aeda376f57735461174f48614f2.patch"; 38 hash = "sha256-XT7Z6NUg2zxoRtgxaM0ZbBhXtO9xvhKv30Jo1ZaEGMU="; 39 name = "falcon_4_support.patch"; 40 }) 41 ]; 42 43 dependencies = with python3.pkgs; [ 44 beaker 45 falcon 46 falcon-cors 47 gevent 48 gunicorn 49 icalendar 50 irisclient 51 jinja2 52 phonenumbers 53 pymysql 54 python-ldap 55 pytz 56 pyyaml 57 ujson 58 webassets 59 ]; 60 61 postInstall = '' 62 mkdir "$out/share" 63 cp -r configs db "$out/share/" 64 ''; 65 66 checkInputs = with python3.pkgs; [ 67 pytestCheckHook 68 pytest-mock 69 ]; 70 71 disabledTestPaths = [ 72 # Tests require running web server 73 "e2e/test_audit.py" 74 "e2e/test_events.py" 75 "e2e/test_ical.py" 76 "e2e/test_login.py" 77 "e2e/test_notification.py" 78 "e2e/test_override.py" 79 "e2e/test_pin.py" 80 "e2e/test_populate.py" 81 "e2e/test_roles.py" 82 "e2e/test_roster_suggest.py" 83 "e2e/test_rosters.py" 84 "e2e/test_schedules.py" 85 "e2e/test_services.py" 86 "e2e/test_subscription.py" 87 "e2e/test_teams.py" 88 "e2e/test_users.py" 89 ]; 90 91 pythonImportsCheck = [ 92 "oncall" 93 ]; 94 95 passthru = { 96 tests = { 97 inherit (nixosTests) oncall; 98 }; 99 pythonPath = "${python3.pkgs.makePythonPath dependencies}:${oncall}/${python3.sitePackages}"; 100 }; 101 102 meta = { 103 description = "Calendar web-app designed for scheduling and managing on-call shifts"; 104 homepage = "https://oncall.tools"; 105 changelog = "https://github.com/linkedin/oncall/blob/${src.rev}/CHANGELOG.md"; 106 license = lib.licenses.bsd2; 107 maintainers = with lib.maintainers; [ onny ]; 108 mainProgram = "oncall"; 109 }; 110}