Function(
Function {
head: Destructured(
FunctionHeadDestructured {
ellipsis: true,
identifier: None,
arguments: [
FunctionHeadDestructuredArgument {
identifier: "config",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "lib",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "options",
default: None,
},
FunctionHeadDestructuredArgument {
identifier: "pkgs",
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: "gid",
span: Span {
start: Position {
line: 7,
column: 3,
},
end: Position {
line: 7,
column: 6,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "config",
span: Span {
start: Position {
line: 7,
column: 9,
},
end: Position {
line: 7,
column: 15,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "ids",
span: Span {
start: Position {
line: 7,
column: 16,
},
end: Position {
line: 7,
column: 19,
},
},
},
),
Raw(
PartRaw {
content: "gids",
span: Span {
start: Position {
line: 7,
column: 20,
},
end: Position {
line: 7,
column: 24,
},
},
},
),
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 7,
column: 25,
},
end: Position {
line: 7,
column: 34,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "cfg",
span: Span {
start: Position {
line: 8,
column: 3,
},
end: Position {
line: 8,
column: 6,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "config",
span: Span {
start: Position {
line: 8,
column: 9,
},
end: Position {
line: 8,
column: 15,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 8,
column: 16,
},
end: Position {
line: 8,
column: 24,
},
},
},
),
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 8,
column: 25,
},
end: Position {
line: 8,
column: 34,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "opt",
span: Span {
start: Position {
line: 9,
column: 3,
},
end: Position {
line: 9,
column: 6,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "options",
span: Span {
start: Position {
line: 9,
column: 9,
},
end: Position {
line: 9,
column: 16,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 9,
column: 17,
},
end: Position {
line: 9,
column: 25,
},
},
},
),
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 9,
column: 26,
},
end: Position {
line: 9,
column: 35,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "name",
span: Span {
start: Position {
line: 10,
column: 3,
},
end: Position {
line: 10,
column: 7,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 10,
column: 10,
},
end: Position {
line: 10,
column: 13,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 10,
column: 14,
},
end: Position {
line: 10,
column: 21,
},
},
},
),
Raw(
PartRaw {
content: "pname",
span: Span {
start: Position {
line: 10,
column: 22,
},
end: Position {
line: 10,
column: 27,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "pkg",
span: Span {
start: Position {
line: 11,
column: 3,
},
end: Position {
line: 11,
column: 6,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 11,
column: 9,
},
end: Position {
line: 11,
column: 12,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 11,
column: 13,
},
end: Position {
line: 11,
column: 20,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "optionYesNo",
span: Span {
start: Position {
line: 12,
column: 3,
},
end: Position {
line: 12,
column: 14,
},
},
},
),
],
to: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "option",
},
),
body: IfThenElse(
IfThenElse {
predicate: Identifier(
Identifier {
id: "option",
span: Span {
start: Position {
line: 12,
column: 28,
},
end: Position {
line: 12,
column: 34,
},
},
},
),
then: String(
String_ {
parts: [
Raw(
PartRaw {
content: "yes",
span: Span {
start: Position {
line: 12,
column: 41,
},
end: Position {
line: 12,
column: 44,
},
},
},
),
],
span: Span {
start: Position {
line: 12,
column: 40,
},
end: Position {
line: 12,
column: 45,
},
},
},
),
else_: String(
String_ {
parts: [
Raw(
PartRaw {
content: "no",
span: Span {
start: Position {
line: 12,
column: 52,
},
end: Position {
line: 12,
column: 54,
},
},
},
),
],
span: Span {
start: Position {
line: 12,
column: 51,
},
end: Position {
line: 12,
column: 55,
},
},
},
),
span: Span {
start: Position {
line: 12,
column: 25,
},
end: Position {
line: 12,
column: 55,
},
},
},
),
span: Span {
start: Position {
line: 12,
column: 17,
},
end: Position {
line: 12,
column: 55,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "mediaDirectory",
span: Span {
start: Position {
line: 14,
column: 3,
},
end: Position {
line: 14,
column: 17,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 15,
column: 5,
},
end: Position {
line: 15,
column: 12,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 16,
column: 7,
},
end: Position {
line: 16,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 16,
column: 14,
},
end: Position {
line: 16,
column: 22,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 17,
column: 9,
},
end: Position {
line: 17,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 17,
column: 16,
},
end: Position {
line: 17,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 17,
column: 22,
},
end: Position {
line: 17,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 18,
column: 9,
},
end: Position {
line: 18,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 18,
column: 23,
},
end: Position {
line: 18,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 18,
column: 27,
},
end: Position {
line: 18,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Absolute directory path to the media directory to index.\n",
span: Span {
start: Position {
line: 19,
column: 1,
},
end: Position {
line: 20,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 18,
column: 33,
},
end: Position {
line: 20,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 16,
column: 23,
},
end: Position {
line: 21,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "recursive",
span: Span {
start: Position {
line: 22,
column: 7,
},
end: Position {
line: 22,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 22,
column: 19,
},
end: Position {
line: 22,
column: 27,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 23,
column: 9,
},
end: Position {
line: 23,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 23,
column: 16,
},
end: Position {
line: 23,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 23,
column: 22,
},
end: Position {
line: 23,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 24,
column: 9,
},
end: Position {
line: 24,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 24,
column: 19,
},
end: Position {
line: 24,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 25,
column: 9,
},
end: Position {
line: 25,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 25,
column: 23,
},
end: Position {
line: 25,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 25,
column: 27,
},
end: Position {
line: 25,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Whether the indexation must take place recursively or not.",
span: Span {
start: Position {
line: 25,
column: 34,
},
end: Position {
line: 25,
column: 92,
},
},
},
),
],
span: Span {
start: Position {
line: 25,
column: 33,
},
end: Position {
line: 25,
column: 93,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 22,
column: 28,
},
end: Position {
line: 26,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "hidden-files",
span: Span {
start: Position {
line: 27,
column: 7,
},
end: Position {
line: 27,
column: 19,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 27,
column: 22,
},
end: Position {
line: 27,
column: 30,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 28,
column: 9,
},
end: Position {
line: 28,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 28,
column: 16,
},
end: Position {
line: 28,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 28,
column: 22,
},
end: Position {
line: 28,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 29,
column: 9,
},
end: Position {
line: 29,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 29,
column: 19,
},
end: Position {
line: 29,
column: 23,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 30,
column: 9,
},
end: Position {
line: 30,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 30,
column: 23,
},
end: Position {
line: 30,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 30,
column: 27,
},
end: Position {
line: 30,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Whether to index the hidden files or not.",
span: Span {
start: Position {
line: 30,
column: 34,
},
end: Position {
line: 30,
column: 75,
},
},
},
),
],
span: Span {
start: Position {
line: 30,
column: 33,
},
end: Position {
line: 30,
column: 76,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 27,
column: 31,
},
end: Position {
line: 31,
column: 8,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 15,
column: 15,
},
end: Position {
line: 32,
column: 6,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 14,
column: 20,
},
end: Position {
line: 33,
column: 4,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "toMediaDirectory",
span: Span {
start: Position {
line: 34,
column: 3,
},
end: Position {
line: 34,
column: 19,
},
},
},
),
],
to: Function(
Function {
head: Simple(
FunctionHeadSimple {
identifier: "d",
},
),
body: String(
String_ {
parts: [
Raw(
PartRaw {
content: "\n",
span: Span {
start: Position {
line: 34,
column: 26,
},
end: Position {
line: 34,
column: 169,
},
},
},
),
],
span: Span {
start: Position {
line: 34,
column: 25,
},
end: Position {
line: 34,
column: 170,
},
},
},
),
span: Span {
start: Position {
line: 34,
column: 22,
},
end: Position {
line: 34,
column: 170,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "transcodingConfig",
span: Span {
start: Position {
line: 36,
column: 3,
},
end: Position {
line: 36,
column: 20,
},
},
},
),
],
to: IfThenElse(
IfThenElse {
predicate: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 36,
column: 26,
},
end: Position {
line: 36,
column: 29,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "transcoding",
span: Span {
start: Position {
line: 36,
column: 30,
},
end: Position {
line: 36,
column: 41,
},
},
},
),
],
default: None,
},
),
then: With(
With {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 36,
column: 52,
},
end: Position {
line: 36,
column: 56,
},
},
},
),
target: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "\n \n \n \n \n \n \n \n \n audio/mpeg\n no\n yes\n no\n \n \n \n \n video/mpeg\n yes\n yes\n yes\n \n \n \n \n\n",
span: Span {
start: Position {
line: 37,
column: 1,
},
end: Position {
line: 64,
column: 1,
},
},
},
),
],
span: Span {
start: Position {
line: 36,
column: 58,
},
end: Position {
line: 64,
column: 3,
},
},
},
),
span: Span {
start: Position {
line: 36,
column: 47,
},
end: Position {
line: 64,
column: 3,
},
},
},
),
else_: IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "\n\n",
span: Span {
start: Position {
line: 65,
column: 1,
},
end: Position {
line: 67,
column: 1,
},
},
},
),
],
span: Span {
start: Position {
line: 64,
column: 9,
},
end: Position {
line: 67,
column: 3,
},
},
},
),
span: Span {
start: Position {
line: 36,
column: 23,
},
end: Position {
line: 67,
column: 3,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "configText",
span: Span {
start: Position {
line: 69,
column: 3,
},
end: Position {
line: 69,
column: 13,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalString",
span: Span {
start: Position {
line: 69,
column: 16,
},
end: Position {
line: 69,
column: 30,
},
},
},
),
arguments: [
UnaryOperation(
UnaryOperation {
operator: Not,
operand: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 69,
column: 34,
},
end: Position {
line: 69,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "customCfg",
span: Span {
start: Position {
line: 69,
column: 38,
},
end: Position {
line: 69,
column: 47,
},
},
},
),
],
default: None,
},
),
span: Span {
start: Position {
line: 69,
column: 32,
},
end: Position {
line: 69,
column: 47,
},
},
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "\n\n \n \n \n \n \n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 78,
column: 13,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 78,
column: 15,
},
end: Position {
line: 78,
column: 18,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "serverName",
span: Span {
start: Position {
line: 78,
column: 19,
},
end: Position {
line: 78,
column: 29,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "\n uuid:",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 79,
column: 17,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 79,
column: 19,
},
end: Position {
line: 79,
column: 22,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "uuid",
span: Span {
start: Position {
line: 79,
column: 23,
},
end: Position {
line: 79,
column: 27,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "\n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 80,
column: 13,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 80,
column: 15,
},
end: Position {
line: 80,
column: 18,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 80,
column: 19,
},
end: Position {
line: 80,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "\n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 81,
column: 18,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 81,
column: 20,
},
end: Position {
line: 81,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 81,
column: 24,
},
end: Position {
line: 81,
column: 33,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: "\n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 82,
column: 16,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "pkg",
span: Span {
start: Position {
line: 82,
column: 18,
},
end: Position {
line: 82,
column: 21,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/share/",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 82,
column: 29,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 82,
column: 31,
},
end: Position {
line: 82,
column: 35,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/web\n \n \n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 86,
column: 26,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 86,
column: 28,
},
end: Position {
line: 86,
column: 32,
},
},
},
),
},
),
Raw(
PartRaw {
content: ".db\n \n \n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 90,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalString",
span: Span {
start: Position {
line: 90,
column: 9,
},
end: Position {
line: 90,
column: 23,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 90,
column: 24,
},
end: Position {
line: 90,
column: 27,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "dsmSupport",
span: Span {
start: Position {
line: 90,
column: 28,
},
end: Position {
line: 90,
column: 38,
},
},
},
),
],
default: None,
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "\n \n\n\nredsonic.com\n105\n",
span: Span {
start: Position {
line: 91,
column: 1,
},
end: Position {
line: 97,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 90,
column: 39,
},
end: Position {
line: 97,
column: 9,
},
},
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 98,
column: 9,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalString",
span: Span {
start: Position {
line: 98,
column: 11,
},
end: Position {
line: 98,
column: 25,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 98,
column: 26,
},
end: Position {
line: 98,
column: 29,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "tg100Support",
span: Span {
start: Position {
line: 98,
column: 30,
},
end: Position {
line: 98,
column: 42,
},
},
},
),
],
default: None,
},
),
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "101\n",
span: Span {
start: Position {
line: 99,
column: 1,
},
end: Position {
line: 100,
column: 7,
},
},
},
),
],
span: Span {
start: Position {
line: 98,
column: 43,
},
end: Position {
line: 100,
column: 9,
},
},
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\n \n \n *\n \n video\n \n \n \n \n \n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 112,
column: 7,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "concatMapStrings",
span: Span {
start: Position {
line: 112,
column: 9,
},
end: Position {
line: 112,
column: 25,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "toMediaDirectory",
span: Span {
start: Position {
line: 112,
column: 26,
},
end: Position {
line: 112,
column: 42,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 112,
column: 43,
},
end: Position {
line: 112,
column: 46,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mediaDirectories",
span: Span {
start: Position {
line: 112,
column: 47,
},
end: Position {
line: 112,
column: 63,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
Raw(
PartRaw {
content: "\n \n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 115,
column: 24,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "pkg",
span: Span {
start: Position {
line: 115,
column: 26,
},
end: Position {
line: 115,
column: 29,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/share/",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 115,
column: 37,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 115,
column: 39,
},
end: Position {
line: 115,
column: 43,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/js/common.js\n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 116,
column: 26,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "pkg",
span: Span {
start: Position {
line: 116,
column: 28,
},
end: Position {
line: 116,
column: 31,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/share/",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 116,
column: 39,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 116,
column: 41,
},
end: Position {
line: 116,
column: 45,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/js/playlists.js\n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 118,
column: 26,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "pkg",
span: Span {
start: Position {
line: 118,
column: 28,
},
end: Position {
line: 118,
column: 31,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/share/",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 118,
column: 39,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 118,
column: 41,
},
end: Position {
line: 118,
column: 45,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/js/import.js\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 183,
column: 5,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "transcodingConfig",
span: Span {
start: Position {
line: 183,
column: 7,
},
end: Position {
line: 183,
column: 24,
},
},
},
),
},
),
Raw(
PartRaw {
content: "\n \n",
span: Span {
start: Position {
line: 70,
column: 1,
},
end: Position {
line: 185,
column: 1,
},
},
},
),
],
span: Span {
start: Position {
line: 69,
column: 49,
},
end: Position {
line: 185,
column: 3,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "defaultFirewallRules",
span: Span {
start: Position {
line: 186,
column: 3,
},
end: Position {
line: 186,
column: 23,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "allowedUDPPorts",
span: Span {
start: Position {
line: 190,
column: 5,
},
end: Position {
line: 190,
column: 20,
},
},
},
),
],
to: List(
List {
elements: [
Integer(
Integer {
value: "1900",
span: Span {
start: Position {
line: 190,
column: 25,
},
end: Position {
line: 190,
column: 29,
},
},
},
),
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 190,
column: 30,
},
end: Position {
line: 190,
column: 33,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "port",
span: Span {
start: Position {
line: 190,
column: 34,
},
end: Position {
line: 190,
column: 38,
},
},
},
),
],
default: None,
},
),
],
span: Span {
start: Position {
line: 190,
column: 23,
},
end: Position {
line: 190,
column: 40,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "allowedTCPPorts",
span: Span {
start: Position {
line: 191,
column: 5,
},
end: Position {
line: 191,
column: 20,
},
},
},
),
],
to: List(
List {
elements: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 191,
column: 25,
},
end: Position {
line: 191,
column: 28,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "port",
span: Span {
start: Position {
line: 191,
column: 29,
},
end: Position {
line: 191,
column: 33,
},
},
},
),
],
default: None,
},
),
],
span: Span {
start: Position {
line: 191,
column: 23,
},
end: Position {
line: 191,
column: 35,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 186,
column: 26,
},
end: Position {
line: 192,
column: 4,
},
},
},
),
},
),
],
target: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "options",
span: Span {
start: Position {
line: 198,
column: 3,
},
end: Position {
line: 198,
column: 10,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 200,
column: 5,
},
end: Position {
line: 200,
column: 13,
},
},
},
),
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 200,
column: 14,
},
end: Position {
line: 200,
column: 23,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "enable",
span: Span {
start: Position {
line: 202,
column: 7,
},
end: Position {
line: 202,
column: 13,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 202,
column: 16,
},
end: Position {
line: 202,
column: 24,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 203,
column: 9,
},
end: Position {
line: 203,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 203,
column: 16,
},
end: Position {
line: 203,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 203,
column: 22,
},
end: Position {
line: 203,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 204,
column: 9,
},
end: Position {
line: 204,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 204,
column: 19,
},
end: Position {
line: 204,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 205,
column: 9,
},
end: Position {
line: 205,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 205,
column: 23,
},
end: Position {
line: 205,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 205,
column: 27,
},
end: Position {
line: 205,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to enable the Gerbera/Mediatomb DLNA server.\n",
span: Span {
start: Position {
line: 206,
column: 1,
},
end: Position {
line: 207,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 205,
column: 33,
},
end: Position {
line: 207,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 202,
column: 25,
},
end: Position {
line: 208,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "serverName",
span: Span {
start: Position {
line: 210,
column: 7,
},
end: Position {
line: 210,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 210,
column: 20,
},
end: Position {
line: 210,
column: 28,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 211,
column: 9,
},
end: Position {
line: 211,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 211,
column: 16,
},
end: Position {
line: 211,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 211,
column: 22,
},
end: Position {
line: 211,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 212,
column: 9,
},
end: Position {
line: 212,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "Gerbera (Mediatomb)",
span: Span {
start: Position {
line: 212,
column: 20,
},
end: Position {
line: 212,
column: 39,
},
},
},
),
],
span: Span {
start: Position {
line: 212,
column: 19,
},
end: Position {
line: 212,
column: 40,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 213,
column: 9,
},
end: Position {
line: 213,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 213,
column: 23,
},
end: Position {
line: 213,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 213,
column: 27,
},
end: Position {
line: 213,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "How to identify the server on the network.\n",
span: Span {
start: Position {
line: 214,
column: 1,
},
end: Position {
line: 215,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 213,
column: 33,
},
end: Position {
line: 215,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 210,
column: 29,
},
end: Position {
line: 216,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 218,
column: 7,
},
end: Position {
line: 218,
column: 14,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 218,
column: 17,
},
end: Position {
line: 218,
column: 25,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 219,
column: 9,
},
end: Position {
line: 219,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 219,
column: 16,
},
end: Position {
line: 219,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 219,
column: 22,
},
end: Position {
line: 219,
column: 29,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 220,
column: 9,
},
end: Position {
line: 220,
column: 16,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 220,
column: 19,
},
end: Position {
line: 220,
column: 23,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "gerbera",
span: Span {
start: Position {
line: 220,
column: 24,
},
end: Position {
line: 220,
column: 31,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "defaultText",
span: Span {
start: Position {
line: 221,
column: 9,
},
end: Position {
line: 221,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "literalExpression",
span: Span {
start: Position {
line: 221,
column: 23,
},
end: Position {
line: 221,
column: 40,
},
},
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "pkgs.gerbera",
span: Span {
start: Position {
line: 221,
column: 42,
},
end: Position {
line: 221,
column: 54,
},
},
},
),
],
span: Span {
start: Position {
line: 221,
column: 41,
},
end: Position {
line: 221,
column: 55,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 222,
column: 9,
},
end: Position {
line: 222,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 222,
column: 23,
},
end: Position {
line: 222,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 222,
column: 27,
},
end: Position {
line: 222,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Underlying package to be used with the module.\n",
span: Span {
start: Position {
line: 223,
column: 1,
},
end: Position {
line: 224,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 222,
column: 33,
},
end: Position {
line: 224,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 218,
column: 26,
},
end: Position {
line: 225,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "ps3Support",
span: Span {
start: Position {
line: 227,
column: 7,
},
end: Position {
line: 227,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 227,
column: 20,
},
end: Position {
line: 227,
column: 28,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 228,
column: 9,
},
end: Position {
line: 228,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 228,
column: 16,
},
end: Position {
line: 228,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 228,
column: 22,
},
end: Position {
line: 228,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 229,
column: 9,
},
end: Position {
line: 229,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 229,
column: 19,
},
end: Position {
line: 229,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 230,
column: 9,
},
end: Position {
line: 230,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 230,
column: 23,
},
end: Position {
line: 230,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 230,
column: 27,
},
end: Position {
line: 230,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to enable ps3 specific tweaks.\nWARNING: incompatible with DSM 320 support.\n",
span: Span {
start: Position {
line: 231,
column: 1,
},
end: Position {
line: 233,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 230,
column: 33,
},
end: Position {
line: 233,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 227,
column: 29,
},
end: Position {
line: 234,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "dsmSupport",
span: Span {
start: Position {
line: 236,
column: 7,
},
end: Position {
line: 236,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 236,
column: 20,
},
end: Position {
line: 236,
column: 28,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 237,
column: 9,
},
end: Position {
line: 237,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 237,
column: 16,
},
end: Position {
line: 237,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 237,
column: 22,
},
end: Position {
line: 237,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 238,
column: 9,
},
end: Position {
line: 238,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 238,
column: 19,
},
end: Position {
line: 238,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 239,
column: 9,
},
end: Position {
line: 239,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 239,
column: 23,
},
end: Position {
line: 239,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 239,
column: 27,
},
end: Position {
line: 239,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to enable D-Link DSM 320 specific tweaks.\nWARNING: incompatible with ps3 support.\n",
span: Span {
start: Position {
line: 240,
column: 1,
},
end: Position {
line: 242,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 239,
column: 33,
},
end: Position {
line: 242,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 236,
column: 29,
},
end: Position {
line: 243,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "tg100Support",
span: Span {
start: Position {
line: 245,
column: 7,
},
end: Position {
line: 245,
column: 19,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 245,
column: 22,
},
end: Position {
line: 245,
column: 30,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 246,
column: 9,
},
end: Position {
line: 246,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 246,
column: 16,
},
end: Position {
line: 246,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 246,
column: 22,
},
end: Position {
line: 246,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 247,
column: 9,
},
end: Position {
line: 247,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 247,
column: 19,
},
end: Position {
line: 247,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 248,
column: 9,
},
end: Position {
line: 248,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 248,
column: 23,
},
end: Position {
line: 248,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 248,
column: 27,
},
end: Position {
line: 248,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to enable Telegent TG100 specific tweaks.\n",
span: Span {
start: Position {
line: 249,
column: 1,
},
end: Position {
line: 250,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 248,
column: 33,
},
end: Position {
line: 250,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 245,
column: 31,
},
end: Position {
line: 251,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "transcoding",
span: Span {
start: Position {
line: 253,
column: 7,
},
end: Position {
line: 253,
column: 18,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 253,
column: 21,
},
end: Position {
line: 253,
column: 29,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 254,
column: 9,
},
end: Position {
line: 254,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 254,
column: 16,
},
end: Position {
line: 254,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 254,
column: 22,
},
end: Position {
line: 254,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 255,
column: 9,
},
end: Position {
line: 255,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 255,
column: 19,
},
end: Position {
line: 255,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 256,
column: 9,
},
end: Position {
line: 256,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 256,
column: 23,
},
end: Position {
line: 256,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 256,
column: 27,
},
end: Position {
line: 256,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to enable transcoding.\n",
span: Span {
start: Position {
line: 257,
column: 1,
},
end: Position {
line: 258,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 256,
column: 33,
},
end: Position {
line: 258,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 253,
column: 30,
},
end: Position {
line: 259,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 261,
column: 7,
},
end: Position {
line: 261,
column: 14,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 261,
column: 17,
},
end: Position {
line: 261,
column: 25,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 262,
column: 9,
},
end: Position {
line: 262,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 262,
column: 16,
},
end: Position {
line: 262,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 262,
column: 22,
},
end: Position {
line: 262,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 263,
column: 9,
},
end: Position {
line: 263,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/var/lib/",
span: Span {
start: Position {
line: 263,
column: 20,
},
end: Position {
line: 263,
column: 36,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 263,
column: 31,
},
end: Position {
line: 263,
column: 35,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 263,
column: 19,
},
end: Position {
line: 263,
column: 37,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "defaultText",
span: Span {
start: Position {
line: 264,
column: 9,
},
end: Position {
line: 264,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "literalExpression",
span: Span {
start: Position {
line: 264,
column: 23,
},
end: Position {
line: 264,
column: 40,
},
},
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "\"/var/lib/",
span: Span {
start: Position {
line: 264,
column: 43,
},
end: Position {
line: 264,
column: 53,
},
},
},
),
Raw(
PartRaw {
content: "$",
span: Span {
start: Position {
line: 264,
column: 43,
},
end: Position {
line: 264,
column: 56,
},
},
},
),
Raw(
PartRaw {
content: "{config.",
span: Span {
start: Position {
line: 264,
column: 43,
},
end: Position {
line: 264,
column: 64,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "opt",
span: Span {
start: Position {
line: 264,
column: 66,
},
end: Position {
line: 264,
column: 69,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "package",
span: Span {
start: Position {
line: 264,
column: 70,
},
end: Position {
line: 264,
column: 77,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: ".pname}\"",
span: Span {
start: Position {
line: 264,
column: 43,
},
end: Position {
line: 264,
column: 86,
},
},
},
),
],
span: Span {
start: Position {
line: 264,
column: 41,
},
end: Position {
line: 264,
column: 88,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 265,
column: 9,
},
end: Position {
line: 265,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 265,
column: 23,
},
end: Position {
line: 265,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 265,
column: 27,
},
end: Position {
line: 265,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "The directory where Gerbera/Mediatomb stores its state, data, etc.\n",
span: Span {
start: Position {
line: 266,
column: 1,
},
end: Position {
line: 267,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 265,
column: 33,
},
end: Position {
line: 267,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 261,
column: 26,
},
end: Position {
line: 268,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "pcDirectoryHide",
span: Span {
start: Position {
line: 270,
column: 7,
},
end: Position {
line: 270,
column: 22,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 270,
column: 25,
},
end: Position {
line: 270,
column: 33,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 271,
column: 9,
},
end: Position {
line: 271,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 271,
column: 16,
},
end: Position {
line: 271,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 271,
column: 22,
},
end: Position {
line: 271,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 272,
column: 9,
},
end: Position {
line: 272,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 272,
column: 19,
},
end: Position {
line: 272,
column: 23,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 273,
column: 9,
},
end: Position {
line: 273,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 273,
column: 23,
},
end: Position {
line: 273,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 273,
column: 27,
},
end: Position {
line: 273,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Whether to list the top-level directory or not (from upnp client standpoint).\n",
span: Span {
start: Position {
line: 274,
column: 1,
},
end: Position {
line: 275,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 273,
column: 33,
},
end: Position {
line: 275,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 270,
column: 34,
},
end: Position {
line: 276,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 278,
column: 7,
},
end: Position {
line: 278,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 278,
column: 14,
},
end: Position {
line: 278,
column: 22,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 279,
column: 9,
},
end: Position {
line: 279,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 279,
column: 16,
},
end: Position {
line: 279,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 279,
column: 22,
},
end: Position {
line: 279,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 280,
column: 9,
},
end: Position {
line: 280,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 280,
column: 20,
},
end: Position {
line: 280,
column: 29,
},
},
},
),
],
span: Span {
start: Position {
line: 280,
column: 19,
},
end: Position {
line: 280,
column: 30,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 281,
column: 9,
},
end: Position {
line: 281,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 281,
column: 23,
},
end: Position {
line: 281,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 281,
column: 27,
},
end: Position {
line: 281,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "User account under which the service runs.",
span: Span {
start: Position {
line: 281,
column: 34,
},
end: Position {
line: 281,
column: 76,
},
},
},
),
],
span: Span {
start: Position {
line: 281,
column: 33,
},
end: Position {
line: 281,
column: 77,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 278,
column: 23,
},
end: Position {
line: 282,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 284,
column: 7,
},
end: Position {
line: 284,
column: 12,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 284,
column: 15,
},
end: Position {
line: 284,
column: 23,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 285,
column: 9,
},
end: Position {
line: 285,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 285,
column: 16,
},
end: Position {
line: 285,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 285,
column: 22,
},
end: Position {
line: 285,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 286,
column: 9,
},
end: Position {
line: 286,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 286,
column: 20,
},
end: Position {
line: 286,
column: 29,
},
},
},
),
],
span: Span {
start: Position {
line: 286,
column: 19,
},
end: Position {
line: 286,
column: 30,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 287,
column: 9,
},
end: Position {
line: 287,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 287,
column: 23,
},
end: Position {
line: 287,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 287,
column: 27,
},
end: Position {
line: 287,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "Group account under which the service runs.",
span: Span {
start: Position {
line: 287,
column: 34,
},
end: Position {
line: 287,
column: 77,
},
},
},
),
],
span: Span {
start: Position {
line: 287,
column: 33,
},
end: Position {
line: 287,
column: 78,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 284,
column: 24,
},
end: Position {
line: 288,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "port",
span: Span {
start: Position {
line: 290,
column: 7,
},
end: Position {
line: 290,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 290,
column: 14,
},
end: Position {
line: 290,
column: 22,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 291,
column: 9,
},
end: Position {
line: 291,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 291,
column: 16,
},
end: Position {
line: 291,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "int",
span: Span {
start: Position {
line: 291,
column: 22,
},
end: Position {
line: 291,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 292,
column: 9,
},
end: Position {
line: 292,
column: 16,
},
},
},
),
],
to: Integer(
Integer {
value: "49152",
span: Span {
start: Position {
line: 292,
column: 19,
},
end: Position {
line: 292,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 293,
column: 9,
},
end: Position {
line: 293,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 293,
column: 23,
},
end: Position {
line: 293,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 293,
column: 27,
},
end: Position {
line: 293,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "The network port to listen on.\n",
span: Span {
start: Position {
line: 294,
column: 1,
},
end: Position {
line: 295,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 293,
column: 33,
},
end: Position {
line: 295,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 290,
column: 23,
},
end: Position {
line: 296,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 298,
column: 7,
},
end: Position {
line: 298,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 298,
column: 19,
},
end: Position {
line: 298,
column: 27,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 299,
column: 9,
},
end: Position {
line: 299,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 299,
column: 16,
},
end: Position {
line: 299,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 299,
column: 22,
},
end: Position {
line: 299,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 300,
column: 9,
},
end: Position {
line: 300,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 300,
column: 19,
},
end: Position {
line: 300,
column: 21,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 301,
column: 9,
},
end: Position {
line: 301,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 301,
column: 23,
},
end: Position {
line: 301,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 301,
column: 27,
},
end: Position {
line: 301,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "A specific interface to bind to.\n",
span: Span {
start: Position {
line: 302,
column: 1,
},
end: Position {
line: 303,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 301,
column: 33,
},
end: Position {
line: 303,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 298,
column: 28,
},
end: Position {
line: 304,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "openFirewall",
span: Span {
start: Position {
line: 306,
column: 7,
},
end: Position {
line: 306,
column: 19,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 306,
column: 22,
},
end: Position {
line: 306,
column: 30,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 307,
column: 9,
},
end: Position {
line: 307,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 307,
column: 16,
},
end: Position {
line: 307,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 307,
column: 22,
},
end: Position {
line: 307,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 308,
column: 9,
},
end: Position {
line: 308,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 308,
column: 19,
},
end: Position {
line: 308,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 309,
column: 9,
},
end: Position {
line: 309,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 309,
column: 23,
},
end: Position {
line: 309,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 309,
column: 27,
},
end: Position {
line: 309,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "If false (the default), this is up to the user to declare the firewall rules.\nIf true, this opens port 1900 (tcp and udp) and the port specified by\n{option}`sercvices.mediatomb.port`.\n\nIf the option {option}`services.mediatomb.interface` is set,\nthe firewall rules opened are dedicated to that interface. Otherwise,\nthose rules are opened globally.\n",
span: Span {
start: Position {
line: 310,
column: 1,
},
end: Position {
line: 317,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 309,
column: 33,
},
end: Position {
line: 317,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 306,
column: 31,
},
end: Position {
line: 318,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "uuid",
span: Span {
start: Position {
line: 320,
column: 7,
},
end: Position {
line: 320,
column: 11,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 320,
column: 14,
},
end: Position {
line: 320,
column: 22,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 321,
column: 9,
},
end: Position {
line: 321,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 321,
column: 16,
},
end: Position {
line: 321,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "str",
span: Span {
start: Position {
line: 321,
column: 22,
},
end: Position {
line: 321,
column: 25,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 322,
column: 9,
},
end: Position {
line: 322,
column: 16,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "fdfc8a4e-a3ad-4c1d-b43d-a2eedb03a687",
span: Span {
start: Position {
line: 322,
column: 20,
},
end: Position {
line: 322,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 322,
column: 19,
},
end: Position {
line: 322,
column: 57,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 323,
column: 9,
},
end: Position {
line: 323,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 323,
column: 23,
},
end: Position {
line: 323,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 323,
column: 27,
},
end: Position {
line: 323,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "A unique (on your network) to identify the server by.\n",
span: Span {
start: Position {
line: 324,
column: 1,
},
end: Position {
line: 325,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 323,
column: 33,
},
end: Position {
line: 325,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 320,
column: 23,
},
end: Position {
line: 326,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "mediaDirectories",
span: Span {
start: Position {
line: 328,
column: 7,
},
end: Position {
line: 328,
column: 23,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 328,
column: 26,
},
end: Position {
line: 328,
column: 34,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 329,
column: 9,
},
end: Position {
line: 329,
column: 13,
},
},
},
),
],
to: With(
With {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 329,
column: 21,
},
end: Position {
line: 329,
column: 26,
},
},
},
),
target: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "listOf",
span: Span {
start: Position {
line: 329,
column: 28,
},
end: Position {
line: 329,
column: 34,
},
},
},
),
arguments: [
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "submodule",
span: Span {
start: Position {
line: 329,
column: 36,
},
end: Position {
line: 329,
column: 45,
},
},
},
),
arguments: [
Identifier(
Identifier {
id: "mediaDirectory",
span: Span {
start: Position {
line: 329,
column: 46,
},
end: Position {
line: 329,
column: 60,
},
},
},
),
],
},
),
],
},
),
span: Span {
start: Position {
line: 329,
column: 16,
},
end: Position {
line: 329,
column: 61,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 330,
column: 9,
},
end: Position {
line: 330,
column: 16,
},
},
},
),
],
to: List(
List {
elements: [],
span: Span {
start: Position {
line: 330,
column: 19,
},
end: Position {
line: 330,
column: 21,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 331,
column: 9,
},
end: Position {
line: 331,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 331,
column: 23,
},
end: Position {
line: 331,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 331,
column: 27,
},
end: Position {
line: 331,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Declare media directories to index.\n",
span: Span {
start: Position {
line: 332,
column: 1,
},
end: Position {
line: 333,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 331,
column: 33,
},
end: Position {
line: 333,
column: 11,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "example",
span: Span {
start: Position {
line: 334,
column: 9,
},
end: Position {
line: 334,
column: 16,
},
},
},
),
],
to: List(
List {
elements: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 335,
column: 13,
},
end: Position {
line: 335,
column: 17,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/data/pictures",
span: Span {
start: Position {
line: 335,
column: 21,
},
end: Position {
line: 335,
column: 35,
},
},
},
),
],
span: Span {
start: Position {
line: 335,
column: 20,
},
end: Position {
line: 335,
column: 36,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "recursive",
span: Span {
start: Position {
line: 335,
column: 38,
},
end: Position {
line: 335,
column: 47,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 335,
column: 50,
},
end: Position {
line: 335,
column: 55,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "hidden-files",
span: Span {
start: Position {
line: 335,
column: 57,
},
end: Position {
line: 335,
column: 69,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 335,
column: 72,
},
end: Position {
line: 335,
column: 77,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 335,
column: 11,
},
end: Position {
line: 335,
column: 80,
},
},
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "path",
span: Span {
start: Position {
line: 336,
column: 13,
},
end: Position {
line: 336,
column: 17,
},
},
},
),
],
to: String(
String_ {
parts: [
Raw(
PartRaw {
content: "/data/audio",
span: Span {
start: Position {
line: 336,
column: 21,
},
end: Position {
line: 336,
column: 32,
},
},
},
),
],
span: Span {
start: Position {
line: 336,
column: 20,
},
end: Position {
line: 336,
column: 33,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "recursive",
span: Span {
start: Position {
line: 336,
column: 35,
},
end: Position {
line: 336,
column: 44,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 336,
column: 47,
},
end: Position {
line: 336,
column: 51,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "hidden-files",
span: Span {
start: Position {
line: 336,
column: 53,
},
end: Position {
line: 336,
column: 65,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 336,
column: 68,
},
end: Position {
line: 336,
column: 73,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 336,
column: 11,
},
end: Position {
line: 336,
column: 76,
},
},
},
),
],
span: Span {
start: Position {
line: 334,
column: 19,
},
end: Position {
line: 337,
column: 10,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 328,
column: 35,
},
end: Position {
line: 338,
column: 8,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "customCfg",
span: Span {
start: Position {
line: 340,
column: 7,
},
end: Position {
line: 340,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkOption",
span: Span {
start: Position {
line: 340,
column: 19,
},
end: Position {
line: 340,
column: 27,
},
},
},
),
arguments: [
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "type",
span: Span {
start: Position {
line: 341,
column: 9,
},
end: Position {
line: 341,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "types",
span: Span {
start: Position {
line: 341,
column: 16,
},
end: Position {
line: 341,
column: 21,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "bool",
span: Span {
start: Position {
line: 341,
column: 22,
},
end: Position {
line: 341,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "default",
span: Span {
start: Position {
line: 342,
column: 9,
},
end: Position {
line: 342,
column: 16,
},
},
},
),
],
to: Identifier(
Identifier {
id: "false",
span: Span {
start: Position {
line: 342,
column: 19,
},
end: Position {
line: 342,
column: 24,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 343,
column: 9,
},
end: Position {
line: 343,
column: 20,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "lib",
span: Span {
start: Position {
line: 343,
column: 23,
},
end: Position {
line: 343,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "mdDoc",
span: Span {
start: Position {
line: 343,
column: 27,
},
end: Position {
line: 343,
column: 32,
},
},
},
),
],
default: None,
},
),
arguments: [
IndentedString(
IndentedString {
parts: [
Raw(
PartRaw {
content: "Allow the service to create and use its own config file inside the `dataDir` as\nconfigured by {option}`services.mediatomb.dataDir`.\nDeactivated by default, the service then runs with the configuration generated from this module.\nOtherwise, when enabled, no service configuration is generated. Gerbera/Mediatomb then starts using\nconfig.xml within the configured `dataDir`. It's up to the user to make a correct\nconfiguration file.\n",
span: Span {
start: Position {
line: 344,
column: 1,
},
end: Position {
line: 350,
column: 9,
},
},
},
),
],
span: Span {
start: Position {
line: 343,
column: 33,
},
end: Position {
line: 350,
column: 11,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 340,
column: 28,
},
end: Position {
line: 351,
column: 8,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 200,
column: 26,
},
end: Position {
line: 353,
column: 6,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 198,
column: 13,
},
end: Position {
line: 354,
column: 4,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "config",
span: Span {
start: Position {
line: 359,
column: 3,
},
end: Position {
line: 359,
column: 9,
},
},
},
),
],
to: LetIn(
LetIn {
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "binaryCommand",
span: Span {
start: Position {
line: 359,
column: 16,
},
end: Position {
line: 359,
column: 29,
},
},
},
),
],
to: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "pkg",
span: Span {
start: Position {
line: 359,
column: 35,
},
end: Position {
line: 359,
column: 38,
},
},
},
),
},
),
Raw(
PartRaw {
content: "/bin/",
span: Span {
start: Position {
line: 359,
column: 33,
},
end: Position {
line: 359,
column: 44,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 359,
column: 46,
},
end: Position {
line: 359,
column: 50,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 359,
column: 32,
},
end: Position {
line: 359,
column: 52,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "interfaceFlag",
span: Span {
start: Position {
line: 360,
column: 16,
},
end: Position {
line: 360,
column: 29,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalString",
span: Span {
start: Position {
line: 360,
column: 32,
},
end: Position {
line: 360,
column: 46,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 360,
column: 49,
},
end: Position {
line: 360,
column: 52,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 360,
column: 53,
},
end: Position {
line: 360,
column: 62,
},
},
},
),
],
default: None,
},
),
operator: NotEqualTo,
right: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 360,
column: 66,
},
end: Position {
line: 360,
column: 68,
},
},
},
),
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "--interface ",
span: Span {
start: Position {
line: 360,
column: 71,
},
end: Position {
line: 360,
column: 99,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 360,
column: 85,
},
end: Position {
line: 360,
column: 88,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 360,
column: 89,
},
end: Position {
line: 360,
column: 98,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 360,
column: 70,
},
end: Position {
line: 360,
column: 100,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "configFlag",
span: Span {
start: Position {
line: 361,
column: 16,
},
end: Position {
line: 361,
column: 26,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalString",
span: Span {
start: Position {
line: 361,
column: 29,
},
end: Position {
line: 361,
column: 43,
},
},
},
),
arguments: [
UnaryOperation(
UnaryOperation {
operator: Not,
operand: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 361,
column: 47,
},
end: Position {
line: 361,
column: 50,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "customCfg",
span: Span {
start: Position {
line: 361,
column: 51,
},
end: Position {
line: 361,
column: 60,
},
},
},
),
],
default: None,
},
),
span: Span {
start: Position {
line: 361,
column: 45,
},
end: Position {
line: 361,
column: 60,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "--config ",
span: Span {
start: Position {
line: 361,
column: 63,
},
end: Position {
line: 361,
column: 113,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "pkgs",
span: Span {
start: Position {
line: 361,
column: 74,
},
end: Position {
line: 361,
column: 78,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "writeText",
span: Span {
start: Position {
line: 361,
column: 79,
},
end: Position {
line: 361,
column: 88,
},
},
},
),
],
default: None,
},
),
arguments: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "config.xml",
span: Span {
start: Position {
line: 361,
column: 90,
},
end: Position {
line: 361,
column: 100,
},
},
},
),
],
span: Span {
start: Position {
line: 361,
column: 89,
},
end: Position {
line: 361,
column: 101,
},
},
},
),
Identifier(
Identifier {
id: "configText",
span: Span {
start: Position {
line: 361,
column: 102,
},
end: Position {
line: 361,
column: 112,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 361,
column: 62,
},
end: Position {
line: 361,
column: 114,
},
},
},
),
],
},
),
},
),
],
target: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkIf",
span: Span {
start: Position {
line: 362,
column: 8,
},
end: Position {
line: 362,
column: 12,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 362,
column: 13,
},
end: Position {
line: 362,
column: 16,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "enable",
span: Span {
start: Position {
line: 362,
column: 17,
},
end: Position {
line: 362,
column: 23,
},
},
},
),
],
default: None,
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "systemd",
span: Span {
start: Position {
line: 363,
column: 5,
},
end: Position {
line: 363,
column: 12,
},
},
},
),
Raw(
PartRaw {
content: "services",
span: Span {
start: Position {
line: 363,
column: 13,
},
end: Position {
line: 363,
column: 21,
},
},
},
),
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 363,
column: 22,
},
end: Position {
line: 363,
column: 31,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 364,
column: 7,
},
end: Position {
line: 364,
column: 18,
},
},
},
),
],
to: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 364,
column: 24,
},
end: Position {
line: 364,
column: 27,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "serverName",
span: Span {
start: Position {
line: 364,
column: 28,
},
end: Position {
line: 364,
column: 38,
},
},
},
),
],
default: None,
},
),
},
),
Raw(
PartRaw {
content: " media Server",
span: Span {
start: Position {
line: 364,
column: 22,
},
end: Position {
line: 364,
column: 52,
},
},
},
),
],
span: Span {
start: Position {
line: 364,
column: 21,
},
end: Position {
line: 364,
column: 53,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "after",
span: Span {
start: Position {
line: 367,
column: 7,
},
end: Position {
line: 367,
column: 12,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "network.target",
span: Span {
start: Position {
line: 367,
column: 18,
},
end: Position {
line: 367,
column: 32,
},
},
},
),
],
span: Span {
start: Position {
line: 367,
column: 17,
},
end: Position {
line: 367,
column: 33,
},
},
},
),
String(
String_ {
parts: [
Raw(
PartRaw {
content: "network-online.target",
span: Span {
start: Position {
line: 367,
column: 35,
},
end: Position {
line: 367,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 367,
column: 34,
},
end: Position {
line: 367,
column: 57,
},
},
},
),
],
span: Span {
start: Position {
line: 367,
column: 15,
},
end: Position {
line: 367,
column: 59,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "wantedBy",
span: Span {
start: Position {
line: 368,
column: 7,
},
end: Position {
line: 368,
column: 15,
},
},
},
),
],
to: List(
List {
elements: [
String(
String_ {
parts: [
Raw(
PartRaw {
content: "multi-user.target",
span: Span {
start: Position {
line: 368,
column: 21,
},
end: Position {
line: 368,
column: 38,
},
},
},
),
],
span: Span {
start: Position {
line: 368,
column: 20,
},
end: Position {
line: 368,
column: 39,
},
},
},
),
],
span: Span {
start: Position {
line: 368,
column: 18,
},
end: Position {
line: 368,
column: 41,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "serviceConfig",
span: Span {
start: Position {
line: 369,
column: 7,
},
end: Position {
line: 369,
column: 20,
},
},
},
),
Raw(
PartRaw {
content: "ExecStart",
span: Span {
start: Position {
line: 369,
column: 21,
},
end: Position {
line: 369,
column: 30,
},
},
},
),
],
to: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "binaryCommand",
span: Span {
start: Position {
line: 369,
column: 36,
},
end: Position {
line: 369,
column: 49,
},
},
},
),
},
),
Raw(
PartRaw {
content: " --port ",
span: Span {
start: Position {
line: 369,
column: 34,
},
end: Position {
line: 369,
column: 58,
},
},
},
),
Interpolation(
PartInterpolation {
expression: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "toString",
span: Span {
start: Position {
line: 369,
column: 60,
},
end: Position {
line: 369,
column: 68,
},
},
},
),
arguments: [
PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 369,
column: 69,
},
end: Position {
line: 369,
column: 72,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "port",
span: Span {
start: Position {
line: 369,
column: 73,
},
end: Position {
line: 369,
column: 77,
},
},
},
),
],
default: None,
},
),
],
},
),
},
),
Raw(
PartRaw {
content: " ",
span: Span {
start: Position {
line: 369,
column: 34,
},
end: Position {
line: 369,
column: 79,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "interfaceFlag",
span: Span {
start: Position {
line: 369,
column: 81,
},
end: Position {
line: 369,
column: 94,
},
},
},
),
},
),
Raw(
PartRaw {
content: " ",
span: Span {
start: Position {
line: 369,
column: 34,
},
end: Position {
line: 369,
column: 96,
},
},
},
),
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "configFlag",
span: Span {
start: Position {
line: 369,
column: 98,
},
end: Position {
line: 369,
column: 108,
},
},
},
),
},
),
Raw(
PartRaw {
content: " --home ",
span: Span {
start: Position {
line: 369,
column: 34,
},
end: Position {
line: 369,
column: 117,
},
},
},
),
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 369,
column: 119,
},
end: Position {
line: 369,
column: 122,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 369,
column: 123,
},
end: Position {
line: 369,
column: 130,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 369,
column: 33,
},
end: Position {
line: 369,
column: 132,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "serviceConfig",
span: Span {
start: Position {
line: 370,
column: 7,
},
end: Position {
line: 370,
column: 20,
},
},
},
),
Raw(
PartRaw {
content: "User",
span: Span {
start: Position {
line: 370,
column: 21,
},
end: Position {
line: 370,
column: 25,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 370,
column: 28,
},
end: Position {
line: 370,
column: 31,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 370,
column: 32,
},
end: Position {
line: 370,
column: 36,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "serviceConfig",
span: Span {
start: Position {
line: 371,
column: 7,
},
end: Position {
line: 371,
column: 20,
},
},
},
),
Raw(
PartRaw {
content: "Group",
span: Span {
start: Position {
line: 371,
column: 21,
},
end: Position {
line: 371,
column: 26,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 371,
column: 29,
},
end: Position {
line: 371,
column: 32,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 371,
column: 33,
},
end: Position {
line: 371,
column: 38,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 363,
column: 34,
},
end: Position {
line: 372,
column: 6,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 374,
column: 5,
},
end: Position {
line: 374,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "groups",
span: Span {
start: Position {
line: 374,
column: 11,
},
end: Position {
line: 374,
column: 17,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalAttrs",
span: Span {
start: Position {
line: 374,
column: 20,
},
end: Position {
line: 374,
column: 33,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 374,
column: 35,
},
end: Position {
line: 374,
column: 38,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 374,
column: 39,
},
end: Position {
line: 374,
column: 44,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 374,
column: 49,
},
end: Position {
line: 374,
column: 58,
},
},
},
),
],
span: Span {
start: Position {
line: 374,
column: 48,
},
end: Position {
line: 374,
column: 59,
},
},
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 375,
column: 7,
},
end: Position {
line: 375,
column: 16,
},
},
},
),
Raw(
PartRaw {
content: "gid",
span: Span {
start: Position {
line: 375,
column: 17,
},
end: Position {
line: 375,
column: 20,
},
},
},
),
],
to: Identifier(
Identifier {
id: "gid",
span: Span {
start: Position {
line: 375,
column: 23,
},
end: Position {
line: 375,
column: 26,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 374,
column: 61,
},
end: Position {
line: 376,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 378,
column: 5,
},
end: Position {
line: 378,
column: 10,
},
},
},
),
Raw(
PartRaw {
content: "users",
span: Span {
start: Position {
line: 378,
column: 11,
},
end: Position {
line: 378,
column: 16,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "optionalAttrs",
span: Span {
start: Position {
line: 378,
column: 19,
},
end: Position {
line: 378,
column: 32,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 378,
column: 34,
},
end: Position {
line: 378,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "user",
span: Span {
start: Position {
line: 378,
column: 38,
},
end: Position {
line: 378,
column: 42,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 378,
column: 47,
},
end: Position {
line: 378,
column: 56,
},
},
},
),
],
span: Span {
start: Position {
line: 378,
column: 46,
},
end: Position {
line: 378,
column: 57,
},
},
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "mediatomb",
span: Span {
start: Position {
line: 379,
column: 7,
},
end: Position {
line: 379,
column: 16,
},
},
},
),
],
to: Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "isSystemUser",
span: Span {
start: Position {
line: 380,
column: 9,
},
end: Position {
line: 380,
column: 21,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 380,
column: 24,
},
end: Position {
line: 380,
column: 28,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 381,
column: 9,
},
end: Position {
line: 381,
column: 14,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 381,
column: 17,
},
end: Position {
line: 381,
column: 20,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "group",
span: Span {
start: Position {
line: 381,
column: 21,
},
end: Position {
line: 381,
column: 26,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "home",
span: Span {
start: Position {
line: 382,
column: 9,
},
end: Position {
line: 382,
column: 13,
},
},
},
),
],
to: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 382,
column: 16,
},
end: Position {
line: 382,
column: 19,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "dataDir",
span: Span {
start: Position {
line: 382,
column: 20,
},
end: Position {
line: 382,
column: 27,
},
},
},
),
],
default: None,
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "createHome",
span: Span {
start: Position {
line: 383,
column: 9,
},
end: Position {
line: 383,
column: 19,
},
},
},
),
],
to: Identifier(
Identifier {
id: "true",
span: Span {
start: Position {
line: 383,
column: 22,
},
end: Position {
line: 383,
column: 26,
},
},
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "description",
span: Span {
start: Position {
line: 384,
column: 9,
},
end: Position {
line: 384,
column: 20,
},
},
},
),
],
to: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: Identifier(
Identifier {
id: "name",
span: Span {
start: Position {
line: 384,
column: 26,
},
end: Position {
line: 384,
column: 30,
},
},
},
),
},
),
Raw(
PartRaw {
content: " DLNA Server User",
span: Span {
start: Position {
line: 384,
column: 24,
},
end: Position {
line: 384,
column: 48,
},
},
},
),
],
span: Span {
start: Position {
line: 384,
column: 23,
},
end: Position {
line: 384,
column: 49,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 379,
column: 19,
},
end: Position {
line: 385,
column: 8,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 378,
column: 59,
},
end: Position {
line: 386,
column: 6,
},
},
},
),
],
},
),
},
),
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "networking",
span: Span {
start: Position {
line: 389,
column: 5,
},
end: Position {
line: 389,
column: 15,
},
},
},
),
Raw(
PartRaw {
content: "firewall",
span: Span {
start: Position {
line: 389,
column: 16,
},
end: Position {
line: 389,
column: 24,
},
},
},
),
],
to: FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkMerge",
span: Span {
start: Position {
line: 389,
column: 27,
},
end: Position {
line: 389,
column: 34,
},
},
},
),
arguments: [
List(
List {
elements: [
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkIf",
span: Span {
start: Position {
line: 390,
column: 8,
},
end: Position {
line: 390,
column: 12,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 390,
column: 14,
},
end: Position {
line: 390,
column: 17,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "openFirewall",
span: Span {
start: Position {
line: 390,
column: 18,
},
end: Position {
line: 390,
column: 30,
},
},
},
),
],
default: None,
},
),
operator: LogicalAnd,
right: BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 390,
column: 34,
},
end: Position {
line: 390,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 390,
column: 38,
},
end: Position {
line: 390,
column: 47,
},
},
},
),
],
default: None,
},
),
operator: NotEqualTo,
right: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 390,
column: 51,
},
end: Position {
line: 390,
column: 53,
},
},
},
),
},
),
},
),
Map(
Map {
recursive: false,
bindings: [
KeyValue(
BindingKeyValue {
from: [
Raw(
PartRaw {
content: "interfaces",
span: Span {
start: Position {
line: 391,
column: 9,
},
end: Position {
line: 391,
column: 19,
},
},
},
),
Expression(
PartExpression {
expression: String(
String_ {
parts: [
Interpolation(
PartInterpolation {
expression: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 391,
column: 23,
},
end: Position {
line: 391,
column: 26,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 391,
column: 27,
},
end: Position {
line: 391,
column: 36,
},
},
},
),
],
default: None,
},
),
},
),
],
span: Span {
start: Position {
line: 391,
column: 20,
},
end: Position {
line: 391,
column: 38,
},
},
},
),
},
),
],
to: Identifier(
Identifier {
id: "defaultFirewallRules",
span: Span {
start: Position {
line: 391,
column: 41,
},
end: Position {
line: 391,
column: 61,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 390,
column: 55,
},
end: Position {
line: 392,
column: 8,
},
},
},
),
],
},
),
FunctionApplication(
FunctionApplication {
function: Identifier(
Identifier {
id: "mkIf",
span: Span {
start: Position {
line: 393,
column: 8,
},
end: Position {
line: 393,
column: 12,
},
},
},
),
arguments: [
BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 393,
column: 14,
},
end: Position {
line: 393,
column: 17,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "openFirewall",
span: Span {
start: Position {
line: 393,
column: 18,
},
end: Position {
line: 393,
column: 30,
},
},
},
),
],
default: None,
},
),
operator: LogicalAnd,
right: BinaryOperation(
BinaryOperation {
left: PropertyAccess(
PropertyAccess {
expression: Identifier(
Identifier {
id: "cfg",
span: Span {
start: Position {
line: 393,
column: 34,
},
end: Position {
line: 393,
column: 37,
},
},
},
),
attribute_path: [
Raw(
PartRaw {
content: "interface",
span: Span {
start: Position {
line: 393,
column: 38,
},
end: Position {
line: 393,
column: 47,
},
},
},
),
],
default: None,
},
),
operator: EqualTo,
right: String(
String_ {
parts: [],
span: Span {
start: Position {
line: 393,
column: 51,
},
end: Position {
line: 393,
column: 53,
},
},
},
),
},
),
},
),
Identifier(
Identifier {
id: "defaultFirewallRules",
span: Span {
start: Position {
line: 393,
column: 55,
},
end: Position {
line: 393,
column: 75,
},
},
},
),
],
},
),
],
span: Span {
start: Position {
line: 389,
column: 35,
},
end: Position {
line: 394,
column: 6,
},
},
},
),
],
},
),
},
),
],
span: Span {
start: Position {
line: 362,
column: 24,
},
end: Position {
line: 395,
column: 4,
},
},
},
),
],
},
),
span: Span {
start: Position {
line: 359,
column: 12,
},
end: Position {
line: 395,
column: 4,
},
},
},
),
},
),
],
span: Span {
start: Position {
line: 194,
column: 4,
},
end: Position {
line: 396,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 5,
column: 1,
},
end: Position {
line: 396,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 3,
column: 1,
},
end: Position {
line: 396,
column: 2,
},
},
},
),
span: Span {
start: Position {
line: 1,
column: 1,
},
end: Position {
line: 396,
column: 2,
},
},
},
)