summaryrefslogtreecommitdiffstats
path: root/lib/tests/modules/fileset.nix
blob: 40b1a8ef601f5a3aefba2bcc4ec8bb9570fe19e4 (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
{ config, lib, ... }:

let
  inherit (lib)
    mkOption
    mkIf
    types
    mapAttrs
    length
    ;
  inherit (lib.fileset)
    empty
    unions
    toList
    ;
in

{
  options = {
    fileset = mkOption { type = with types; lazyAttrsOf fileset; };

    ## The following option is only here as a proxy to test `fileset` that does
    ## not work so well with `modules.sh` because it is not JSONable. It exposes
    ## the number of elements in the fileset.
    filesetCardinal = mkOption { default = mapAttrs (_: fs: length (toList fs)) config.fileset; };
  };

  config = {
    fileset.ok1 = empty;
    fileset.ok2 = ./fileset;
    fileset.ok3 = unions [
      empty
      ./fileset
    ];
    # fileset.ok4: see imports below
    fileset.ok5 = mkIf false ./fileset;

    fileset.err1 = 1;
    fileset.err2 = "foo";
    fileset.err3 = "./.";
    fileset.err4 = [ empty ];

  };

  imports = [
    { fileset.ok4 = ./fileset; }
    { fileset.ok4 = empty; }
    { fileset.ok4 = ./fileset; }
  ];
}