import ./make-test-python.nix
  ({ lib, ... }:
  {
    name = "dconf";

    meta.maintainers = with lib.maintainers; [
      linsui
    ];

    nodes.machine = { config, pkgs, lib, ... }: {
      users.extraUsers.alice = { isNormalUser = true; };
      programs.dconf = with lib.gvariant; {
        enable = true;
        profiles.user.databases = [
          {
            settings = {
              "test/not".locked = mkInt32 1;
              "test/is".locked = "locked";
            };
            locks = [
              "/test/is/locked"
            ];
          }
        ];
      };
    };

    testScript = ''
      machine.succeed("test $(dconf read -d /test/not/locked) == 1")
      machine.succeed("test $(dconf read -d /test/is/locked) == \"'locked'\"")
      machine.fail("sudo -u alice dbus-run-session -- dconf write /test/is/locked \"@s 'unlocked'\"")
      machine.succeed("sudo -u alice dbus-run-session -- dconf write /test/not/locked \"@i 2\"")
    '';
  })
