{ config, lib, pkgs, ... }: let inherit (lib) types; cfg = config.common.services.gvfs; in { options.common.services.gvfs = { enable = lib.mkEnableOption "gvfs"; backends = { afc = lib.mkOption { type = types.bool; default = false; }; afp = lib.mkOption { type = types.bool; default = false; }; mtp = lib.mkOption { type = types.bool; default = false; }; gphoto2 = lib.mkOption { type = types.bool; default = false; }; smb = lib.mkOption { type = types.bool; default = false; }; }; }; config = lib.mkIf cfg.enable { services.gvfs = { enable = true; package = (pkgs.gvfs.overrideAttrs (old: { mesonFlags = (old.mesonFlags or [ ]) ++ [ "-Dafp=${lib.boolToString cfg.backends.afp}" "-Dafc=${lib.boolToString cfg.backends.afc}" "-Dmtp=${lib.boolToString cfg.backends.mtp}" "-Dgphoto2=${lib.boolToString cfg.backends.gphoto2}" ]; })).override { samba = null; }; }; }; }