1{
2 config,
3 lib,
4 pkgs,
5 ...
6}:
7
8let
9 inherit (lib)
10 mkEnableOption
11 mkIf
12 mkRenamedOptionModule
13 teams
14 ;
15in
16
17{
18 meta = {
19 maintainers = teams.gnome.members;
20 };
21
22 options = {
23 services.gnome.gnome-browser-connector.enable = mkEnableOption ''
24 native host connector for the GNOME Shell browser extension, a DBus service
25 allowing to install GNOME Shell extensions from a web browser
26 '';
27 };
28
29 config = mkIf config.services.gnome.gnome-browser-connector.enable {
30 environment.etc = {
31 "chromium/native-messaging-hosts/org.gnome.browser_connector.json".source =
32 "${pkgs.gnome-browser-connector}/etc/chromium/native-messaging-hosts/org.gnome.browser_connector.json";
33 "opt/chrome/native-messaging-hosts/org.gnome.browser_connector.json".source =
34 "${pkgs.gnome-browser-connector}/etc/opt/chrome/native-messaging-hosts/org.gnome.browser_connector.json";
35 # Legacy paths.
36 "chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source =
37 "${pkgs.gnome-browser-connector}/etc/chromium/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
38 "opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json".source =
39 "${pkgs.gnome-browser-connector}/etc/opt/chrome/native-messaging-hosts/org.gnome.chrome_gnome_shell.json";
40 };
41
42 environment.systemPackages = [ pkgs.gnome-browser-connector ];
43
44 services.dbus.packages = [ pkgs.gnome-browser-connector ];
45
46 programs.firefox.nativeMessagingHosts.packages = [ pkgs.gnome-browser-connector ];
47 };
48}