python312Packages.aiohomeconnect: 0.10.0 -> 0.11.0 (#374011)
[NixPkgs.git] / nixos / modules / system / activation / pre-switch-check.nix
blob2cbd539a74c8f415304bb4743bee4eb02c91865a
1 { lib, pkgs, ... }:
2 let
3   preSwitchCheckScript =
4     set:
5     lib.concatLines (
6       lib.mapAttrsToList (name: text: ''
7         # pre-switch check ${name}
8         (
9           ${text}
10         )
11         if [[ $? != 0 ]]; then
12           echo "Pre-switch check '${name}' failed"
13           exit 1
14         fi
15       '') set
16     );
19   options.system.preSwitchChecks = lib.mkOption {
20     default = { };
21     example = lib.literalExpression ''
22       { failsEveryTime =
23         '''
24           false
25         ''';
26       }
27     '';
29     description = ''
30       A set of shell script fragments that are executed before the switch to a
31       new NixOS system configuration. A failure in any of these fragments will
32       cause the switch to fail and exit early.
33     '';
35     type = lib.types.attrsOf lib.types.str;
37     apply =
38       set:
39       set
40       // {
41         script = pkgs.writeShellScript "pre-switch-checks" (preSwitchCheckScript set);
42       };
43   };