summaryrefslogtreecommitdiffstats
path: root/lib/tests/modules/declare-mkPackageOption.nix
blob: 3f4f91d7497e5cab1642cc336932d51bbff2a398 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
{ lib, ... }:
let
  pkgs.hello = {
    type = "derivation";
    pname = "hello";
  };
in
{
  options = {
    package = lib.mkPackageOption pkgs "hello" { };

    namedPackage = lib.mkPackageOption pkgs "Hello" {
      default = [ "hello" ];
    };

    namedPackageSingletonDefault = lib.mkPackageOption pkgs "Hello" {
      default = "hello";
    };

    pathPackage = lib.mkPackageOption pkgs [ "hello" ] { };

    packageWithExample = lib.mkPackageOption pkgs "hello" {
      example = "pkgs.hello.override { stdenv = pkgs.clangStdenv; }";
    };

    packageWithPathExample = lib.mkPackageOption pkgs "hello" {
      example = [ "hello" ];
    };

    packageWithExtraDescription = lib.mkPackageOption pkgs "hello" {
      extraDescription = "Example extra description.";
    };

    undefinedPackage = lib.mkPackageOption pkgs "hello" {
      default = null;
    };

    nullablePackage = lib.mkPackageOption pkgs "hello" {
      nullable = true;
      default = null;
    };

    nullablePackageWithDefault = lib.mkPackageOption pkgs "hello" {
      nullable = true;
    };

    packageWithPkgsText = lib.mkPackageOption pkgs "hello" {
      pkgsText = "myPkgs";
    };

    packageFromOtherSet =
      let
        myPkgs = {
          hello = pkgs.hello // {
            pname = "hello-other";
          };
        };
      in
      lib.mkPackageOption myPkgs "hello" { };

    packageInvalidIdentifier =
      let
        myPkgs."123"."with\"quote" = { inherit (pkgs) hello; };
      in
      lib.mkPackageOption myPkgs [ "123" "with\"quote" "hello" ] { };

    packageInvalidIdentifierExample = lib.mkPackageOption pkgs "hello" {
      example = [
        "123"
        "with\"quote"
        "hello"
      ];
    };
  };
}