# apparmor.d - Full set of apparmor profiles
# Copyright (C) 2023-2024 Alexandre Pujol <alexandre@pujol.io>
# SPDX-License-Identifier: GPL-2.0-only

abi <abi/4.0>,

include <tunables/global>

@{exec_path} = @{bin}/systemsettings
profile systemsettings /{,usr/}{,s}bin/systemsettings flags=(complain) {
  include <abstractions/base>
  include <abstractions/bus-session>
  include <abstractions/graphics>
  include <abstractions/kde-strict>
  include <abstractions/nameservice-strict>
  include <abstractions/qt5-shader-cache>
  include <abstractions/thumbnails-cache-write>

  network netlink raw,

  signal send set=term peer=kioworker,

  @{exec_path} mr,

  @{bin}/cat rix,
  @{bin}/kcminit rpx,
  @{bin}/lspci rpx,
  @{bin}/openssl rix,
  @{bin}/pactl rpx,
  @{bin}/plasma-discover rpx,
  @{bin}/plasmashell rpx,
  @{bin}/xdpyinfo rpux,
  @{lib}/qt{5,6}/bin/qdbus rpx,
  /{,usr/}lib{,exec,32,64}/*-linux-gnu*/{,libexec/}kf5/kioslave5 Px,
  /{,usr/}lib{,exec,32,64}/*-linux-gnu*/{,libexec/}kf6/kioworker Px,
  /{,usr/}lib{,exec,32,64}/kf5/kioslave5 Px,
  /{,usr/}lib{,exec,32,64}/kf6/kioworker Px,

  /usr/share/kcm_networkmanagement/{,**} r,
  /usr/share/kcm_recentFiles/{,**} r,
  /usr/share/kcmkeys/{,*.kksrc} r,
  /usr/share/kglobalaccel/* r,
  /usr/share/kinfocenter/{,**} r,
  /usr/share/kinfocenter/{,**} r,
  /usr/share/kpackage/{,**} r,
  /usr/share/kservices{5,6}/{,**} r,
  /usr/share/kservicetypes5/{,**} r,
  /usr/share/kwin/{,**} r,
  /usr/share/kxmlgui5/systemsettings/systemsettingsui.rc r,
  /usr/share/plasma/{,**} r,
  /usr/share/sddm/themes/{,**} r,
  /usr/share/sddm/themes/{,**} r,
  /usr/share/systemsettings/{,**} r,
  /usr/share/wallpapers/{,**} r,

  /etc/fstab r,
  /etc/machine-id r,
  /etc/xdg/menus/{,applications-merged/} r,
  /etc/xdg/plasmanotifyrc r,
  /etc/xdg/ui/ui_standards.rc r,
  /var/lib/dbus/machine-id r,

  owner @{user_cache_dirs}/#@{int} rw,
  owner @{user_cache_dirs}/icon-cache.kcache rw,
  owner @{user_cache_dirs}/kinfocenter/{,**} rwl,
  owner @{user_cache_dirs}/ksvg-elements rw,
  owner @{user_cache_dirs}/ksvg-elements.@{rand6} rwlk -> @{user_cache_dirs}/#@{int},
  owner @{user_cache_dirs}/ksvg-elements.lock rwlk,
  owner @{user_cache_dirs}/ksycoca{5,6}_* r,
  owner @{user_cache_dirs}/plasma_theme_*.kcache rw,
  owner @{user_cache_dirs}/systemsettings/ rw,
  owner @{user_cache_dirs}/systemsettings/** rwlk -> @{user_cache_dirs}/systemsettings/**,

  owner @{user_config_dirs}/{P,p}lasma* r,
  owner @{user_config_dirs}/#@{int} rw,
  owner @{user_config_dirs}/kactivitymanagerdrc r,
  owner @{user_config_dirs}/kde.org/{,**} rwlk,
  owner @{user_config_dirs}/kdedefaults/kscreenlockerrc r,
  owner @{user_config_dirs}/kdedefaults/plasmarc r,
  owner @{user_config_dirs}/khotkeysrc r,
  owner @{user_config_dirs}/kinfocenterrc* rwlk,
  owner @{user_config_dirs}/kscreenlockerrc r,
  owner @{user_config_dirs}/kxkbrc r,
  owner @{user_config_dirs}/menus/ r,
  owner @{user_config_dirs}/menus/applications-merged/ r,
  owner @{user_config_dirs}/plasmarc r,
  owner @{user_config_dirs}/session/ rw,
  owner @{user_config_dirs}/session/** rwlk,
  owner @{user_config_dirs}/systemsettingsrc.lock rwk,
  owner @{user_config_dirs}/systemsettingsrc{,.@{rand6}} rwl -> @{user_config_dirs}/#@{int},

  owner @{user_share_dirs}/kactivitymanagerd/resources/database rwk,
  owner @{user_share_dirs}/kactivitymanagerd/resources/database-shm rwk,
  owner @{user_share_dirs}/kactivitymanagerd/resources/database-wal rw,
  owner @{user_share_dirs}/kinfocenter/ rw,
  owner @{user_share_dirs}/kinfocenter/** rwlk,
  owner @{user_share_dirs}/knotifications{5,6}/{,**} r,
  owner @{user_share_dirs}/krdpserver/ rw,
  owner @{user_share_dirs}/kservices{5,6}/{,ServiceMenus/} r,
  owner @{user_share_dirs}/systemsettings/ rw,
  owner @{user_share_dirs}/systemsettings/** rwlk,
  owner @{user_share_dirs}/wallpapers/{,**} r,

  @{sys}/bus/ r,
  @{sys}/bus/cpu/devices/ r,
  @{sys}/class/ r,

  owner @{PROC}/@{pid}/mounts r,

  /dev/tty r,

  include if exists <local/systemsettings>
}

# vim:syntax=apparmor
