···6name: Vet nixpkgs
78on:
0009 pull_request_target:
10 # This workflow depends on the base branch of the PR, but changing the base branch is not included in the default trigger events, which would be `opened`, `synchronize` or `reopened`.
11 # Instead it causes an `edited` event, so we need to add it explicitly here.
···6name: Vet nixpkgs
78on:
9+ pull_request:
10+ paths:
11+ - .github/workflows/nixpkgs-vet.yml
12 pull_request_target:
13 # This workflow depends on the base branch of the PR, but changing the base branch is not included in the default trigger events, which would be `opened`, `synchronize` or `reopened`.
14 # Instead it causes an `edited` event, so we need to add it explicitly here.
+3
.github/workflows/no-channel.yml
···1name: "No channel PR"
23on:
0004 pull_request_target:
5 # Re-run should be triggered when the base branch is updated, instead of silently failing
6 types: [opened, synchronize, reopened, edited]
···1name: "No channel PR"
23on:
4+ pull_request:
5+ paths:
6+ - .github/workflows/no-channel.yml
7 pull_request_target:
8 # Re-run should be triggered when the base branch is updated, instead of silently failing
9 types: [opened, synchronize, reopened, edited]
···6869- [vwifi](https://github.com/Raizo62/vwifi), a Wi-Fi simulator daemon leveraging the `mac80211_hwsim` and `vhost_vsock` kernel modules for efficient simulation of multi-node Wi-Fi networks. Available as {option}`services.vwifi`.
700071- [Homer](https://homer-demo.netlify.app/), a very simple static homepage for your server. Available as [services.homer](options.html#opt-services.homer).
7273- [Ghidra](https://ghidra-sre.org/), a software reverse engineering (SRE) suite of tools. Available as [programs.ghidra](options.html#opt-programs.ghidra).
···6869- [vwifi](https://github.com/Raizo62/vwifi), a Wi-Fi simulator daemon leveraging the `mac80211_hwsim` and `vhost_vsock` kernel modules for efficient simulation of multi-node Wi-Fi networks. Available as {option}`services.vwifi`.
7071+- [Oncall](https://oncall.tools), a web-based calendar tool designed for scheduling and managing on-call shifts. Available as [services.oncall](options.html#opt-services.oncall).
72+73- [Homer](https://homer-demo.netlify.app/), a very simple static homepage for your server. Available as [services.homer](options.html#opt-services.homer).
7475- [Ghidra](https://ghidra-sre.org/), a software reverse engineering (SRE) suite of tools. Available as [programs.ghidra](options.html#opt-programs.ghidra).
+7-7
nixos/modules/image/repart.nix
···160 # Generated with `uuidgen`. Random but fixed to improve reproducibility.
161 default = "0867da16-f251-457d-a9e8-c31f9a3c220b";
162 description = ''
163- A UUID to use as a seed. You can set this to `null` to explicitly
164 randomize the partition UUIDs.
165 '';
166 };
···169 type = lib.types.bool;
170 default = false;
171 description = ''
172- Enables generation of split artifacts from partitions. If enabled, for
173 each partition with SplitName= set, a separate output file containing
174 just the contents of that partition is generated.
175 '';
···180 default = 512;
181 example = lib.literalExpression "4096";
182 description = ''
183- The sector size of the disk image produced by systemd-repart. This
184 value must be a power of 2 between 512 and 4096.
185 '';
186 };
···199 type = with lib.types; attrsOf (submodule partitionOptions);
200 default = { };
201 example = lib.literalExpression ''
202- {
203 "10-esp" = {
204 contents = {
205 "/EFI/BOOT/BOOTX64.EFI".source =
···221 };
222 '';
223 description = ''
224- Specify partitions as a set of the names of the partitions with their
225 configuration as the key.
226 '';
227 };
···230 type = with lib.types; attrsOf (listOf str);
231 default = { };
232 example = lib.literalExpression ''
233- {
234 vfat = [ "-S 512" "-c" ];
235 }
236 '';
237 description = ''
238- Specify extra options for created file systems. The specified options
239 are converted to individual environment variables of the format
240 `SYSTEMD_REPART_MKFS_OPTIONS_<FSTYPE>`.
241
···160 # Generated with `uuidgen`. Random but fixed to improve reproducibility.
161 default = "0867da16-f251-457d-a9e8-c31f9a3c220b";
162 description = ''
163+ A UUID to use as a seed. You can set this to `null` to explicitly
164 randomize the partition UUIDs.
165 '';
166 };
···169 type = lib.types.bool;
170 default = false;
171 description = ''
172+ Enables generation of split artifacts from partitions. If enabled, for
173 each partition with SplitName= set, a separate output file containing
174 just the contents of that partition is generated.
175 '';
···180 default = 512;
181 example = lib.literalExpression "4096";
182 description = ''
183+ The sector size of the disk image produced by systemd-repart. This
184 value must be a power of 2 between 512 and 4096.
185 '';
186 };
···199 type = with lib.types; attrsOf (submodule partitionOptions);
200 default = { };
201 example = lib.literalExpression ''
202+ {
203 "10-esp" = {
204 contents = {
205 "/EFI/BOOT/BOOTX64.EFI".source =
···221 };
222 '';
223 description = ''
224+ Specify partitions as a set of the names of the partitions with their
225 configuration as the key.
226 '';
227 };
···230 type = with lib.types; attrsOf (listOf str);
231 default = { };
232 example = lib.literalExpression ''
233+ {
234 vfat = [ "-S 512" "-c" ];
235 }
236 '';
237 description = ''
238+ Specify extra options for created file systems. The specified options
239 are converted to individual environment variables of the format
240 `SYSTEMD_REPART_MKFS_OPTIONS_<FSTYPE>`.
241
···1+{
2+ config,
3+ lib,
4+ pkgs,
5+ ...
6+}:
7+let
8+9+ cfg = config.services.oncall;
10+ settingsFormat = pkgs.formats.yaml { };
11+ configFile = settingsFormat.generate "oncall_extra_settings.yaml" cfg.settings;
12+13+in
14+{
15+ options.services.oncall = {
16+17+ enable = lib.mkEnableOption "Oncall web app";
18+19+ package = lib.mkPackageOption pkgs "oncall" { };
20+21+ database.createLocally = lib.mkEnableOption "Create the database and database user locally." // {
22+ default = true;
23+ };
24+25+ settings = lib.mkOption {
26+ type = lib.types.submodule {
27+ freeformType = settingsFormat.type;
28+ options = {
29+ oncall_host = lib.mkOption {
30+ type = lib.types.str;
31+ default = "localhost";
32+ description = "FQDN for the Oncall instance.";
33+ };
34+ db.conn = {
35+ kwargs = {
36+ user = lib.mkOption {
37+ type = lib.types.str;
38+ default = "oncall";
39+ description = "Database user.";
40+ };
41+ host = lib.mkOption {
42+ type = lib.types.str;
43+ default = "localhost";
44+ description = "Database host.";
45+ };
46+ database = lib.mkOption {
47+ type = lib.types.str;
48+ default = "oncall";
49+ description = "Database name.";
50+ };
51+ };
52+ str = lib.mkOption {
53+ type = lib.types.str;
54+ default = "%(scheme)s://%(user)s@%(host)s:%(port)s/%(database)s?charset=%(charset)s&unix_socket=/run/mysqld/mysqld.sock";
55+ description = ''
56+ Database connection scheme. The default specifies the
57+ connection through a local socket.
58+ '';
59+ };
60+ require_auth = lib.mkOption {
61+ type = lib.types.bool;
62+ default = true;
63+ description = ''
64+ Whether authentication is required to access the web app.
65+ '';
66+ };
67+ };
68+ };
69+ };
70+ default = { };
71+ description = ''
72+ Extra configuration options to append or override.
73+ For available and default option values see
74+ [upstream configuration file](https://github.com/linkedin/oncall/blob/master/configs/config.yaml)
75+ and the administration part in the
76+ [offical documentation](https://oncall.tools/docs/admin_guide.html).
77+ '';
78+ };
79+80+ secretFile = lib.mkOption {
81+ type = lib.types.pathWith {
82+ inStore = false;
83+ absolute = true;
84+ };
85+ example = "/run/keys/oncall-dbpassword";
86+ description = ''
87+ A YAML file containing secrets such as database or user passwords.
88+ Some variables that can be considered secrets are:
89+90+ - db.conn.kwargs.password:
91+ Password used to authenticate to the database.
92+93+ - session.encrypt_key:
94+ Key for encrypting/signing session cookies.
95+ Change to random long values in production.
96+97+ - session.sign_key:
98+ Key for encrypting/signing session cookies.
99+ Change to random long values in production.
100+ '';
101+ };
102+103+ };
104+105+ config = lib.mkIf cfg.enable {
106+107+ # Disable debug, only needed for development
108+ services.oncall.settings = lib.mkMerge [
109+ ({
110+ debug = lib.mkDefault false;
111+ auth.debug = lib.mkDefault false;
112+ })
113+ ];
114+115+ services.uwsgi = {
116+ enable = true;
117+ plugins = [ "python3" ];
118+ user = "oncall";
119+ instance = {
120+ type = "emperor";
121+ vassals = {
122+ oncall = {
123+ type = "normal";
124+ env = [
125+ "PYTHONPATH=${pkgs.oncall.pythonPath}"
126+ (
127+ "ONCALL_EXTRA_CONFIG="
128+ + (lib.concatStringsSep "," (
129+ [ configFile ] ++ lib.optional (cfg.secretFile != null) cfg.secretFile
130+ ))
131+ )
132+ "STATIC_ROOT=/var/lib/oncall"
133+ ];
134+ module = "oncall.app:get_wsgi_app()";
135+ socket = "${config.services.uwsgi.runDir}/oncall.sock";
136+ socketGroup = "nginx";
137+ immediate-gid = "nginx";
138+ chmod-socket = "770";
139+ pyargv = "${pkgs.oncall}/share/configs/config.yaml";
140+ buffer-size = 32768;
141+ };
142+ };
143+ };
144+ };
145+146+ services.nginx = {
147+ enable = lib.mkDefault true;
148+ virtualHosts."${cfg.settings.oncall_host}".locations = {
149+ "/".extraConfig = "uwsgi_pass unix://${config.services.uwsgi.runDir}/oncall.sock;";
150+ };
151+ };
152+153+ services.mysql = lib.mkIf cfg.database.createLocally {
154+ enable = true;
155+ package = lib.mkDefault pkgs.mariadb;
156+ ensureDatabases = [ cfg.settings.db.conn.kwargs.database ];
157+ ensureUsers = [
158+ {
159+ name = cfg.settings.db.conn.kwargs.user;
160+ ensurePermissions = {
161+ "${cfg.settings.db.conn.kwargs.database}.*" = "ALL PRIVILEGES";
162+ };
163+ }
164+ ];
165+ };
166+167+ users.users.oncall = {
168+ group = "nginx";
169+ isSystemUser = true;
170+ };
171+172+ systemd = {
173+ services = {
174+ uwsgi.serviceConfig.StateDirectory = "oncall";
175+ oncall-setup-database = lib.mkIf cfg.database.createLocally {
176+ description = "Set up Oncall database";
177+ serviceConfig = {
178+ Type = "oneshot";
179+ RemainAfterExit = true;
180+ };
181+ requiredBy = [ "uwsgi.service" ];
182+ after = [ "mysql.service" ];
183+ script =
184+ let
185+ mysql = "${lib.getExe' config.services.mysql.package "mysql"}";
186+ in
187+ ''
188+ if [ ! -f /var/lib/oncall/.dbexists ]; then
189+ # Load database schema provided with package
190+ ${mysql} ${cfg.settings.db.conn.kwargs.database} < ${cfg.package}/share/db/schema.v0.sql
191+ ${mysql} ${cfg.settings.db.conn.kwargs.database} < ${cfg.package}/share/db/schema-update.v0-1602184489.sql
192+ touch /var/lib/oncall/.dbexists
193+ fi
194+ '';
195+ };
196+ };
197+ };
198+199+ };
200+201+ meta.maintainers = with lib.maintainers; [ onny ];
202+203+}
+1
nixos/modules/system/activation/lib/test.sh
···26}
27trap onerr ERR
28029source ./lib.sh
3031(warn hi, this works >/dev/null) 2>&1 | grep -E $'.*warning:.* hi, this works' >/dev/null
···26}
27trap onerr ERR
2829+# shellcheck source-path=SCRIPTDIR
30source ./lib.sh
3132(warn hi, this works >/dev/null) 2>&1 | grep -E $'.*warning:.* hi, this works' >/dev/null
+1
nixos/tests/all-tests.nix
···618 odoo = handleTest ./odoo.nix { };
619 odoo17 = handleTest ./odoo.nix { package = pkgs.odoo17; };
620 odoo16 = handleTest ./odoo.nix { package = pkgs.odoo16; };
0621 # 9pnet_virtio used to mount /nix partition doesn't support
622 # hibernation. This test happens to work on x86_64-linux but
623 # not on other platforms.
···618 odoo = handleTest ./odoo.nix { };
619 odoo17 = handleTest ./odoo.nix { package = pkgs.odoo17; };
620 odoo16 = handleTest ./odoo.nix { package = pkgs.odoo16; };
621+ oncall = runTest ./web-apps/oncall.nix;
622 # 9pnet_virtio used to mount /nix partition doesn't support
623 # hibernation. This test happens to work on x86_64-linux but
624 # not on other platforms.
···286 "test_vsioss_6"
287 # flaky?
288 "test_tiledb_read_arbitrary_array"
289+ # tests for magic numbers, seem to change with different poppler versions,
290+ # and architectures
291+ "test_pdf_extra_rasters"
292 ]
293 ++ lib.optionals (!stdenv.hostPlatform.isx86_64) [
294 # likely precision-related expecting x87 behaviour
-1
pkgs/by-name/ge/geant4/package.nix
···141 '';
142143 meta = with lib; {
144- broken = (stdenv.hostPlatform.isLinux && stdenv.hostPlatform.isAarch64);
145 description = "Toolkit for the simulation of the passage of particles through matter";
146 longDescription = ''
147 Geant4 is a toolkit for the simulation of the passage of particles through matter.
···141 '';
142143 meta = with lib; {
0144 description = "Toolkit for the simulation of the passage of particles through matter";
145 longDescription = ''
146 Geant4 is a toolkit for the simulation of the passage of particles through matter.
···67rustPlatform.buildRustPackage rec {
8 pname = "sendme";
9- version = "0.25.0";
1011 src = fetchFromGitHub {
12 owner = "n0-computer";
13 repo = "sendme";
14 rev = "v${version}";
15- hash = "sha256-OmP2FLvBupeJeGhMMBgcTpMSgQZ5JWzXBVeFZt7EU4Q=";
16 };
1718 useFetchCargoVendor = true;
19- cargoHash = "sha256-8Ry3rpGTNcvMIA3Q10Cb3uJHOBQin9AhlLNRekaKw/0=";
0000000002021 meta = with lib; {
22 description = "Tool to send files and directories, based on iroh";
···67rustPlatform.buildRustPackage rec {
8 pname = "sendme";
9+ version = "0.26.0";
1011 src = fetchFromGitHub {
12 owner = "n0-computer";
13 repo = "sendme";
14 rev = "v${version}";
15+ hash = "sha256-21JNyncChl8rv3IDdvYRF/nvMpAGCBps4xsBP9b/1lA=";
16 };
1718 useFetchCargoVendor = true;
19+ cargoHash = "sha256-1VVpjeGU6/+apTHv7klo7FkAQ3AVjiziQRNI7yFbvh0=";
20+21+ __darwinAllowLocalNetworking = true;
22+23+ # On Darwin, sendme invokes CoreFoundation APIs that read ICU data from the
24+ # system. Ensure these paths are accessible in the sandbox to avoid segfaults
25+ # during checkPhase.
26+ sandboxProfile = ''
27+ (allow file-read* (subpath "/usr/share/icu"))
28+ '';
2930 meta = with lib; {
31 description = "Tool to send files and directories, based on iroh";
+4-4
pkgs/by-name/se/servo/package.nix
···6162rustPlatform.buildRustPackage {
63 pname = "servo";
64- version = "0-unstable-2025-04-27";
6566 src = fetchFromGitHub {
67 owner = "servo";
68 repo = "servo";
69- rev = "e22ce3988b5962c254857419afbf36cced9648aa";
70- hash = "sha256-shhvxwnhQXMVtXufd4IE8aeUeDm84MLpVktMkodFmeg=";
71 # Breaks reproducibility depending on whether the picked commit
72 # has other ref-names or not, which may change over time, i.e. with
73 # "ref-names: HEAD -> main" as long this commit is the branch HEAD
···78 };
7980 useFetchCargoVendor = true;
81- cargoHash = "sha256-TUhxQFuRINNHEfnnIKejMP6/j3K7t0y9bovcT/l6SZU=";
8283 # set `HOME` to a temp dir for write access
84 # Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328)
···6162rustPlatform.buildRustPackage {
63 pname = "servo";
64+ version = "0-unstable-2025-05-13";
6566 src = fetchFromGitHub {
67 owner = "servo";
68 repo = "servo";
69+ rev = "a572bf1191f8807e63d6bec4734ecae2b50439c3";
70+ hash = "sha256-iMB2dJA0TVV6l14WqZt8KJehHRoGozycjjCHPXPjMsI=";
71 # Breaks reproducibility depending on whether the picked commit
72 # has other ref-names or not, which may change over time, i.e. with
73 # "ref-names: HEAD -> main" as long this commit is the branch HEAD
···78 };
7980 useFetchCargoVendor = true;
81+ cargoHash = "sha256-HtyRHaYBadqqpJ8dSBOMp5xOwzRfBYjeuj4Kb/xx5ds=";
8283 # set `HOME` to a temp dir for write access
84 # Fix invalid option errors during linking (https://github.com/mozilla/nixpkgs-mozilla/commit/c72ff151a3e25f14182569679ed4cd22ef352328)
···6 pkg-config,
7 mpi,
8 mpiCheckPhaseHook,
09 gfortran,
10 blas,
11 lapack,
···152 # Can not run parallel checks generally as it requires exactly multiples of 4 MPI ranks
153 # Even cpu_serial tests had to be disabled as they require scalapack routines in the sandbox
154 # and run into the same problem as MPI tests
155- checkPhase = ''
156- runHook preCheck
157-158- ctest --output-on-failure --label-exclude integration_test
159-160- runHook postCheck
161- '';
162163 nativeCheckInputs = [
164 mpiCheckPhaseHook
0165 ];
166167 meta = with lib; {
···6 pkg-config,
7 mpi,
8 mpiCheckPhaseHook,
9+ ctestCheckHook,
10 gfortran,
11 blas,
12 lapack,
···153 # Can not run parallel checks generally as it requires exactly multiples of 4 MPI ranks
154 # Even cpu_serial tests had to be disabled as they require scalapack routines in the sandbox
155 # and run into the same problem as MPI tests
156+ checkFlags = [
157+ "--label-exclude"
158+ "integration_test"
159+ ];
000160161 nativeCheckInputs = [
162 mpiCheckPhaseHook
163+ ctestCheckHook
164 ];
165166 meta = with lib; {
···52 })
53 # Fix Threads::Threads target for static from https://github.com/oneapi-src/oneTBB/pull/1248
54 # This is a conflict-resolved cherry-pick of the above PR to due to formatting differences.
55- ./patches/fix-cmake-threads-threads-target-for-static.patch
00000000056 ];
5758 # Fix build with modern gcc
···52 })
53 # Fix Threads::Threads target for static from https://github.com/oneapi-src/oneTBB/pull/1248
54 # This is a conflict-resolved cherry-pick of the above PR to due to formatting differences.
55+ (fetchpatch {
56+ name = "fix-cmake-threads-threads-target-for-static.patch";
57+ url = "https://patch-diff.githubusercontent.com/raw/uxlfoundation/oneTBB/pull/1248.patch";
58+ hash = "sha256-3WKzxU93vxuy7NgW+ap+ocZz5Q5utZ/pK7+FQExzLLA=";
59+ })
60+ ];
61+62+ patchFlags = [
63+ "-p1"
64+ "--ignore-whitespace"
65 ];
6667 # Fix build with modern gcc
···58 homepage = "https://sequoia-pgp.gitlab.io/pysequoia";
59 license = licenses.asl20;
60 maintainers = with maintainers; [ doronbehar ];
61- # Broken since the 0.1.20 update according to ofborg. The errors are not clear...
62- broken = stdenv.hostPlatform.isDarwin;
63 };
64}
···654 flutter319 = throw "flutter319 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-12-03
655 flutter322 = throw "flutter322 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
656 flutter323 = throw "flutter323 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
0657 fluxus = throw "fluxus has been removed because it hasn't been updated in 9 years and depended on insecure Racket 7.9"; # Added 2024-12-06
658 fmt_8 = throw "fmt_8 has been removed as it is obsolete and was no longer used in the tree"; # Added 2024-11-12
659 fntsample = throw "fntsample has been removed as it is unmaintained upstream"; # Added 2025-04-21
···654 flutter319 = throw "flutter319 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-12-03
655 flutter322 = throw "flutter322 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
656 flutter323 = throw "flutter323 has been removed because it isn't updated anymore, and no packages in nixpkgs use it. If you still need it, use flutter.mkFlutter to get a custom version"; # Added 2024-10-05
657+ fluxctl = throw "fluxctl is unmaintained and has been removed. Migration to flux2 is recommended"; # Added 2025-05-11
658 fluxus = throw "fluxus has been removed because it hasn't been updated in 9 years and depended on insecure Racket 7.9"; # Added 2024-12-06
659 fmt_8 = throw "fmt_8 has been removed as it is obsolete and was no longer used in the tree"; # Added 2024-11-12
660 fntsample = throw "fntsample has been removed as it is unmaintained upstream"; # Added 2025-04-21