query
On this page

apparmorRulesFromClosure

pkgs.apparmorRulesFromClosure

Functor
Docs pulled from | This Revision | 31 minutes ago


Contribute
Enhance the ecosystem with your expertise! Contribute to fill the gaps in documentation. Your input can make a difference.

Noogle detected

This is a Functor

Learn about functors

Implementation

The following is the current implementation of this function.

{
  # The store path of the derivation is given in $path
  additionalRules ? [ ],
  # TODO: factorize here some other common paths
  # that may emerge from use cases.
  baseRules ? [
    "$path r"
    "$path/etc/** r"
    "$path/share/** mr"
    # Note that not all libraries are prefixed with "lib",
    # eg. glibc-2.30/lib/ld-2.30.so
    "$path/lib/**.so* mr"
    "$path/lib64/**.so* mr"
    # eg. glibc-2.30/lib/gconv/gconv-modules
    "$path/lib/** r"
    "$path/lib64/** r"
    # Internal executables
    "$path/libexec/** ixr"
  ],
  name ? "",
}:
rootPaths:
runCommand ("apparmor-closure-rules" + lib.optionalString (name != "") "-${name}") { } ''
  touch $out
  while read -r path
  do printf >>$out "%s,\n" ${
    lib.concatMapStringsSep " " (x: "\"${x}\"") (baseRules ++ additionalRules)
  }
  done <${closureInfo { inherit rootPaths; }}/store-paths
''