1{ lib, ... }:
2let
3 pkgs.hello = {
4 type = "derivation";
5 pname = "hello";
6 };
7in
8{
9 options = {
10 package = lib.mkPackageOption pkgs "hello" { };
11
12 namedPackage = lib.mkPackageOption pkgs "Hello" {
13 default = [ "hello" ];
14 };
15
16 namedPackageSingletonDefault = lib.mkPackageOption pkgs "Hello" {
17 default = "hello";
18 };
19
20 pathPackage = lib.mkPackageOption pkgs [ "hello" ] { };
21
22 packageWithExample = lib.mkPackageOption pkgs "hello" {
23 example = "pkgs.hello.override { stdenv = pkgs.clangStdenv; }";
24 };
25
26 packageWithPathExample = lib.mkPackageOption pkgs "hello" {
27 example = [ "hello" ];
28 };
29
30 packageWithExtraDescription = lib.mkPackageOption pkgs "hello" {
31 extraDescription = "Example extra description.";
32 };
33
34 undefinedPackage = lib.mkPackageOption pkgs "hello" {
35 default = null;
36 };
37
38 nullablePackage = lib.mkPackageOption pkgs "hello" {
39 nullable = true;
40 default = null;
41 };
42
43 nullablePackageWithDefault = lib.mkPackageOption pkgs "hello" {
44 nullable = true;
45 };
46
47 packageWithPkgsText = lib.mkPackageOption pkgs "hello" {
48 pkgsText = "myPkgs";
49 };
50
51 packageFromOtherSet =
52 let
53 myPkgs = {
54 hello = pkgs.hello // {
55 pname = "hello-other";
56 };
57 };
58 in
59 lib.mkPackageOption myPkgs "hello" { };
60
61 packageInvalidIdentifier =
62 let
63 myPkgs."123"."with\"quote" = { inherit (pkgs) hello; };
64 in
65 lib.mkPackageOption myPkgs [ "123" "with\"quote" "hello" ] { };
66
67 packageInvalidIdentifierExample = lib.mkPackageOption pkgs "hello" {
68 example = [
69 "123"
70 "with\"quote"
71 "hello"
72 ];
73 };
74 };
75}