Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "config",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "pkgs",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "lib",
default: None,
},
],
},
),
body: With(
With {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 3,
column: 6,
},
end: Position {
line: 3,
column: 9,
},
},
},
),
target: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "cfg",
span: Span {
start: Position {
line: 6,
column: 3,
},
end: Position {
line: 6,
column: 6,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "config",
span: Span {
start: Position {
line: 6,
column: 9,
},
end: Position {
line: 6,
column: 15,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 6,
column: 16,
},
end: Position {
line: 6,
column: 24,
},
},
},
),
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 6,
column: 25,
},
end: Position {
line: 6,
column: 33,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "baseDirLine",
span: Span {
start: Position {
line: 8,
column: 3,
},
end: Position {
line: 8,
column: 14,
},
},
},
),
],
to: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "BaseDir \"",
span: Span {
start: Position {
line: 8,
column: 19,
},
end: Position {
line: 8,
column: 28,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 8,
column: 30,
},
end: Position {
line: 8,
column: 33,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 8,
column: 34,
},
end: Position {
line: 8,
column: 41,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "\"",
span: Span {
start: Position {
line: 8,
column: 19,
},
end: Position {
line: 8,
column: 43,
},
},
},
),
],
span: Span {
start: Position {
line: 8,
column: 17,
},
end: Position {
line: 8,
column: 45,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "unvalidated_conf",
span: Span {
start: Position {
line: 9,
column: 3,
},
end: Position {
line: 9,
column: 19,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 9,
column: 22,
},
end: Position {
line: 9,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "writeText",
span: Span {
start: Position {
line: 9,
column: 27,
},
end: Position {
line: 9,
column: 36,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd-unvalidated.conf",
span: Span {
start: Position {
line: 9,
column: 38,
},
end: Position {
line: 9,
column: 63,
},
},
},
),
],
span: Span {
start: Position {
line: 9,
column: 37,
},
end: Position {
line: 9,
column: 64,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 9,
column: 65,
},
end: Position {
line: 9,
column: 68,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "extraConfig",
span: Span {
start: Position {
line: 9,
column: 69,
},
end: Position {
line: 9,
column: 80,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "conf",
span: Span {
start: Position {
line: 11,
column: 3,
},
end: Position {
line: 11,
column: 7,
},
},
},
),
],
to: IfThenElse(
IfThenElse {
predicate: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 11,
column: 13,
},
end: Position {
line: 11,
column: 16,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "validateConfig",
span: Span {
start: Position {
line: 11,
column: 17,
},
end: Position {
line: 11,
column: 31,
},
},
},
),
],
default: None,
},
),
then: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 12,
column: 5,
},
end: Position {
line: 12,
column: 9,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "runCommand",
span: Span {
start: Position {
line: 12,
column: 10,
},
end: Position {
line: 12,
column: 20,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd.conf",
span: Span {
start: Position {
line: 12,
column: 22,
},
end: Position {
line: 12,
column: 35,
},
},
},
),
],
span: Span {
start: Position {
line: 12,
column: 21,
},
end: Position {
line: 12,
column: 36,
},
},
},
),
Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 12,
column: 37,
},
end: Position {
line: 12,
column: 39,
},
},
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "echo testing ",
span: Span {
start: Position {
line: 13,
column: 1,
},
end: Position {
line: 13,
column: 20,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "unvalidated_conf",
span: Span {
start: Position {
line: 13,
column: 22,
},
end: Position {
line: 13,
column: 38,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\ncp ",
span: Span {
start: Position {
line: 13,
column: 1,
},
end: Position {
line: 14,
column: 10,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "unvalidated_conf",
span: Span {
start: Position {
line: 14,
column: 12,
},
end: Position {
line: 14,
column: 28,
},
},
},
),
},
),
Raw(
PartRaw {
content: " collectd.conf\n# collectd -t fails if BaseDir does not exist.\nsubstituteInPlace collectd.conf --replace ",
span: Span {
start: Position {
line: 13,
column: 1,
},
end: Position {
line: 16,
column: 49,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 16,
column: 51,
},
end: Position {
line: 16,
column: 54,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "escapeShellArgs",
span: Span {
start: Position {
line: 16,
column: 55,
},
end: Position {
line: 16,
column: 70,
},
},
},
),
],
default: None,
},
),
arguments: [
List(
List {
elements: [
Identifier(
Identifier {
id: "baseDirLine",
span: Span {
start: Position {
line: 16,
column: 73,
},
end: Position {
line: 16,
column: 84,
},
},
},
),
],
span: Span {
start: Position {
line: 16,
column: 71,
},
end: Position {
line: 16,
column: 86,
},
},
},
),
],
},
),
},
),
Raw(
PartRaw {
content: " 'BaseDir \".\"'\n",
span: Span {
start: Position {
line: 13,
column: 1,
},
end: Position {
line: 17,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "package",
span: Span {
start: Position {
line: 17,
column: 9,
},
end: Position {
line: 17,
column: 16,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/bin/collectd -t -C collectd.conf\ncp ",
span: Span {
start: Position {
line: 13,
column: 1,
},
end: Position {
line: 18,
column: 10,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "unvalidated_conf",
span: Span {
start: Position {
line: 18,
column: 12,
},
end: Position {
line: 18,
column: 28,
},
},
},
),
},
),
Raw(
PartRaw {
content: " $out\n",
span: Span {
start: Position {
line: 13,
column: 1,
},
end: Position {
line: 19,
column: 5,
},
},
},
),
],
span: Span {
start: Position {
line: 12,
column: 40,
},
end: Position {
line: 19,
column: 7,
},
},
},
),
],
},
),
else_: Identifier(
Identifier {
id: "unvalidated_conf",
span: Span {
start: Position {
line: 19,
column: 13,
},
end: Position {
line: 19,
column: 29,
},
},
},
),
span: Span {
start: Position {
line: 11,
column: 10,
},
end: Position {
line: 19,
column: 29,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 21,
column: 3,
},
end: Position {
line: 21,
column: 10,
},
},
},
),
],
to: IfThenElse(
IfThenElse {
predicate: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 22,
column: 8,
},
end: Position {
line: 22,
column: 11,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "buildMinimalPackage",
span: Span {
start: Position {
line: 22,
column: 12,
},
end: Position {
line: 22,
column: 31,
},
},
},
),
],
default: None,
},
),
then: Identifier(
Identifier {
id: "minimalPackage",
span: Span {
start: Position {
line: 23,
column: 10,
},
end: Position {
line: 23,
column: 24,
},
},
},
),
else_: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 24,
column: 10,
},
end: Position {
line: 24,
column: 13,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 24,
column: 14,
},
end: Position {
line: 24,
column: 21,
},
},
},
),
],
default: None,
},
),
span: Span {
start: Position {
line: 22,
column: 5,
},
end: Position {
line: 24,
column: 21,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "minimalPackage",
span: Span {
start: Position {
line: 26,
column: 3,
},
end: Position {
line: 26,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 26,
column: 20,
},
end: Position {
line: 26,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 26,
column: 24,
},
end: Position {
line: 26,
column: 31,
},
},
},
),
Raw(
PartRaw {
content: "override",
span: Span {
start: Position {
line: 26,
column: 32,
},
end: Position {
line: 26,
column: 40,
},
},
},
),
],
default: None,
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "enabledPlugins",
span: Span {
start: Position {
line: 27,
column: 5,
},
end: Position {
line: 27,
column: 19,
},
},
},
),
],
to: BinaryOperation(
BinaryOperation {
left: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "syslog",
span: Span {
start: Position {
line: 27,
column: 25,
},
end: Position {
line: 27,
column: 31,
},
},
},
),
],
span: Span {
start: Position {
line: 27,
column: 24,
},
end: Position {
line: 27,
column: 32,
},
},
},
),
],
span: Span {
start: Position {
line: 27,
column: 22,
},
end: Position {
line: 27,
column: 34,
},
},
},
),
operator: Concatenation,
right: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "builtins",
span: Span {
start: Position {
line: 27,
column: 38,
},
end: Position {
line: 27,
column: 46,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "attrNames",
span: Span {
start: Position {
line: 27,
column: 47,
},
end: Position {
line: 27,
column: 56,
},
},
},
),
],
default: None,
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 27,
column: 57,
},
end: Position {
line: 27,
column: 60,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "plugins",
span: Span {
start: Position {
line: 27,
column: 61,
},
end: Position {
line: 27,
column: 68,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
},
),
],
span: Span {
start: Position {
line: 26,
column: 41,
},
end: Position {
line: 28,
column: 4,
},
},
},
),
],
},
),
},
),
],
target: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 31,
column: 3,
},
end: Position {
line: 31,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 31,
column: 11,
},
end: Position {
line: 31,
column: 19,
},
},
},
),
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 31,
column: 20,
},
end: Position {
line: 31,
column: 28,
},
},
},
),
],
to: With(
With {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 31,
column: 36,
},
end: Position {
line: 31,
column: 41,
},
},
},
),
target: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "enable",
span: Span {
start: Position {
line: 32,
column: 5,
},
end: Position {
line: 32,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkEnableOption",
span: Span {
start: Position {
line: 32,
column: 14,
},
end: Position {
line: 32,
column: 28,
},
},
},
),
arguments: [
FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 32,
column: 30,
},
end: Position {
line: 32,
column: 33,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 32,
column: 34,
},
end: Position {
line: 32,
column: 39,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd agent",
span: Span {
start: Position {
line: 32,
column: 41,
},
end: Position {
line: 32,
column: 55,
},
},
},
),
],
span: Span {
start: Position {
line: 32,
column: 40,
},
end: Position {
line: 32,
column: 56,
},
},
},
),
],
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "validateConfig",
span: Span {
start: Position {
line: 34,
column: 5,
},
end: Position {
line: 34,
column: 19,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 34,
column: 22,
},
end: Position {
line: 34,
column: 30,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 35,
column: 7,
},
end: Position {
line: 35,
column: 14,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 35,
column: 17,
},
end: Position {
line: 35,
column: 21,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 36,
column: 7,
},
end: Position {
line: 36,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 36,
column: 21,
},
end: Position {
line: 36,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 36,
column: 25,
},
end: Position {
line: 36,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Validate the syntax of collectd configuration file at build time.\nDisable this if you use the Include directive on files unavailable in\nthe build sandbox, or when cross-compiling.\n",
span: Span {
start: Position {
line: 37,
column: 1,
},
end: Position {
line: 40,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 36,
column: 31,
},
end: Position {
line: 40,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 41,
column: 7,
},
end: Position {
line: 41,
column: 11,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 41,
column: 14,
},
end: Position {
line: 41,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 41,
column: 20,
},
end: Position {
line: 41,
column: 24,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 34,
column: 31,
},
end: Position {
line: 42,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 44,
column: 5,
},
end: Position {
line: 44,
column: 12,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 44,
column: 15,
},
end: Position {
line: 44,
column: 23,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 45,
column: 7,
},
end: Position {
line: 45,
column: 14,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 45,
column: 17,
},
end: Position {
line: 45,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 45,
column: 22,
},
end: Position {
line: 45,
column: 30,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "defaultText",
span: Span {
start: Position {
line: 46,
column: 7,
},
end: Position {
line: 46,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "literalExpression",
span: Span {
start: Position {
line: 46,
column: 21,
},
end: Position {
line: 46,
column: 38,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "pkgs.collectd",
span: Span {
start: Position {
line: 46,
column: 40,
},
end: Position {
line: 46,
column: 53,
},
},
},
),
],
span: Span {
start: Position {
line: 46,
column: 39,
},
end: Position {
line: 46,
column: 54,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 47,
column: 7,
},
end: Position {
line: 47,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 47,
column: 21,
},
end: Position {
line: 47,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 47,
column: 25,
},
end: Position {
line: 47,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Which collectd package to use.\n",
span: Span {
start: Position {
line: 48,
column: 1,
},
end: Position {
line: 49,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 47,
column: 31,
},
end: Position {
line: 49,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 50,
column: 7,
},
end: Position {
line: 50,
column: 11,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 50,
column: 14,
},
end: Position {
line: 50,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 50,
column: 20,
},
end: Position {
line: 50,
column: 27,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 44,
column: 24,
},
end: Position {
line: 51,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "buildMinimalPackage",
span: Span {
start: Position {
line: 53,
column: 5,
},
end: Position {
line: 53,
column: 24,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 53,
column: 27,
},
end: Position {
line: 53,
column: 35,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 54,
column: 7,
},
end: Position {
line: 54,
column: 14,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 54,
column: 17,
},
end: Position {
line: 54,
column: 22,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 55,
column: 7,
},
end: Position {
line: 55,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 55,
column: 21,
},
end: Position {
line: 55,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 55,
column: 25,
},
end: Position {
line: 55,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Build a minimal collectd package with only the configured `services.collectd.plugins`\n",
span: Span {
start: Position {
line: 56,
column: 1,
},
end: Position {
line: 57,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 55,
column: 31,
},
end: Position {
line: 57,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 58,
column: 7,
},
end: Position {
line: 58,
column: 11,
},
},
},
),
],
to: Identifier(
Identifier {
id: "bool",
span: Span {
start: Position {
line: 58,
column: 14,
},
end: Position {
line: 58,
column: 18,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 53,
column: 36,
},
end: Position {
line: 59,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 61,
column: 5,
},
end: Position {
line: 61,
column: 9,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 61,
column: 12,
},
end: Position {
line: 61,
column: 20,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 62,
column: 7,
},
end: Position {
line: 62,
column: 14,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 62,
column: 18,
},
end: Position {
line: 62,
column: 26,
},
},
},
),
],
span: Span {
start: Position {
line: 62,
column: 17,
},
end: Position {
line: 62,
column: 27,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 63,
column: 7,
},
end: Position {
line: 63,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 63,
column: 21,
},
end: Position {
line: 63,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 63,
column: 25,
},
end: Position {
line: 63,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "User under which to run collectd.\n",
span: Span {
start: Position {
line: 64,
column: 1,
},
end: Position {
line: 65,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 63,
column: 31,
},
end: Position {
line: 65,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 66,
column: 7,
},
end: Position {
line: 66,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "nullOr",
span: Span {
start: Position {
line: 66,
column: 14,
},
end: Position {
line: 66,
column: 20,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "str",
span: Span {
start: Position {
line: 66,
column: 21,
},
end: Position {
line: 66,
column: 24,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 61,
column: 21,
},
end: Position {
line: 67,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 69,
column: 5,
},
end: Position {
line: 69,
column: 12,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 69,
column: 15,
},
end: Position {
line: 69,
column: 23,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 70,
column: 7,
},
end: Position {
line: 70,
column: 14,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/var/lib/collectd",
span: Span {
start: Position {
line: 70,
column: 18,
},
end: Position {
line: 70,
column: 35,
},
},
},
),
],
span: Span {
start: Position {
line: 70,
column: 17,
},
end: Position {
line: 70,
column: 36,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 71,
column: 7,
},
end: Position {
line: 71,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 71,
column: 21,
},
end: Position {
line: 71,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 71,
column: 25,
},
end: Position {
line: 71,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Data directory for collectd agent.\n",
span: Span {
start: Position {
line: 72,
column: 1,
},
end: Position {
line: 73,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 71,
column: 31,
},
end: Position {
line: 73,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 74,
column: 7,
},
end: Position {
line: 74,
column: 11,
},
},
},
),
],
to: Identifier(
Identifier {
id: "path",
span: Span {
start: Position {
line: 74,
column: 14,
},
end: Position {
line: 74,
column: 18,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 69,
column: 24,
},
end: Position {
line: 75,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "autoLoadPlugin",
span: Span {
start: Position {
line: 77,
column: 5,
},
end: Position {
line: 77,
column: 19,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 77,
column: 22,
},
end: Position {
line: 77,
column: 30,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 78,
column: 7,
},
end: Position {
line: 78,
column: 14,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 78,
column: 17,
},
end: Position {
line: 78,
column: 22,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 79,
column: 7,
},
end: Position {
line: 79,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 79,
column: 21,
},
end: Position {
line: 79,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 79,
column: 25,
},
end: Position {
line: 79,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Enable plugin autoloading.\n",
span: Span {
start: Position {
line: 80,
column: 1,
},
end: Position {
line: 81,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 79,
column: 31,
},
end: Position {
line: 81,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 82,
column: 7,
},
end: Position {
line: 82,
column: 11,
},
},
},
),
],
to: Identifier(
Identifier {
id: "bool",
span: Span {
start: Position {
line: 82,
column: 14,
},
end: Position {
line: 82,
column: 18,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 77,
column: 31,
},
end: Position {
line: 83,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "include",
span: Span {
start: Position {
line: 85,
column: 5,
},
end: Position {
line: 85,
column: 12,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 85,
column: 15,
},
end: Position {
line: 85,
column: 23,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 86,
column: 7,
},
end: Position {
line: 86,
column: 14,
},
},
},
),
],
to: List(
List {
elements: [],
span: Span {
start: Position {
line: 86,
column: 17,
},
end: Position {
line: 86,
column: 19,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 87,
column: 7,
},
end: Position {
line: 87,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 87,
column: 21,
},
end: Position {
line: 87,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 87,
column: 25,
},
end: Position {
line: 87,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Additional paths to load config from.\n",
span: Span {
start: Position {
line: 88,
column: 1,
},
end: Position {
line: 89,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 87,
column: 31,
},
end: Position {
line: 89,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 90,
column: 7,
},
end: Position {
line: 90,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "listOf",
span: Span {
start: Position {
line: 90,
column: 14,
},
end: Position {
line: 90,
column: 20,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "str",
span: Span {
start: Position {
line: 90,
column: 21,
},
end: Position {
line: 90,
column: 24,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 85,
column: 24,
},
end: Position {
line: 91,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "plugins",
span: Span {
start: Position {
line: 93,
column: 5,
},
end: Position {
line: 93,
column: 12,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 93,
column: 15,
},
end: Position {
line: 93,
column: 23,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 94,
column: 7,
},
end: Position {
line: 94,
column: 14,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 94,
column: 17,
},
end: Position {
line: 94,
column: 19,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 95,
column: 7,
},
end: Position {
line: 95,
column: 14,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "cpu",
span: Span {
start: Position {
line: 95,
column: 19,
},
end: Position {
line: 95,
column: 22,
},
},
},
),
],
to: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 95,
column: 25,
},
end: Position {
line: 95,
column: 27,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "memory",
span: Span {
start: Position {
line: 95,
column: 29,
},
end: Position {
line: 95,
column: 35,
},
},
},
),
],
to: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 95,
column: 38,
},
end: Position {
line: 95,
column: 40,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "network",
span: Span {
start: Position {
line: 95,
column: 42,
},
end: Position {
line: 95,
column: 49,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "Server 192.168.1.1 25826",
span: Span {
start: Position {
line: 95,
column: 53,
},
end: Position {
line: 95,
column: 77,
},
},
},
),
],
span: Span {
start: Position {
line: 95,
column: 52,
},
end: Position {
line: 95,
column: 78,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 95,
column: 17,
},
end: Position {
line: 95,
column: 81,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 96,
column: 7,
},
end: Position {
line: 96,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 96,
column: 21,
},
end: Position {
line: 96,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 96,
column: 25,
},
end: Position {
line: 96,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Attribute set of plugin names to plugin config segments\n",
span: Span {
start: Position {
line: 97,
column: 1,
},
end: Position {
line: 98,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 96,
column: 31,
},
end: Position {
line: 98,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 99,
column: 7,
},
end: Position {
line: 99,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "attrsOf",
span: Span {
start: Position {
line: 99,
column: 14,
},
end: Position {
line: 99,
column: 21,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "lines",
span: Span {
start: Position {
line: 99,
column: 22,
},
end: Position {
line: 99,
column: 27,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 93,
column: 24,
},
end: Position {
line: 100,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "extraConfig",
span: Span {
start: Position {
line: 102,
column: 5,
},
end: Position {
line: 102,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 102,
column: 19,
},
end: Position {
line: 102,
column: 27,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 103,
column: 7,
},
end: Position {
line: 103,
column: 14,
},
},
},
),
],
to: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 103,
column: 17,
},
end: Position {
line: 103,
column: 19,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 104,
column: 7,
},
end: Position {
line: 104,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 104,
column: 21,
},
end: Position {
line: 104,
column: 24,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 104,
column: 25,
},
end: Position {
line: 104,
column: 30,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Extra configuration for collectd. Use mkBefore to add lines before the\ndefault config, and mkAfter to add them below.\n",
span: Span {
start: Position {
line: 105,
column: 1,
},
end: Position {
line: 107,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 104,
column: 31,
},
end: Position {
line: 107,
column: 9,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 108,
column: 7,
},
end: Position {
line: 108,
column: 11,
},
},
},
),
],
to: Identifier(
Identifier {
id: "lines",
span: Span {
start: Position {
line: 108,
column: 14,
},
end: Position {
line: 108,
column: 19,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 102,
column: 28,
},
end: Position {
line: 109,
column: 6,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 31,
column: 43,
},
end: Position {
line: 111,
column: 4,
},
},
},
),
span: Span {
start: Position {
line: 31,
column: 31,
},
end: Position {
line: 111,
column: 4,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "config",
span: Span {
start: Position {
line: 113,
column: 3,
},
end: Position {
line: 113,
column: 9,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkIf",
span: Span {
start: Position {
line: 113,
column: 12,
},
end: Position {
line: 113,
column: 16,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 113,
column: 17,
},
end: Position {
line: 113,
column: 20,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "enable",
span: Span {
start: Position {
line: 113,
column: 21,
},
end: Position {
line: 113,
column: 27,
},
},
},
),
],
default: None,
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 115,
column: 5,
},
end: Position {
line: 115,
column: 13,
},
},
},
),
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 115,
column: 14,
},
end: Position {
line: 115,
column: 22,
},
},
},
),
Raw(
PartRaw {
content: "extraConfig",
span: Span {
start: Position {
line: 115,
column: 23,
},
end: Position {
line: 115,
column: 34,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 115,
column: 37,
},
end: Position {
line: 115,
column: 40,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mkOrder",
span: Span {
start: Position {
line: 115,
column: 41,
},
end: Position {
line: 115,
column: 48,
},
},
},
),
],
default: None,
},
),
arguments: [
Integer(
Integer {
value: "1200",
span: Span {
start: Position {
line: 115,
column: 49,
},
end: Position {
line: 115,
column: 53,
},
},
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "",
span: Span {
start: Position {
line: 116,
column: 1,
},
end: Position {
line: 116,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "baseDirLine",
span: Span {
start: Position {
line: 116,
column: 9,
},
end: Position {
line: 116,
column: 20,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\nAutoLoadPlugin ",
span: Span {
start: Position {
line: 116,
column: 1,
},
end: Position {
line: 117,
column: 22,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "boolToString",
span: Span {
start: Position {
line: 117,
column: 24,
},
end: Position {
line: 117,
column: 36,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 117,
column: 37,
},
end: Position {
line: 117,
column: 40,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "autoLoadPlugin",
span: Span {
start: Position {
line: 117,
column: 41,
},
end: Position {
line: 117,
column: 55,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\nHostname \"",
span: Span {
start: Position {
line: 116,
column: 1,
},
end: Position {
line: 118,
column: 17,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "config",
span: Span {
start: Position {
line: 118,
column: 19,
},
end: Position {
line: 118,
column: 25,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "networking",
span: Span {
start: Position {
line: 118,
column: 26,
},
end: Position {
line: 118,
column: 36,
},
},
},
),
Raw(
PartRaw {
content: "hostName",
span: Span {
start: Position {
line: 118,
column: 37,
},
end: Position {
line: 118,
column: 45,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "\"\n\nLoadPlugin syslog\n\n LogLevel \"info\"\n NotifyLevel \"OKAY\"\n\n\n",
span: Span {
start: Position {
line: 116,
column: 1,
},
end: Position {
line: 126,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "concatStrings",
span: Span {
start: Position {
line: 126,
column: 9,
},
end: Position {
line: 126,
column: 22,
},
},
},
),
arguments: [
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mapAttrsToList",
span: Span {
start: Position {
line: 126,
column: 24,
},
end: Position {
line: 126,
column: 38,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "plugin",
},
),
body: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "pluginConfig",
},
),
body: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "LoadPlugin ",
span: Span {
start: Position {
line: 127,
column: 1,
},
end: Position {
line: 127,
column: 20,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "plugin",
span: Span {
start: Position {
line: 127,
column: 22,
},
end: Position {
line: 127,
column: 28,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\n\n",
span: Span {
start: Position {
line: 127,
column: 1,
},
end: Position {
line: 129,
column: 9,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "pluginConfig",
span: Span {
start: Position {
line: 129,
column: 11,
},
end: Position {
line: 129,
column: 23,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\n\n",
span: Span {
start: Position {
line: 127,
column: 1,
},
end: Position {
line: 131,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 126,
column: 62,
},
end: Position {
line: 131,
column: 9,
},
},
},
),
span: Span {
start: Position {
line: 126,
column: 48,
},
end: Position {
line: 131,
column: 9,
},
},
},
),
span: Span {
start: Position {
line: 126,
column: 40,
},
end: Position {
line: 131,
column: 9,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 131,
column: 11,
},
end: Position {
line: 131,
column: 14,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "plugins",
span: Span {
start: Position {
line: 131,
column: 15,
},
end: Position {
line: 131,
column: 22,
},
},
},
),
],
default: None,
},
),
],
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\n\n",
span: Span {
start: Position {
line: 116,
column: 1,
},
end: Position {
line: 133,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "concatMapStrings",
span: Span {
start: Position {
line: 133,
column: 9,
},
end: Position {
line: 133,
column: 25,
},
},
},
),
arguments: [
Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "f",
},
),
body: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Include \"",
span: Span {
start: Position {
line: 134,
column: 1,
},
end: Position {
line: 134,
column: 18,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "f",
span: Span {
start: Position {
line: 134,
column: 20,
},
end: Position {
line: 134,
column: 21,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\"\n",
span: Span {
start: Position {
line: 134,
column: 1,
},
end: Position {
line: 135,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 133,
column: 30,
},
end: Position {
line: 135,
column: 9,
},
},
},
),
span: Span {
start: Position {
line: 133,
column: 27,
},
end: Position {
line: 135,
column: 9,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 135,
column: 11,
},
end: Position {
line: 135,
column: 14,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "include",
span: Span {
start: Position {
line: 135,
column: 15,
},
end: Position {
line: 135,
column: 22,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 116,
column: 1,
},
end: Position {
line: 136,
column: 5,
},
},
},
),
],
span: Span {
start: Position {
line: 115,
column: 54,
},
end: Position {
line: 136,
column: 7,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "systemd",
span: Span {
start: Position {
line: 138,
column: 5,
},
end: Position {
line: 138,
column: 12,
},
},
},
),
Raw(
PartRaw {
content: "tmpfiles",
span: Span {
start: Position {
line: 138,
column: 13,
},
end: Position {
line: 138,
column: 21,
},
},
},
),
Raw(
PartRaw {
content: "rules",
span: Span {
start: Position {
line: 138,
column: 22,
},
end: Position {
line: 138,
column: 27,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "d '",
span: Span {
start: Position {
line: 139,
column: 8,
},
end: Position {
line: 139,
column: 25,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 139,
column: 13,
},
end: Position {
line: 139,
column: 16,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 139,
column: 17,
},
end: Position {
line: 139,
column: 24,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "' - ",
span: Span {
start: Position {
line: 139,
column: 8,
},
end: Position {
line: 139,
column: 29,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 139,
column: 31,
},
end: Position {
line: 139,
column: 34,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 139,
column: 35,
},
end: Position {
line: 139,
column: 39,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: " - - -",
span: Span {
start: Position {
line: 139,
column: 8,
},
end: Position {
line: 139,
column: 46,
},
},
},
),
],
span: Span {
start: Position {
line: 139,
column: 7,
},
end: Position {
line: 139,
column: 47,
},
},
},
),
],
span: Span {
start: Position {
line: 138,
column: 30,
},
end: Position {
line: 140,
column: 6,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "systemd",
span: Span {
start: Position {
line: 142,
column: 5,
},
end: Position {
line: 142,
column: 12,
},
},
},
),
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 142,
column: 13,
},
end: Position {
line: 142,
column: 21,
},
},
},
),
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 142,
column: 22,
},
end: Position {
line: 142,
column: 30,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 143,
column: 7,
},
end: Position {
line: 143,
column: 18,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "Collectd Monitoring Agent",
span: Span {
start: Position {
line: 143,
column: 22,
},
end: Position {
line: 143,
column: 47,
},
},
},
),
],
span: Span {
start: Position {
line: 143,
column: 21,
},
end: Position {
line: 143,
column: 48,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "after",
span: Span {
start: Position {
line: 144,
column: 7,
},
end: Position {
line: 144,
column: 12,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "network.target",
span: Span {
start: Position {
line: 144,
column: 18,
},
end: Position {
line: 144,
column: 32,
},
},
},
),
],
span: Span {
start: Position {
line: 144,
column: 17,
},
end: Position {
line: 144,
column: 33,
},
},
},
),
],
span: Span {
start: Position {
line: 144,
column: 15,
},
end: Position {
line: 144,
column: 35,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "wantedBy",
span: Span {
start: Position {
line: 145,
column: 7,
},
end: Position {
line: 145,
column: 15,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "multi-user.target",
span: Span {
start: Position {
line: 145,
column: 21,
},
end: Position {
line: 145,
column: 38,
},
},
},
),
],
span: Span {
start: Position {
line: 145,
column: 20,
},
end: Position {
line: 145,
column: 39,
},
},
},
),
],
span: Span {
start: Position {
line: 145,
column: 18,
},
end: Position {
line: 145,
column: 41,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "serviceConfig",
span: Span {
start: Position {
line: 147,
column: 7,
},
end: Position {
line: 147,
column: 20,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "ExecStart",
span: Span {
start: Position {
line: 148,
column: 9,
},
end: Position {
line: 148,
column: 18,
},
},
},
),
],
to: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "package",
span: Span {
start: Position {
line: 148,
column: 24,
},
end: Position {
line: 148,
column: 31,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/sbin/collectd -C ",
span: Span {
start: Position {
line: 148,
column: 22,
},
end: Position {
line: 148,
column: 50,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "conf",
span: Span {
start: Position {
line: 148,
column: 52,
},
end: Position {
line: 148,
column: 56,
},
},
},
),
},
),
Raw(
PartRaw {
content: " -f",
span: Span {
start: Position {
line: 148,
column: 22,
},
end: Position {
line: 148,
column: 60,
},
},
},
),
],
span: Span {
start: Position {
line: 148,
column: 21,
},
end: Position {
line: 148,
column: 61,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "User",
span: Span {
start: Position {
line: 149,
column: 9,
},
end: Position {
line: 149,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 149,
column: 16,
},
end: Position {
line: 149,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 149,
column: 20,
},
end: Position {
line: 149,
column: 24,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "Restart",
span: Span {
start: Position {
line: 150,
column: 9,
},
end: Position {
line: 150,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "on-failure",
span: Span {
start: Position {
line: 150,
column: 20,
},
end: Position {
line: 150,
column: 30,
},
},
},
),
],
span: Span {
start: Position {
line: 150,
column: 19,
},
end: Position {
line: 150,
column: 31,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "RestartSec",
span: Span {
start: Position {
line: 151,
column: 9,
},
end: Position {
line: 151,
column: 19,
},
},
},
),
],
to: Integer(
Integer {
value: "3",
span: Span {
start: Position {
line: 151,
column: 22,
},
end: Position {
line: 151,
column: 23,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 147,
column: 23,
},
end: Position {
line: 152,
column: 8,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 142,
column: 33,
},
end: Position {
line: 153,
column: 6,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 155,
column: 5,
},
end: Position {
line: 155,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 155,
column: 11,
},
end: Position {
line: 155,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalAttrs",
span: Span {
start: Position {
line: 155,
column: 19,
},
end: Position {
line: 155,
column: 32,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 155,
column: 34,
},
end: Position {
line: 155,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 155,
column: 38,
},
end: Position {
line: 155,
column: 42,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 155,
column: 47,
},
end: Position {
line: 155,
column: 55,
},
},
},
),
],
span: Span {
start: Position {
line: 155,
column: 46,
},
end: Position {
line: 155,
column: 56,
},
},
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 156,
column: 7,
},
end: Position {
line: 156,
column: 15,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "isSystemUser",
span: Span {
start: Position {
line: 157,
column: 9,
},
end: Position {
line: 157,
column: 21,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 157,
column: 24,
},
end: Position {
line: 157,
column: 28,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 158,
column: 9,
},
end: Position {
line: 158,
column: 14,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 158,
column: 18,
},
end: Position {
line: 158,
column: 26,
},
},
},
),
],
span: Span {
start: Position {
line: 158,
column: 17,
},
end: Position {
line: 158,
column: 27,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 156,
column: 18,
},
end: Position {
line: 159,
column: 8,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 155,
column: 58,
},
end: Position {
line: 160,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 162,
column: 5,
},
end: Position {
line: 162,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "groups",
span: Span {
start: Position {
line: 162,
column: 11,
},
end: Position {
line: 162,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalAttrs",
span: Span {
start: Position {
line: 162,
column: 20,
},
end: Position {
line: 162,
column: 33,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 162,
column: 35,
},
end: Position {
line: 162,
column: 38,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 162,
column: 39,
},
end: Position {
line: 162,
column: 43,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 162,
column: 48,
},
end: Position {
line: 162,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 162,
column: 47,
},
end: Position {
line: 162,
column: 57,
},
},
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "collectd",
span: Span {
start: Position {
line: 163,
column: 7,
},
end: Position {
line: 163,
column: 15,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [],
span: Span {
start: Position {
line: 163,
column: 18,
},
end: Position {
line: 163,
column: 20,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 162,
column: 59,
},
end: Position {
line: 164,
column: 6,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 113,
column: 28,
},
end: Position {
line: 165,
column: 4,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 30,
column: 4,
},
end: Position {
line: 166,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 5,
column: 1,
},
end: Position {
line: 166,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 3,
column: 1,
},
end: Position {
line: 166,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 1,
column: 1,
},
end: Position {
line: 166,
column: 2,
},
},
},
)