aboutsummaryrefslogtreecommitdiff
path: root/home-manager/tests/lib/types/dag-submodule.nix
diff options
context:
space:
mode:
Diffstat (limited to 'home-manager/tests/lib/types/dag-submodule.nix')
-rw-r--r--home-manager/tests/lib/types/dag-submodule.nix43
1 files changed, 43 insertions, 0 deletions
diff --git a/home-manager/tests/lib/types/dag-submodule.nix b/home-manager/tests/lib/types/dag-submodule.nix
new file mode 100644
index 00000000000..552e804acbc
--- /dev/null
+++ b/home-manager/tests/lib/types/dag-submodule.nix
@@ -0,0 +1,43 @@
+{ config, lib, pkgs, ... }:
+
+with lib;
+
+let
+
+ dag = config.lib.dag;
+
+ result = let
+ sorted = dag.topoSort config.tested.dag;
+ data = map (e: "${e.name}:${e.data.name}") sorted.result;
+ in concatStringsSep "\n" data + "\n";
+
+in {
+ options.tested.dag = mkOption {
+ type = hm.types.dagOf (types.submodule ({ dagName, ... }: {
+ options.name = mkOption { type = types.str; };
+ config.name = "dn-${dagName}";
+ }));
+ };
+
+ config = {
+ tested.dag = {
+ after = { };
+ before = dag.entryBefore [ "after" ] { };
+ between = dag.entryBetween [ "after" ] [ "before" ] { };
+ };
+
+ home.file."result.txt".text = result;
+
+ nmt.script = ''
+ assertFileContent \
+ home-files/result.txt \
+ ${
+ pkgs.writeText "result.txt" ''
+ before:dn-before
+ between:dn-between
+ after:dn-after
+ ''
+ }
+ '';
+ };
+}