policy_module(rtkit)

########################################
#
# Declarations
#

type rtkit_daemon_t;
type rtkit_daemon_exec_t;
init_system_domain(rtkit_daemon_t, rtkit_daemon_exec_t)

type rtkit_daemon_initrc_exec_t;
init_script_file(rtkit_daemon_initrc_exec_t)

type rtkit_daemon_unit_t;
init_unit_file(rtkit_daemon_unit_t)

########################################
#
# Local policy
#

allow rtkit_daemon_t self:capability { dac_read_search setgid setpcap setuid sys_chroot sys_nice sys_ptrace };
allow rtkit_daemon_t self:cap_userns { sys_nice sys_ptrace };
allow rtkit_daemon_t self:process { getcap setcap setrlimit setsched };

kernel_read_system_state(rtkit_daemon_t)

domain_getsched_all_domains(rtkit_daemon_t)
domain_read_all_domains_state(rtkit_daemon_t)

fs_rw_anon_inodefs_files(rtkit_daemon_t)

selinux_getattr_fs(rtkit_daemon_t)

auth_use_nsswitch(rtkit_daemon_t)

logging_send_syslog_msg(rtkit_daemon_t)

miscfiles_read_localization(rtkit_daemon_t)

seutil_search_default_contexts(rtkit_daemon_t)

optional_policy(`
	dbus_system_domain(rtkit_daemon_t, rtkit_daemon_exec_t)

	optional_policy(`
		policykit_dbus_chat(rtkit_daemon_t)
	')

	optional_policy(`
		xserver_dbus_chat_xdm(rtkit_daemon_t)
	')
')

optional_policy(`
	xserver_setsched_xdm(rtkit_daemon_t)
')
