mirror of
https://github.com/nix-community/home-manager.git
synced 2026-01-12 01:59:37 +08:00
lib/types: make DAG entries mergeable
Removes the `uniq` constraint on `after` and `before` so that we can
merge multiple definitions for the same DAG entry:
{
dag = mkMerge [
{
foo = lib.hm.dag.entryBefore [ "bar" ] {
# definition 1
};
}
{
foo = lib.hm.dag.entryBefore [ "qux" ] {
# definition 2
};
}
{
foo = {
# definition 3
};
}
];
}
In this example `foo` will come before `bar` and `qux`.
This commit is contained in:
committed by
Robert Helgesson
parent
177f1887d4
commit
6311f4adc3
@@ -1,3 +1,4 @@
|
||||
before:before
|
||||
merged:left,middle,middle,right
|
||||
between:between
|
||||
after:after
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
let
|
||||
inherit (lib) concatStringsSep hm mkIf mkMerge mkOption types;
|
||||
inherit (lib)
|
||||
concatStringsSep hm mkIf mkMerge mkBefore mkAfter mkOption types;
|
||||
|
||||
dag = lib.hm.dag;
|
||||
|
||||
@@ -11,17 +12,22 @@ let
|
||||
in concatStringsSep "\n" data + "\n";
|
||||
|
||||
in {
|
||||
options.tested.dag = mkOption { type = hm.types.dagOf types.str; };
|
||||
options.tested.dag = mkOption { type = hm.types.dagOf types.commas; };
|
||||
|
||||
config = {
|
||||
tested.dag = mkMerge [
|
||||
{ never = mkIf false "never"; }
|
||||
(mkIf false { never = "never"; })
|
||||
{ never2 = mkIf false "never2"; }
|
||||
{ after = mkMerge [ "after" (mkIf false "neither") ]; }
|
||||
{ before = dag.entryBefore [ "after" ] (mkIf true "before"); }
|
||||
{
|
||||
between =
|
||||
mkIf true (dag.entryBetween [ "after" ] [ "before" ] "between");
|
||||
}
|
||||
{ merged = dag.entryBefore [ "between" ] "middle"; }
|
||||
{ merged = mkBefore "left"; }
|
||||
{ merged = dag.entryBetween [ "after" ] [ "before" ] (mkAfter "right"); }
|
||||
{ merged = dag.entryBefore [ "between" ] "middle"; }
|
||||
];
|
||||
|
||||
home.file."result.txt".text = result;
|
||||
|
||||
Reference in New Issue
Block a user