diff options
author | worldofpeace <worldofpeace@protonmail.ch> | 2020-07-07 11:29:53 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-07 11:29:53 -0400 |
commit | 56619d6ebb7bef4f379fd909d6909d93b3121131 (patch) | |
tree | 163fd750ec3d0d582541a3981a3327dd26d0fa6b /nixos | |
parent | 812468890686b8fda791d421a912dac8ca06ca4d (diff) | |
parent | 11d6318a0136536734f48e49b4f4f6b5e08f9b57 (diff) | |
download | nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.tar nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.tar.gz nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.tar.bz2 nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.tar.lz nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.tar.xz nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.tar.zst nixpkgs-56619d6ebb7bef4f379fd909d6909d93b3121131.zip |
Merge pull request #85992 from symphorien/ibus-db
ibus: fix dconf database
Diffstat (limited to 'nixos')
-rw-r--r-- | nixos/modules/i18n/input-method/ibus.nix | 2 | ||||
-rw-r--r-- | nixos/modules/programs/dconf.nix | 37 | ||||
-rw-r--r-- | nixos/tests/installed-tests/ibus.nix | 14 |
3 files changed, 33 insertions, 20 deletions
diff --git a/nixos/modules/i18n/input-method/ibus.nix b/nixos/modules/i18n/input-method/ibus.nix index b4746b21b65..cf24ecf5863 100644 --- a/nixos/modules/i18n/input-method/ibus.nix +++ b/nixos/modules/i18n/input-method/ibus.nix @@ -64,7 +64,7 @@ in # Without dconf enabled it is impossible to use IBus programs.dconf.enable = true; - programs.dconf.profiles.ibus = "${ibusPackage}/etc/dconf/profile/ibus"; + programs.dconf.packages = [ ibusPackage ]; services.dbus.packages = [ ibusAutostart diff --git a/nixos/modules/programs/dconf.nix b/nixos/modules/programs/dconf.nix index 6702e8efd1c..ec85cb9d18c 100644 --- a/nixos/modules/programs/dconf.nix +++ b/nixos/modules/programs/dconf.nix @@ -4,13 +4,24 @@ with lib; let cfg = config.programs.dconf; - - mkDconfProfile = name: path: - { - name = "dconf/profile/${name}"; - value.source = path; - }; - + cfgDir = pkgs.symlinkJoin { + name = "dconf-system-config"; + paths = map (x: "${x}/etc/dconf") cfg.packages; + postBuild = '' + mkdir -p $out/profile + mkdir -p $out/db + '' + ( + concatStringsSep "\n" ( + mapAttrsToList ( + name: path: '' + ln -s ${path} $out/profile/${name} + '' + ) cfg.profiles + ) + ) + '' + ${pkgs.dconf}/bin/dconf update $out/db + ''; + }; in { ###### interface @@ -22,18 +33,24 @@ in profiles = mkOption { type = types.attrsOf types.path; default = {}; - description = "Set of dconf profile files."; + description = "Set of dconf profile files, installed at <filename>/etc/dconf/profiles/<replaceable>name</replaceable></filename>."; internal = true; }; + packages = mkOption { + type = types.listOf types.package; + default = []; + description = "A list of packages which provide dconf profiles and databases in <filename>/etc/dconf</filename>."; + }; }; }; ###### implementation config = mkIf (cfg.profiles != {} || cfg.enable) { - environment.etc = optionalAttrs (cfg.profiles != {}) - (mapAttrs' mkDconfProfile cfg.profiles); + environment.etc.dconf = mkIf (cfg.profiles != {} || cfg.packages != []) { + source = cfgDir; + }; services.dbus.packages = [ pkgs.dconf ]; diff --git a/nixos/tests/installed-tests/ibus.nix b/nixos/tests/installed-tests/ibus.nix index af54b612b50..a4bc2a7d7de 100644 --- a/nixos/tests/installed-tests/ibus.nix +++ b/nixos/tests/installed-tests/ibus.nix @@ -5,16 +5,12 @@ makeInstalledTest { testConfig = { i18n.inputMethod.enabled = "ibus"; + systemd.user.services.ibus-daemon = { + serviceConfig.ExecStart = "${pkgs.ibus}/bin/ibus-daemon --xim --verbose"; + wantedBy = [ "graphical-session.target" ]; + partOf = [ "graphical-session.target" ]; + }; }; - preTestScript = '' - # ibus has ibus-desktop-testing-runner but it tries to manage desktop session so we just spawn ibus-daemon ourselves - machine.succeed("ibus-daemon --daemonize --verbose") - ''; - withX11 = true; - - # TODO: ibus-daemon is currently crashing or something - # maybe make ibus systemd service that auto-restarts? - meta.broken = true; } |