nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
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}